Документация и поддержка по API

Как настроить интеграцию магазина с API Flowwow

API Flowwow — инструмент, который помогает автоматизировать работу магазина на Flowwow и связать его с вашей системой учета.

С помощью API можно:

  • получать список магазинов (например, если у вас холдинг и нужно выбрать, для какого из филиалов совершать дальнейшие действия);

  • управлять ассортиментом, ценами и остатками;

  • обрабатывать входящие заказы, невыкупы и возвраты.

Использование API позволяет сократить ручную работу, избежать ошибок при обновлении данных, а также управлять всей информацией о продажах и товарах в одном месте.

В статье описаны методы и параметры, которые нужны для настройки интеграции вашего магазина с API Flowwow. Покажите ее техническому специалисту, который будет этим заниматься.

Создание и использование API-Key-токена Ping Проверка API Shop Просмотр списка магазинов Products Получение информации о товарах магазина Связывание с товарами из магазина продавца Stocks Просмотр остатков по товарам Изменение остатков по товарам

Создание и использование API-Key-токена

API для продавцов находится в стадии закрытого бета-тестирования. Когда API станет доступен для публичного использования, информация обновится.

Ping

Методы проверки состояния API. Предназначены для проверки доступности API и обработки различных типов ответов сервера.

Проверка API

Возвращает тип ответа сервера в зависимости от значения query-параметра say

Запрос

Метод проверки доступности API: GET/apiseller/ping/check.

Параметр

Тип

Обязательность

Описание

say

string

да

Определяет, какой тип ответа вернёт сервер.

Пример: say=Hello

Допустимые значения say: hello, error400, error401, error403, error404, error429, error500.

Значение параметра

Описание

Действие

hello

Кампания активна

Обычный ответ сервера (200)

error400

Ошибка клиента 400

Имитация ошибки клиента 400

error401

Ошибка клиента 401

Имитация ошибки клиента 401

error403

Ошибка клиента 403

Имитация ошибки клиента 403

error404

Ошибка клиента 404

Имитация ошибки клиента 404

error429

Ошибка клиента 429

Имитация ошибки клиента 429

error500

Ошибка сервера 500

Имитация ошибки сервера 500

Ответы

Типы ответов сервера: 200 Success, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, 500 Internal Server Error.

Формат: application/json.

Статус

Поле

Тип

Обязательность

Описание

Пример ответа

200 Success

say

string

да

Ответ сервера

{ "say": "hello" }

400 Bad Request

message

string

да

Общее описание ошибки

{ "message": "Query param 'say' is empty", "fields": [ { "path": "say", "messages": [ "Query param 'say' is empty" ] } ] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле, в котором произошла ошибка

fields[].messages

array of string

да

Список сообщений об ошибках поля

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

401 Unauthorized

message

string

да

Общее описание ошибки

{ "message": "Missing or invalid token" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

403 Forbidden

message

string

да

Общее описание ошибки

{ "message": "Access denied", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

404 Not Found

message

string

да

Общее описание ошибки

{ "message": "Resource not found", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

429 Too Many Requests

Retry-After (header)

integer ≥ 0

нет

Через сколько секунд повторить запрос

{ "message": "Too Many Requests", "fields": [] }

message

string

да

Общее описание ошибки

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

500 Internal Server Error

message

string

да

Общее описание ошибки

{ "message": "Internal server error" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

Shop

Информация о складах или магазинах холдинга.

Просмотр списка магазинов

Возвращает список магазинов для холдинга или один магазин – для остальных случаев.

Для работы с API необходимо авторизироваться с помощью bearerToken, который позволяет серверу идентифицировать продавца.

  • HTTP: bearerToken.

  • Схема авторизации: bearer.

  • Формат токена: JWT.

Запрос

Метод запроса к API: POST /apiseller/shops.

Формат: application/json.

Ниже представлена схема запроса:

Поле

Тип

Обязательность

Описание

Пример запроса

status

string (ShopStatus)

да

Статус магазина. Допустимые значения: "moderation", "active", "disabled".

moderation – на модерации active – активен disabled – деактивирован

{ "status": "moderation", "shopIds": [ 101 ], "page": 0, "limit": 10 }

shopIds

array of integers (ShopId) [ 1 .. 1000 ] items [ items ]

нет

Список идентификаторов магазинов

page

integer ≥ 0

нет

Номер страницы. Нумерация начинается с 0. Default: 0

limit

integer [1..50]

нет

Количество элементов в ответе. Максимум – 50, минимум – 1. Default: 10

Ответы

Типы ответов сервера: 200 Success, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, 500 Internal Server Error.

Формат: application/json.

Статус

Поле

Тип

Обязательность

Описание

Пример ответа

200 Success

shops

array of objects (ShopItem)

да

Список магазинов

{ "shops": [ { "shopId": 101, "name": "Мой магазин", "status": "moderation", "address": "г. Москва, ул. Ленина, д. 1", "currency": "RUB", "isVerified": true, "workingDays": [ "1", "2", "3", "4", "5" ] } ], "total": 0 }

shops[].shopId

integer <int32>(ShopId)

да

Идентификатор магазина платформы Flowwow

shops[].name

string

да

Название магазина на платформе Flowwow

shops[].status

string (ShopStatus)

да

Статус магазина: "moderation" – на модерации, "active" – активен, "disabled" –деактивирован

shops[].address

string

нет

Адрес Магазина на платформе Flowwow

shops[].currency

string

нет

Валюта магазина в формате ISO 4217

shops[].isVerified

boolean

нет

Магазин верифицирован на платформе Flowwow?

shops[].workingDays

array of string

нет

Рабочие дни (Доступные значения: "1".."7"). Если источник не задан – пустой массив

total

integer

нет

Общее количество магазинов

400 Bad Request

message

string

да

Общее описание ошибки

{ "message": "Query param 'say' is empty", "fields": [ { "path":

"say", "messages":

[ "Query param 'say' is empty" ] } ] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле, в котором произошла ошибка

fields[].messages

array of string

да

Список сообщений об ошибках поля

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

401 Unauthorized

message

string

да

Общее описание ошибки

{ "message": "Missing or invalid token" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

403 Forbidden

message

string

да

Общее описание ошибки

{ "message": "Access denied", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

404 Not Found

message

string

да

Общее описание ошибки

{ "message": "Resource not found", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

429 Too Many Requests

Retry-After (header)

integer ≥ 0

нет

Через сколько секунд повторить запрос

{ "message": "Too Many Requests", "fields": [] }

message

string

да

Общее описание ошибки

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

500 Internal Server Error

message

string

да

Общее описание ошибки

{ "message": "Internal server error" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

Products

Добавление, просмотр, изменение отображения товара и управление им.

Для работы с API необходимо авторизоваться с помощью bearerToken — он позволяет серверу идентифицировать продавца.

  • HTTP: bearerToken.

  • Схема авторизации: bearer.

  • Формат токена: JWT.

Список товаров зависит от значения query-параметра shopId. Также shopId доступен в кабинете продавца Flowwow.

Параметр

Тип

Обязательность

Описание

shopId

integer <int32> [1 .. 4294967295]

да

Идентификатор склада или магазина

Пример: shopId=123456

Получение информации о товарах магазина

Возвращает список товаров магазина с возможностью фильтрации. Поддерживается пагинация.

Запрос

Метод запроса к API: POST /apiseller/products.

Схема запроса в формате application/json:

Поле

Тип

Обязательность

Описание

Пример

offerIds

array of strings or null (OfferId) [1 .. 1000], items ≤ 50 символов

нет

Список идентификаторов товаров в системе магазина

{ "offerIds": [ "FLOW-001", "FLOW-002" ], "productIds": [ 123, 456 ], "categoryIds": [ 1, 2 ], "type": 1, "page": 0, "limit": 20 }

productIds

array of integers or null <int32> (ProductId) [1 .. 1000], items ≥ 1

нет

Идентификаторы товаров в системе Flowwow

categoryIds

array of integers <int64> (CategoryId) [1 .. 1000]

нет

Идентификаторы категорий в системе Flowwow

type

integer

нет

Тип товара в системе Flowwow

page

integer ≥ 0

нет

Номер страницы. Нумерация начинается с 0. Default: 0

limit

integer [1 .. 1000]

нет

Количество элементов в ответе. Минимум — 1, максимум — 1000. Default: 10

Ответы

Типы ответов сервера: 200 OK, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, 500 Internal Server Error.

Формат: application/json.

Статус

Поле

Тип

Обязательность

Описание

Пример ответа

200 OK

items

array of objects (ProductItem)

да

Список товаров

{ "items": [ { "offerId": "FLOW-0001", "productId": 123, "isActive": true, "type": 1, "categoryId": 1002001, "subCategoryId": 100200101, "name": "Букет роз «Классика»", "description": "Классический букет из 21 красной розы", "url": "https://flowwow.com/product/buket-roz-klassika", "available": 99999, "stock": 100, "minOrder": 1, "price": "1990.00", "discount": "10", "currencyCode": "RUB", "images": [ "https://cdn.example.com/images/flow-0001-1.png" ], "productionTime": 60, "shipmentTime": 120, "canRent": 0, "originalId": 0, "isDeliveryPost": false, "isStarred": true, "vat": "20" } ], "total": 150 }

items[].offerId

string or null (OfferId) ≤ 50 characters

да

Идентификатор товара в системе продавца

items[].productId

integer or null <int32> ≥ 1

да

Идентификатор товара в системе Flowwow

items[].isActive

boolean

да

Активен ли товар? Default: true

items[].type

integer <int32> ≥ 0

да

Тип товара. Доступные значения: 1–3. 1 — обычный товар, 2 — готовый товар, который не требует сборки, 3 — дополнительный товар, который может идти в комбинации с другим товаром

items[].categoryId

integer <int64> (CategoryId)

да

Идентификатор категории товаров

items[].subCategoryId

integer <int64> (SubCategoryId)

нет

Идентификатор подкатегории товаров

items[].name

string ≤ 500 characters

да

Название товара

items[].description

string or null ≤ 20000 characters

да

Подробное описание товара

items[].url

string ≤ 20000 characters

нет

URL страницы товара на Flowwow со стороны покупателей

items[].available

integer ≥ 0

нет

Доступность товара

items[].stock

integer ≥ 0

нет

Количество товара на складе

items[].minOrder

integer ≥ 0

нет

Минимальный заказ

items[].price

string (PriceString) ^[0-9]+(.[0-9]{1,2})?$

да

Цена без учета скидок, дробная часть через точку

items[].discount

string (DiscountString) ^[0-9]+$

нет

Процент скидки к цене

items[].currencyCode

string (CurrencyCode)

нет

Код валюты магазина (ISO 4217). Доступные значения: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EEK" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MTL" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPD" "XPF" "XPT" "YER" "ZAR" "ZMK" "ZMW" "ZWL"

items[].images

array of strings <uri> [ items <uri > ]

нет

Ссылки на изображения

items[].productionTime

integer ≥ 0

нет

Время производства товара в минутах

items[].shipmentTime

integer ≥ 0

нет

Время доставки товара в минутах

items[].canRent

integer <int32> ≥ 0

нет

Данные об аренде товара. Доступные значения: 0–2. 0 — владелец запретил аренду (значение по умолчанию), 1 — владелец разрешил аренду, 2 — Flowwow запретил аренду

items[].originalId

integer <int32> ≥ 0

нет

ID товара оригинала. Если ≠ 0 — текущий товар арендован

items[].isDeliveryPost

boolean

нет

Доставляем по почте? Default: false

items[].isStarred

boolean

нет

Товар со звездочкой? Default: false

items[].vat

string

нет

Процентная ставка НДС у товара. Default: 0

total

integer

нет

Общее количество товаров (без учета пагинации)

400 Bad Request

message

string

да

Общее описание ошибки

{ "message": "Query param 'say' is empty", "fields": [ { "path": "say", "messages": [ "Query param 'say' is empty" ] } ] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле, в котором произошла ошибка

fields[].messages

array of string

да

Список сообщений об ошибках поля

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

401 Unauthorized

message

string

да

Общее описание ошибки

{ "message": "Missing or invalid token" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

403 Forbidden

message

string

да

Общее описание ошибки

{ "message": "Access denied", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

404 Not Found

message

string

да

Общее описание ошибки

{ "message": "Resource not found", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

429 Too Many Requests

Retry-After (header)

integer ≥ 0

нет

Через сколько секунд повторить запрос

{ "message": "Too Many Requests", "fields": [] }

message

string

да

Общее описание ошибки

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

500 Internal Server Error

message

string

да

Общее описание ошибки

{ "message": "Internal server error" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

Связывание с товарами из магазина продавца

Импортирует товары из магазина продавца на маркетплейс Flowwow и связывает их с существующими товарами по идентификаторам.

  • Если товара с указанным productId не существует у магазина в системе Flowwow, для него будет возвращена ошибка.

  • Если в одном запросе встречаются повторяющиеся пары offerId или productId, все такие пары считаются некорректными и не обрабатываются. Частичная обработка для конфликтующих пар не выполняется — каждая пара возвращается в массиве errors.

  • Если присланы пары ID, которые ранее уже были привязаны, они не будут обработаны.

Запрос

Метод запроса к API: POST /apiseller/products/offersMappings.

Схема запроса в формате application/json:

Поле

Тип

Обязательность

Описание

Пример запроса

offers

array of objects [0 .. 1000]

да

Связи товара магазина с товаром Flowwow

{ "offers": [ { "offerId": "FLOW-0001", "productId": 83418243 } ] }

offers[].offerId

string or null (OfferId) ≤ 50 characters

да

Идентификатор товара в системе продавца

offers[].productId

integer or null <int32> (ProductId) ≥ 1

да

Идентификатор товара в системе Flowwow

Ответы

Типы ответов сервера: 200 OK, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, 500 Internal Server Error.

Формат: application/json.

Статус

Поле

Тип

Обязательность

Описание

Пример ответа

200 OK

shopId

integer

да

ID запрошенного магазина. Работа с парами offerId и productId производится только в рамках данного магазина

{ "shopId": 0, "summary": { "total": 13, "success": 8, "failed": 5, "created": 4, "updated": 0, "relinked": 2, "unchanged": 2 }, "data": [ { "offerId": "FLOW-0001", "productId": 83418243, "isActive": true, "type": 1, "categoryId": 54, "subCategoryId": 112, "name": "Букет из роз", "description": "Красивый букет из свежих роз.", "url": "https://flowwow.com/product/12345", "available": 1, "stock": 10, "minOrder": 1, "price": "1990.00", "discount": "20", "currencyCode": "RUB", "images": [ "http://example.comarrow-up-right " ], "productionTime": 0, "shipmentTime": 0, "canRent": 1, "originalId": 7123456, "isDeliveryPost": true, "isStarred": true, "vat": "10" } ], "errors": [ { "offerId": "FLOW-0001", "productId": 83418243, "message": "У данной пары есть дубль с другим productId или offerId в запросе" } ] }

summary

object

да

Сводная статистика обработанных записей

summary[].total

integer

да

Общее количество обработанных записей (success + failed)

summary[].success

integer

да

Количество успешно обработанных записей (created + updated + relinked + unchanged)

summary[].failed

integer

да

Количество записей с ошибками при обработке

summary[].created

integer

да

Количество созданных связей

summary[].updated

integer

да

Количество измененных записей без изменения связи пар

summary[].relinked

integer

да

Количество измененных связей пар

summary[].unchanged

integer

да

Количество неизмененных записей и связей

data

array of objects (ProductItem)

да

Набор товаров с сокращенной информацией

data[].offerId

string or null (OfferId) ≤ 50 characters

да

Идентификатор товара в системе продавца

data[].productId

integer or null ≥ 1

да

Идентификатор товара в системе Flowwow

data[].isActive

boolean

да

Активен ли товар? Default: true

data[].type

integer ≥ 0

да

Тип товара. Доступные значения: 1–3. 1 — обычный товар, 2 — готовый товар, который не требует сборки, 3 — дополнительный товар, который может идти в комбинации с другим товаром

data[].categoryId

integer <int64> (CategoryId)

да

Идентификатор категории товаров

data[].subCategoryId

integer <int64> (SubCategoryId)

нет

Идентификатор подкатегории товаров

data[].name

string ≤ 500 characters

да

Название товара

data[].description

string or null ≤ 20000 characters

да

Подробное описание товара

data[].url

string ≤ 20000 characters

нет

URL страницы товара на Flowwow со стороны покупателей

data[].available

integer ≥ 0

нет

Доступность товара

data[].stock

integer ≥ 0

нет

Количество товара на складе

data[].minOrder

integer ≥ 0

нет

Минимальный заказ

data[].price

string (PriceString) ^[0-9]+(\.[0-9]{1,2})?$

да

Цена без учета скидок, дробная часть через точку

data[].discount

string (DiscountString) ^[0-9]+$

нет

Процент скидки к цене, целое число

data[].currencyCode

string (CurrencyCode)

нет

Код валюты магазина (ISO 4217). Доступные значения: "AED" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CLF" "CLP" "CNY" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DKK" "DOP" "DZD" "EEK" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MOP" "MRO" "MTL" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "USD" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XOF" "XPD" "XPF" "XPT" "YER" "ZAR" "ZMK" "ZMW" "ZWL"

data[].images

Array of strings <uri> [ items <uri > ]

нет

Ссылки на изображения

data[].productionTime

integer ≥ 0

нет

Время производства товара в минутах

data[].shipmentTime

integer ≥ 0

нет

Время доставки товара в минутах

data[].canRent

integer ≥ 0

нет

Данные об аренде товара. Доступные значения: 0–2. 0 — владелец запретил аренду (значение по умолчанию), 1 — владелец разрешил аренду, 2 — Flowwow запретил аренду

data[].originalId

integer ≥ 0

нет

ID товара-оригинала. Если ≠ 0 — товар арендован

data[].isDeliveryPost

boolean

нет

Доставка по почте. Default: false

data[].isStarred

boolean

нет

Товар со звездочкой. Активнее продвигается

data[].vat

string

нет

Процентная ставка НДС. Default: "0"

errors

array of objects

нет

Набор товаров с сокращенной информацией

400 Bad Request

message

string

да

Общее описание ошибки

{ "message": "Query param 'say' is empty", "fields": [ { "path": "say", "messages": [ "Query param 'say' is empty" ] } ] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле, в котором произошла ошибка

fields[].messages

array of string

да

Список сообщений об ошибках поля

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

401 Unauthorized

message

string

да

Общее описание ошибки

{ "message": "Missing or invalid token" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

403 Forbidden

message

string

да

Общее описание ошибки

{ "message": "Access denied", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

404 Not Found

message

string

да

Общее описание ошибки

{ "message": "Resource not found","fields": [ ] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

429 Too Many Requests

Retry-After (header)

integer ≥ 0

нет

Через сколько секунд повторить запрос

{ "message": "Too Many Requests", "fields": [] }

message

string

да

Общее описание ошибки

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

500 Internal Server Error

message

string

да

Общее описание ошибки

{ "message": "Internal server error" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

Stocks

Остатки товаров на складах магазина.

Для работы с API необходимо авторизироваться с помощью bearerToken, который позволяет серверу идентифицировать продавца.

  • HTTP: bearerToken.

  • Схема авторизации: bearer.

  • Формат токена: JWT.

Список товаров зависит от значения query-параметра shopId. Также shopId доступен в кабинете продавца Flowwow.

Параметр

Тип

Обязательность

Описание

shopId

integer <int32> [1 .. 4294967295]

да

Идентификатор склада или магазина

Пример: shopId=123456

Просмотр остатков по товарам

Возвращает информацию по остаткам в магазине продавца из маркетплейса Flowwow.

Запрос

Метод запроса к API: POST /apiseller/stocks/get.

Ниже представлена схема запроса. Формат: application/json:

Поле

Тип

Обязательность

Описание

Пример

offers

array of objects [1 .. 1000]

да

Информация о товарах на складах

{ "offers": [ { "offerId": "FLOW-0001" } ] }

offers[].offerId

string or null (OfferId) ≤ 50 characters

да

Идентификатор товара в системе продавца

Ответы

Типы ответов сервера: 200 OK, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, 500 Internal Server Error.

Формат: application/json.

Статус

Поле

Тип

Обязательность

Описание

Пример ответа

200 OK

shopId

integer <int32> (schemas-ShopId) ≥ 1

да

Идентификатор магазина

{ "shopId": 260, "data": [ { "offerId": "FLOW-0001", "productId": 83418243, "stock": 13 } ], "errors": [ null ] }

data

array of objects [ 0 .. 1000 ] items

да

Список товаров с информацией об остатках

data[].offerId

string or null (OfferId) ≤ 50 characters

нет

Идентификатор товара в системе продавца

data[].productId

integer or null <int32> (ProductId) ≥ 1

нет

Идентификатор товара в системе Flowwow

data[].stock

integer <int32> (StockCount) ≥ 0

да

Количество товара в наличии без учета зарезервированных товаров

errors

array

да

Список ошибок

400 Bad Request

message

string

да

Общее описание ошибки

{ "message": "Query param 'say' is empty", "fields": [ { "path": "say", "messages": [ "Query param 'say' is empty" ] } ] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле, в котором произошла ошибка

fields[].messages

array of string

да

Список сообщений об ошибках поля

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

401 Unauthorized

message

string

да

Общее описание ошибки

{ "message": "Missing or invalid token" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

403 Forbidden

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

{ "message": "Access denied", "fields": [] }

message

string

да

Общее описание ошибки

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

404 Not Found

message

string

да

Общее описание ошибки

{ "message": "Resource not found", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

429 Too Many Requests

Retry-After (header)

integer ≥ 0

нет

Через сколько секунд повторить запрос

{ "message": "Too Many Requests", "fields": [] }

message

string

да

Общее описание ошибки

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

500 Internal Server Error

message

string

да

Общее описание ошибки

{ "message": "Internal server error" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

Изменение остатков по товарам

Изменяет информацию по остаткам в магазине продавца в маркетплейсе Flowwow.

Запрос

Метод запроса к API: PUT /apiseller/stocks/put.

Ниже представлена схема запроса. Формат: application/json:

Поле

Тип

Обязательность

Описание

Пример

offers

array of objects [0 .. 1000]

да

Данные об остатках товаров

{ "offers": [ { "offerId": "FLOW-0001", "stock": 13 } ] }

offers[].offerId

string or null (OfferId) ≤ 50 characters

да

Идентификатор товара в системе продавца

offers[].stock

integer <int32> (StockCount) ≥ 0

да

Количество товара в наличии без учета зарезервированных товаров

Ответы

Типы ответов сервера: 200 OK, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, 500 Internal Server Error.

Формат: application/json.

Статус

Поле

Тип

Обязательность

Описание

Пример ответа

200 OK

shopId

integer <int32> (ShopId) ≥ 1

да

Идентификатор магазина

{ "shopId": 260, "data": [ { "offerId": "FLOW-0001", "productId": 83418243, "stock": 13, "updated": true } ], "errors": [ { "offerId": "FLOW-0001", "productId": 83418243, "stock": 13, "message": "string" } ] }

data

array of objects [1 .. 1000]

да

Список обработанных остатков товаров

data[].offerId

string or null (OfferId) ≤ 50 characters

нет

Идентификатор товара в системе продавца

data[].productId

integer or null <int32> (ProductId) ≥ 1

нет

Идентификатор товара в системе Flowwow

data[].stock

integer <int32> (StockCount) ≥ 0

да

Количество товара в наличии без учета зарезервированных товаров

data[].updated

boolean

да

Был ли обновлен остаток товара

errors

array of objects [0 .. 1000]

нет

Список ошибок

errors[].offerId

string or null (OfferId) ≤ 50 characters

нет

Идентификатор товара в системе продавца

errors[].productId

integer or null <int32> (ProductId) ≥ 1

нет

Идентификатор товара в системе Flowwow

errors[].stock

integer <int32> (StockCount) ≥ 0

нет

Переданное количество товара

errors[].message

string

да

Описание ошибки

400 Bad Request

message

string

да

Общее описание ошибки

{ "message": "Query param 'say' is empty", "fields": [ { "path": "say", "messages": [ "Query param 'say' is empty" ] } ] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле, в котором произошла ошибка

fields[].messages

array of string

да

Список сообщений об ошибках поля

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

401 Unauthorized

message

string

да

Общее описание ошибки

{ "message": "Missing or invalid token" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

403 Forbidden

message

string

да

Общее описание ошибки

{ "message": "Access denied", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

404 Not Found

message

string

да

Общее описание ошибки

{ "message": "Resource not found", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

Retry-After (header)

integer ≥ 0

нет

Через сколько секунд повторить запрос

429 Too Many Requests

message

string

да

Общее описание ошибки

{ "message": "Too Many Requests", "fields": [] }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

нет

Трассировка ошибки (недоступна для LIVE)

500 Internal Server Error

message

string

да

Общее описание ошибки

{ "message": "Internal server error" }

fields

array of objects (fields)

нет

Массив с дополнительными ошибками валидации полей

fields[].path

string

да

Поле ошибки

fields[].messages

array of strings

да

Массив с ошибками

trace

object / null

Трассировка ошибки (недоступна для LIVE)

Последнее обновление