Индекс документации: https://vesremont.com/llms.txt
Связь этого раздела с задачей
Задача: Правильно продолжить навигацию по опубликованному HTML URL.
Что нужно на входе: Реальный href/canonical и значения текущих фильтров. Символические пути каталога нельзя угадывать.
Результат: Корректный URL следующего состояния; HTML query не переносится в REST schema.
Другая цель? Карта всех задач и режимов. Права личного доступа — auth.md; это не обязательный шаг для публичного чтения.
Следующий раздел по теме: Фильтры и диапазоны — получить допустимые значения · Поиск по сайту — найти страницу заново при неизвестном пути · Public API — использовать отдельный контракт программного интерфейса.
URL программных интерфейсов
REST использует /api/v1 без завершающего slash у маршрутов; отдельный /api/v1/cart-drafts/ сохраняет slash. OpenAPI: /openapi.json и /.well-known/openapi.json. Remote MCP: /mcp; A2A: /a2a/message:send; UCP: /ucp/v1. Discovery: /.well-known/api-catalog, /.well-known/mcp.json, /.well-known/agent-card.json, /.well-known/ucp. OAuth metadata: /.well-known/oauth-authorization-server. Не дописывайте slash, index.php или HTML-параметры к API URL. Контракт: Public API.
Ниже описан фактический протокол, который обрабатывают серверная часть и JavaScript сайта. В примерах {...} означает переменную часть, а не буквальный текст.
Страницы
| Назначение | Паттерн |
|---|---|
| Корень каталога | /catalog/ |
| Валидное состояние каталога | /catalog/{validated-path}/ |
| Товар | /catalog/product/{section-code}/{product-code}/ |
| Бренд | /catalog/brand/{brand-code}/ |
| Все бренды | /brand/ |
| Поиск | /search/?search={url-encoded-text} |
| Отзывы состояния каталога | /catalog/{validated-path}/otziv/ |
| Корзина | /personal/basket/ |
| Передать товары покупателю без OAuth | /buy/{product_id}:{quantity} |
| Подписать подборку, получить share_url | /api/v1/cart-drafts/?product_id={id}&quantity={qty} |
/buy/ использует внутренний ID товара, не артикул или ID строки корзины. Конкретная ссылка публикуется в видимом тексте карточки. Это документированное исключение к запрету угадывать catalog path: меняется только количество 1–99 у известного ID. Несколько товаров: /buy/{id1}:{qty1},{id2}:{qty2}, до 20 разных ID. Сайт выполняет защищённый перенос при открытии покупателем, а не запись одним GET агента. Порядок переноса.
{validated-path} и оба кода товарного URL проверяются сервером по актуальному набору валидных URL. Не конструируйте и не переставляйте их сегменты без готового href, canonical или URL из sitemap.
Категориальные фасеты
Дополнительное значение передаётся повторяемым параметром:
filter={facet-value-code}
Несколько разных групп:
?filter={code-1}&filter={code-2}
Коды чувствительны к фактическим данным каталога. Получайте их из data-filter-value-code и используйте опубликованный href; не выводите код из видимого названия. Штатный интерфейс переключает значение внутри одной группы и комбинирует значения разных групп.
Числовые диапазоны
range={filter-id}_s_o_{min}-e_d_{max}
Фактический синтаксис содержит подчёркивание после ID, не знак =. ID, min и max — неотрицательные целые числа; текущий HTML задаёт step="1". Несколько диапазонов — повторяемые параметры:
?range={id-1}_s_o_{min-1}-e_d_{max-1}&range={id-2}_s_o_{min-2}-e_d_{max-2}
filter-id=1 зарезервирован реализацией для цены. Остальные ID обозначают числовые характеристики и должны присутствовать на текущей странице. Сервер отбрасывает неизвестные ID и корректирует выходящие за доступные границы значения.
Реальный пример существующего формата:
/catalog/krepyezh/?range=1_s_o_82704-e_d_476950&range=4283_s_o_398-e_d_1437
Сортировка товаров
sorts=id_sort
sorts=price_min
sorts=price_max
id_sort— штатный порядок «Новинки»; UI обычно удаляет параметр и использует его как default.price_min— сначала дешевле.price_max— сначала дороже.
Параметр sort в robots.txt — старое SEO-правило и не является интерфейсом текущего каталога. Используется именно sorts.
Пагинация товаров
page={positive-integer}
page=1 является начальным состоянием и обычно удаляется генератором ссылок. Ссылки пагинации публикуются в HTML. Изменение фасета или range сбрасывает page; смена сортировки может сохранить текущую страницу.
Комбинация query
Поддерживается совместное использование повторяемых filter, повторяемых range, одного sorts и одного page, например:
/catalog/{validated-path}/?filter={code}&range={id}_s_o_{min}-e_d_{max}&sorts=price_min&page=2
Порядок query-параметров не является смысловым. При кодировании используйте обычный percent-encoding; не кодируйте разделители _s_o_, -e_d_, & и = как часть значений вручную.
Отзывы категории
На URL с окончанием /otziv/ обрабатываются:
otziv_sort=old|rating_high|rating_low; отсутствие параметра означает сначала новые;otziv_rating=1|2|3|4|5;otziv_media=1;otziv_offset={positive-integer}для следующей пачки;- те же
filterиrange, что определяют исходное состояние категории.
Кнопки отзывов сейчас изменяют эти параметры через JavaScript. Агент может построить URL по указанным допустимым значениям.
Поиск
GET /search/?search={text}
Других публичных query-параметров, сортировки или пагинации у страницы поиска текущая реализация не предоставляет.