Przejdź do głównej treści
Omnilinker ma REST API pod adresem https://omnilinker.pl/api/. To to samo API, z którego korzysta aplikacja webowa, więc większość tego, co robisz na ekranie, możesz też zrobić ze skryptu, z middleware’u takiego jak n8n czy Make albo z własnej usługi. Każde żądanie uwierzytelniasz kluczem API, który działa w imieniu osoby, która go utworzyła.

Co możesz dziś zintegrować

Jeszcze niedostępne:
  • Webhooki wychodzące. Omnilinker nie wywołuje Twojego endpointu, gdy coś się zmieni. Zamiast tego odpytuj dziennik zamówień; zobacz Webhooki i kanały zmian.
  • Klienci OAuth dla Twoich aplikacji. W Omnilinkerze nie zarejestrujesz klienta OAuth ani OpenID Connect. Użyj klucza API; zobacz Uwierzytelnianie.
  • Biblioteki klienckie. Nie ma oficjalnego SDK. Jeśli go potrzebujesz, wygeneruj klienta z dokumentu OpenAPI; zobacz Dokumentacja API.

Dokumentacja API

Dokumentacja wymienia każdy endpoint z jego parametrami i schematem odpowiedzi: Na stronie Klucze API przycisk Dokumentacja API otwiera Swagger UI. Dokumentacja opisuje całe API, także endpointy, z których klucz API nie może korzystać (zarządzanie użytkownikami, rolami, ustawieniami i kluczami). Które to są, wyjaśnia strona Uwierzytelnianie.

Pierwsze żądanie

1

Utwórz klucz API

W Omnilinkerze otwórz Klucze API i kliknij Nowy klucz API. Wybierz, co będzie z niego korzystać, nadaj mu nazwę i kliknij Utwórz klucz. Skopiuj klucz, gdy się pojawi: widzisz go tylko raz. Zobacz Uwierzytelnianie.
2

Sprawdź klucz

Wywołaj GET /api/api-key-management/whoami z kluczem w nagłówku X-Api-Key:
Odpowiedź podaje nazwę klucza, osobę, w której imieniu działa, Twoją organizację i uprawnienia, które klucz faktycznie ma. Jeśli grantedPermissions jest puste, klucz nie może jeszcze nic zrobić.
3

Wywołaj endpoint

Na przykład pobierz najnowsze zamówienia (klucz potrzebuje uprawnienia Zamówienia):
Wywołuj API z serwera lub skryptu, nie z kodu, który działa w przeglądarce: klucz umieszczony na stronie może odczytać każdy, kto ją otworzy.

Obszary API

Każdy moduł ma własny prefiks ścieżki. Tabela wymienia obszary, z których integracja najczęściej korzysta; dokumentacja API wymienia wszystkie. Endpointy modułu, który nie jest włączony dla Twojej organizacji, odpowiadają 403 Forbidden. To, jakie moduły masz, zależy od Twojego planu; zobacz Moduły i dostępność funkcji.

Konwencje

Żądania i odpowiedzi

  • Treść żądań i odpowiedzi to JSON. Nazwy właściwości są w camelCase: totalCount, items, orderId.
  • Wyliczenia (enumy) wysyłasz i dostajesz jako liczby. Dokumentacja API podaje, jakie liczby przyjmuje każde z nich.
  • Identyfikatory to GUID-y, chyba że dokumentacja mówi inaczej (na przykład id w dzienniku zamówień to liczba).
  • Czasy są zwracane w UTC, w formacie ISO 8601. Wysyłaj je też w UTC, z Z lub przesunięciem, żeby nie zostały odczytane w innej strefie czasowej.
  • dimensions i weight produktu są w jego własnej jednostce unit, tak samo w odpowiedzi jak w żądaniu: pudełko o wysokości 15 cm to "height": 15 z jednostką centymetr, a odesłanie tej wartości zostawia 15 cm. Mimo nazwy weight.amountInGrams zawiera wagę w jednostce weight.unit. Wartości są zaokrąglone do 15 cyfr znaczących, więc odesłane bez zmian, nawet przez typ double, zachowują dokładnie zapisaną wartość.
  • Endpointy, które zwracają plik (eksport, szablon importu), odpowiadają samym plikiem, a nie JSON-em.

Listy i stronicowanie

Endpointy list przyjmują trzy parametry zapytania: Lista stronicowana zwraca łączną liczbę pozycji i jedną stronę:
Kolejne strony pobierasz, zwiększając SkipCount o MaxResultCount, dopóki nie masz totalCount pozycji. Niektóre endpointy mają własne stronicowanie, jak kursor dziennika zamówień; mówi o tym ich opis w dokumentacji.

Twoja organizacja

Klucz należy do jednej organizacji, a każde wywołanie z nim odczytuje i zapisuje tylko dane tej organizacji. Nie wysyłasz nagłówka ani identyfikatora najemcy: decyduje klucz. Aby pracować z dwiema organizacjami, użyj klucza z każdej z nich.

Bezpieczne tworzenie zamówień

Gdy tworzysz zamówienie przez POST /api/ordering/order, wyślij nagłówek Idempotency-Key z wartością unikalną dla tego zamówienia w Twoim systemie, do 128 znaków. Jeśli wywołanie przekroczy limit czasu i wyślesz je ponownie z tą samą wartością, Omnilinker zwróci zamówienie, które już utworzył, zamiast tworzyć drugie. Wartość możesz też wysłać jako idempotencyKey w treści żądania; gdy są obie, wygrywa ta z treści.

Błędy

Gdy wywołanie się nie uda, treść odpowiedzi opisuje błąd zawsze w tym samym kształcie, niezależnie od endpointu:
  • code identyfikuje błąd. Jest obecny, gdy błąd go ma; obsługę błędów opieraj na nim, a nie na komunikacie.
  • message jest przeznaczony dla ludzi i jest w języku żądania: wyślij Accept-Language: pl-PL, aby dostać komunikat po polsku, albo Accept-Language: en, aby dostać go po angielsku.
  • validationErrors wymienia każde niepoprawne pole, jako message i members (nazwy pól), gdy żądanie nie przeszło walidacji.
  • data zawiera wartości związane z błędem, na przykład przekroczony limit.
Kod statusu mówi, jaki to rodzaj błędu: Omnilinker nie ogranicza dziś liczby żądań wysyłanych z klucza API.

Uwierzytelnianie

Wysyłanie klucza, testowanie i to, co klucz może.

Webhooki i kanały zmian

Śledzenie zmian w zamówieniach przez dziennik zamówień.

Formaty plików

Kolumny importu stanów i eksportów.

Klucze API

Tworzenie, wymiana i unieważnianie kluczy.