Konfigurácia univerzálneho API rozhrania

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

Cesta

Zabezpečenie

Účel

/api/rest

API kľúč / JWT / Basic auth

Server-to-server klienti (strojové API). Pokrýva aj /api/odata/**, /api/open/**, /api/oauth2/**, /api/opentsdb/**.

/api/web/rest

HTTP relácia (session) + CSRF

Komunikácia prehliadač-server (SmartWeb web aplikácia a admin konzola).

/api/public/rest

Ž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

Cesta

Popis

/v0/d2/rpc

Vykonanie D2000 RPC procedúry

/v0/d2/archive

Čítanie historických dát z archívneho objektu D2000

/v0/d2/eda

Čítanie / zápis dát EDA vektorov

/v0/d2/auth/login, /v0/d2/auth/logout

Autentifikácia používateľa, ukončenie relácie

/v0/d2/sba

Vykonanie RPC volania typu Simple Byte Array (binárne)

/v0/d2/changepassword

Zmena D2000 hesla prihláseného používateľa (len web kontext)

/v0/d2/apifallback/**

Preposlanie požiadaviek na vzdialený SmartWeb uzol (len server-to-server kontext)

/v0/service/infrastructure

Verejná — vracia CSRF token, verziu servera, build info

/v0/service/resetpassword

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

Kanál

Smer

Popis

/meta/handshake

klient → server

CometD handshake; tu sa overuje relácia

/meta/subscribe

klient → server

Prihlásenie na kanál; spustí D2000 odber objektu / archívu / EDA

/meta/unsubscribe

klient → server

Zrušenie odberu

/v0/d2/object/{objectName}

server → klient

Push zmeny hodnoty odoberaného D2000 objektu

/v0/d2/archive/{archiveName}

server → klient

Streamované historické archívne dáta

/v0/d2/eda/{vectorCode}

server → klient

Push dát EDA vektora

/v0/d2/rpc

klient → server

Požiadavka na RPC volanie

/v0/d2/rpc/{callbackId}

server → klient

Výsledok RPC volania

/v0/d2/servicemessage

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.