Vizen Shop

Catalogue

/docs/skill/vizen-catalogcurrentМашинный перевод с английского

1.Фильтры нуждаются в filter. prefix — Это не косметический

GET /products?filter.category_id=168&page.limit=24

параметр, написанный без тот prefix проглатывается молча: ?category_id=168 Ответы 200 и возврат Весь каталог. Нет. error, Просто неправильно data — И витрина, построенная из него, выглядит правдоподобно.

Filterзначение
filter.category_idproducts из одного section
filter.idsнесколько products сразу
filter.queryПоиск по name
filter.is_publishedопубликовано только
filter.min_price / filter.max_priceprice range
page.number / page.limit, sort.field / sort.orderpaging и order

Чек, который это улавливает class жук: compare total before и after Добавить filter. Неизменный означает, что параметр не был понят..

За заказные пики, коллапс, синглтон groups и выбранный attributes использовать /docs/catalogue §4.1 Перед использованием selected attributes или group топор, конфигурировать Доступ покупателя; дефолты и filter-панель side effect В § 8.3 есть.

2.Формы, которые удивляют

  • result Списки – это объект — {items, total, currentPage}, Не массив;
  • ids Возвращаются как строки из одних конечных точек и числа из других.;
  • category.parent_id это струна в то время как category.id это number;
  • а category Также является page: type это product, page или news.

рекорд sets — Повторяющиеся записи (group)

Галереи, обзоры, вопросы и ответы, авторы, документы внутри product или section. Полный Справка и рецепт компонента: /docs/record-sets. Что не так без этого:

  • The site читать `GET /record-sets`, Не то product. Карточные ответы (GET /products/{id}, Списки, корма) never перевозить sets. Назови это API происхождение (api_base из key Паспорт) — витрина магазина не имеет прокси. result это основание 64 → bytes → UTF-8 → JSON; JSON.parse(atob(…)) Разрушает кириллику.
  • Всегда проезжай `code`. Без него каждый set Открытый для читателя, и more 10 ответов 400 INVALID_ARGUMENT — а site без code разбивает День 11-й set Открыто.
  • Спрашивайте только о том, что вы показываете. fields=question Для списка, затем один ответ item_ids=<_id>&fields=answer; Отзывы многих products В одном звонке с product_ids=1,2,…&code=reviews&limit=3 (Более 10 ресурсов: один code, limit ≤ 20).
  • Открой. set то buyers first: читать GET /attributes/{id}/access, затем PUT Весь рекорд (expected_version, visibility:"public", show_storefront_card и show_api true — Опущенные флаги становятся false). catalog:* плюс owner/admin; нет customers:* Нужен для a public set. А. new характерным является closed и /record-sets Ответы без него. set для подписанный buyers или role Показаны только с этим buyer's Токен — купец key Читать как анонимный buyer.
  • Редактировать записи, а не все set. GET /products/{id}/records/{code} (или /categories/{id}/records/{code}) Каждый из них, как и все остальные, возвращается в revision; PATCH то же самое path с ops — add, update (set слияние, null капли field), remove, move через id. Другие записи и characteristics Оставайся. expected_revision Отказаться, когда set измененный. POST /products/import Не писать sets.
  • `PUT` Заменяет собой целое set. Сеты, оставшиеся вне PUT …/attributes или PUT /categories/{id}/values keep их записи; [] Удалить a set; рекорды Пропавший без вести отправленный set есть deleted. Читать first: /spec из одного product Список его own sets Даже вне пределов template. А. section row потребности "state":"value". /record-sets?all=true дарить urls, не file_ids — never Отправить обратно.
  • Долго грузить sets в pages. limit 10-20 для того, чтобы first экран, затем «Шоу more» с offset=<next_offset> Пока это не будет null.
  • Держите `_id`. Отправляйте записи обратно с их _id; Рекорд без него new и получает new id и date.

3. Изображения

Файлы возвращаются как absolute URL-адреса хранилища. /w/{width}[/webp]{path} где path Это URL минус хост хранения.

В твоей own Наценка, которую вы не строите эти пути: напишите plain <img src> и Сервер переписывает его, добавляя srcset. Делай set sizes Себя — See vizen-own-markup.

Изображение URL проверки с HEAD / GET: /docs/troubleshooting §3.

4.Что это такое data Может не сказать вам

А. shop может содержать опубликованные, перспективные, empty category — Например, один «Сейл» — в то время как GET /promotions возвращает empty Список для этого shop. Ан empty result делать "Не различать" shop «Не имеет продаж» из неправильно отфильтрованного запроса. /docs/promotions для поддержанного контракта.

Когда задача зависит от data собственность cannot Проверка существует, спросите owner Вместо того, чтобы курировать что-то вручную и называть это тем, что они просили..

5.Галереи - это resource их own

Галерея это не field на product. Он живет в /galleries с его own CRUD (GET, POST, PUT /galleries/{id}, DELETE, GET /galleries/{id}/usage), и products, categories Только статьи *link* к нему:

POST /galleries    { "item": { "name": "Blue", "items": [ { "file": { "id": "<file_id>" } } ] } }
PUT  /products/808 { "item": { "gallery_ids": ["31"], "gallery_ids_replace": true } }
  • gallery_ids последующий categories_replace pattern: не-empty список Заменить, а empty Список без флага означает "не трогать"", ан empty Список с флагом все размывает. струны (int64 в JSON). Галерея's own items следует за тем же rule с его own Флаг: очищение потребности items: [] плюс items_replace: true;
  • galleries может быть дольше чем gallery_ids: галерея а variant set При этом, даже если точка product не link И не останавливается на достигнутом. gallery_ids Нарочно. content поднимать через id, не position;
  • Одна галерея может сидеть на нескольких объектах — Это то, что model, Не жука, а Редактировать его меняют каждый card Это показывает;
  • а variant set ссылки на любой live галерея shop (items[].gallery_id в PUT /products/{id}/variants) — Вот как ты Повторно использовать галерею другого product. Его image_id является отдельным field: чип и cart row, Не слайдер;
  • Сервер получает item's role (image | video | audio) от file type; ты set "html" Рукой и ничего else. А. kind который не согласен с тот file Отказано в GALLERY_ITEM_KIND_MISMATCH, never тихо fixed;
  • Галерея в использовании cannot быть deleted: GALLERY_IN_USE. не связываться first, проверить GET /galleries/{id}/usage, затем удалять;
  • список (GET /products, GET /categories) never перевозить galleries — только preview, который возвращается в first image из first галерея (preview_auto: true Отметить, что fallback). Читать galleries из card конечные точки.

Спроси card для меньшего количества кадров. А. product Снимок на 360° для дюжины цветов Ответы с десяток galleries из ~36 кадров — 159 KB, Из них 138 KB был galleries Никто не смотрел. card конечные точки принимают galleries=:

GET /products/by-slug/{slug}?company_id=14&galleries=cover              # every gallery = its cover only
GET /products/{id}?galleries=active&variant=rs7-blue                    # shown gallery in full, rest as covers

variant Это set's sku (его id как струна когда sku это empty) — то же самое key Витрина вставляет ?v=. Выключите его, и сервер заберет first active set, затем product's first Связанная галерея. Без параметра ответ Именно то, что это always Прочитал кадры из items_total (items before прогноз), never из items.length Под проекцией; заполнить cover с примесью GET /galleries/{id}, который always Все возвращается. unknown value ответы GALLERIES_PROJECTION_UNKNOWN Вместо того, чтобы молча игнорировать вас.

Пределы: ≤24 items на галерею, имя 1..64 символа, ≤15 galleries на объект, пункт html ≤64 KB (GALLERY_ITEM_HTML_TOO_LONG). GET /galleries Страница — ?page.number=&page.limit= (1.100, первые 50 без парамов; total и currentPage Садись рядом с result[]. Полный рецепт: GET /docs/catalog-import §7; площадь page: GET /docs/catalogue §7.

6.Письмо.

Цены – это целые единицы shop's currency; тот currency cannot быть изменен С токеном и несоответствием отклоняется.: GET /docs/catalog-import.

Прочитайте все письма назад и compare тот fields Вы прислали: 200 доказательств только того, что Запрос был разобран.

Изменение существующих товаров — одно поле на многих товарах, снятие с продажи, копировать, удалять, устанавливать, переезжать в другой магазин: GET /docs/catalog-import §12. PUT /products/{id} является частичным, за исключением price (отправлять old_price слишком), seo (отправлять og_image_id, noindex, nofollow и тоже) и categories (заменять).

Сравнение продуктов settings

GET|PATCH /compare/settings — один рекорд на shop, взятый из key. Частичное: отсутствует fields keep их value; Списки исключений завернуты, {"excluded_group_ids": {"ids": [27]}} ({"ids": []} ясность). expected_version Из последнего прочтения required (0 before тот first экономить). Только то, что покупатель видит на card Всегда сравнивается — см. card_visibility в Ответ. Подробности: GET /docs/catalogue §8.2 Кто видит характерную черту, тот set На самом характере: GET|PUT /attributes/{id}/access — тот PUT Заменяет весь рекорд, флаг, который остался без внимания, становится false (§8.3).

Характеристики и фильтры

Перед созданием характеристики, опции, фильтра или шаблона спецификаций прочитайте: GET /docs/characteristics. Три вещи, которые агенты упускают: фильтрующая панель нуждается в характеристике, связанной с это section (PUT /categories/{id}/attributes, не наследуемый, с is_filterable, или с помощью тройки filterable_here — плюс доступ к списку в обоих случаях; фильтр соответствует product's собственный values Только, не Наследуемые ключи: ключ's Rename дойдет до живых карточек только после публикации.

Цены, скидки и sets

The price Покупатель видит вычисляется, а не хранится. Нет никаких скидок price Колонка: сервер работает на каждом card с помощью того же двигателя, который ценит cart. Этот единственный факт решает все else здесь.

Последствия для вас cannot design вокруг:

  • never Рекомпьютер дисконтного клиента-side. Твой number Не согласится с тем, что cart на first product Два правила касаются, и покупатель доверяет cart;
  • а product's price Включая в себя:-item правила — price, old_price и promotion_name Возвращение ценой;
  • Правила, стоящие за промо code never достичь product card. Витрина не должна рекламировать price Этого не существует без code, и личного price в разделяемый page кто-то слил бы else's купон;
  • [] из GET /promotions Это значит "это" shop «У тебя нет правил, а не «у тебя их нет»» «Выход» — недостающий scope ответы 403 PAT_SCOPE_MISSING. Не обращайтесь с ними одинаково.

Где? look:

Тебе нужноСпроси
Что продается сейчас, рейтингGET /promotions/landscape — Сервер его ранжирует
Сами правилаGET /promotions
Список машин: виды, классы, коды отказа, округлениеGET /docs/promotions.json
Как на самом деле работает любойGET /docs/promotions — район description

Не перестраивайте лестницу (item → order → key) Найти себя в Скидке products. landscape существует именно так, что вам не нужно, и он сообщает scanned_products и truncated Так что потолок never Читать как "ничего" else это в продаже".

Для печати "дешевле в этом set" на card, смотреть vizen-own-markup — тот Цифры приходят как fields с готовыми струнами рядом с ними, потому что замещения не имеют выражений.

Исходник: https://api.vizen.shop/docs/skill/vizen-catalog?full=1

Работает в демо-режиме