RUS
  • ENG
  • RUS

Загрузка изображений товаров через Partner API

Последние изменения: 25.05.2023

Примеры запросов в 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, его можно использовать для получения загруженной фото

 

Схема запросов

94199f8f062f996583cade9d3f31dd65.png


Помогла ли вам статья?