Примеры запросов в 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, его можно использовать для получения загруженной фото
Важно! Если отправляется запрос на изменение товара и не нужно обновлять фотографии, то рекомендуется или прислать исходное значение параметра photos, или не присылать параметр. Не допускается повторная загрузка одних и тех же фотографий при обновлении товара
Схема запросов
