Bazowy adres URL
LocalApiPort w pliku appsettings.json agenta (domyślnie 5555). Pozostaw wartość
domyślną: zapasowe połączenie aplikacji w zasobniku i karta Usługa lokalna w aplikacji webowej zawsze używają
portu 5555. Zobacz opis konfiguracji.
API używa zwykłego HTTP. Udostępnia je usługa Windows, więc jest dostępne tylko wtedy, gdy usługa działa.
Dostęp i bezpieczeństwo
- Tylko localhost. Agent nasłuchuje wyłącznie na adresach pętli zwrotnej (
127.0.0.1i::1). Inne komputery w Twojej sieci nie mogą się z nim połączyć i nie potrzebuje on reguły zapory. Żądanie, które wskazuje inny host niżlocalhostlub adres pętli zwrotnej, jest odrzucane z kodem403 Forbidden. - Jeden wymagany nagłówek. Każde żądanie do trasy zaczynającej się od
/apimusi zawierać nagłówekX-Omnilinker-Local: 1. Bez niego agent odpowiada403 Forbiddenz pustą treścią./healthnie sprawdza tego nagłówka; wysłanie go tam niczemu nie szkodzi. - Przeglądarki: tylko Omnilinker. Strona internetowa nie może dodać tego nagłówka, nie pytając najpierw agenta
(zapytanie wstępne CORS). Agent zgadza się tylko dla adresu Omnilinkera,
https://omnilinker.pl, i jego subdomen, przez HTTPS. Dzięki temu karta Usługa lokalna aplikacji webowej, otwarta w przeglądarce na komputerze agenta, odczytuje API. Żądania z każdej innej strony są odrzucane z kodem403. - Brak uwierzytelniania. Programy na komputerze, takie jak aplikacja w zasobniku, PowerShell czy
curl, wysyłają nagłówek i nie potrzebują klucza API, hasła ani tokenu.
Konwencje
- Treści żądań i odpowiedzi są w formacie JSON. Nazwy właściwości są w notacji camelCase.
- Czas jest podawany w UTC, w formacie ISO 8601, na przykład
2026-09-27T08:15:02.1234567Z. - Wartości wyliczeniowe są zwracane jako liczby, a nie nazwy. Tabele na tej stronie podają ich wartości.
- Trasy sterujące zwracają
400 Bad Requestz wynikiem polecenia, gdy agent odrzuca polecenie. 403 Forbiddenz pustą treścią oznacza, że żądanie zostało odrzucone, zanim dotarło do agenta: brakuje nagłówkaX-Omnilinker-Local, host to nielocalhostalbo przeglądarka wysłała je z innej strony.- Przykłady używają PowerShell. W Windows PowerShell 5.1
curljest aliasem poleceniaInvoke-WebRequest. Aby użyć curl, wpiszcurl.exe.
Trasy
Innych tras nie ma.
Stan
GET /health
Uruchamia testy kondycji agenta i zwraca ogólny wynik jako zwykły tekst:Healthy, Degraded lub Unhealthy.
Status HTTP to 200 OK dla Healthy i Degraded oraz 503 Service Unavailable dla Unhealthy.
/health zwraca Unhealthy, dopóki agent nie połączy się z bazą danych ERP, na przykład zaraz po starcie usługi
albo przed uruchomieniem kreatora konfiguracji. Aby sprawdzić tylko, czy usługa działa,
użyj /api/sync/health.
GET /api/sync/health
Zwraca200 OK zawsze, gdy API odpowiada. Nie sprawdza ERP ani Omnilinkera.
string
Zawsze
healthy.string
Bieżący czas agenta, UTC.
Status
GET /api/sync/status
Zwraca pełny stan agenta. Te same dane pokazują okno stanu aplikacji w zasobniku i karta Usługa lokalna w aplikacji webowej.integer
Stan agenta.
boolean
Czy ostatnie żądanie agenta do Omnilinkera się powiodło.
boolean
Czy agent jest połączony z bazą danych ERP.
string | null
Kiedy ostatni cykl synchronizacji zakończył się powodzeniem.
string | null
Kiedy spodziewany jest następny cykl, jeśli wiadomo.
integer
Liczba błędów od ostatniego udanego cyklu.
string | null
Ostatni komunikat błędu, na przykład
Waiting for cloud configuration.string | null
Dlaczego cykl jest opóźniony, na przykład
Product polling delayed (HashCheck in progress).integer[]
Rozwiązania, które aplikacja w zasobniku proponuje dla ostatniego błędu.
1 test połączenia z ERP, 2 test
połączenia z chmurą, 3 sprawdzenie ustawień, 4 ponowienie teraz, 5 wyświetlenie logów, 6 sprawdzenie sieci,
7 kontakt z pomocą techniczną, 8 wyświetlenie szczegółów, 9 pominięcie elementu.object
Zdarzenia w kolejce wychodzącej agenta:
pending, sent, failed i retrying. Te same liczby co
w /api/sync/outbox/stats.object
Liczby z kolejki wychodzącej według typu encji, z nazwą typu jako kluczem (na przykład
Product, Brand,
PriceLevel, Price, Warehouse, Stock). Każda wartość zawiera total, synced, pending i failed.
Liczone są tylko zdarzenia, które wciąż są w lokalnej kolejce wychodzącej: wysłane zdarzenia są usuwane po
24 godzinach (po 1 godzinie podczas synchronizacji początkowej).string
Wersja agenta.
boolean
Nieużywane: zawsze
false. Agent aktualizuje się sam, ale nie zgłasza
tu oczekującej aktualizacji.string | null
Nieużywane: zawsze
null.object | null
Ten sam obiekt co w
/api/sync/hash/status.object | null
Podczas weryfikacji hash:
productsChecked, totalProducts, brandsChecked, totalBrands, elapsed,
estimatedTimeRemaining i itemsPerSecond.object | null
currentPending, healthLevel (0 normalny, mniej niż 50 oczekujących; 1 podwyższony, od 50 do 199;
2 zaległości, 200 lub więcej), trend (0 stały, 1 rosnący, 2 malejący), trendItemsPerMinute
i trendDescription.object[]
Operacje trwające w tej chwili, np. odpytywanie lub publikowanie, z liczbą elementów i postępem.
object[]
Ostatnio zakończone operacje, z polami
completedAt, itemCount, duration, success i errorMessage.object
Stan czterech komponentów:
erpConnection, cloudApi, database i credentials. Każdy ma level (0 zdrowy,
1 ostrzeżenie, 2 krytyczny), message i czas ostatniego sprawdzenia. overallHealth to najgorszy z czterech
stanów, a issueCount liczy komponenty, które nie są zdrowe.currentOperations, recentActivity i systemHealth zawierają też pola wyświetlane przez aplikację
w zasobniku. Nie polegaj na ich dokładnej strukturze, bo może się zmieniać między wersjami agenta.
GET /api/sync/config
Zwraca kilka informacji o agencie. Nie zwraca jego ustawień ani danych uwierzytelniających.string
Wersja agenta.
boolean
Czy synchronizacja jest wstrzymana.
string
Stan agenta jako nazwa, na przykład
Idle (w przeciwieństwie do /api/sync/status, który zwraca liczbę).Sterowanie
Te trasy nie przyjmują parametrów ani treści żądania.Wynik polecenia
Każda trasa sterująca, a takżePOST /api/sync/hash/trigger, zwraca ten obiekt:
boolean
Czy agent przyjął polecenie.
string
Co się stało albo dlaczego polecenie zostało odrzucone.
POST /api/sync/now
Prosi agenta o natychmiastowe wyszukanie zmian.POST /api/sync/trigger działa dokładnie tak samo.
Agent odbiera żądanie w następnym cyklu odpytywania, czyli w ciągu PollingIntervalSeconds (domyślnie 60 sekund).
Przy wykrywaniu zmian przez skanowanie skrótów uruchamia weryfikację hash.
POST /api/sync/pause
Wstrzymuje synchronizację. Agent przestaje wykrywać nowe zmiany, dopóki jej nie wznowisz. Zawsze zwraca200
z komunikatem Sync paused.
- Zdarzenia, które już są w kolejce wychodzącej, są nadal wysyłane do Omnilinkera, gdy agent jest wstrzymany.
- Wstrzymanie nie jest zachowywane po ponownym uruchomieniu usługi.
POST /api/sync/resume
Wznawia synchronizację. Zawsze zwraca200 z komunikatem Sync resumed.
Logi
GET /api/sync/logs
Zwraca najnowsze wpisy własnego logu synchronizacji agenta, od najnowszego. To te same wpisy, które pokazuje okno logów aplikacji w zasobniku. Nie są to wpisy logów synchronizacji w Omnilinkerze opisane na stronie Monitorowanie ani pliki logów usługi.integer
domyślnie:"50"
Liczba wpisów do zwrócenia. Najwyżej 500; większe wartości zwracają 500.
string
Minimalny poziom:
Debug, Info, Warning, Error lub Critical (albo od 0 do 4). Zwraca wpisy na tym
poziomie i wyższych.string
Tylko wpisy z tej kategorii, na przykład
ErpPolling, HashCheck lub ChangeConsumption. Dokładne dopasowanie.string
Tylko wpisy dotyczące tego typu encji. Dokładne dopasowanie.
integer
Identyfikator wpisu.
string
Kiedy wpis został zapisany.
integer
0 Debug, 1 Info, 2 Warning, 3 Error, 4 Critical.string
Komunikat.
string | null
Dodatkowe szczegóły, jeśli są.
string | null
Komponent, który zapisał wpis.
string | null
Typ encji, której dotyczy wpis, jeśli dotyczy.
string | null
Encja, której dotyczy wpis, jeśli dotyczy.
string | null
Wyjątek, w przypadku błędów.
Kolejka wychodząca
GET /api/sync/outbox/stats
Agent umieszcza każdą zmianę w lokalnej kolejce wychodzącej (outbox) i wysyła ją do Omnilinkera w paczkach. Ta trasa zlicza zdarzenia w kolejce według stanu.integer
Czekające na wysłanie, łącznie ze zdarzeniami, których próba wysłania się nie powiodła i które zostaną wysłane
ponownie.
integer
Wysłane pomyślnie i jeszcze nieusunięte. Wysłane zdarzenia są usuwane po 24 godzinach (po 1 godzinie podczas
synchronizacji początkowej).
integer
Nieudane przy każdej próbie (
MaxRetryAttempts, domyślnie 5). Agent nie wysyła ich ponownie.integer
Wysyłane w tej chwili. Wbrew nazwie nie jest to liczba zdarzeń czekających na ponowienie: te są w
pending.pending oznacza, że agent nie może wysyłać danych do Omnilinkera. Zobacz
Rozwiązywanie problemów.
Weryfikacja hash
Weryfikacja hash porównuje dane w ERP z tym, co agent wysłał ostatnio, i w ten sposób wykrywa zmiany. Tak agent wykrywa zmiany w trybie skanowania skrótów. Zobacz Wapro.GET /api/sync/hash/status
boolean
Czy weryfikacje hash są włączone w konfiguracji synchronizacji połączenia. Przy śledzeniu zmian WFM_INT zawsze
działa cotygodniowa weryfikacja uzgadniająca i ta wartość wynosi
true.boolean
Czy w tej chwili trwa weryfikacja hash.
boolean
Czy same weryfikacje hash są wstrzymane (z aplikacji w zasobniku).
string | null
Kiedy zakończyła się ostatnia weryfikacja hash.
string | null
Kiedy przypada następna.
integer
Liczba produktów porównanych w ostatniej weryfikacji.
lastProductsChanged, lastBrandsChecked
i lastBrandsChanged działają analogicznie.integer
Liczba produktów w magazynie hashy.
totalStoredBrandHashes to samo dla marek.string | null
Ostatni błąd weryfikacji hash.
GET /api/sync/hash/stats
integer
Liczba produktów w magazynie hashy.
integer
Liczba marek w magazynie hashy.
string | null
Kiedy weryfikacja hash ostatnio zaktualizowała magazyn.
POST /api/sync/hash/trigger
Od razu uruchamia weryfikację hash, bez czekania na jej interwał.Potok nazwany
Aplikacja w zasobniku komunikuje się z usługą głównie przez potok nazwany WindowsOmnilinkerErpSync, a gdy usługa
nie odpowiada przez potok, korzysta z tego API HTTP. Potok to wewnętrzny interfejs między dwiema częściami agenta,
a nie publiczne API: jego polecenia mogą się zmieniać między wersjami agenta. Do skryptów i monitorowania używaj tras
HTTP opisanych na tej stronie.
- Kto może się połączyć: SYSTEM, administratorzy i osoby zalogowane na komputerze, przy konsoli albo przez Pulpit zdalny.
- Co mogą zrobić: każdy połączony może odczytać status, logi i ustawienia. Polecenia, które zmieniają agenta,
jego bazę danych ERP lub dane logowania albo go wstrzymują, wymagają członka grupy
Omnilinker ERP Sync Operators albo administratora, którego aplikacja w zasobniku działa z podwyższonymi
uprawnieniami. Pozostali dostają błąd „Only an administrator of this PC can do that.” (kod
Pipe:NotAllowed). Zobacz Kto może zmieniać agenta. - Która usługa: aplikacja w zasobniku rozmawia tylko z usługą Windows. Nie ufa innemu programowi, który otworzy potok o tej samej nazwie.