Старт и регистрация

Ключи API Wildberries и Ozon: как выдавать и не потерять доступ

Автор: Михаил Варламов··4 мин чтения

API-ключ маркетплейса — это не «пароль от аналитики», а полноценный доступ к данным вашего кабинета, а иногда и к управлению ценами, поставками и рекламой. Выдать его на пять минут просто, а вот разобраться потом, кто и чем пользуется, — уже нет. Разбираем рабочую дисциплину: какие права включать, сколько ключей заводить, когда их менять и как быстро понять, что ключ перестал работать.

Минимальные права — базовое правило

И на Wildberries, и на Ozon при выпуске токена вы выбираете, какие категории данных он открывает. Соблазн понятен: отметить всё, чтобы «точно заработало». Но у ключа с полными правами и цена ошибки полная — если он утечёт или окажется в скомпрометированном сервисе, злоумышленник сможет не только прочитать вашу выручку, но и изменить цены, снять товар с продажи или остановить рекламу.

Правильный порядок обратный: сначала понять, что именно сервису нужно, потом отметить только эти категории. Аналитике прибыли достаточно статистики и финансов. Сервису SEO — контента. Репрайсеру — цен. Если сомневаетесь, включайте меньше: не хватит прав — сервис вернёт понятную ошибку, и вы добавите нужную категорию за минуту.

  • Аналитика продаж и прибыли — статистика, финансовые отчёты, товары. Только чтение.
  • Управление ценами — отдельная категория цен и скидок, здесь уже нужна запись.
  • Работа с карточками — контент; сервис сможет менять описания и характеристики.
  • Реклама — доступ к кампаниям и ставкам; ошибка тут стоит бюджета.

Read-only там, где хватает чтения

Разделение на чтение и запись — самая дешёвая защита из существующих. Сервис аналитики по определению ничего не меняет в кабинете: он забирает продажи, остатки, удержания и считает по ним прибыль. Значит, ключ для него должен быть только на чтение — и тогда любой сценарий утечки ограничивается неприятной, но не разрушительной потерей конфиденциальности цифр.

Отдельный ключ на каждый сервис

Один ключ «на всё» кажется удобным ровно до первого инцидента. Когда сервисов три, а токен один, вы не можете отключить один сервис, не сломав два остальных: отзыв ключа мгновенно вырубает все интеграции разом. И понять, чьими запросами упёрлись в лимит API, тоже нельзя — все ходят под одним именем.

Отдельный ключ на интеграцию решает обе задачи. Заводите его с понятным названием — «аналитика», «репрайсер», «фулфилмент» — и ведите короткий список: какой ключ, какому сервису выдан, когда, с какими правами. Список из пяти строк в заметках экономит часы разбирательств через полгода.

Ротация: увольнение сотрудника, подрядчик, подозрение

Ключ переживает человека, который его выпустил. Менеджер, который вёл кабинет, уходит — а токен, скопированный им в личный ноутбук или в переписку с подрядчиком, продолжает работать. Формально доступ к кабинету вы закрыли, фактически данные продолжают уходить.

  1. Сотрудник или подрядчик, имевший доступ к ключам, перестал с вами работать — перевыпустите все ключи, к которым он имел отношение.
  2. Ключ засветился в чате, письме, скриншоте или задаче в трекере — считайте его скомпрометированным и меняйте.
  3. Вы отключили сервис — отзовите его ключ сразу, а не «когда-нибудь потом».
  4. Раз в полгода-год пройдитесь по списку ключей и удалите те, которыми уже никто не пользуется.

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

Признаки протухшего ключа

Ключ редко «ломается» громко. Чаще это выглядит так: цифры на дашборде замерли, но всё остальное на месте — сервис работает, страницы открываются, вчерашние данные видны. Именно поэтому важно знать симптомы.

401 Unauthorized  → ключ недействителен: истёк, отозван или перевыпущен
403 Forbidden     → ключ живой, но у него нет нужной категории прав
данные стоят N дней → сбор остановился; смотрите дату последнего успешного обновления

401 и 403 — это две разные болезни с разным лечением. При 401 ключ нужно выпустить заново и обновить в сервисе. При 403 перевыпуск не поможет: у токена просто не отмечена нужная категория — её надо добавить. Третий симптом самый коварный: сервис молча перестал получать новые данные, а последние загруженные продолжает показывать. Ориентируйтесь не на «страница открылась», а на дату самой свежей строки в данных.

Здоровый доступ проверяется не тем, что сервис открывается, а тем, что в нём есть сегодняшний день.

Чек-лист безопасной выдачи

  • Выданы только те категории, без которых сервис не работает.
  • Для аналитики — доступ на чтение, без прав на изменение цен и рекламы.
  • У каждого сервиса свой именованный ключ, ведётся список выданных токенов.
  • Ключ не пересылался в открытом виде и не хранится в общих документах.
  • Есть привычка перевыпускать ключи при смене людей и при любом подозрении.
  • Кто-то регулярно смотрит, до какой даты доведены данные, — это и есть индикатор живого ключа.

Профитика подключается по официальному API Wildberries и Ozon с правами на чтение и сама следит за свежестью: если ключ перестал отдавать данные, вы увидите это сразу, а не через месяц.

Подключить магазин

Где смотреть это в Профитике

Разделы сервиса, где эти цифры видны по вашему магазину:

Частые вопросы

Чем 401 отличается от 403 при работе с API маркетплейса?

401 означает, что ключ недействителен — истёк, отозван или перевыпущен, и его нужно создать заново. 403 означает, что ключ рабочий, но у него нет нужной категории прав: перевыпуск не поможет, надо добавить категорию доступа.

Нужно ли менять API-ключи после увольнения сотрудника?

Да. Закрытие доступа к личному кабинету не отзывает ранее выпущенные токены — они продолжают работать. Перевыпустите все ключи, к которым сотрудник имел отношение, начиная с тех, что дают права на изменение данных.

Можно ли выдать один ключ сразу нескольким сервисам?

Технически можно, но не стоит: отозвать доступ у одного сервиса вы уже не сможете, не сломав остальные, и не поймёте, чьи запросы упираются в лимиты. Отдельный именованный ключ на каждую интеграцию удобнее и безопаснее.

Читайте также