Wildberries Цифровой (wbd)
По вопросам работы с WBD API, обращайтесь в техническую поддержку.
По вопросам работы с WBD API, обращайтесь в техническую поддержку.
Добро пожаловать в Wildberries Digital (WBD) API, интерфейс для продавцов Wildberries Цифровой, предоставляющий возможности управления магазином и получения оперативной и статистической информации по протоколу HTTP.
- Управление предложениями и контентом.
- Загрузка и управление медиа-файлами.
- Получение информации о контенте и предложениях.
- Управление ключами активации.
Для доступа к WBD API необходимо пройти авторизацию с использованием JWT. Следуйте инструкциям ниже для получения и использования токена.
Получение токена
- Перейдите по ссылке на сайт WBD.
- Нажмите кнопку "Получить токен".
- Скопируйте сгенерированный токен JWT.
Использование токена
В каждом запросе к WBD API передавайте токен в заголовке Authorization
в следующем формате:
Authorization: Bearer <api_token>
где <api_token>
— ваш токен авторизации (JWT).
Пример запроса:
GET /api/v1/offers/author HTTP/1.1
Host: devapi-digital.wildberries.ru
Authorization: Bearer eyJhbGciOdJIUzI1NiIsInR5cCIkIkpXVCJ9.eyJhJjo0ODM2MTE5NawiYiI6NDI4NTk1MjMsImV4cCI6MTc0OTU0MjQ0MH0.DOWjZBSLwCxvU_kKkneCcJ_E-GuflHSsre8nAUr0xFo
- Храните токен в безопасном месте.
- Не передавайте токен в URL.
- Не выкладывайте токен в публичный доступ.
Для всех запросов используйте хост
devapi-digital.wildberries.ru
Пример полного URL: https://devapi-digital.wildberries.ru/api/v1/offers/author
Соблюдение этих рекомендаций обеспечит безопасное использование WBD API.
Создать новое предложение{{ /api/v1/offers }}
Максимум 50 запросов в секунду
Метод позволяет создать новое предложение.
Обязательные поля:
title
— Название предложенияdescription
— Описание предложенияtags
— Теги предложенияsection
— Категория предложенияcatalog_path
— Подкатегория предложения.age_rating
— Возрастное ограничение предложенияprice
— Цена предложения
Добавить обложку
Обложка для предложения загружается отдельно после создания предложения.
Вам необходимо воспользоваться методом Добавить или обновить обложку предложения.
Добавить дополнительные медиа-файлы
- Загрузить медиафайлы с помощью метода Загрузить медиа-файл для предложения, метод возвращает список URI адресов загруженных медиа-файлов
- Добавить URI медиа-файлов в поле
gallery
Категория и подкатеогрия предложения
Воспользуйтесь методом Получить категории и их подкатегории для получения ID подкатегории и правильного сопоставления с категорией.
Предложение из категории "Услуги"
section
— 8
Доступ к публикации контента этой категории предоставляется через заявку в техническую поддержку.
Предложение c уникальными ключами
Предложение c уникальными ключами относятся к категориям (section
):
- Ключи активации —
3
- Купоны и развлечения —
12
- Подарочные сертификаты —
13
Обязательные данные:
- Ключи к предложению
- Инструкция по активации ключа
Загрузка ключей
Список ключей передается в поле keys
вашего запроса при создании предложения.
В дальнейшем вы можете добавлять ключи с помощью метода Добавить ключи активации.
Добавление инструкции по активации ключа
Инструкцию по активации ключа необходимо добавить в поле meta
в формате JSON используя следующий пример.
Чтобы сделать текст более привлекательным и удобочитаемым, используйте перенос строки \n
.
Пример:
{
"meta":{
"key_instruction": "Инструкция по активации\n1. Зайдите на сайт ...\n2.Вставьте ключ в поле ..."
}
}
Предложение с контентом
Предложение с контентом относится к категориям (section
):
- Видеоконтент —
1
- Аудиоконтент —
2
- Электронные книги —
4
- Аудиокниги —
5
- Цифровые товары —
6
Обязательные данные:
- Контент для предложения
Добавление контента
Если вы ещё не добавили контент в личный кабинет продавца, то вы можете это сделать по инструкции.
Для добавления контента вам необходимо передать в поле content
список данных используя пример ниже.
Пример:
"content": [
{
"category_id": 1,
"content": 8942
},
{
"category_id": 1,
"content": 4211
}
]
где:
category_id
— ID категории контентаcontent
— ID контента
Эту информацию вы можете получить с помощью метод Получить список своего контента.
Authorizations:
Request Body schema: application/jsonrequired
title required | string <= 500 characters Название предложения. |
description required | string <= 5000 characters Описание предложения. Это текст, который описывает ваше предложение и помогает людям понять, что именно представляет из себя продаваемый вами товар и чем он может быть полезен. Важно правильно назвать предложение и более подробно прописать его описание, чтобы пользователи узнали как можно больше информации еще до покупки. |
tags required | Array of strings [ 1 .. 5 ] items [ items <= 45 characters ] Массив тегов. Теги нужны для группирования, ранжирования и облегчения поиска вашего товара. Ограничения:
|
section required | integer <int32> Enum: 1 2 3 4 5 6 8 9 12 13 ID категории предложения:
|
catalog_path required | Array of integers <int64> non-empty [ items <int64 > ] Массив ID подкатегорий, в котором находится предложение. |
age_rating required | string Enum: "0+" "6+" "12+" "14+" "16+" "18+" Возрастное ограничение. Это система, которая используется для определения, подходит ли ваше предложение для определенной возрастной группы. |
price required | integer <int64> Цена предложения в рублях |
discount_price | integer <int64> Цена с учетом скидки в рублях |
gallery | Array of strings <= 8 items Список URL-адресов дополнительных изображений, а так же видео превью. |
keys | Array of strings <= 1000 items [ items <= 200 characters ] Список ключей.
Ограничения:
|
status | integer <int32> Default: 0 Enum: 0 1 Задается статус вашего предложения:
|
Array of objects (OfferCreateContent) Список контента | |
object (OfferMetaRequest) Метаданные предложения |
Responses
Request samples
- Payload
{- "title": "Книга `Спортивное питание`",
- "description": "Очень хорошая книга о спортивном питании.",
- "tags": [
- "life",
- "work",
- "gym"
], - "section": 4,
- "catalog_path": [
- 10
], - "age_rating": "16+",
- "price": 849,
- "discount_price": 799,
- "gallery": [
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/video.mp4",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/0_1280.jpg",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/1_1280.png"
], - "keys": [
- "0181-c2a38--6379-69d8ae",
- "1983-454e4--5379-0edbbc",
- "6860-f1f20--8421-c1e6a1"
], - "status": 1,
- "content": [
- {
- "category_id": 4,
- "content": 8942
}, - {
- "category_id": 4,
- "content": 4211
}
], - "meta": {
- "addresses": "Москва, Нагатинская д. 1",
- "key_instruction": "Инструкция по активации\n1. Зайдите на сайт ...\n2.Вставьте ключ в поле ..."
}
}
Response samples
- 200
- 400
- 401
- 500
{- "id": 42,
- "title": "Книга `Спортивное питание`",
- "description": "Очень хорошая книга о спортивном питании.",
- "section": 4,
- "catalog_path": [
- 10
], - "price": 849,
- "discount_price": 799,
- "gallery": [
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/video.mp4",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/0_1280.jpg",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/1_1280.png"
], - "meta": "string",
- "tags": [
- {
- "id": 1,
- "value": "бизнес",
- "value_translit": "biznes",
- "weight": 100
}
], - "thumbnail": [
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/480.jpg",
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/1280.jpg",
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/1920.jpg"
], - "content": [
- {
- "content": 542342523,
- "title": "Книга 'Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга.",
- "files": [
- {
- "contentType": "application/fb2",
- "size": 3665547,
- "uri": "vol13/689/98235be67bdefcew2a33c5f0e55b17eb/output.fb2"
}
], - "meta": "string",
- "playlist": "vol14/147/f2671cfb67bd8c200b9464vd6f0dd97d/output.m3u8",
- "category_id": 4
}
], - "created": "2024-06-10T07:29:30Z",
- "updated": "2024-06-17T22:12:13Z",
- "deleted": "2024-06-19T22:12:13Z",
- "status": 1,
- "view_count": 47,
- "purchase_count": 10,
- "adult": false,
- "age_rating": "16+",
- "rating": 50
}
Добавить или обновить обложку предложения{{ /api/v1/offers/thumb }}
Максимум 10 запросов в секунду
Метод позволяет добавить или обновить обложку предложения.
Для добавления более привлекательной карточки предложения, мы рекомендуем:
1. Добавлять изображения с соотношением сторон 1:1
2. Минимальный размер изображения 1200х1200 пикселей
3. Фон контрастный белому
Допустимые форматы: .png, .jpeg
Authorizations:
header Parameters
X-Content-Type required | string Enum: "image/jpeg" "image/png" Тип изображения |
X-Wbd-OfferId required | integer <int64> ID предложения |
Request Body schema: application/octet-streamrequired
Байты файла
Responses
Response samples
- 400
- 401
- 500
{- "status": 400,
- "title": "bad request",
- "detail": "value 'five' is invalid for parameter offer_id",
- "code": "string",
- "errors": [
- { }
], - "requestId": "b709d59bd0791513350332ffe5f813c1",
- "origin": "gateway-dev"
}
Редактировать предложение{{ /api/v1/offers/{offer_id} }}
Максимум 50 запросов в секунду
Метод позволяет редактировать информацию о предложении.
Категория и подкатеогрия предложения
Воспользуйтесь методом Получить категории и их подкатегории для получения ID подкатегории и правильного сопоставления с категорией.
Authorizations:
path Parameters
offer_id required | integer <int64> ID предложения |
Request Body schema: application/jsonrequired
title | string <= 500 characters Название предложения. |
description | string <= 5000 characters Описание предложения. Это текст, который описывает ваше предложение и помогает людям понять, что именно представляет из себя продаваемый вами товар и чем он может быть полезен. Важно правильно назвать предложение и более подробно прописать его описание, чтобы пользователи узнали как можно больше информации еще до покупки. |
price | integer <int64> Цена предложения в рублях |
discount_price | integer or null <int64> Цена с учетом скидки в рублях |
gallery | Array of strings or null <= 8 items Список URL-адресов дополнительных изображений, а так же видео превью. |
age_rating | string Enum: "0+" "6+" "12+" "14+" "16+" "18+" Возрастное ограничение. Это система, которая используется для определения, подходит ли ваше предложение для определенной возрастной группы. |
tags | Array of strings [ 1 .. 5 ] items [ items <= 45 characters ] Массив тегов. Теги нужны для группирования, ранжирования и облегчения поиска вашего товара. Ограничения:
|
status | integer or null <int32> Enum: 0 1 2 3 Статус вашего предложения:
|
catalog_path | Array of integers <int64> [ items <int64 > ] Массив ID подкатегорий, в котором находится предложение. |
object (OfferMetaRequest) Метаданные предложения | |
section | integer <int32> Enum: 1 2 4 5 6 ID категории предложения:
|
Responses
Request samples
- Payload
{- "title": "Книга `Спортивное питание`",
- "description": "Очень хорошая книга о спортивном питании.",
- "price": 849,
- "discount_price": 799,
- "gallery": [
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/video.mp4",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/0_1280.jpg",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/1_1280.png"
], - "age_rating": "16+",
- "tags": [
- "life",
- "work",
- "gym"
], - "status": 1,
- "catalog_path": [
- 10
], - "meta": {
- "addresses": "Москва, Нагатинская д. 1",
- "key_instruction": "Инструкция по активации\n1. Зайдите на сайт ...\n2.Вставьте ключ в поле ..."
}, - "section": 4
}
Response samples
- 400
- 401
- 403
- 404
- 500
{- "status": 400,
- "title": "bad request",
- "detail": "value 'five' is invalid for parameter offer_id",
- "code": "string",
- "errors": [
- { }
], - "requestId": "b709d59bd0791513350332ffe5f813c1",
- "origin": "gateway-dev"
}
Получить информацию о предложении{{ /api/v1/offers/{offer_id} }}
Максимум 100 запросов в секунду
Метод позволяет получить информацию о конкретном предложении.
Authorizations:
path Parameters
offer_id required | integer <int64> ID предложения |
Responses
Response samples
- 200
- 400
- 401
- 404
- 500
{- "id": 42,
- "title": "Книга `Спортивное питание`",
- "description": "Очень хорошая книга о спортивном питании.",
- "section": 4,
- "catalog_path": [
- 10
], - "price": 849,
- "discount_price": 799,
- "gallery": [
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/video.mp4",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/0_1280.jpg",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/1_1280.png"
], - "meta": "string",
- "tags": [
- {
- "id": 1,
- "value": "бизнес",
- "value_translit": "biznes",
- "weight": 100
}
], - "thumbnail": [
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/480.jpg",
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/1280.jpg",
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/1920.jpg"
], - "content": [
- {
- "content": 542342523,
- "title": "Книга 'Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга.",
- "files": [
- {
- "contentType": "application/fb2",
- "size": 3665547,
- "uri": "vol13/689/98235be67bdefcew2a33c5f0e55b17eb/output.fb2"
}
], - "meta": "string",
- "playlist": "vol14/147/f2671cfb67bd8c200b9464vd6f0dd97d/output.m3u8",
- "category_id": 4
}
], - "created": "2024-06-10T07:29:30Z",
- "updated": "2024-06-17T22:12:13Z",
- "deleted": "2024-06-19T22:12:13Z",
- "status": 1,
- "view_count": 47,
- "purchase_count": 10,
- "adult": false,
- "age_rating": "16+",
- "rating": 50
}
Получить список своих предложений{{ /api/v1/offers/author }}
Максимум 100 запросов в секунду
Метод позволяет получить список своих предложений с использованием фильтрации.
Описание параметров фильтрации:
search
— Поиск предложений по названию. Укажите часть или полное название предложения для поиска.category
— Фильтрация предложений по категории контента. Список категорий находится в таблице.status
— Фильтрация предложений по статусу. Возможные значения:0
— Черновик1
— Опубликован2
— Приостановлен
sort
— Сортировка предложений по дате создания или обновления. Укажитеcreated
для сортировки по дате создания иupdated
для сортировки по дате обновления.sort_dir
— Направление сортировки. Укажитеasc
для сортировки по возрастанию илиdesc
для сортировки по убыванию.skip
— Смещение. Позволяет пропустить определенное количество предложений в результирующем наборе.
Например, еслиskip
равно 20, то выборка начнется с 21-й записи.take
— Количество предложений, которое нужно вернуть в ответе.
Например, еслиtake
равно 10, то в ответе будет не более 10 записей.
Authorizations:
query Parameters
search | string Поиск по названию предложения |
category | integer <int64> Enum: 1 2 4 Фильтрация по категории контента:
|
status | integer <int32> Enum: 0 1 2 Фильтрация по статусу:
|
sort | string Enum: "created" "updated" Сортировка предложений по дате создания или обновления |
sort_dir | string Enum: "asc" "desc" Направление сортировки:
|
skip | integer <int64> Default: 0 Смещение. Количество предложений, которые нужно пропустить в результирующем наборе. |
take | integer <int64> Default: 50 Количество предложений для получения |
Responses
Response samples
- 200
- 400
- 401
- 500
{- "items": [
- {
- "id": 42,
- "title": "Книга `Спортивное питание`",
- "description": "Очень хорошая книга о спортивном питании.",
- "section": 4,
- "catalog_path": [
- 10
], - "price": 849,
- "discount_price": 799,
- "gallery": [
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/video.mp4",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/0_1280.jpg",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/1_1280.png"
], - "meta": "string",
- "tags": [
- {
- "id": 1,
- "value": "бизнес",
- "value_translit": "biznes",
- "weight": 100
}
], - "thumbnail": [
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/480.jpg",
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/1280.jpg",
- "vol6/842/900bec865s329db6c0efbf0f1a61ebee/1920.jpg"
], - "content": [
- {
- "content": 542342523,
- "title": "Книга 'Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга.",
- "files": [
- {
- "contentType": "application/fb2",
- "size": 3665547,
- "uri": "vol13/689/98235be67bdefcew2a33c5f0e55b17eb/output.fb2"
}
], - "meta": "string",
- "playlist": "vol14/147/f2671cfb67bd8c200b9464vd6f0dd97d/output.m3u8",
- "category_id": 4
}
], - "created": "2024-06-10T07:29:30Z",
- "updated": "2024-06-17T22:12:13Z",
- "deleted": "2024-06-19T22:12:13Z",
- "status": 1,
- "view_count": 47,
- "purchase_count": 10,
- "adult": false,
- "age_rating": "16+",
- "rating": 50
}
], - "total": 10
}
Обновить цену{{ /api/v1/offer/price/{offer_id} }}
Максимум 50 запросов в секунду
Метод позволяет изменить цену предложения и цену с учетом скидок.
Если вы не хотите выставлять скидку, то в запросе необходимо не передавать параметр discount_price
или выставить у него значение 0
.
Authorizations:
path Parameters
offer_id required | integer <int64> ID предложения |
Request Body schema: application/jsonrequired
regular_price | integer <int64> Цена в рублях |
discount_price | integer <int64> Цена в рублях с учетом скидки |
Responses
Request samples
- Payload
{- "regular_price": 5432,
- "discount_price": 5000
}
Response samples
- 400
- 401
- 500
{- "status": 400,
- "title": "bad request",
- "detail": "value 'five' is invalid for parameter offer_id",
- "code": "string",
- "errors": [
- { }
], - "requestId": "b709d59bd0791513350332ffe5f813c1",
- "origin": "gateway-dev"
}
Обновить статус{{ /api/v1/offer/{offer_id} }}
Максимум 50 запросов в секунду
Метод позволяет обновить статус вашего предложения.
Статус может быть:
0
— Черновик1
— Опубликован2
— Приостановлен3
— Удалён
Authorizations:
path Parameters
offer_id required | integer <int64> ID предложения |
Request Body schema: application/jsonrequired
status required | integer <int32> Enum: 0 1 2 3 |
Responses
Request samples
- Payload
{- "status": 0
}
Response samples
- 400
- 401
- 500
{- "status": 400,
- "title": "bad request",
- "detail": "value 'five' is invalid for parameter offer_id",
- "code": "string",
- "errors": [
- { }
], - "requestId": "b709d59bd0791513350332ffe5f813c1",
- "origin": "gateway-dev"
}
Получить категории и их подкатегории{{ /api/v1/catalog }}
Максимум 100 запросов в секунду
Метод позволяет получить дерево(структура данных) с категориям и их подкатегориями.
Иерархия структуры данных
В нашей структуре есть три уровня иерархии:
- Корневой узел — сущность Каталог
- Внешние узлы представляют собой категории (
section
):
1
— Видеоконтент2
— Аудиоконтент3
— Ключи активации4
— Электронные книги5
— Аудиокниги6
— Цифровые товары8
— Услуги12
— Купоны и развлечения13
— Подарочные сертификаты
- Листья дерева являются подкатегориями (
catalog_path
):
65
— Обучающие видео66
— Спорт67
— Мастер-класс68
— Йога69
— Медитации
Authorizations:
Responses
Response samples
- 200
- 401
- 500
{- "items": [
- {
- "children": [
- {
- "id": 1,
- "img": "vol0/catalog/icons/1.svg",
- "is_section": true,
- "name": "VIDEO",
- "node_order": 0,
- "parent_id": 0,
- "section_id": 1,
- "total": 6482,
- "children": [
- {
- "id": 65,
- "img": "",
- "is_section": false,
- "name": "Обучающие видео",
- "node_order": 1,
- "parent_id": 0,
- "section_id": 1,
- "total": 0,
- "children": [ ]
}, - {
- "id": 66,
- "img": "",
- "is_section": false,
- "name": "Спорт",
- "node_order": 2,
- "parent_id": 0,
- "section_id": 1,
- "total": 0,
- "children": [ ]
}, - {
- "id": 67,
- "img": "",
- "is_section": false,
- "name": "Мастер-класс",
- "node_order": 3,
- "parent_id": 0,
- "section_id": 1,
- "total": 0,
- "children": [ ]
}
]
}, - {
- "id": 2,
- "img": "vol0/catalog/icons/2.svg",
- "is_section": true,
- "name": "AUDIO",
- "node_order": 0,
- "parent_id": 0,
- "section_id": 2,
- "total": 1983,
- "children": [
- {
- "id": 73,
- "img": "",
- "is_section": false,
- "name": "Обучение",
- "node_order": 1,
- "section_id": 2,
- "total": 0,
- "children": [ ]
}, - {
- "id": 74,
- "img": "",
- "is_section": false,
- "name": "Медитации",
- "node_order": 2,
- "parent_id": 0,
- "section_id": 2,
- "total": 0,
- "children": [ ]
}, - {
- "id": 75,
- "img": "",
- "is_section": false,
- "name": "Мастер-класс",
- "node_order": 3,
- "parent_id": 0,
- "section_id": 2,
- "total": 0,
- "children": [ ]
}
]
}
], - "img": "",
- "name": "Каталог",
- "parent_id": 0,
- "path": null,
- "id": 0,
- "is_section": false,
- "node_order": 0,
- "section_id": 0,
- "total": 0
}
], - "total": 0
}
catalog_id — Идентифицировать категории |
Название категории | Форматы файлов |
---|---|---|
1 |
Видеоконтент | mp4 |
2 |
Аудиоконтент | mp3 |
4 |
Документ | pdf , epub , txt |
Допустимый контент для загрузки
- Видео (.MP4)
- Аудио/Музыка (.MP3)
- Документы (.PDF, .EPUB, .TXT)
Требования к файлам:
- Максимальный размер файла: 3 Гб
- Минимальная продолжительность видео/аудио: 1 минута
- Поддерживаемые форматы: .MP4, .EPUB, .TXT, .PDF, .MP3
Требования к обложке:
- Максимальный размер: 5 Мб
- Поддерживаемые форматы: .PNG, .JPG (.JPEG)
- Формат изображения: 1:1 (рекомендуется)
Загрузить обложку контента{{ /api/v1/content/illustration }}
Максимум 10 запросов в секунду
Метод позволяет загрузить обложку контента.
Допустимые форматы: .png, .jpeg
Рекомендации:
- Соотношение сторон 1:1
Краткая инструкция по применению:
- Убедитесь, что ваш файл соответствует указанным ограничениям и рекомендациям.
- Вызовите этот метод.
- При загрузке обложки вы получите список URI адресов для нового контента.
- Воспользуйтесь методом Инициализировать новый контент и передайте список URI адресов в поле
meta
в формате JSON используя следующий пример.
Пример:
{
"meta": {
"thumbnail": [
"vol6/529/013cfs7f229183179aj53d2b3bbb839a/480.jpg",
"vol6/529/013cfs7f229183179aj53d2b3bbb839a/1280.jpg",
"vol6/529/013cfs7f229183179aj53d2b3bbb839a/1920.jpg"
]
}
}
Authorizations:
header Parameters
X-Content-Type required | string Enum: "image/png" "image/jpeg" Тип файла |
Request Body schema: application/octet-streamrequired
Байты файла
Responses
Response samples
- 200
- 400
- 401
- 500
{- "uris": [
- "vol4/id_48361197/fc99358aedea2a0cf68c8dcd7f2a3696/480.jpg",
- "vol4/id_48361197/fc99358aedea2a0cf68c8dcd7f2a3696/1280.jpg",
- "vol4/id_48361197/fc99358aedea2a0cf68c8dcd7f2a3696/1920.jpg"
], - "userId": 483611
}
Инициализировать новый контент{{ /api/v1/content/upload/init }}
Максимум 10 запросов в секунду
Метод позволяет инициализировать (загрузить) информацию нового контента.
Типы контента и требования к ним вы можете посмотреть в оглавлении Работа с контентом.
Подготовка файла к последующей загрузки:
- Вам необходимо разбить файл на части (фреймы) не более 2 Мб.
- Передать размер (в байтах) каждой части и порядковый номер в поле
parts
Пример:
Файл размером 5 Мб, нужно разбить на 3 части — 2 Мб, 2 Мб и 1 Мб.
{
"parts": [
{
"index": 1,
"size": 2097152
},
{
"index": 2,
"size": 2097152
},
{
"index": 3,
"size": 1048576
}
],
}
В методе Загрузить контент (файл) вам нужно будет загрузить 3 части файла с указанием их порядкового номера через X-Wbd-Part-Index
.
Обязательные поля в метаданных (meta
) для загрузки контента:
Общие поля:
thumbnail
rating
Аудиоконтент:
author
Документ:
author
pages
Краткая инструкция по применению:
- Подготовьте метаданные и информацию о вашем контенте.
- Убедитесь, что ваш контент соответствует требованиям (формат и размер файла).
- Вызовите этот метод для инициализации нового контента.
- В ответе вы получите
uuid
контента, необходимый для последующей загрузки самого файла. - Используйте метод Загрузить файл контента, чтобы загрузить файл.
Authorizations:
Request Body schema: application/jsonrequired
title required | string <= 500 characters Название контента. |
description required | string <= 1000 characters Описание контента. |
catalog_id required | integer Enum: 1 2 4 ID категории контента:
|
content_type required | string Enum: "video/mp4" "audio/mpeg" "text/plain" "application/pdf" "application/epub+zip" Тип файла:
|
required | Array of objects (ChunkPart) Для оптимальной скорости загрузки контента следует разбить файл на фреймы по 2 Мб. В массиве указываются индекс каждого фрейма и его размер. |
required | object or null (ContentMeta) Метаданные. Дополнительная информация о контенте. |
Responses
Request samples
- Payload
{- "title": "Книга `Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга.",
- "catalog_id": 4,
- "content_type": "application/epub+zip",
- "parts": [
- {
- "index": 1,
- "size": 2097152
}, - {
- "index": 2,
- "size": 2097152
}, - {
- "index": 3,
- "size": 1048576
}
], - "meta": {
- "thumbnail": [
- "vol4/id_48361197/fc99358aedea2a0cf68c8dcd7f2a3696/480.jpg",
- "vol4/id_48361197/fc99358aedea2a0cf68c8dcd7f2a3696/1280.jpg",
- "vol4/id_48361197/fc99358aedea2a0cf68c8dcd7f2a3696/1920.jpg"
], - "source_file_name": "Иван_Тургенев:_Отцы_и_дети.epub",
- "rating": "16+",
- "original_name": "Иван_Тургенев:_Отцы_и_дети",
- "voice": "Кузнецов В.Б.",
- "bisac": "978-5-389-04996-3",
- "pages": 354,
- "author": "Иван Тургенев",
- "translator": "Hare Richard",
- "duration": "00:05:11"
}
}
Response samples
- 200
- 400
- 401
- 500
{- "content_id": 493292,
- "uuid": "25f5e4c9-2cac-11ef-adbf-9cc2c45608a"
}
Загрузить контент (файл){{ /api/v1/content/upload/chunk }}
Максимум 10 запросов в секунду
Метод позволяет загрузить контент (файл) по частям.
Краткая инструкция по применению:
- Разбейте файл на части размером не более 2 Мб.
- Для каждой части файла:
- Убедитесь, что заголовок
X-Content-Type
соответствует типу вашего контента (например,video/mp4
,audio/mpeg
,application/pdf
и т.д.). - Установите заголовок
X-Wbd-Part-Index
в соответствии с индексом текущей части (начиная с 1). - Укажите
uuid
контента в заголовкеX-Wbd-Content-Uuid
, который вы получили при инициализации нового контента. - Отправьте байты (часть файла) в теле запроса.
- Повторяйте шаг 2 для всех частей файла до завершения загрузки.
Authorizations:
header Parameters
X-Content-Type required | string Enum: "video/mp4" "audio/mpeg" "text/plain" "application/pdf" "application/zip" "application/epub+zip" Тип файла |
X-Wbd-Part-Index required | integer <int64> Индекс фрейма (части контента) |
X-Wbd-Content-Uuid required | string Уникальный ID полученный в инициализации нового контента |
Request Body schema: application/octet-streamrequired
Байты файла
Responses
Response samples
- 200
- 400
- 401
- 500
{- "chunk": 3,
- "uri": "vol19/924/e9e5d152ea3d9018bd061c62f75efbdf/content"
}
Редактировать контент{{ /api/v1/content/author/{content_id} }}
Максимум 50 запросов в секунду
Метод позволяет редактировать информацию о контенте.
Authorizations:
path Parameters
content_id required | integer <int64> ID контента |
Request Body schema: application/jsonrequired
title | string or null <= 500 characters Название контента. |
description | string or null <= 1000 characters Описание контента. |
Responses
Request samples
- Payload
{- "title": "Книга 'Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга."
}
Response samples
- 200
- 400
- 401
- 500
{- "id": 5321,
- "author_id": 93224,
- "title": "Книга 'Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга.",
- "content_type": "application/epub+zip",
- "uri": "vol19/924/e9e55159ea3d9018bd061c62f75efbdf/content",
- "files": [
- {
- "contentType": "application/fb2",
- "size": 3665547,
- "uri": "vol13/689/98235be67bdefcew2a33c5f0e55b17eb/output.fb2"
}
], - "playlist": "vol14/147/f2671cfb67bd8c200b9464vd6f0dd97d/output.m3u8",
- "meta": null,
- "category_id": 4,
- "status": 2,
- "created": "2024-06-10T07:29:30Z",
- "updated": "2024-06-17T22:12:13Z"
}
Получить информацию о контенте{{ /api/v1/content/author/{content_id} }}
Максимум 100 запросов в секунду
Метод позволяет получить информацию о конкретном контенте.
Authorizations:
path Parameters
content_id required | integer <int64> ID контента |
Responses
Response samples
- 200
- 400
- 401
- 404
- 500
{- "id": 5321,
- "author_id": 93224,
- "title": "Книга 'Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга.",
- "content_type": "application/epub+zip",
- "uri": "vol19/924/e9e55159ea3d9018bd061c62f75efbdf/content",
- "files": [
- {
- "contentType": "application/fb2",
- "size": 3665547,
- "uri": "vol13/689/98235be67bdefcew2a33c5f0e55b17eb/output.fb2"
}
], - "playlist": "vol14/147/f2671cfb67bd8c200b9464vd6f0dd97d/output.m3u8",
- "meta": null,
- "category_id": 4,
- "status": 2,
- "created": "2024-06-10T07:29:30Z",
- "updated": "2024-06-17T22:12:13Z"
}
Получить список своего контента{{ /api/v1/content/author }}
Максимум 100 запросов в секунду
Метод позволяет получить список своего контента с использованием фильтрации.
Описание параметров фильтрации:
search
— Поиск контента по названию. Укажите часть или полное название контента для поиска.category
— Фильтрация контента по категории. Список категорий находится в таблице, колонка — "catalog_id
— Идентифицировать категории".status
— Фильтрация контента по статусу. Возможные значения:0
— Создан1
— Загружено на сервер2
— Опубликован3
— Ошибка в обработке или публикации4
— Обрабатывается5
— Отправлено на сервер
sort
— Сортировка контента по дате создания или обновления. Укажитеcreated
для сортировки по дате создания иupdated
для сортировки по дате обновления.sort_dir
— Направление сортировки. Укажитеasc
для сортировки по возрастанию илиdesc
для сортировки по убыванию.skip
— Смещение. Позволяет пропустить определенное количество контента в результирующем наборе.
Например, еслиskip
равно 20, то выборка начнется с 21-й записи.take
— Количество контента, которое нужно вернуть в ответе.
Например, еслиtake
равно 10, то в ответе будет не более 10 записей.
Authorizations:
query Parameters
search | string Поиск по названию контента |
category | integer <int64> Enum: 1 2 4 Фильтрация по категории:
|
status | integer <int32> Enum: 0 1 2 3 4 5 Фильтрация по статусу:
|
sort | string Enum: "created" "updated" Сортировка контента по дате создания или обновления |
sort_dir | string Enum: "asc" "desc" Направление сортировки:
|
skip | integer <int64> Default: 0 Смещение. Количество предложений, которые нужно пропустить в результирующем наборе. |
take | integer <int64> Default: 50 Количество контента для получения |
Responses
Response samples
- 200
- 401
- 500
{- "items": [
- {
- "id": 5321,
- "author_id": 93224,
- "title": "Книга 'Иван Тургенев: Отцы и дети'",
- "description": "Очень хорошая книга.",
- "content_type": "application/epub+zip",
- "uri": "vol19/924/e9e55159ea3d9018bd061c62f75efbdf/content",
- "files": [
- {
- "contentType": "application/fb2",
- "size": 3665547,
- "uri": "vol13/689/98235be67bdefcew2a33c5f0e55b17eb/output.fb2"
}
], - "playlist": "vol14/147/f2671cfb67bd8c200b9464vd6f0dd97d/output.m3u8",
- "meta": null,
- "category_id": 4,
- "status": 2,
- "created": "2024-06-10T07:29:30Z",
- "updated": "2024-06-17T22:12:13Z"
}
], - "total": 10
}
Скачать контент{{ /api/v1/content/download/{uri} }}
Максимум 10 запросов в секунду
Метод позволяет скачать контент по URI.
Получение URI-адреса контента:
- Воспользуйтесь одним из методов для получения информации о контенте.
- В информации о контенте возьмите URI-адрес из поля
uri
илиfiles
.
Скачивание контента частями:
Вы можете скачать файл частями с использованием заголовка Range
.
Пример: Range: bytes=0-524287999
Ответ содержит заголовок Content-Range
с информацией о скаченном файле.
Пример: Content-Range: bytes 0-524287999/1073741824
Authorizations:
path Parameters
uri required | string URI-адрес контента |
header Parameters
Range | string Позволять скачивать файл частями. Пример: |
Responses
Response samples
- 401
- 404
- 500
- 502
{- "status": 401,
- "title": "unauthorized",
- "detail": "authorization required",
- "code": "string",
- "requestId": "b709d59bd0791513350332ffe5f813c1",
- "origin": "gateway-dev"
}
Удалить контент{{ /api/v1/content/delete }}
Максимум 50 запросов в секунду
Метод позволяет удалить контент по ID.
Authorizations:
Request Body schema: application/jsonrequired
content_id | integer <int64> ID контента |
Responses
Request samples
- Payload
{- "content_id": 493292
}
Response samples
- 401
- 404
- 500
{- "status": 401,
- "title": "unauthorized",
- "detail": "authorization required",
- "code": "string",
- "requestId": "b709d59bd0791513350332ffe5f813c1",
- "origin": "gateway-dev"
}
Загрузить медиафайлы для предложения{{ /api/v1/content/gallery }}
Максимум 10 запросов в секунду
Метод позволяет загружать медиафайлы на сервер. После успешной загрузки возвращает список URI-адресов, которые можно использовать для добавления дополнительных медиафайлов в предложение.
Данный метод поможет вам добавить дополнительные медиафайлы при создании или обновлении предложения.
- изображение: 5 Мб
- видео: 50 Мб
- общий размер всех файлов: 100 Мб
- изображение: .png, .jpeg
- видео: .mp4
Authorizations:
Request Body schema: multipart/form-datarequired
files required | Array of strings <binary> [ items <binary > ] |
Responses
Response samples
- 200
- 400
- 401
- 500
{- "uris": [
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/video.mp4",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/0_1280.jpg",
- "vol42/352/91b751bfb753ff365afbc8dca21b7f87/1_1280.png"
]
}
Добавить ключи активации{{ /api/v1/keys-api/keys }}
Максимум 50 запросов в секунду
Метод позволяет добавить ключи для предложения по ID.
section
):
- Ключи активации —
3
- Купоны и развлечения —
12
- Подарочные сертификаты —
13
Authorizations:
Request Body schema: application/jsonrequired
keys required | Array of strings <= 1000 items [ items <= 200 characters ] Список ключей. Ограничения:
|
offer_id required | integer <int64> ID предложения |
Responses
Request samples
- Payload
{- "keys": [
- "0181-c2a38--6379-69d8ae",
- "4444-m2d2--5555-77f7ff",
- "21fd-1234--3333-4444ff"
], - "offer_id": 4251
}
Response samples
- 401
- 403
- 404
- 500
{- "status": 401,
- "title": "unauthorized",
- "detail": "authorization required",
- "code": "string",
- "requestId": "b709d59bd0791513350332ffe5f813c1",
- "origin": "gateway-dev"
}
Удалить ключи активации{{ /api/v1/keys-api/keys }}
Максимум 100 запросов в секунду
Метод позволяет удалить ключи активации по их идентификаторам
Authorizations:
query Parameters
ids required | Array of integers <int64> [ items <int64 > ] Список идентификаторов ключей |
Responses
Response samples
- 200
- 207
- 400
- 401
- 403
- 404
- 500
{- "statuses": [
- {
- "id": 12345,
- "code": "200",
- "message": "ok",
- "status": true
}, - {
- "id": 12346,
- "code": "200",
- "message": "ok",
- "status": true
}
]
}
Получить купленные ключи{{ /api/v1/keys-api/keys/redeemed }}
Максимум 100 запросов в секунду
Метод позволяет получить список купленных ключей с использованием фильтрации.
Описание параметров фильтрации:
offer_id
— Фильтрация по ID предложения. Позволяет выбрать ключи, связанные с определенным предложением.skip
— Смещение. Указывает, сколько записей нужно пропустить в результирующем наборе.
Например, еслиskip
равно 20, то выборка начнется с 21-й записи.take
— Количество записей для получения. Указывает, сколько ключей должно быть возвращено в ответе.
Например, еслиtake
равно 10, то в ответе будет не более 10 записей.date_from
— Фильтрация по дате покупки начиная с указанной даты (включительно).
Формат даты: RFC3339.date_to
— Фильтрация по дате покупки до указанной даты (не включительно).
Формат даты: RFC3339.
Authorizations:
query Parameters
offer_id | integer <int64> Фильтрация по ID предложения. Позволяет выбрать ключи, связанные с определенным предложением. |
skip | integer <int64> Default: 0 Смещение. Указывает, сколько записей нужно пропустить в результирующем наборе. Используется для реализации пагинации. |
take | integer <int64> Default: 50 Количество записей для получения. Указывает, сколько ключей должно быть возвращено в ответе. |
date_from | string Фильтрация по дате покупки начиная с указанной даты (включительно). Формат даты: RFC3339 ( |
date_to | string Фильтрация по дате покупки до указанной даты (не включительно). Формат даты: RFC3339 ( |
Responses
Response samples
- 200
- 401
- 500
{- "items": [
- {
- "id": 54321,
- "value": "0181-c2a38--6379-69d8ae",
- "created_at": "2024-05-10T09:25:50Z",
- "buyed_at": "2024-05-13T11:08:46Z",
- "offer_id": 42124,
- "offer_title": "Игра Red Dead Redemption (Steam)",
- "offer_price": 2490
}
], - "total": 10
}
Получить количество ключей для предложения{{ /api/v1/offer/keys/{offer_id} }}
Максимум 100 запросов в секунду
Метод позволяет получить информацию о количестве ключей у конкретного предложения.
Authorizations:
path Parameters
offer_id required | integer <int64> ID предложения |
Responses
Response samples
- 200
- 401
- 404
- 500
{- "total": 10,
- "available": 5,
- "reserved": 2,
- "deleted": 2
}
Получить список ключей{{ /api/v1/offer/keys/{offer_id}/list }}
Максимум 100 запросов в секунду
Метод позволяет получить список загруженных вами ключей для конкретного предложения.
Authorizations:
path Parameters
offer_id required | integer <int64> ID предложения |
query Parameters
take | integer <uint32> Default: 50 Количество записей для получения. Указывает, сколько ключей должно быть возвращено в ответе |
skip | integer <uint32> Default: 0 Смещение. Указывает, сколько записей нужно пропустить в результирующем наборе. Используется для реализации пагинации |
deleted | boolean Default: true Указывает, будут ли в ответе присутствовать удалённые ключи |
sold | boolean Default: true Указывает, будут ли в ответе присутствовать проданные ключи |
reserved | boolean Default: true Указывает, будут ли в ответе присутствовать зарезервированные ключи |
expired | boolean Default: true Указывает, будут ли в ответе присутствовать ключи с истекшим сроком действия |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 500
{- "items": [
- {
- "id": 42,
- "value": "0181-c2a38--6379-69d8ae",
- "created_at": "2022-06-15T09:19:02Z",
- "buyed_at": "2022-07-03T011:30:30Z"
}, - {
- "id": 43,
- "value": "4444-m2d2--5555-77f7ff",
- "created_at": "2022-06-15T12:19:02Z",
- "deleted_at": "2023-02-03T16:22:02Z"
}
], - "total": 10
}