Ten fragment kodu to Swagger Specification w wersji 2.0, czyli format dokumentacji dla API. Zawiera on informacje dotyczące API, takie jak opis, wersja, nazwa, host i ścieżka bazowa.
W sekcji „tags” znajdują się kategorie, które mogą być użyte do grupowania ścieżek, a w „paths” znajdują się konkretne ścieżki dostępne w API. W tym przykładzie jest tylko jedna ścieżka „/ApiService.asmx/Execute”, która obsługuje żądania typu POST.
W sekcji „parameters” znajduje się jeden parametr „body”, który jest obiektem typu „ApiExecuteRequest” i jest przekazywany w żądaniu POST. W sekcji „responses” opisane są odpowiedzi serwera dla każdego możliwego przypadku, takie jak „200” dla udanego wykonania żądania, „401” dla nieprawidłowych danych uwierzytelniających i „400” dla nieprawidłowych danych żądania.
Swagger jest bardzo przydatnym narzędziem do dokumentowania API i pomaga programistom w łatwym zrozumieniu, testowaniu i korzystaniu z API.
Informacje ogólne dotyczące WS
Swagger
Pobierz plik w formacie swagger i go rozpakuj
Następnie załaduj go na stronie: https://editor.swagger.io/
Historia zmian:
dpmag
Ten fragment kodu przedstawia ścieżkę API „/dpmag.asmx/GetDocumentsByAwizo” w specyfikacji Swagger 2.0.
Powyżej w definicji zostały zadeklarowane tagi, które identyfikują tę ścieżkę jako część modułu „DPMAG”.
W tej ścieżce została zdefiniowana operacja „post”, która umożliwia pobieranie dokumentów na podstawie numeru awizo.
W sekcji „parameters” zostały zadeklarowane cztery parametry: „body” typu „AuthData” zawierający dane autoryzacyjne, „nrawizo” typu „string” zawierający numer awizo oraz opcjonalne parametry „pageSize” i „pageNumber”, które ograniczają liczbę dokumentów zwracanych w odpowiedzi.
W sekcji „responses” zostały zadeklarowane trzy możliwe odpowiedzi na żądanie API: „200” w przypadku sukcesu, „401” w przypadku nieprawidłowych danych autoryzacyjnych i „400” w przypadku nieprawidłowych danych żądania.
Sekcja „schema” określa format danych zwracanych w odpowiedzi – w tym przypadku są to dokumenty zdefiniowane w modelu „DPMAG_DocumentResponse”.
GetDocumentsByCustomer
Ten fragment dokumentacji opisuje endpoint o nazwie /dpmag.asmx/GetDocumentsByCustomer
, który obsługuje żądanie typu POST.
Opis tego endpointu jest podzielony na sekcje:
tags
– tagi, którymi endpoint jest oznaczony (w tym przypadku „DPMAG”)summary
– krótki opis endpointu („Get documents”)description
– dłuższy opis, który w tym przypadku jest pusty („”)operationId
– unikalny identyfikator endpointu („GetDocumentsByCustomer”)consumes
– formaty danych, które są obsługiwane przez endpoint (w tym przypadku „application/json”)produces
– formaty danych, które mogą być zwracane przez endpoint (w tym przypadku również „application/json”)parameters
– lista parametrów, które endpoint przyjmuje, w tym:body
– ciało żądania w formacie JSON, które zawiera dane uwierzytelniające („AuthData”), potrzebne do autoryzacji użytkownikanridodn
– numer identyfikacyjny klienta, dla którego mają być zwrócone dokumenty (wymagany)ean
– kod kreskowy dokumentu (opcjonalny)dateFrom
– data początkowa zakresu dat, dla którego mają być zwrócone dokumenty (opcjonalny)dateTo
– data końcowa zakresu dat, dla którego mają być zwrócone dokumenty (opcjonalny)pageSize
– liczba wyników na stronę (opcjonalny)pageNumber
– numer strony (opcjonalny)
responses
– lista możliwych odpowiedzi, w tym:- kod „200” z opisem „Success”, który oznacza, że żądanie zostało przetworzone poprawnie i zwrócone zostały oczekiwane dane w formacie JSON, którego schemat odpowiada definicji „DPMAG_DocumentResponse”
- kod „401” z opisem „Invalid authentication data”, który oznacza, że żądanie nie zawiera poprawnych danych uwierzytelniających
- kod „400” z opisem „Invalid request data”, który oznacza, że żądanie zawiera nieprawidłowe dane.
AddOrder
Endpoint dpzle.asmx/AddOrder to metoda API, która umożliwia dodanie zamówienia do systemu. Jest to żądanie POST, które akceptuje ładunek JSON w ciele żądania zawierający niezbędne informacje do utworzenia zamówienia. API wymaga, aby dane uwierzytelniające były zawarte w nagłówkach żądania w celu autoryzacji.
Endpoint jest oznaczony jako część interfejsu API „DPZLE” i ma podsumowanie „Add order”. Konsumuje i produkuje dane w formacie JSON oraz ma jeden parametr w ciele żądania o typie DPZLE_AddOrderRequest. Odpowiedź ma kod stanu 200 w przypadku sukcesu, a schemat odpowiedzi to DPZLE_AddOrderResponse.
Jeśli dane uwierzytelniające są nieprawidłowe lub wystąpią jakieś problemy z danymi żądania, API zwróci odpowiedź z kodem stanu 401 lub 400 odpowiednio, wraz z komunikatem błędu w treści odpowiedzi.
Rola WMS
default.asmx
Adres testowy dla programisty
/App_webService/wms/default.asmx
Przykładowa witryna:
https://root.softwarestudio.com.pl/app_webservice/wms/default.asmx
Zawiera metody testowe tzw „lustro”, czyli metodę do wywołania, która jednak nic nie zapisuje w bazie danych
HelloWorld
Funkcja do sprawdzenia komunikacji, zwraca tekst
{
„message”: „Hello World!”
}
https://root.softwarestudio.com.pl/app_webservice/wms/default.asmx/helloworld
Wyjątkowa funkcja, która nie wymaga danych przesyłanych w BODY, w tym uwierzytelniania.
AddAssortment
Test poprawności wywołania metody dodawania asortymentu do bazy:
https://root.softwarestudio.com.pl/app_webservice/wms/default.asmx/AddAssortment
Przykładowa zawartość BODY
{ "authData": { "login": "A83F-EF35E9409C3B", "password": "B4D35813-8815-4393" }, "addAssortmentData":{ "nridodn": "3331111551110", "sku": "12137", "ean":"123", "name": "SIEMEK5", "warehouse": "01", "unit": "szt.", "department": "POP" } }
knaso.asmx
Zawiera zestaw funkcji logicznie powiązanych z kartotekami towarowymi – asortymentowymi.
AddAssortment
Pozwala na dopisywanie nowych kartotek towarowych do bazy
https://root.softwarestudio.com.pl/app_webservice/wms/knaso.asmx/AddAssortment
BODY zawierać musi dwie sekcje:
- authData – dane autoryzacyjne
- addAssortmentData – dane związane z zakładaną kartoteką
Przykład BODY
{ "authData": { "login": "A83F-EF35E9409C3B", "password": "B4D35813-8815-4393" }, "addAssortmentData":{ "nridodn": "3331111551110", "sku": "12137", "ean":"123", "name": "SIEMEK5", "warehouse": "01", "unit": "szt.", "department": "POP" } }
Przykład zwracanego poprawnego komunikatu:
{ "ssResponseData": { "refno": 6374699774045181, "name": "AddAssortment", "number": 0, "seen": "2021-01-23T11:22:20.7122745+01:00" } }
gdzie
- refno – zwraca unikalny wewnętrzny identyfikator dodanej kartoteki towarowej.
- name – nazwa wywołanej funkcji
- number – liczba określająca status
- seen – data i czas wykonania
GetAssortment
Funkcja zwraca dane dotyczące asortymentu wraz ze stanem magazynowym oraz stanem dostępnym.
https://root.softwarestudio.com.pl/app_webservice/wms/knaso.asmx/GetAssortment
Wymagane jest podanie identyfikatora SKU, symbol magazynu oraz oddziału.
Zawartość BODY:
{ "authData": { "login": "A83F-EF35E9409C3B", "password": "B4D35813-8815-4393" }, "addAssortmentData":{ "sku": "88552266", "warehouse": "01", "department": "CEN" } }
Przykład poprawnych danych zwracanych przez web metodę:
{ "assortmentData": { "sku": "88552266", "name": "Zdolny 8-latek: przygoda z matematyką 88552266/11 ", "department": "CEN", "warehouse": "01", "unit": "SZT", "nridodn": 2361080250356, "ean": "", "sku2": "88552266/11", "productNetWeight": 0.000, "productGrossWeight": 10525.000, "productWidth": 0.0, "productHeight": 0.0, "productLength": 0.0, "productCapacity": 0.0, "productDescription": "", "nridasn": 4038150830498, "productStock": 220.000, "productStockAvailable": 228.000 } }
GetStock
Funkcja zwraca tablicę danych, aktywnych kartotek towarowych oraz ich stany zapasów magazynowych. Wynik jest filtrowany wg magazynu i oddziału. Zwraca są wyłącznie te pozycje, których stan jest różnych od zera.
Pozycje zerowe (brak stanu lub stan=0) nie są zwracane.
https://root.softwarestudio.com.pl/app_webservice/wms/knaso.asmx/GetStock
Zawiera sekcje:
- authData
- StockData
Przykładowa zawartość BODY:
{ "authData": { "login": "A83F-EF35E9409C3B", "password": "B4D35813-8815-4393" }, "stockData":{ "warehouse": "01", "department": "CEN" } }
Przykład poprawnych danych zwracanych przez web metodę:
{ "authData": null, "stockData": { "department": "CEN", "warehouse": "01", "productStock": [{ "nridasn": 5245202251509, "sku": "0101010101099", "name": "Uszczelki '555' DMWMS912032019309 ", "stock": 1.000 }, { "Nridasn": 5245202002499, "Sku": "11111111111", "Name": "tryby 2222222222 ", "Stock": 100.000 }, { "Nridasn": 6365359512997772, "Sku": "112233", "Name": "Torba lażowa", "Stock": 1066.490 }, { "Nridasn": 4154082220412, "Sku": "885522/1101WMS", "Name": "Zdolny 8-latek: przygoda z matematyką 885522/11 ", "Stock": 220.000 }, { "Nridasn": 4038150830498, "Sku": "88552266", "Name": "Zdolny 8-latek: przygoda z matematyką 88552266/11 ", "Stock": 220.000 }, { "Nridasn": 4135080455066, "Sku": "987", "Name": "Gra video", "Stock": 206.000 }, { "Nridasn": 4161135653869, "Sku": "C7", "Name": "Telewizor kolorowy", "Stock": 303.000 } ] } }
gdzie:
- Nridasn – unikalny, wewnętrzny identyfikator kartoteki systemu WMS
- Sku – identyfikator jawny kartoteki magazynowej tzw indeks materiałowy
- Name – nazwa artykułu
- Stock – zapas magazynowy w momencie zwraca danych
kncrm.asmx
Zawiera zestaw funkcji logicznie powiązanych z kartotekami klientów – odbiorców.
AddContractor
Pozwala na dopisywanie nowych kartotek odbiorców do bazy
https://root.softwarestudio.com.pl/app_webservice/wms/kncrm.asmx/AddContractor
BODY zawierać musi dwie sekcje:
- authData – dane autoryzacyjne
- ContractorData- dane związane z zakładaną kartoteką
Przykład BODY
{ "authData": { "login": "A83F-EF35E9409C3B", "password": "B4D35813-8815-4393" }, "contractorData":{ "contractorPrx": "01", "department": "CEN", "nridodn":"6245103610848", "contractorName":"nazwa pełna", "contractorShortName":"nazwa skrocona", "contractorCountry":"PL", "contractorPostcode":"12-345", "contractorCity":"Miejscowość", "contractorStreet":"Ulica", "contractorPhoneNumber":"+48 11 22 33 444", "contractorMail":"mail@wms.net.pl", "contractorVAT":"PL7791010701", "contractorDescription":"uwagi, opis kartoteki" } }
Przykład zwracanego poprawnego komunikatu:
{ "ssResponseData": { "refno": 6245103610848, "name": "AddContractor", "number": 0, "seen": "2021-01-24T09:10:52.5637389+01:00" } }
gdzie
- refno – zwraca unikalny wewnętrzny identyfikator dodanej kartoteki kontrahenta.
- name – nazwa wywołanej funkcji
- number – liczba określająca status
- seen – data i czas wykonania
dpzle.asmx
Zawiera zestaw funkcji związanych z zamówieniami (awizacjami) dostaw i wysyłek.
AddOrder
Pozwala na dopisywanie nowych kartotek odbiorców/dostawców do bazy wraz z zamówieniem
https://root.softwarestudio.com.pl/app_webservice/wms/dpzle.asmx/AddOrder
BODY zawierać musi sekcje:
- authData – dane autoryzacyjne
- ContractorData- dane związane z zakładaną kartoteką
- OrderData – dane nagłówkowe zamówienia/zlecenia
- OrderPositions – lista pozycji zamówienia
Przykład BODY
{ "authData":{ "login":"A83F-EF35E9409C3B", "password":"B4D35813-8815-4393" }, "contractorData":{ "contractorPrx":"01", "contractorName":"ContractorName SS", "contractorShortName":"ContractorShortName", "contractorCountry":"pl", "contractorPostcode":"12345", "contractorCity":"ContractorCity", "contractorStreet":"ContractorStreet", "contractorPhoneNumber":"ContractorPhoneNumber", "contractorMail":"ContractorMail", "contractorVAT":"ContractorVAT", "contractorDescription":"ContractorDescription" }, "orderData":{ "department":"CEN", "warehouse":"MG", "nridodn":"3035164709144", "orderPrx":"01", "orderType":"ZPZ", "orderNumber":"Numer 2021", "orderPositions":[{"orderPositionSku":"0101010101099", "orderQuantity":1234, "orderPalletNumber":"AA123" }, {"orderPositionSku":"9879871", "orderQuantity":1235, "orderPalletNumber":"BB123" } ] } }
Przykład zwracanego poprawnego komunikatu:
{ "ssResponseData": { "refno": 6245103610848, "name": "AddOrder", "number": 0, "seen": "2021-01-24T09:10:52.5637389+01:00" } }
gdzie:
- refno – zwraca unikalny wewnętrzny identyfikator dodanego dokumentu zamówienia.
- name – nazwa wywołanej funkcji
- number – liczba określająca status
- seen – data i czas wykonania