Доступ

Изоляция брендов

На одной платформе живёт несколько независимых магазинов. Ваш ключ работает ровно в одном из них, и это правило применяется к каждому запросу, а не к интерфейсу.

Как платформа понимает, чей это запрос

Бренд берётся из ключа. Ключ выпускается для конкретного бренда, и эта привязка — главный источник истины. Ничего дополнительно передавать не нужно.

Два разных поведения при попытке достать чужое

Реакция зависит от того, как вы спрашиваете. При отладке это первое, что стоит проверить.

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

При обращении по идентификатору платформа отказывает. В одних местах это 403 с прямым указанием на бренд, в других 404 «не найдено». Второе сделано намеренно. Так платформа не подтверждает, что запись с таким номером вообще существует.

Почему список пустой

Три причины, в порядке частоты:

  1. Ключ выпущен для другого бренда. Проверьте у владельца платформы, для какого бренда он выдан.
  2. Вы передали X-Site-Source с чужим или несуществующим кодом бренда — доступ сузился до пустоты.
  3. Данные действительно отфильтрованы. Самый частый случай — список заказов, который по умолчанию скрывает неоплаченные.
проверка, что ключ видит именно ваш бренд
// Возьмите один заказ и посмотрите на код бренда в нём
const [заказ] = await запрос("/orders/admin/all?limit=1&includeUnpaid=1");
console.log(заказ?.siteSource); // должен совпадать с кодом вашего бренда

Общие записи

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