Доступ

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

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

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

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

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

Платформа ведёт себя по-разному в зависимости от того, как вы запрашиваете данные, и это важно понимать при отладке.

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

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

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

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

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

Общие записи

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