Atom REST API to narzędzie pozwalające komunikować się ze sklepem AtomStore poprzez żądania HTTP, z wykorzystaniem danych w formacie JSON. Przy użyciu ustalonych i na bieżąco rozwijanych metod można wykonywać operacje odczytu i zapisu wybranych danych bez potrzeby logowania się do panelu administracyjnego.
Narzędzie jest przeznaczone dla programistów, zostało stworzone z myślą o budowie integracji z systemami magazynowo-księgowymi, ze sklepami partnerskimi, z systemami klasy ERP etc.
W razie niejasności prosimy naszych klientów o zgłoszenie w BOK w panelu administracyjnym, a inne zainteresowane osoby o bezpośredni kontakt.
Adres i autoryzacja
Narzędzie wymaga włączenia modułu w konfiguracji sklepu:
.png)
Do poprawnej autoryzacji potrzebne są login i hasło administratora uzyskane w panelu administracyjnym AtomStore → USTAWIENIA → ADMINISTRATORZY, ewentualnie skorzystać można z tego samego loginu i hasła, które służą do logowania do panelu. W parametrach konta administratora należy zaznaczyć dostęp do API (wówczas wyświetli się konfiguracja dostępu do konretnych metod):
.png)
Adres do wywołań Atom REST API:
{domena sklepu wraz z „https://”}/api/{zasób}/{metoda}
np.:
Autoryzacja w wywołaniach poszczególnych metod API odbywa się poprzez token, który należy uzyskać wywołując endpoint:
{domena sklepu wraz z „https://”}/api/users/authorize
wraz z loginem i hasłem administratora. Token jest ważny w czasie 60 minut od dowolnego, skutecznego wywołania API.
Przykładowe wywołanie (PHP)
$post = [
'login' => 'admin',
'password' => 'admin'
];
$headers = [
'Content-Type: application/json'
];
$curl = curl_init('https://demo.atomstore.pl/api/users/authorize');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post));
$token = json_decode(curl_exec($curl));
curl_close($curl);
if ($token->token){
$headers = [
'X-API-TOKEN: '.$token->token,
'Content-Type: application/json'
];
$url = 'https://demo.atomstore.pl/api/categories/index';
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$result = json_decode(curl_exec($curl));
curl_close($curl);
}Metody
Metody/endpointy Atom REST API, a także struktury danych wejściowych i wyjściowych, zostały opisane tutaj:
https://docs.atomstore.pl/api_documentation/index
Filtrowanie danych
STRONICOWANIE – w wybranych metodach udostępniono parametry:
- page
- limit
które pozwalają na pobieranie dużej liczby rekordów partiami. Metadane w odpowiedzi JSON zawierają wtedy pole 'total’ informujące o łącznej liczbie pakietów danych, którą należy pobrać zwiększając w kolejnych wywołaniach wartość parametru 'page’.
FILTROWANIE – API pozwala zawężać odczytywane dane wg wybranych parametrów poprzez podanie w parametrach GET operatora oraz klucza (pola), np.:
Obsługiwane operatory:
- eq : dokładne dopasowanie
- like : podana fraza zawiera się w zwracanych danych
- in : podane frazy po przecinku dokładnie dopasowane (Tylko dla orders/index)
- notin : podane frazy po przecinku dokładnie nie dopasowane (Tylko dla orders/index)
i dodatkowo dla pól liczbowych oraz dat:
- gt : większe niż
- gte : większe lub równe od
- lt : mniejsze niż
- lte : mniejsze lub równe od
RÓŻNICOWANIE – zalecane jest cykliczne pobieranie danych nowych/zmienionych od poprzednio zakończonego cyklu. W tym celu oprogramowano parametry created/modified, np.:
Ustawienie:.png)
pozwala dodatkowo odróżnić w systemie daty modyfikacji w różnych obszarach danych towaru:
- quantity_modified – zmiany stanów magazynowych, stanów u dostawców, statusów dostępności,
- price_modified – zmiany w zakresie cen, promocji,
- media_modified – zmiany w galerii zdjęć towaru,
- modified – pozostałe zmiany w kartotece produktu.
Prawidłowo zaimplementowana integracja powinna korzystać z takiej konfiguracji i różnicować odczyt powyższych danych niezależnie wg wskazanych parametrów.
Zamówienia – dane szczegółowe
Parametry wejściowe:
| Pole | Typ | Długość | Wymagane – create | Wymagane – update |
| prefix | readonly | readonly | ||
| sufix | readonly | readonly | ||
| external_id | string | 255 | nie | nie |
| confirmed | bool | 1 | nie | nie |
| date_shipment | date | YYYY-MM-DD | nie | nie |
| date_delivery | date | YYYY-MM-DD | nie | nie |
| locale | string | 3 | nie | nie |
| receipt→receipt | bool | 1 | nie | nie |
| receipt→number | string | 256 | nie | nie |
| receipt→number | string | 256 | nie | nie |
| payment_method→id | int | 11 | tak | tak |
| shipping_method→id | int | 11 | tak | tak |
| allegro→number | bool | 1 | nie | nie |
| allegro→account | string | 256 | nie | nie |
| allegro→transaction→id | string | 256 | nie | nie |
| source | string | 256 | nie | nie |
| currency→code | string | 3 | tak | tak |
| currency→value | decimal(16,8) | decimal(16,8) | tak | tak |
| currency→value | decimal(16,8) | decimal(16,8) | tak | tak |
| coupon→id | decimal(16,8) | decimal(16,8) | tak | tak |
| coupon→code | int | 5 | nie | nie |
| coupon→value | decimal(8,2) | decimal(8,2) | nie | nie |
| coupon→name | string | 256 | nie | nie |
| payments→payment_method→id | int | 11 | nie | nie |
| payments→module→key | string | 255 | nie | nie |
| payments→voucher→id | int | 5 | nie | nie |
| payments→voucher→code | string | 32 | nie | nie |
| payments→voucher→name | string | 64 | nie | nie |
| payments→transaction→id | string | 64 | nie | nie |
| payments→transaction→key | string | 64 | nie | nie |
| payments→date | date | YYYY-MM-DD HH::mm:ss | nie | nie |
| payments→amount | decimal(10,2) | decimal(10,2) | nie | nie |
| payments→commission | decimal(10,2) | decimal(10,2) | nie | nie |
| payments→payment_method→external_id | int | 11 | nie | nie |
| user→id | int | 11 | tak | tak |
| user→subuser_id | int | 7 | nie | nie |
| user→external_id | int | 11 | nie | nie |
| user→allegro→user_id | int | 11 | nie | nie |
| user→allegro→login | string | 256 | nie | nie |
| user→email | string | 256 | tak | tak |
| user→username | string | 256 | tak | tak |
| user→newsletter | int | 11 | nie | nie |
| user→locale | int | 3 | nie | nie |
| shipping_address→id | int | 11 | nie | nie |
| shipping_address→firstname | string | 256 | tak | tak |
| shipping_address→lastname | string | 256 | tak | tak |
| shipping_address→father_name | string | 256 | nie | nie |
| shipping_address→company | string | 256 | tak | tak |
| shipping_address→street | string | 256 | tak | tak |
| shipping_address→street_number_1 | string | 256 | tak | tak |
| shipping_address→street_number_2 | string | 256 | tak | tak |
| shipping_address→postcode | string | 256 | tak | tak |
| shipping_address→city | string | 256 | tak | tak |
| shipping_address→country→code | string | 3 | tak | tak |
| shipping_address→country→name | string | 256 | tak | tak |
| shipping_address→phone | string | 256 | tak | tak |
| shipping_address→description | string | 256 | tak | tak |
| shipping_address→email | string | 256 | tak | tak |
| payment_address→id | int | 11 | nie | nie |
| payment_address→firstname | string | 256 | tak | tak |
| payment_address→lastname | string | 256 | tak | tak |
| payment_address→nip | string | 256 | nie | nie |
| payment_address→company | string | 256 | tak | tak |
| payment_address→street | string | 256 | tak | tak |
| payment_address→street_number_1 | string | 256 | tak | tak |
| payment_address→street_number_2 | string | 256 | tak | tak |
| payment_address→postcode | string | 256 | tak | tak |
| payment_address→city | string | 256 | tak | tak |
| payment_address→country→code | string | 3 | tak | tak |
| payment_address→country→name | string | 256 | tak | tak |
| payment_address→phone | string | 256 | tak | tak |
| payment_address→description | string | 256 | tak | tak |
| payment_address→email | string | 256 | tak | tak |
| payment_term→adin->email | string | 256 | nie | nie |
| products→product->id | int | 11 | tak | nie |
| products→quantity | int | 11 | tak | nie |
| fields→id | int | 3 | nie | nie |
| fields→key | string | 2000 | nie | nie |
| fields→name | string | 256 | nie | nie |
| fields→value | string | 256 | nie | nie |
| externals→module | string | 256 | nie | nie |
| externals→external_id | string | 256 | nie | nie |
| externals→name | string | 256 | nie | nie |
| store→id | int | 11 | nie | nie |
| store→name | string | 256 | nie | nie |
| benefit→code | string | 256 | nie | nie |
| offer→name | string | 256 | nie | nie |

