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_id | products из одного section |
filter.ids | несколько products сразу |
filter.query | Поиск по name |
filter.is_published | опубликовано только |
filter.min_price / filter.max_price | price range |
page.number / page.limit, sort.field / sort.order | paging и 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_apitrue — Опущенные флаги становятся 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}/valueskeep их записи;[]Удалить a set; рекорды Пропавший без вести отправленный set есть deleted. Читать first:/specиз одного product Список его own sets Даже вне пределов template. А. section row потребности"state":"value"./record-sets?all=trueдаритьurls, неfile_ids — never Отправить обратно. - Долго грузить sets в pages.
limit10-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_replacepattern: не-empty список Заменить, а empty Список без флага означает "не трогать"", ан empty Список с флагом все размывает. струны (int64в JSON). Галерея's ownitemsследует за тем же 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 coversvariant Это 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