Wgrywanie produktów przez API

Umożliwiamy Państwu również automatyczne zakładanie w elibri rekordów poprzez API. Autentyfikacja następuje poprzez poprzez digest authentication.

POST
/api/upload/
Wgranie informacji o jednym produkcie

W treści żądania proszę umieścić metadane w formacie ONIX. W jednym żądaniu można wysłać dane tylko jednego tytułu. Proszę zwrócić też uwagę, że na końcu adresu jest '/'

Jeśli produkt został dodany do bazy, to odpowiedź ma kod htttp 201, a przykładowa odpowiedź to:

{ "message":"Produkt został dodany do bazy danych",
  "url":"https://www.elibri.com.pl/publishers/446172282/products/916350536",
  "record_reference":"c4e206832a24ac606d7f"}

Jeśli rekord został zauktualizowany, to serwera zwraca kod 200:

{ "message":"Dane zostały uaktualnione",
  "url":"https://www.elibri.com.pl/publishers/446172282/products/916350537",
  "record_reference":"5df565c590f952962404"}

Jeśli przekazane dane są błędne, system zwraca kod 422 oraz informację o błędach:

{"message":"Wystąpiły błędy podczas walidacji - proszę nie wprowadzać tytułu oryginału, jeśli jest taki sam jak polski tytuł"}

Przykład wywołania w curl-u:

curl -i -k --digest -u $PUBLISHER_ID:$UPLOAD_PASSWORD -X POST \
-d @onix.xml https://www.elibri.com.pl/api/upload/

Wgrywanie plików master

Aby wgrać pliki master za pośrednictwem API należy skorzystać z opisanej poniżej metody. Proces wgrywania każdego pliku składa się z trzech kroków:

  1. uzyskanie linku umożliwiającego upload pliku,
  2. upload pliku
  3. powiązanie pliku z produktem

Link umożliwiający upload

W pierwszej kolejności konieczne jest pozyskanie tymczasowego linku umożliwiającego upload pliku. Każdy link jest unikalny i ważny jedynie przez krótki okres, należy więc pozyskać osobny link dla każdego uploadowanego pliku i wykorzystać go niezwłocznie.

POST
/api/upload/products/:record_reference/stored_files/authorize_upload
Autoryzacja uploadu

:record_reference w adresie należy zastąpić record reference produktu, do którego mają zostać dodane pliki.

W przypadku powodzenia operacji odpowiedź będzie zawierać link umożliwiający upload oraz unikalny identyfikator:

{
  "url": "https://s3.elibri.com.pl/elibri_masters/tmp/3123123123-adb2-4f50-ad60-3c52b83f5234?X-Amz-Credential=QVGXBQ",
  "upload_id": "05b209dc-adb2-4f50-ad60-3c52b83f5234"
}

Wartość upload_id należy zapamiętać do użycia w ostatnim kroku, a wartość url należy wykorzystać w kolejnym.

Przykład wywołania w curl-u:

curl -i -k --digest -u $PUBLISHER_ID:$UPLOAD_PASSWORD -X POST \
https://www.elibri.com.pl/api/upload/products/$RECORD_REFERENCE/stored_files/authorize_upload

Upload pliku

Korzystająć z URLa pozyskanego w poprzednim kroku należy uploadować plik. W tym celu należy wykonać żądanie metodą PUT na ten adres URL przesyłając plik w body żądania.

Przykład wywołania w curl-u:

curl -i -X PUT -d @plik.pdf $UPLOAD_URL

Powiązanie pliku z produktem

Po udanym uploadowaniu pliku należy powiązać go z produktem.

POST
/api/upload/products/:record_reference/stored_files/upload
Powiązanie z produktem

:record_reference w adresie należy zastąpić record reference produktu, do którego mają zostać dodane pliki.

Ciało żądania powinno być sformatowane jako JSON, a do żądania należy dodać nagłówek Content-Type: application/json. Treść żądania należy skonstruować w następujący sposób:

{
  "upload_id": "05b209dc-adb2-4f50-ad60-3c52b83f5234",
  "file_type": "pdf"
}

Jako upload_id należy przesłać tę samą wartość, która została pozyskana w pierwszym kroku (razem z linkiem do uploadowania).

Jako file_type należy przesłać typ pliku. Dopuszczalne wartości to pdf, epub i mobi.

Jeśli wszystkie parametry żądania będą prawidłowe, a plik został wcześniej uploadowany we właściwy sposób, serwer zwróci pustą odpowiedź z kodem 201. Samo utworzenie pliku i powiązanie go z produktem zostanie przeprowadzone w tle, rezultaty można obserwować na stronie "Lista plików" w systemie Elibri.

Jeśli wystąpią błędy walidacji parametrów żądania, serwer odpowie z kodem 40x, a w odpowiedzi prześle JSON o nastepującej strukturze:

{
  "code": "kod błędu",
  "message": "komunikat wyjaśniający błąd"
}

Przykład wywołania w curl-u:

curl -i -k --digest -u $PUBLISHER_ID:$UPLOAD_PASSWORD -X POST \
-H "Content-Type: application/json" \
-d '{"upload_id": "05b209dc-adb2-4f50-ad60-3c52b83f5234", "file_type": "pdf" }' \
https://www.elibri.com.pl/api/upload/products/$RECORD_REFERENCE/stored_files/upload

Masz pyta­nia? Chcesz nawią­zać współ­pracę?

Skon­tak­tuj się z nami!

Znamy się na auto­ma­ty­za­cji i opty­ma­li­za­cji pro­ce­sów wydaw­ni­czych.
Przy­go­to­wu­jemy roz­wią­za­nia dla kon­kret­nego wydaw­nic­twa.
Co możemy dla Cie­bie zro­bić? Napisz do nas: kon­takt@eli­bri.com.pl