Atom REST API

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:

mceclip2(5)


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):

mceclip1(17)


Adres do wywołań Atom REST API:
{domena sklepu wraz z „https://”}/api/{zasób}/{metoda}
np.:

https://demo.atomstore.pl/api/product_quantities/index?quantity_modified[gte]=2022-09-05

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.:

https://demo.atomstore.pl/api/users/index?email[like]=kowalski

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.:

https://demo.atomstore.pl/api/product_quantities/index?quantity_modified[gte]=2022-09-05

Ustawienie:
mceclip0(78)

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:

PoleTypDługośćWymagane – createWymagane – update
prefixreadonlyreadonly
sufixreadonlyreadonly
external_idstring255nienie
confirmedbool1nienie
date_shipmentdateYYYY-MM-DDnienie
date_deliverydateYYYY-MM-DDnienie
localestring3nienie
receipt→receiptbool1nienie
receipt→numberstring256nienie
receipt→numberstring256nienie
payment_method→idint11taktak
shipping_method→idint11taktak
allegro→numberbool1nienie
allegro→accountstring256nienie
allegro→transaction→idstring256nienie
sourcestring256nienie
currency→codestring3taktak
currency→valuedecimal(16,8)decimal(16,8)taktak
currency→valuedecimal(16,8)decimal(16,8)taktak
coupon→iddecimal(16,8)decimal(16,8)taktak
coupon→codeint5nienie
coupon→valuedecimal(8,2)decimal(8,2)nienie
coupon→namestring256nienie
payments→payment_method→idint11nienie
payments→module→keystring255nienie
payments→voucher→idint5nienie
payments→voucher→codestring32nienie
payments→voucher→namestring64nienie
payments→transaction→idstring64nienie
payments→transaction→keystring64nienie
payments→datedateYYYY-MM-DD HH::mm:ssnienie
payments→amountdecimal(10,2)decimal(10,2)nienie
payments→commissiondecimal(10,2)decimal(10,2)nienie
payments→payment_method→external_idint11nienie
user→idint11taktak
user→subuser_idint7nienie
user→external_idint11nienie
user→allegro→user_idint11nienie
user→allegro→loginstring256nienie
user→emailstring256taktak
user→usernamestring256taktak
user→newsletterint11nienie
user→localeint3nienie
shipping_address→idint11nienie
shipping_address→firstnamestring256taktak
shipping_address→lastnamestring256taktak
shipping_address→father_namestring256nienie
shipping_address→companystring256taktak
shipping_address→streetstring256taktak
shipping_address→street_number_1string256taktak
shipping_address→street_number_2string256taktak
shipping_address→postcodestring256taktak
shipping_address→citystring256taktak
shipping_address→country→codestring3taktak
shipping_address→country→namestring256taktak
shipping_address→phonestring256taktak
shipping_address→descriptionstring256taktak
shipping_address→emailstring256taktak
payment_address→idint11nienie
payment_address→firstnamestring256taktak
payment_address→lastnamestring256taktak
payment_address→nipstring256nienie
payment_address→companystring256taktak
payment_address→streetstring256taktak
payment_address→street_number_1string256taktak
payment_address→street_number_2string256taktak
payment_address→postcodestring256taktak
payment_address→citystring256taktak
payment_address→country→codestring3taktak
payment_address→country→namestring256taktak
payment_address→phonestring256taktak
payment_address→descriptionstring256taktak
payment_address→emailstring256taktak
payment_term→adin->emailstring256nienie
products→product->idint11taknie
products→quantityint11taknie
fields→idint3nienie
fields→keystring2000nienie
fields→namestring256nienie
fields→valuestring256nienie
externals→modulestring256nienie
externals→external_idstring256nienie
externals→namestring256nienie
store→idint11nienie
store→namestring256nienie
benefit→codestring256nienie
offer→namestring256nienie