{
"Status": "OK",
"StatusDetails": [
{
"HttpStatusCode": 201,
"Opis": "Utworzono wpis o numerze: 12345, nr wew.: test0001",
"Message": "Created entry with id: 12345, client's id: test00001"
}
],
"ItemsErrors": []
}
{
...
order_id:"20145264"
...
}
string username = "MY_USERNAME";
string password = "MY_PASSWORD";
var client = new RestClient("https://api.eduksiazka.pl/api/token"); //Ustawianie adresu metody
var request = new RestRequest(Method.POST); //Ustawianie typu metody
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", string.Format("grant_type=password&username={0}&password={1}", username, password), ParameterType.RequestBody);
var queryResult = client.Execute <List<RestRequest>>(request);
dynamic obj = JsonConvert.DeserializeObject<dynamic>(queryResult.Content);
JObject parsed = JObject.Parse(queryResult.Content);
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
{
"access_token": "8P4KhaVTH...",
"token_type": "bearer",
"expires_in": 3599
}
string ACCESS_TOKEN = "8P4KhaVTH...";
client = new RestClient("https://api.eduksiazka.pl/api/PH/GetDeliveryAddresses");
request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", string.Format("Bearer {0}", ACCESS_TOKEN));
queryResult = client.Execute<List<RestRequest>>(request);
obj = JsonConvert.DeserializeObject<dynamic>(queryResult.Content);
parsed = JObject.Parse(queryResult.Content);
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
Przykładowa odpowiedź:
{
"Table": [
{
"CardCode": "O123456",
"SystemName": "Edu Błonie",
"Address": "Pass 20L magazyn nr 7 05-870 Błonie"
},
{
"CardCode": "O123456",
"SystemName": "Edu H.Lublin",
"Address": "Rapackiego 25 20-150 Lublin"
}
]
}
string ACCESS_TOKEN = "8P4KhaVTH...";
client = new RestClient("https://api.eduksiazka.pl/api/products/GetStock2");
request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", string.Format("Bearer {0}", ACCESS_TOKEN));
queryResult = client.Execute<List<RestRequest>>(request);
obj = JsonConvert.DeserializeObject<dynamic>(queryResult.Content);
parsed = JObject.Parse(queryResult.Content);
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
Przykładowy fragment odpowiedzi:
{
"Table":
[
{
"ItemCode": "0000000000644",
"Blonie": 5,
"Kielce": 0,
"Krakow": 2,
"Lublin": 1
},
...
{
"ItemCode": "0000000006448",
"Blonie": 100,
"Kielce": 3,
"Krakow": 0,
"Lublin": 3
}
]
}
string ACCESS_TOKEN = "8P4KhaVTH...";
client = new RestClient("https://api.eduksiazka.pl/api/products/GetProductsInfo");
request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", string.Format("Bearer {0}", ACCESS_TOKEN));
queryResult = client.Execute<List<RestRequest>>(request);
obj = JsonConvert.DeserializeObject<dynamic>(queryResult.Content);
parsed = JObject.Parse(queryResult.Content);
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
Przykładowy fragment odpowiedzi:
{
"Table": [
{
"ItemCode": "9788382625424",
"ItemName": "Maxinaklejki. Mój świat",
"Status": "Aktywny - dostępny",
"Publisher": "Olesiejuk",
"NetPrice": 23.80,
"VAT": "5",
"NetPriceAfDisc": 15.23,
"FullDescription": "Książka z piękną scenerią inspirowaną światem wokół nas, uzupełniona dużymi naklejkami, odpowiednia dla młodszych dzieci. Każda strona zawiera różne ustawienia, w których dziecko może dać upust swojej fantazji i ozdobić je za pomocą nalepek znajdujących się w książce.",
"Author": "praca zbiorowa",
"Format": "",
"Binding": "miekka",
"Image": "https://eduksiazka.pl/media/catalog/product/9/7/9788382625424_fd0a.jpg",
"Publishment_Year": "2022",
"Level": "",
"Subject": "",
"Category": "Książki dla dzieci",
"WebCategory": "Default Category->Książki->Książki dla dzieci->3 - 5 lat->Kolorowanki i naklejki->Kolorowanki z naklejkami i zestawy",
"Weight": "0.3160",
"Length": "24.1000",
"Width": "32.0000",
"Height": "0.6000"
},
{
"ItemCode": "9788368132229",
"ItemName": "Zima. Malowanie farbkami",
"Status": "Aktywny - dostępny",
"Publisher": "Olesiejuk",
"NetPrice": 12.37,
"VAT": "5",
"NetPriceAfDisc": 7.92,
"FullDescription": "Puść wodze fantazji, chwyć pędzelek do ręki i nadaj czarno-białym obrazkom niesamowite barwy. Kartki możesz wyrwać i ozdobić nimi pokój - Twoje dzieła pozostaną z Tobą na długo !
",
"Author": "",
"Format": "",
"Binding": "miekka",
"Image": "https://eduksiazka.pl/media/catalog/product/9/7/9788368132229_9f82.jpg",
"Publishment_Year": "2025",
"Level": "",
"Subject": "",
"Category": "Książki dla dzieci",
"WebCategory": "Default Category->Książki->Książki dla dzieci->3 - 5 lat->Kolorowanki i naklejki->Kolorowanki z naklejkami i zestawy",
"Weight": "0.1580",
"Length": "28.2000",
"Width": "28.4000",
"Height": "1.1000"
}
]
}
string ACCESS_TOKEN = "8P4KhaVTH...";
client = new RestClient("https://api.eduksiazka.pl/api/Invoices?format=JSON&number=1807102370");
request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", string.Format("Bearer {0}", ACCESS_TOKEN));
queryResult = client.Execute<List<RestRequest>>(request);
obj = JsonConvert.DeserializeObject<dynamic>(queryResult.Content);
parsed = JObject.Parse(queryResult.Content);
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
Przykładowy fragment odpowiedzi jako JSON:
[
{
"Document-Invoice": {
"Invoice-Header": {
"InvoiceNumber": "1807102370",
"InvoiceDate": "2018-07-25T00:00:00",
"SalesDate": "2018-07-25T00:00:00",
"InvoiceCurrency": "PLN",
"InvoicePaymentDueDate": "2018-08-08T00:00:00",
"InvoicePostDate": "2018-07-25T00:00:00",
"InvoiceComments": "0"
},
"Invoice-Parties": {
"Buyer": {
"TaxID": "",
"Name": "Firma 1",
"StreetAndNumber": "Rolna 8",
"CityName": "Kielce",
"PostalCode": "25-419",
"Country": "PL"
},
"Shipment": {
"Name": "Kielce",
"SteetAndNumber": "Rolna 8",
"CityName": "Kielce",
"PostalCode": "25-419",
"Country": "PL"
},
"Seller": {
"ILN": "PL5272523217",
"TaxID": "PL5272523217",
"AccountNumber": "",
"Name": "EDU-KSIĄŻKA Sp. z o.o.",
"StreetAndNumber": "Kolejowa 5/7",
"CityName": "Warszawa",
"PostalCode": "01-217",
"Country": "PL"
}
},
"Invoice-Lines": [
{
"LineItem": {
"LineNumber": "1",
"EAN": "9788361243021",
"BuyerItemCode": "",
"SupplierItemCode": "9788361243021",
"ItemDescription": "Sky High PL 1 SB + CD-ROM",
"InvoiceQuantity": 1,
"UnitOfMeasure": "",
"InvoiceUnityNetPrice": 51.33,
"InvoiceUnitNetPriceAfDisc": 51.33,
"InvoiceUnitGrossPrice": 53.90,
"TaxRate": 5.0,
"TaxCategoryCode": "F05",
"TaxReference": {
"ReferenceType": "PKWiU",
"ReferenceNumber": ""
},
"TaxAmount": 2.57,
"NetAmount": 51.33
}
}
],
"Invoice-Summary": {
"TotalLines": 1,
"TotalNetAmount": 51.33,
"TotalTaxableBasis": 51.33,
"TotalTaxAmount": 2.57,
"TotalGrossAmount": 53.90,
"TaxSummary": [
{
"TaxSummaryLine": {
"TaxRate": 5.0,
"TaxCategoryCode": "F05",
"TaxAmount": 2.57,
"TaxableBasis": 51.33,
"TaxableAmount": 51.33,
"GrossAmount": 53.90
}
}
]
}
}
}
]
Przykładowy fragment odpowiedzi jako XML przykład
string ACCESS_TOKEN = "8P4KhaVTH...";
client = new RestClient("https://api.eduksiazka.pl/api/CorrectionInvoices?format=JSON&number=1807102370");
request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", string.Format("Bearer {0}", ACCESS_TOKEN));
queryResult = client.Execute<List<RestRequest>>(request);
obj = JsonConvert.DeserializeObject<dynamic>(queryResult.Content);
parsed = JObject.Parse(queryResult.Content);
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
Przykładowy fragment odpowiedzi jako JSON:
{
"CorrectionInvoices":
[
{
"CorrectionInvoiceNumber": "120...",
"FileName": "FKPL120....pdf",
"Content": "JVBERi0xLjcgCiXi48/TIAoxIDAgb2JqIAo8PC..."
}
]
}
| Obiekt order | |||||||
|---|---|---|---|---|---|---|---|
| # | Nazwa pola | Typ danych | Wymagane | Opis | |||
| 1 | order_id | String | TAK | Numer ID zamówienia w systemie klienta. Pole przyjmuje maksymalnie 20 znaków | |||
| 2 | order_address_nazwa | String | TAK | Systemowa nazwa adresu dostawy (SystemName w metodzie GetDeliveryAddresses) | |||
| 3 | order_comments | String | NIE | Opcjonalny komentarz do zamówienia | |||
| 4 | order_email | String | TAK | Adres email na który ma zostać wysłany dokument FV | |||
| 5 | order_magazyn | String | NIE |
Magazyn z jakiego zamawiany jest towar. Wartośći obecnie dostępne to: 01 (wartość domyślna), 04, 06, 07. Poniżej krótki opis każdej z wartości: (dane odwołują się do wartości zwracanych przez metodę GetStock):
|
|||
| 6 | order_partialDelivery | Boolean | NIE | Domyślnie ustawiony na "false". Ustawienie na "true" pozwala na dodanie zamówienia z towarami, które nie są dostępne na stanie. | |||
| 7 | c_ETB_MG2_ORDERLINE | Array | TAK | Zamawiane towary | |||
| Obiekt c_ETB_MG2_ORDERLINE | |||||||
|---|---|---|---|---|---|---|---|
| # | Nazwa pola | Typ danych | Wymagane | Opis | |||
| 1 | orderline_itemcode | String | TAK | ISBN zamawianego towaru | |||
| 2 | orderline_quantity | Integer | TAK | Ilość zamawianego towaru(wartość musi być większa niż 0) | |||
string ACCESS_TOKEN = "8P4KhaVTH...";
client = new RestClient("https://api.eduksiazka.pl/api/Order");
request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", string.Format("Bearer {0}", ACCESS_TOKEN));
dynamic jOrder = new JObject();
jOrder.order_id = "test0001";
Order.order_comments = "testowy komentarz";
jOrder.order_address_nazwa = "Edu H.Lublin";
jOrder.order_email = "adres@pl";
jOrder.c_ETB_MG2_ORDERLINE = new JArray() as dynamic;
dynamic jOrderLine = new JObject();
jOrderLine.orderline_itemcode = "0000000000644";
jOrderLine.orderline_quantity = 3;
jOrder.c_ETB_MG2_ORDERLINE.Add(jOrderLine);
jOrderLine = new JObject();
jOrderLine.orderline_itemcode = "00000000006448";
jOrderLine.orderline_quantity = 10;
jOrder.c_ETB_MG2_ORDERLINE.Add(jOrderLine);
request.AddJsonBody(jOrder.ToString());
queryResult = client.Execute<List<RestRequest>>(request);
obj = JsonConvert.DeserializeObject<dynamic>(queryResult.Content);
parsed = JObject.Parse(jOrder.ToString());
foreach (var pair in parsed)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
var status = JObject.Parse(queryResult.Content);
Console.WriteLine("\nAPI response: ");
foreach (var pair in status)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
Console.ReadKey();
{
"Status": "OK",
"StatusDetails": [
{
"HttpStatusCode": 201,
"Opis": "Utworzono wpis o numerze: 12345, nr wew.: test0001",
"Message": "Created entry with id: 12345, client's id: test00001"
}
],
"ItemsErrors": []
}
{
"Status": "ERROR",
"StatusDetails": [
{
"HttpStatusCode": "kod",
"Opis": "Wiadomość w języku polskim",
"Message": "Wiadomość w języku angielskim"
},
...
],
"ItemsErrors": [
{
"orderline_itemcode": "ISBN",
"Opis": "Wiadomość w języku polskim",
"Message": "Wiadomość w języku angielskim"
},
...
]
}
| # | Błąd | Kod HTTP | Opis |
|---|---|---|---|
| 1 | Nie znaleziono strony | 404 | Adres nie odnaleziony. Sprawdź czy adres wprowadzony jest poprawny |
| 2 | Odmowa autoryzacji tego żądania | 401 | Podano nieprawidłowy token lub token wygasł |
| 3 | Data you provided are incorrect | 400 | Dane dostępowe są nieprawidłowe (username i/lub password) |
| 4 | Wymagany SSL! Spróbuj użyć linków z HTTPS | 403 | Próba podłączenia przez http. Należy zmienić na https (wymagany) |
| 5 | Access to API has expired. Please contact person responsible for granting you access | 400 | Dostęp do API utracił ważność skontaktuj się osobą odpowiedzialną za udzielenie dostępu |
| 6 | Błąd dodawania - brak towarów w zamówieniu | 406 | Nie dodano towarów do zamówienia |
| 7 | Wartość orderline_itemcode nie może być pusta | 406 | Nie podano ISBN towaru |
| 8 | Wartość orderline_quantity nie może być pusta | 406 | Nie podano ilości zamawianego towaru |
| 9 | Wartość orderline_quantity musi być większa od zera | 406 | Ilość zamawianego towaru musi być większa niż 0 |
| 10 | Wystąpił błąd dla wybranych towarów. Sprawdź szczegóły w sekcji ItemsErrors[] | 406 | Wystąpiły błędy dla wybranych towarów. Błąd najcześciej spowodowany jest przez brak stanu na magazynie dla tytułów. Sprawdź sekcje ItemsError[] aby dowiedzieć się więcej |
| 11 | Wartość order_address_nazwa nie może być pusta | 406 | Nie podano SystemName adresu dostawy |
| 12 | Wartość order_address_nazwa nie może być pusta | 406 | Nie podano wartości order_id |
| 13 | Wartość order_email nie może być pusta | 406 | Nie podano wartości order_email |
| 14 | Wartość order_magazyn nie może być pusta | 406 | Wartość order_magazyn została podana jako pusta lub null |
| 15 | Wybrany magazyn nie jest dostępny | 406 | Nie masz uprawnień do zamówień z wybranego magazynu |
| 16 | Wszystkie towary w zamówieniu są niedostępne | 406 | Podane w zamówieniu towary nie są dostępne. Sprawdź listę towarów zwracaną przez metodę GetStock |
| 17 | Brak towaru o podanym kodzie | 406 | W zamówieniu podano towar, który nie jest dostępny. Sprawdź listę towarów zwracaną przez metodę GetStock |
| 18 | Format danych JSON jest nieprawidłowy | 400 | Nieprawidłowa struktura przesyłanych danych w zamówieniu |
| 19 | Podany format parametru dateFrom jest nieprawidłowy | 406 |
Data w parametrze dateFrom przyjmuje nieprawidłowy format. Prawidłowy format to YYYY-MM-dd hh:mm:ss, gdzie:
|
| 20 | Wartość pola order_id nie może być dłuższa niż 20 znaków | 406 | Wartość pola order_id przyjmuje maksymalnie 20 znaków |