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.
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:
- uzyskanie linku umożliwiającego upload pliku,
- upload pliku
- 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.
: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.
: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