Skip to main content
Agent ERP Sync uruchamia na komputerze, na którym jest zainstalowany, niewielkie API HTTP. Możesz za jego pomocą sprawdzać stan agenta, czytać ostatnie wpisy jego logu oraz wstrzymywać, wznawiać i uruchamiać synchronizację ze skryptu lub z narzędzia do monitorowania. To lokalne API agenta. Nie jest to API Omnilinkera w chmurze i nie jest dostępne z internetu. Jak wywoływać sam Omnilinker, opisuje sekcja Dla programistów.

Bazowy adres URL

Port pochodzi z ustawienia 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.1 i ::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ż localhost lub adres pętli zwrotnej, jest odrzucane z kodem 403 Forbidden.
  • Jeden wymagany nagłówek. Każde żądanie do trasy zaczynającej się od /api musi zawierać nagłówek X-Omnilinker-Local: 1. Bez niego agent odpowiada 403 Forbidden z pustą treścią. /health nie 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 kodem 403.
  • 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.
API może wywołać każdy, kto może uruchomić program na komputerze agenta. Może odczytać stan agenta i wpisy logu oraz wstrzymać, wznowić lub uruchomić synchronizację. API nie sprawdza grupy Omnilinker ERP Sync Operators, z której korzysta aplikacja w zasobniku. Nigdy nie zwraca klucza API, hasła do ERP ani ciągu połączenia i nie może zmienić ustawień agenta. Mimo to traktuj dostęp do komputera agenta jak dostęp do samego agenta: ogranicz grono osób, które mogą się na nim logować.

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 Request z wynikiem polecenia, gdy agent odrzuca polecenie.
  • 403 Forbidden z pustą treścią oznacza, że żądanie zostało odrzucone, zanim dotarło do agenta: brakuje nagłówka X-Omnilinker-Local, host to nie localhost albo przeglądarka wysłała je z innej strony.
  • Przykłady używają PowerShell. W Windows PowerShell 5.1 curl jest aliasem polecenia Invoke-WebRequest. Aby użyć curl, wpisz curl.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

Zwraca 200 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.
Obiekty w 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.
Skrócona odpowiedź:

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że POST /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 zwraca 200 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 zwraca 200 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.
Odpowiedź to tablica wpisów logu:
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.
Stale rosnąca liczba 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 Windows OmnilinkerErpSync, 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.