Wildberries Цифровой (wbd)
По вопросам работы с WBD API обращайтесь в техническую поддержку
По вопросам работы с WBD API обращайтесь в техническую поддержку
Добро пожаловать в Wildberries Digital (WBD) API — интерфейс для продавцов Wildberries Цифровой, предоставляющий возможности управления магазином и получения оперативной и статистической информации по протоколу HTTP.
- Управление предложениями и контентом
- Загрузка и управление медиафайлами
- Получение информации о контенте и предложениях
- Управление ключами активации
Для доступа к WBD API необходимо пройти авторизацию с использованием JWT. Следуйте инструкциям ниже для получения и использования токена.
Получение токена
- Перейдите по ссылке на сайт WBD.
- Нажмите кнопку Получить токен.
- Скопируйте сгенерированный токен JWT.
Использование токена
В каждом запросе к WBD API передавайте токен в заголовке Authorization, где <api_token> — ваш токен авторизации (JWT):
Authorization: Bearer <api_token>
Пример запроса:
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 }}
Метод позволяет создать новое предложение.
Обязательные поля
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 }}
Метод позволяет добавить или обновить обложку предложения.
Для добавления более привлекательной карточки предложения, мы рекомендуем:
- Добавлять изображения с соотношением сторон 1:1.
- Минимальный размер изображения 1200х1200 пикселей.
- Фон контрастный белому.
Допустимые форматы: 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} }}
Метод позволяет редактировать информацию о предложении.
Категория и подкатегория предложения
Воспользуйтесь методом Получить категории и их подкатегории для получения 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) Метаданные предложения |
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.Вставьте ключ в поле ..."
}
}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} }}
Метод позволяет получить информацию о конкретном предложении.
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 }}
Метод позволяет получить список своих предложений с использованием фильтрации.
Описание параметров фильтрации
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} }}
Метод позволяет изменить цену предложения и цену с учетом скидок.
Если вы не хотите выставлять скидку, то в запросе необходимо не передавать параметр 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} }}
Метод позволяет обновить статус вашего предложения.
Возможные значения:
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 }}
Метод позволяет получить дерево (структуру данных) с категориям и их подкатегориями.
Иерархия структуры данных
В нашей структуре есть три уровня иерархии:
- Корневой узел — сущность Каталог
- Внешние узлы представляют собой категории (
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 }}
Метод позволяет загрузить обложку контента.
Допустимые форматы: 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 }}
Метод позволяет инициализировать (загрузить) информацию нового контента.
Типы контента и требования к ним вы можете посмотреть в оглавлении Работа с контентом.
Подготовка файла к последующей загрузке:
- Вам необходимо разбить файл на части (фреймы) не более 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) для загрузки контента
Общие поля:
thumbnailrating
Аудиоконтент:
author
Документ:
authorpages
Краткая инструкция по применению:
- Подготовьте метаданные и информацию о вашем контенте.
- Убедитесь, что ваш контент соответствует требованиям (формат и размер файла).
- Вызовите этот метод для инициализации нового контента.
- В ответе вы получите
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 }}
Метод позволяет загрузить контент (файл) по частям.
Краткая инструкция по применению:
- Разбейте файл на части размером не более 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} }}
Метод позволяет редактировать информацию о контенте.
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} }}
Метод позволяет получить информацию о конкретном контенте.
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 }}
Метод позволяет получить список своего контента с использованием фильтрации.
Описание параметров фильтрации
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} }}
Метод позволяет скачать контент по 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 }}
Метод позволяет удалить контент по 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 }}
Метод позволяет загружать медиафайлы на сервер.
После успешной загрузки возвращает список 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 }}
Метод позволяет добавить ключи для предложения по 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 }}
Метод позволяет удалить ключи активации по их ID.
Authorizations:
query Parameters
| ids required | Array of integers <int64> [ items <int64 > ] Список ID ключей |
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 }}
Метод позволяет получить список купленных ключей с использованием фильтрации.
Описание параметров фильтрации
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} }}
Метод позволяет получить информацию о количестве ключей у конкретного предложения.
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 }}
Метод позволяет получить список загруженных вами ключей для конкретного предложения.
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
}