Storefront resource access
/docs/resource-accessdraftМашинный перевод с английского· проверено 2026-09-12
Статус: draft · Служить: GET /docs/resource-access · проверенный: 2026-09-12
Две вещи live здесь. Публикация сайта — closing Вся эта shop за спиной короткий числовой PIN Пока он строится — закончен и используется сегодня. Пер-resource матрица под ним (пароль на одном из них) product, category или page) инсценирован: keep companies.resource_access_enabled Отключается до полного public-испытания поверхностной матрицы и кэш-изоляции проходят.
Публикация сайта
А. shop's site либо опубликованный или не опубликовано. Опубликовано это default — для new магазины и для каждого shop которая уже существует, без Государство не является хранимым флагом: «не опубликовано» — это Присутствие одного из active system Политика доступа нести PIN на shop resource, «Опубликовано» — это политика, которая отсутствует или изменена. off. Один source Истины, и врата, и место, где они находятся. cannot несогласный.
Пока site не публикуется:
- Каждый посетитель видит PIN Быстрый вместо того, чтобы site и вступает в силу путем ввода PIN (
POST /storefront/access/unlock, см. ниже); - Поисковые системы закрыты —
robots.txtответыDisallow: /для всего ведущий,sitemap.xmlОтветы 404, и ответы витрины магазина несутX-Robots-Tag: noindex, nofollow. То же самое касается и custom домен; - Три неправильных PIN-кода от одного address запирать address Выйти на 10 минут. Правильный PIN не открывает дверь во время локаута, в противном случае Локаут будет задержкой, а не замком. Этот локаут, а не длина замка. PIN, Что на самом деле защищает закрытое пространство site.
GET /site-publication
{ "published": false, "pin": "1234" }The PIN возвращается в plain text, И это преднамеренно. Это временное Охранник для a site в процессе строительства, а не account secret: тот owner диктовать Это для клиента и он должен быть в состоянии прочитать его обратно. shop's owner/admin или key с access:read когда-нибудь увидит — public решение в магазине site_published И ничего else. pin это empty когда site иметь never был закрыта; она выживает после публикации site Опять же, так что-closing не принуждает к new один.
PUT /site-publication
# close the site with the PIN 1234
curl -X PUT https://api.vizen.shop/site-publication \
-H 'Authorization: Bearer vz_pat_…' -H 'Content-Type: application/json' \
-d '{"published": false, "pin": "1234"}'
# publish it again (no PIN needed)
curl -X PUT https://api.vizen.shop/site-publication \
-H 'Authorization: Bearer vz_pat_…' -H 'Content-Type: application/json' \
-d '{"published": true}'published: false требует а PIN только цифр, от 3 до 6 из них (3-4) Что предлагает кабинет; все, что угодно else Отказано в SITE_PASSWORD_FORMAT. Каждый close sets тот PIN Снова, так closing тот site также отменяет каждый пропуск, выданный по предыдущему.
Права: Org role owner или admin, токен scopes access:read для GET и access:write для PUT. Оба метода являются prod-чувствительный: а dev-contour key Может, даже не прочтет их. shop's Хозяин бежит на каждом успешный PUT — Весь хозяин меняется сразу.
The system Политика государства не является политикой пользователя: она hidden из GET /access-policies, его id ответы ACCESS_POLICY_NOT_FOUND в редактировать или удалить, его code Отказ в создании (ACCESS_POLICY_CODE_RESERVED), и PUT /resource-access-bindings Оставляет в себе свои обязательства. Пройти через два метода выше.
Прочитайте состояние а live Вестибюль без галочки из GET /v1/storefronts/resolve: storefront.site_published Сказал, что если site Закрытая, site_access_granted Сказал ли он, это (позывной) vz_store_access Файл cookie) уже прошел подсказку. PIN.
Пароль вызов
POST /storefront/access/unlock
{
"company_id": 42,
"resource_type": "product",
"resource_id": 1001,
"password": "customer supplied password"
}Для site Быстро это становится resource_type: "shop" с resource_id равный company_id. Представленные пароли принимаются от 3 символов — site PIN Короткометражный design, Отказ от него, когда он body будет читаться в Гость как "правильное" PIN Не работает". site PIN сравнивается в постоянной время, в течение которого хранимые plain value; за-resource Пароли политики все еще Проверено на их хэше Argon2id.
После успеха сервер возвращается 200 и sets только для хозяина HttpOnly печенье vz_store_access. Печенье это Secure, SameSite=Lax, содержит 256 бит случайный data и не имеет Domain только его атрибут. SHA-256 хлорфторминг хранится.
Неизвестные ресурсы, отсутствующая политика пароля и неправильный пароль return тот то же самое 401 {"error":"ACCESS_DENIED"}. Ответ never Содержит ID политики, audience/role имена или подсказки пароля.-site Запросы отклоняются и Повторные попытки получения 429 с Retry-After: 60 с минуты на минуту ставка limit, или оставшиеся секунды 10-минутного локаута after три Неудачи на одном и том же address и resource.
DELETE /storefront/access/session отменяет current непрозрачная сессия и зачистка Куки. Оба маршрута return Cache-Control: private, no-store.
Контракт на время выполнения
Роли не встроены в cookie. Для каждого защищенного запроса бэкэнд грузить target shop, current клиент status/roles и current Пароль Пароль версии. role Удаление, клиент block, Замена пароля или политика отключены Поэтому, принимая effect Не дожидаясь истечения срока действия cookie.
Многообразие эффективных стратегий сочетается с AND. Предоставление пароля гранты только политики, хэш-соответствие которых Argon2id; политики с различными паролями могут быть разблокированным в последовательных запросах.
Прямой product/category/article Связаны. Каталог продукции. pages, Рынок, список желаний, AddToCart/UpdateCartItem, GetCart/QuoteCart и checkout Используйте тот же предикат доступа. live сессия и грант внутри order сделка.
Category/article Списки и зависимые redirect/sitemap/related/group/combo/gift, HTML/form/private-file Поверхности все еще реализуются, поэтому document это не является разрешением на активацию для-resource Флаг сайта.Издание сайта. делать не зависит от этого флага: он вступает в site в page level, впереди Всем, и есть live сегодня.
Исходник: https://api.vizen.shop/docs/resource-access?full=1