У каждого товара SelSup должен быть бренд. Если у товара нет торговой марки, заранее создайте отдельный бренд «Без бренда» и используйте его идентификатор в карточках.
/api/brand
Готовые сценарии
Готовые сценарии
01
Найти или создать бренд перед созданием товара
Сначала ищите точное название. Если rows пуст, создайте бренд и сохраните brandId для карточки товара.
Вызовите GET /api/brand/find с query и count=true.
Сравните name без учёта регистра на своей стороне.
Если совпадения нет, отправьте POST /api/brand с name.
Используйте brandId из ответа при создании модели товара.
Поля логотипа появляются после загрузки изображения. Служебные поля общей модели, которые не участвуют в этом API, здесь намеренно не показаны.
Brand10 полей
brandIdinteger
Идентификатор бренда внутри аккаунта SelSup.
read-only
namestring
Название бренда. Пробелы по краям удаляются при сохранении.
Обязательно
logoUrlstring
Публичная ссылка на текущий логотип.
read-only
logoSizeinteger
Размер логотипа в байтах.
read-only
logoWidthinteger
Ширина логотипа в пикселях.
read-only
logoHeightinteger
Высота логотипа в пикселях.
read-only
deletedboolean
Признак архивного бренда.
ozonNamestring
Название бренда в каталоге Ozon.
nullable
ozonIdinteger · int64
Идентификатор бренда в Ozon.
nullable
oneCIdstring
Внешний идентификатор бренда в 1С.
nullable
Контракт ошибок
Как API возвращает прикладные ошибки
Код ошибки одинаков для всех локалей, а текст для пользователя переводится сервером. Поэтому бизнес-логику стройте по error, а localMessage используйте только для отображения.
error
Стабильный машинный код ошибки для логики интеграции.
localMessage
Готовое сообщение на языке пользователя API-токена.
params
Значения
文
Язык localMessage определяется полем lang пользователя, которому принадлежит API-токен. Язык страницы документации и заголовок Accept-Language его не переключают; если язык пользователя не указан, используется русский.
RUПользователь с локалью ru
{
"error": "error_brand_already_exists",
"localMessage": "Бренд Base уже существует",
"params": {
"name": "Base"
}
}
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
GET
Получить все бренды
/api/brand/all
Токен с правами чтения
Возвращает полный список брендов аккаунта, отсортированный по названию.
i
Для больших справочников и регулярной синхронизации используйте /find с пагинацией.
curl --request GET 'https://api.selsup.ru/api/brand/all' \
--header 'Authorization: YOUR_API_TOKEN'
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
GET
Получить бренд по ID
/api/brand/{brandId}
Токен с правами чтения
Возвращает бренд текущего аккаунта по внутреннему идентификатору.
i
В текущей реализации неизвестный brandId возвращает пустое значение, а не ошибку 404. Проверяйте пустой ответ.
Параметры пути
Поле
Тип
Обязательно
Описание
brandId
integer
Да
Идентификатор бренда в SelSup.
curl --request GET 'https://api.selsup.ru/api/brand/8124' \
--header 'Authorization: YOUR_API_TOKEN'
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
POST
Создать бренд
/api/brand
Токен с правами записи
Создаёт бренд в текущем аккаунте. Для обычного сценария достаточно поля name.
i
Название сравнивается без учёта регистра; «Base» и «base» считаются одним брендом.
Тело запроса
application/json
Поле
Тип
Обязательно
Описание
name
string
Да
Уникальное непустое название бренда.
ozonName
string
Нет
Название из справочника Ozon, если известно.
ozonId
integer · int64
Нет
Идентификатор бренда Ozon, если карточки отправляются без предварительного импорта.
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
400error_empty_brand_name
Пустое название
name отсутствует, пуст или состоит только из пробелов.
400error_brand_already_exists
Бренд уже существует
В аккаунте уже есть бренд с таким названием без учёта регистра. params.name содержит конфликтующее имя.
400error_subscription_expired
Срок действия тарифа закончился
Оплатите тариф для продолжения использования сервиса. Для логики интеграции используйте код error_subscription_expired.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
PUT
Обновить бренд
/api/brand/{brandId}
Токен с правами записи
Полностью обновляет редактируемые поля бренда. Идентификатор берётся из URL, brandId в JSON передавать не нужно.
i
Это PUT, поэтому передавайте все значения, которые нужно сохранить. Поля логотипа этим методом не меняются.
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
400error_empty_brand_name
Пустое название
name отсутствует, пуст или состоит только из пробелов.
400error_brand_already_exists
Бренд уже существует
В аккаунте уже есть бренд с таким названием без учёта регистра. params.name содержит конфликтующее имя.
400error_subscription_expired
Срок действия тарифа закончился
Оплатите тариф для продолжения использования сервиса. Для логики интеграции используйте код error_subscription_expired.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
DELETE
Удалить, архивировать или восстановить бренд
/api/brand/{brandId}
Токен с правами записи
При deleted=true SelSup пытается удалить бренд физически. Если на него есть ссылки, бренд помечается удалённым. deleted=false восстанавливает архивный бренд.
Параметры пути
Поле
Тип
Обязательно
Описание
brandId
integer
Да
Идентификатор бренда.
Параметры запроса
Поле
Тип
Обязательно
Описание
deleted
boolean
Да
true — удалить или архивировать; false — восстановить.
Удаление невозможно из-за связей; бренд перемещён в архив.
brand_has_been_restore
Бренд восстановлен из архива.
"brand_signed_as_deleted"
Ошибки3
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
POST
Загрузить логотип
/api/brand/{brandId}/image
Токен с правами записи
Загружает изображение как multipart/form-data. Если логотип уже существует, он заменяется.
i
Передавайте бинарный файл в поле file; JSON для этого метода не используется.
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
400error_brand_to_found
Бренд для логотипа не найден
brandId не существует в текущем аккаунте. Код сохранён в документации в том виде, в котором его возвращает API.
400error_wrong_image_format
Неподдерживаемое изображение
Файл не удалось прочитать как изображение поддерживаемого формата.
400error_max_upload_size_exceeded
Файл слишком большой
Размер multipart-запроса превысил допустимый лимит сервера.
400error_subscription_expired
Срок действия тарифа закончился
Оплатите тариф для продолжения использования сервиса. Для логики интеграции используйте код error_subscription_expired.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
DELETE
Удалить логотип
/api/brand/{brandId}/image
Токен с правами записи
Удаляет файл логотипа и обнуляет его размеры в записи бренда.
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
400error_brand_to_found
Бренд для логотипа не найден
brandId не существует в текущем аккаунте. Код сохранён в документации в том виде, в котором его возвращает API.
400error_empty_brand_logo
У бренда нет логотипа
Удаление запрошено для бренда, у которого логотип не задан.
400error_cant_remove_brand_logo
Логотип не удалось удалить
Хранилище не смогло удалить файл или обновить данные бренда.
400error_subscription_expired
Срок действия тарифа закончился
Оплатите тариф для продолжения использования сервиса. Для логики интеграции используйте код error_subscription_expired.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.
POST
Объединить дубликаты
/api/brand/{brandId}/merge/{removeBrandId}
Токен с правами записи
Переносит модели товаров с removeBrandId на brandId, затем физически удаляет removeBrandId.
i
Операция необратима. brandId — бренд, который останется; removeBrandId — дубликат, который будет удалён.
Параметры пути
Поле
Тип
Обязательно
Описание
brandId
integer
Да
Идентификатор основного бренда.
removeBrandId
integer
Да
Идентификатор удаляемого дубликата.
curl --request POST 'https://api.selsup.ru/api/brand/8124/merge/9012' \
--header 'Authorization: YOUR_API_TOKEN'
Прикладные ошибки обычно возвращаются как JSON с полями error, localMessage и params. Ориентируйтесь на error; локализованный текст может меняться. Как API возвращает прикладные ошибки ↑
401auth_required
Требуется авторизация
Заголовок Authorization отсутствует, пуст или содержит недействительный токен.
400error_access_denied
Недостаточно прав
Токен существует, но его роль не позволяет выполнить операцию.
400error_brand_not_found
Бренд не найден
Один из брендов для объединения не существует в текущем аккаунте.
400error_subscription_expired
Срок действия тарифа закончился
Оплатите тариф для продолжения использования сервиса. Для логики интеграции используйте код error_subscription_expired.
500error_unknown
Непредвиденная ошибка
Внутренняя ошибка. Сохраните время запроса и обратитесь в поддержку, не повторяя мутацию вслепую.