Примеры запросов в Partner API
1. Получить presigned-ссылку на загрузку фото в наш s3 по адресу
https://api.uds.app/partner/v2/image-upload-url
Запрос:
curl -X 'POST' \ 'https://api.uds.app/partner/v2/image-upload-url' \ -H 'accept: application/json' \ -H 'Authorization: Basic AUTH_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "contentType": "image/jpeg" }'
Ответ от UDS.
Для загрузки фотографии в s3 UDS нужно отправить картинку по url из ответа.
При создании или редактировании товара нужно будет указать в параметре photos список imageId
Важно! Срок действия полученной ссылки ограничен по времени 5 минутами.
Время действия ссылки передается в параметре expires в формате unix timestamp
{ "expires": 1631866346640, "headers": { "Content-Type": [ "image/jpeg" ], "Expect": [ "100-continue" ], "Host": [ "http://udsgame-bucket.s3.amazonaws.com" ] }, "imageId": "NTQ5NzU1ODIxNDg5L0dPT0RTRmYjkwYWIxYTM2ZQ==", "method": "PUT", "url": "https://uds.bucket.s3.amazonaws.com/thumbor/storage/549755821/GOODS/defe316e-d30e-46d6-bc6f-4fb90ab1a36e?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210917T080726Z&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Expires=300&X-Amz-Credential=AKIAJNQMBP74EVO6OLFA%2F20210917%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=cb713d80578e99d61dce55a60e920e866d1b7728c65d7363e3bea32d9162e52c" }
2. Загрузить свое изображение по ссылке из п.1 (значение url)
Запрос (например, файл с именем `IMG_6710.JPG` ):
curl -X PUT -H "Content-Type:image/jpeg" --data-binary "IMG_6710.JPG" "https://uds.s3.amazonaws.com/thumbor/storage/5497558214/GOODS/8bb4ca40-c441-478b-b108-44d7b61ac229?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210917T081812Z&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Expires=300&X-Amz-Credential=AKIAJNQMBP74EVO6OLFA%2F20210917%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=852e0a877fba8db259cd5c0fe78638bb199ce8a5b49bd0ffd35b0"
Важно:
Метод PUT
Использовать заголовки из ответа из headers
Ответ:
должен быть 200 OK без body, т.е. без сообщения об ошибке:
3. Создание товара или обновление существующего с помощью передачи списка `imageId` в свойстве `data.photos`, полученных в ответе в п.1
Запрос:
curl --location --request POST 'https://api.uds.app/partner/v2/goods/' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic AUTH_TOKEN' \ --data-raw '{ "name": "Тестовый товар с фото", "nodeId": null, "externalId": "1234332", "data": { "photos":["NTQ5NzU1ODIxNDg5L0dPT0RTRmYjkwYWIxYTM2ZQ=="], "type": "VARYING_ITEM", "description": "Пробный товар", "variants": [ { "name": "Вариант товара 1 ", "price": 100.0, "sku": "321" }, { "name": "Вариант товара 2", "price": 150.0, "sku": "123" } ] }, "hidden": false }'
Ответ:
{ "blocked": false, "dateCreated": "2021-09-17T09:14:33.157Z", "id": 469318, "hidden": false, "data": { "photos": [ "NTQ5NzU1ODIxNDg5L0dPT0RTRmYjkwYWIxYTM2ZQ==" ], "variants": [ { "offer": null, "price": 100.0, "sku": "321", "name": "Вариант товара 1", "inventory": { "inStock": null } }, { "offer": null, "price": 150.0, "sku": "123", "name": "Вариант товара 2", "inventory": { "inStock": null } } ], "type": "VARYING_ITEM", "description": "Пробный товар" }, "imageUrls": [ "https://thumbor.uds.app/game/5497559035/GOODS/dd8eb0a-82f6-478f-9cef-c7bc50f0db" ], "externalId": "1234332", "name": "Тестовый товар с фото" }
Пункты 1 - 2 могут осуществляться несколько раз, т.к. товар может иметь несколько фото, т.е. формируется список идентификаторов фото (максимум- 5 фотографий для одного товара).
Если п.2 пропущен, т.е. была получена ссылка, по которой изображение не было загружено, то при выполнения создания/обновления фото будет ошибка, что такой s3id не существует
Обновление товара (Запрос PUT /goods/id) принимает в объекте data свойство photos. Оно не обязательно, и, если не передано (старые клиенты), то фото товара останутся прежними (обратная совместимость). Если передано как пустой список - фото будут удалены.
Дополнительно: в теле ответов добавлено свойство imageUrls - список s3id, его можно использовать для получения загруженной фото
Схема запросов