AI API Shopcore — це один шлюз до дозволених дій магазину. Агент не отримує доступу до Python, бази даних, файлової системи чи сервера: він бачить лише методи нижче та їхні параметри.
Для AI-агента: ця стаття пояснює архітектуру й правила. Перед роботою завжди отримай живий каталог через
GET /ai/v1/methods/. Не вигадуй назви методів або параметрів. Спочатку використовуй read-методи з низьким ризиком; для небезпечних дій отримай явне підтвердження власника.
Якщо вимкнути AI-модуль на онбордингу, секція доступу зникне, а після збереження API буде вимкнений і на сайті.
Ідентифікатор ключа — несекретна службова мітка для журналу, розпізнавання та відкликання ключа. Окремо він показується в налаштуваннях Hive й не дає доступу сам по собі. Токен — секрет; саме він авторизує запити.
Спочатку агент читає актуальний manifest:
GET https://<ваш-hive-host>/ai/v1/methods/
Authorization: Bearer <ваш-токен>
Manifest можна фільтрувати параметрами group, access і risk. Він повертає ієрархію груп, доступність модулів, schema параметрів, ризик, потребу підтвердження та побічні ефекти.
Усі дії виконуються через один шлюз:
POST https://<ваш-hive-host>/ai/v1/invoke/
Authorization: Bearer <ваш-токен>
Content-Type: application/json
{
"method": "system.status",
"params": {},
"options": {"confirmed": false}
}
Для завантаження файлів використовуйте multipart/form-data: поля method, params_json, options_json та названі файлові поля, описані вибраним методом.
Успішна відповідь містить ok, status, request_id, назву методу, ризик, версію каталогу, data і контекст магазину. Дані предметної області повертаються в data; якщо їх немає, агент має викликати відповідний read-метод, а не вгадувати стан.
{
"ok": true,
"status": "success",
"request_id": "...",
"method": "system.status",
"data": {},
"context": {"shop": {"id": 1, "public_url": "https://..."}}
}
| Рівень | Правило агента |
|---|---|
low | Безпечне читання або вузька оборотна зміна. |
medium | Перевірити поточний стан read-методом і пояснити наслідок. |
high | Показати користувачу конкретну дію та отримати явне підтвердження. |
dynamic | Ризик залежить від параметрів; наприклад HTML, індексація або реквізити вимагають підтвердження. |
Для методів із confirmation: required шлюз не виконає дію без options.confirmed=true. Кожен виклик записується в журнал із request ID; токени, паролі й секрети автоматично приховуються.
Перед будь-якою ручною зміною товару викличте exchange.auto_import.get. Якщо is_active=true, will_update_existing_products=true і потрібне поле є в managed_fields, наступний автоімпорт може перетерти зміну.
Агент має показати власнику три варіанти: продовжити разово з підтвердженням, змінити/вимкнути мапінг автоімпорту або не виконувати ручну зміну.
Коли модуль складу ввімкнений, catalog.products.update технічно відхиляє patch.warehouse_count. Правильний шлях: warehouse.stock.list → warehouse.revisions.create → перевірка через warehouse.revisions.get → підтверджене warehouse.revisions.post.
Спочатку шукайте готовий тип через pages.blocks.catalog. Якщо потрібного візуального блока немає, дані слід вивести стандартними data-блоками, а html_code використати поверх них для власного UI.
HTML-блок не дає доступу до Python, backend або нових приватних даних. Створення й редагування HTML потребують явного підтвердження.
Нижче — повний знімок каталогу для людей і агентів. Живий manifest має пріоритет, якщо версії відрізняються. catalog_version: 2026-09-08.3
system.overview — Огляд даних магазинуЩо робить: Дає компактні лічильники каталогу, сторінок, замовлень, клієнтів і журналу AI без завантаження самих записів.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: shop.capabilities
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
system.status — Стан магазинуЩо робить: Повертає ідентичність магазину, публічний URL, стан підписки та модулів.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | public, shop_internal | ||
| Наслідки | — | ||
Що зачіпає: shop.capabilities
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
audit.requests.get — Деталі AI-запитуЩо робить: Повертає один запис журналу з автоматично прихованими секретами.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: ai.audit_log
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"request_id": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"request_id"
]
}
{
"type": "object"
}
audit.requests.list — Список AI-запитівЩо робить: Повертає журнал викликів цього магазину з фільтрами за методом і статусом; вміст запитів не включає.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: ai.audit_log
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"method": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"running",
"success",
"error"
]
}
},
"additionalProperties": false
}
{
"type": "object"
}
catalog.categories.create — Створити категоріюЩо робить: Створює категорію у наявному MPTT-дереві; slug генерується автоматично, якщо не переданий.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | catalog_tree_changed | ||
Що зачіпає: catalog.categories, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.categories.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"title": {
"type": "string"
},
"slug": {
"type": "string"
},
"parent_id": {
"type": [
"integer",
"null"
]
},
"number": {
"type": "integer"
},
"translations": {
"type": "object"
}
},
"additionalProperties": false,
"required": [
"title"
]
}
{
"type": "object"
}
catalog.categories.delete — Видалити категоріюЩо робить: Видаляє категорію. Через правила моделі також може видалити її дочірню гілку; товари отримують порожню основну категорію.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | category_branch_deleted, products_detached | ||
Що зачіпає: catalog.categories, storefront.catalog
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
catalog.categories.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"category_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"category_id"
]
}
{
"type": "object"
}
catalog.categories.get — Дані категоріїЩо робить: Повертає категорію, її шлях, переклади, медіа, SEO та кількість товарів.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.categories, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"category_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"category_id"
]
}
{
"type": "object"
}
catalog.categories.list — Список категорійЩо робить: Повертає дерево категорій магазину з батьком, рівнем і кількістю дочірніх категорій.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.categories, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"parent_id": {
"type": [
"integer",
"null"
]
}
},
"additionalProperties": false
}
{
"type": "object"
}
catalog.categories.update — Оновити категоріюЩо робить: Частково оновлює назву, дерево, порядок і SEO категорії з перевіркою циклів та належності магазину.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | catalog_tree_or_seo_changed | ||
Що зачіпає: catalog.categories, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.categories.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"category_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
}
},
"additionalProperties": false,
"required": [
"category_id",
"patch"
]
}
{
"type": "object"
}
catalog.buy_together.get — Супутні товариЩо робить: Повертає супутні товари для одного товару.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.buy_together.set — Задати супутні товариЩо робить: Замінює список супутніх товарів через наявну M2M-модель.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | buy_together_replaced | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"related_product_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
}
},
"additionalProperties": false,
"required": [
"product_id",
"related_product_ids"
]
}
{
"type": "object"
}
catalog.product_images.add — Додати фото товаруЩо робить: Додає завантажене multipart-поле file до галереї; формат і resize перевіряє чинне поле ProductImg.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | media_uploaded | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"file_field": {
"type": "string",
"default": "file"
},
"alt": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.product_images.delete — Видалити фотоЩо робить: Видаляє одне фото галереї разом із файлом через наявний signal моделі.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | media_deleted | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"image_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id",
"image_id"
]
}
{
"type": "object"
}
catalog.product_images.list — Фото товаруЩо робить: Повертає головне фото й упорядковану галерею товару.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.product_images.set_cover — Зробити фото головнимЩо робить: Міняє місцями головне фото товару та вибране фото галереї за чинним UI-патерном.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | product_cover_changed | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"image_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id",
"image_id"
]
}
{
"type": "object"
}
catalog.product_images.update — Оновити фото товаруЩо робить: Змінює alt і порядок наявного фото галереї.
| Доступ | write | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | media_metadata_changed | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"image_id": {
"type": "integer",
"minimum": 1
},
"alt": {
"type": "string"
},
"number": {
"type": "integer"
}
},
"additionalProperties": false,
"required": [
"product_id",
"image_id"
]
}
{
"type": "object"
}
catalog.product_specifications.list — Характеристики товаруЩо робить: Повертає характеристики товару з перекладами.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.product_specifications.replace — Замінити характеристикиЩо робить: Атомарно замінює весь список характеристик товару; кожен елемент має spec, description і необов'язкові translations.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | product_specifications_replaced | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.product_specifications.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"items": {
"type": "array",
"items": {
"type": "object"
}
}
},
"additionalProperties": false,
"required": [
"product_id",
"items"
]
}
{
"type": "object"
}
catalog.products.create — Створити товарЩо робить: Створює товар через чинну модель Product, тому автоматичні slug і SKU лишаються єдиним джерелом логіки. За замовчуванням товар не публікується.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | product_created | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.products.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"title": {
"type": "string"
},
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
},
"additional_category_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
}
},
"additionalProperties": false,
"required": [
"title"
]
}
{
"type": "object"
}
catalog.products.delete — Видалити товарЩо робить: Видаляє товар і його варіації через чинний сервіс масового видалення; склад не скидається автоматично.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | product_and_variations_deleted | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
catalog.products.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"reset_stock": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.products.get — Дані товаруЩо робить: Повертає повну безпечну картку товару, переклади, SEO, категорії та пов'язані дані.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.products.list — Список товарівЩо робить: Повертає товари з пошуком, фільтрами категорії, публікації, архіву, варіацій і залишку.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"category_id": {
"type": "integer",
"minimum": 1
},
"is_published": {
"type": "boolean"
},
"is_archival": {
"type": "boolean"
},
"father_id": {
"type": [
"integer",
"null"
]
},
"stock": {
"type": "string",
"enum": [
"any",
"positive",
"zero"
]
}
},
"additionalProperties": false
}
{
"type": "object"
}
catalog.products.update — Оновити товарЩо робить: Частково оновлює дозволені поля товару й переклади; бізнес-логіка save() для slug/SKU не дублюється.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | product_changed | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.products.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)settings.modules.get — Перевір, чи ввімкнений склад, перш ніж пропонувати зміну warehouse_count. (when_warehouse_count_requested){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
},
"additional_category_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"expected_updated_at": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"product_id",
"patch"
]
}
{
"type": "object"
}
catalog.products.visibility.set — Публікація товаруЩо робить: Вузько змінює стани публікації та архіву товару.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | storefront_visibility_changed | ||
Що зачіпає: catalog.products, storefront.catalog
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.products.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"is_published": {
"type": "boolean"
},
"is_archival": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.filter_values.create — Створити значення фільтраЩо робить: Додає текстове або кольорове значення до фільтра.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | filter_value_created | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"filter_id": {
"type": "integer",
"minimum": 1
},
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"filter_id",
"data"
]
}
{
"type": "object"
}
catalog.filter_values.delete — Видалити значення фільтраЩо робить: Видаляє значення та його прив'язки до товарів.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | filter_value_deleted, product_filter_links_deleted | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
{
"type": "object",
"properties": {
"value_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"value_id"
]
}
{
"type": "object"
}
catalog.filter_values.update — Оновити значення фільтраЩо робить: Частково оновлює назву, колір, активність і порядок значення.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | filter_value_changed | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"value_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"value_id",
"patch"
]
}
{
"type": "object"
}
catalog.filters.create — Створити фільтрЩо робить: Створює фільтр checkbox, color або image через чинну модель.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | catalog_filter_created | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"data"
]
}
{
"type": "object"
}
catalog.filters.delete — Видалити фільтрЩо робить: Видаляє фільтр, його значення та прив'язки товарів каскадно.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | catalog_filter_deleted, product_filter_links_deleted | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
{
"type": "object",
"properties": {
"filter_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"filter_id"
]
}
{
"type": "object"
}
catalog.filters.get — Дані фільтраЩо робить: Повертає один фільтр та всі його значення.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"filter_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"filter_id"
]
}
{
"type": "object"
}
catalog.filters.list — Список фільтрівЩо робить: Повертає фільтри каталогу та їх значення.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
}
},
"additionalProperties": false
}
{
"type": "object"
}
catalog.filters.update — Оновити фільтрЩо робить: Частково оновлює дозволені поля фільтра.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | catalog_filter_changed | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"filter_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"filter_id",
"patch"
]
}
{
"type": "object"
}
catalog.product_filters.get — Атрибути товаруЩо робить: Повертає значення фільтрів, призначені конкретному SKU.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.product_filters.set — Задати атрибути товаруЩо робить: Замінює прив'язки фільтрів товару атомарно; один фільтр може мати одне значення для SKU.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | product_filter_links_replaced | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
catalog.product_filters.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write){
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filter_id": {
"type": "integer",
"minimum": 1
},
"value_id": {
"type": "integer",
"minimum": 1
}
}
}
}
},
"additionalProperties": false,
"required": [
"product_id",
"items"
]
}
{
"type": "object"
}
catalog.variations.get — Варіації товаруЩо робить: Повертає кореневий товар і впорядковані дочірні SKU.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"product_id"
]
}
{
"type": "object"
}
catalog.variations.set — Задати варіації товаруЩо робить: Атомарно замінює дочірні SKU кореневого товару й синхронізує поле father так само, як чинний admin inline.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | variation_family_rebuilt | ||
Що зачіпає: catalog.filters, catalog.variations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"child_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
}
},
"additionalProperties": false,
"required": [
"product_id",
"child_ids"
]
}
{
"type": "object"
}
pages.create — Створити сторінкуЩо робить: Створює звичайну сторінку через чинну модель Page; за замовчуванням не публікує її.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | page_created | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
pages.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"title": {
"type": "string"
},
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
}
},
"additionalProperties": false,
"required": [
"title"
]
}
{
"type": "object"
}
pages.delete — Видалити сторінкуЩо робить: Видаляє сторінку разом із блоками та файлами; підключені runtime-layout отримають порожнє посилання.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | page_and_blocks_deleted, layout_may_be_unassigned | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"page_id"
]
}
{
"type": "object"
}
pages.get — Дані сторінкиЩо робить: Повертає сторінку з перекладами, SEO, meta та впорядкованими блоками.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"page_id"
]
}
{
"type": "object"
}
pages.layouts.get — Runtime-сторінкиЩо робить: Повертає сторінки, призначені для каталогу, категорії, товару та checkout.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
pages.layouts.set — Призначити runtime-сторінкуЩо робить: Призначає наявну сторінку магазину для каталогу, категорії, товару або checkout через чинні layout-моделі.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | runtime_route_page_changed | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"runtime_context": {
"type": "string",
"enum": [
"catalog",
"category",
"product",
"checkout"
]
},
"page_id": {
"type": [
"integer",
"null"
]
}
},
"additionalProperties": false,
"required": [
"runtime_context",
"page_id"
]
}
{
"type": "object"
}
pages.list — Список сторінокЩо робить: Повертає сторінки магазину, їх URL, роль у runtime та кількість блоків.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"include_unpublished": {
"type": "boolean",
"default": true
},
"runtime_context": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object"
}
pages.update — Оновити сторінкуЩо робить: Частково оновлює назву, URL, SEO, meta та переклади; не змінює блоки й публікацію.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | page_metadata_changed | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
}
},
"additionalProperties": false,
"required": [
"page_id",
"patch"
]
}
{
"type": "object"
}
pages.visibility.set — Публікація сторінкиЩо робить: Вузько публікує або приховує сторінку.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | storefront_visibility_changed | ||
Що зачіпає: pages, storefront.routing
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"is_published": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"page_id",
"is_published"
]
}
{
"type": "object"
}
pages.blocks.catalog — Каталог блоківЩо робить: Повертає реальний registry page builder: групи, всі зареєстровані типи блоків, контексти, schemas і defaults.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | public, shop_internal | ||
| Наслідки | — | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"block_code": {
"type": "string"
},
"runtime_context": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object"
}
pages.blocks.create — Створити блокЩо робить: Вставляє зареєстрований блок через BuilderProvider із його defaults і перекладами магазину.
| Доступ | write | Ризик | dynamic |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | page_content_changed | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.
pages.blocks.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"block_code": {
"type": "string"
},
"insert_mode": {
"type": "string",
"enum": [
"end",
"before",
"after"
]
},
"target_block_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"page_id",
"block_code"
]
}
{
"type": "object"
}
pages.blocks.delete — Видалити блокЩо робить: Видаляє блок, переклади та завантажені assets через чинні cascade і signals.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | block_and_assets_deleted | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"block_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"page_id",
"block_id"
]
}
{
"type": "object"
}
pages.blocks.enabled.set — Увімкнути або вимкнути блокЩо робить: Вузько змінює видимість одного блока без видалення контенту.
| Доступ | write | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | block_visibility_changed | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"block_id": {
"type": "integer",
"minimum": 1
},
"is_enabled": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"page_id",
"block_id",
"is_enabled"
]
}
{
"type": "object"
}
pages.blocks.get — Дані блокаЩо робить: Повертає один блок разом із його чинними schemas та значеннями.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"block_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"page_id",
"block_id"
]
}
{
"type": "object"
}
pages.blocks.list — Блоки сторінкиЩо робить: Повертає всі блоки сторінки з нормалізованим контентом, перекладами, дизайном і медіа.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"page_id"
]
}
{
"type": "object"
}
pages.blocks.move — Перемістити блокЩо робить: Міняє блок місцями з сусіднім у транзакції за чинним алгоритмом builder UI.
| Доступ | write | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | block_order_changed | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"block_id": {
"type": "integer",
"minimum": 1
},
"direction": {
"type": "string",
"enum": [
"up",
"down"
]
}
},
"additionalProperties": false,
"required": [
"page_id",
"block_id",
"direction"
]
}
{
"type": "object"
}
pages.blocks.update — Оновити блокЩо робить: Частково оновлює content/design/data_config/extra через schemas і validators зареєстрованого backend; multipart-файли мають ті самі upload__... ключі, що й builder UI.
| Доступ | write | Ризик | dynamic |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | page_content_changed, media_may_change | ||
Що зачіпає: pages.blocks, storefront.layout
Правило рішення: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.
pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design){
"type": "object",
"properties": {
"page_id": {
"type": "integer",
"minimum": 1
},
"block_id": {
"type": "integer",
"minimum": 1
},
"content": {
"type": "object",
"properties": {
"shared": {
"type": "object"
},
"translated": {
"type": "object"
}
}
},
"design": {
"type": "object"
},
"data_config": {
"type": "object"
},
"extra": {
"type": "object"
},
"expected_updated_at": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"page_id",
"block_id"
]
}
{
"type": "object"
}
settings.catalog.get — Налаштування каталогуЩо робить: Повертає чинні параметри показу дочірніх товарів і фільтрації варіацій.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: shop.settings
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
settings.catalog.update — Оновити налаштування каталогуЩо робить: Частково змінює два чинні каталожні тумблери через helper налаштувань.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | catalog_behavior_changed | ||
Що зачіпає: shop.settings
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
settings.catalog.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"patch"
]
}
{
"type": "object"
}
settings.company.update — Оновити реквізити компаніїЩо робить: Частково оновлює назву, email, ЄДРПОУ, IBAN, додаткову інформацію та переклади. Ідентифікаційні й банківські дані потребують явного підтвердження.
| Доступ | write | Ризик | dynamic |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal, financial | ||
| Наслідки | legal_or_contact_details_changed | ||
Що зачіпає: shop.settings
Правило рішення: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.
settings.profile.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
}
},
"additionalProperties": false,
"required": [
"patch"
]
}
{
"type": "object"
}
settings.languages.base.set — Задати базову мовуЩо робить: Змінює базову мову через чинний helper сторінки налаштувань і прибирає її з додаткових.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | public_url_language_policy_changed | ||
Що зачіпає: shop.settings
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
settings.languages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"code": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"code"
]
}
{
"type": "object"
}
settings.languages.extra.set — Увімкнути додаткову мовуЩо робить: Вмикає або вимикає додаткову мову через чинний helper налаштувань.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | store_languages_changed | ||
Що зачіпає: shop.settings
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
settings.languages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"code": {
"type": "string"
},
"enabled": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"code",
"enabled"
]
}
{
"type": "object"
}
settings.languages.get — Мови магазинуЩо робить: Повертає базову, увімкнені й доступні мови магазину.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: shop.settings
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
settings.modules.get — Стани модулівЩо робить: Повертає тумблери модулів і тарифні стани з чинного serializer налаштувань.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: shop.settings
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
settings.modules.set — Увімкнути або вимкнути модульЩо робить: Змінює один чинний module toggle через існуючу тарифну та складську перевірку. Вимкнення AI заблокує наступні виклики цього токена.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | module_access_changed, warehouse_reset_may_be_enqueued | ||
Що зачіпає: shop.settings
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
settings.modules.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"module": {
"type": "string",
"enum": [
"crm",
"warehouse",
"customer_account",
"import_export",
"ai_agent_api"
]
},
"enabled": {
"type": "boolean"
},
"confirm_warehouse_reset": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false,
"required": [
"module",
"enabled"
]
}
{
"type": "object"
}
settings.profile.get — Профіль налаштуваньЩо робить: Повертає безпечний зріз базових, каталожних, модульних, мовних і компанійних налаштувань без паролів, токенів та секретів.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: shop.settings
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
settings.site_name.update — Змінити назву сайтуЩо робить: Змінює назву сайту через той самий валідатор поля, який використовує сторінка налаштувань.
| Доступ | write | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | site_identity_changed | ||
Що зачіпає: shop.settings
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
settings.profile.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"site_name": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"additionalProperties": false,
"required": [
"site_name"
]
}
{
"type": "object"
}
domain.settings.get — Налаштування доменуЩо робить: Повертає домен, DNS/TLS-статус, очікувані IP та помилку перевірки без внутрішніх шляхів nginx.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal, contact | ||
| Наслідки | — | ||
Що зачіпає: shop.domain, dns, tls, public_routing
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
domain.settings.update — Оновити доменЩо робить: Частково змінює домен, email для Let's Encrypt і стан підключення через чинний save_domain_settings_from_user(); DNS/SSL обробляються наявним фоновим процесом.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | supported |
| Потрібні модулі | — | ||
| Класи даних | shop_internal, contact | ||
| Наслідки | public_domain_changed, dns_and_tls_workflow_changed, old_domain_runtime_may_be_cleaned | ||
Що зачіпає: shop.domain, dns, tls, public_routing
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
domain.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"domain": {
"type": "string",
"maxLength": 253
},
"certificate_email": {
"type": "string",
"maxLength": 254
},
"connect_requested": {
"type": "boolean"
}
},
"additionalProperties": false
}
{
"type": "object"
}
design.theme.get — Дизайн темиЩо робить: Повертає активну тему, кольори, системні шрифти, ваги, розміри та власні font groups без бінарних даних.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: storefront.theme
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
design.theme.update — Оновити дизайн темиЩо робить: Частково змінює дозволені кольори, стандартні шрифти, ваги, розміри та radius через ThemeUserSettings.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | site_design_changed | ||
Що зачіпає: storefront.theme
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
design.theme.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"patch"
]
}
{
"type": "object"
}
seo.audit — SEO-аудитЩо робить: Викликає чинний build_seo_audit(shop): score, секції, лічильники та рекомендації.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: seo, search_indexing
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
seo.settings.get — SEO-налаштуванняЩо робить: Повертає глобальні SEO-поля магазину та URL OG-зображення.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: seo, search_indexing
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
seo.settings.update — Оновити SEOЩо робить: Частково оновлює глобальні SEO-поля. Увімкнення або вимкнення індексації вимагає підтвердження.
| Доступ | write | Ризик | dynamic |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | search_indexing_or_metadata_changed | ||
Що зачіпає: seo, search_indexing
Правило рішення: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.
seo.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"patch"
]
}
{
"type": "object"
}
orders.cancel — Скасувати замовленняЩо робить: Викликає Order.cancel_order(): скасовує замовлення і звільняє складський резерв; reason записується лише якщо передано author_user_id.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | stock_released, order_cancelled | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
},
"reason": {
"type": "string"
},
"author_user_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"order_id"
]
}
{
"type": "object"
}
orders.comment.add — Додати коментар до замовленняЩо робить: Додає внутрішній коментар від конкретного працівника магазину; автор задається явно, щоб журнал не приписував AI чужу особу.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii | ||
| Наслідки | order_comment_created | ||
Що зачіпає: orders, customers, stock
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
},
"author_user_id": {
"type": "integer",
"minimum": 1
},
"text": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"order_id",
"author_user_id",
"text"
]
}
{
"type": "object"
}
orders.confirm — Підтвердити замовленняЩо робить: Викликає Order.confirm_order(): підтверджує, резервує склад і ставить клієнтський email у чергу.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | stock_reserved, customer_email_enqueued | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"order_id"
]
}
{
"type": "object"
}
orders.documents.generate — Згенерувати документиЩо робить: Викликає чинний Order.prepare_docs() для рахунку та видаткової накладної.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | invoice_and_waybill_generated | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"order_id"
]
}
{
"type": "object"
}
orders.documents.mark_sent — Позначити документи відправленимиЩо робить: Викликає чинний Order.doc_send().
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | document_state_changed | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"order_id"
]
}
{
"type": "object"
}
orders.fiscalization.mark — Позначити фіскалізованимЩо робить: Викликає Order.order_fiscalized(check_link) і ставить лист із чеком у чергу.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | fiscalization_state_changed, customer_email_enqueued | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
},
"check_link": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"order_id",
"check_link"
]
}
{
"type": "object"
}
orders.fulfillment.pack — Позначити запакованимЩо робить: Викликає Order.order_pack() і ставить клієнтський email у чергу.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | packing_state_changed, customer_email_enqueued | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"order_id"
]
}
{
"type": "object"
}
orders.fulfillment.ship — Позначити відправленимЩо робить: Викликає Order.order_send(ttn), синхронізує ТТН у чинній OrderDelivery і ставить email у чергу.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | shipping_state_changed, customer_email_enqueued | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
},
"ttn": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"order_id",
"ttn"
]
}
{
"type": "object"
}
orders.get — Дані замовленняЩо робить: Повертає повне замовлення: товари, суму, доставку, оплату, статуси, документи та внутрішні коментарі.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii, financial | ||
| Наслідки | — | ||
Що зачіпає: orders, customers, stock
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"order_id"
]
}
{
"type": "object"
}
orders.list — Список замовленьЩо робить: Повертає замовлення з пошуком, джерелом і окремими status-фільтрами; містить контактні дані клієнтів.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii, financial | ||
| Наслідки | — | ||
Що зачіпає: orders, customers, stock
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"source": {
"type": "string"
},
"confirmed": {
"type": "boolean"
},
"is_paid": {
"type": "boolean"
},
"is_cansel": {
"type": "boolean"
},
"is_sended": {
"type": "boolean"
}
},
"additionalProperties": false
}
{
"type": "object"
}
orders.payment.mark_paid — Позначити оплаченимЩо робить: Викликає Order.order_paid(): фіксує оплату, резервує склад і ставить email у чергу.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | payment_state_changed, stock_reserved, customer_email_enqueued | ||
Що зачіпає: orders, customers, stock
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"order_id"
]
}
{
"type": "object"
}
payments.settings.get — Налаштування методу оплатиЩо робить: Повертає один платіжний провайдер і його безпечну конфігурацію; секрет показується лише як secret_configured.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | financial, shop_internal | ||
| Наслідки | — | ||
Що зачіпає: checkout.payments, payment_configuration
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"wayforpay",
"bank_personal",
"bank_business",
"cash"
]
}
},
"additionalProperties": false,
"required": [
"code"
]
}
{
"type": "object"
}
payments.settings.list — Налаштування оплатЩо робить: Повертає всі зареєстровані платіжні провайдери, checkout-представлення і стан налаштувань без secret_key.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | financial, shop_internal | ||
| Наслідки | — | ||
Що зачіпає: checkout.payments, payment_configuration
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
payments.settings.update — Оновити метод оплатиЩо робить: Частково оновлює налаштування зареєстрованого платіжного provider через чинні моделі та full_clean(). secret_key можна передати для WayForPay, але він не повертається у відповіді або журналі.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | financial, secret_input | ||
| Наслідки | checkout_payment_options_changed, payment_credentials_may_change | ||
Що зачіпає: checkout.payments, payment_configuration
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
payments.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": [
"wayforpay",
"bank_personal",
"bank_business",
"cash"
]
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
}
},
"additionalProperties": false,
"required": [
"code",
"patch"
]
}
{
"type": "object"
}
customers.get — Дані клієнтаЩо робить: Повертає профіль користувача магазину й останні замовлення.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii, financial | ||
| Наслідки | — | ||
Що зачіпає: customers
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"customer_id"
]
}
{
"type": "object"
}
customers.list — Список клієнтів і працівниківЩо робить: Повертає користувачів магазину з ролями; потрібний, зокрема, для явного author_user_id у внутрішніх коментарях.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii | ||
| Наслідки | — | ||
Що зачіпає: customers
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"role": {
"type": "string",
"enum": [
"customer",
"worker",
"all"
]
}
},
"additionalProperties": false
}
{
"type": "object"
}
customers.update — Оновити профіль клієнтаЩо робить: Частково змінює контактні дані й активність профілю; паролі, права та ролі не доступні.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii | ||
| Наслідки | customer_profile_changed | ||
Що зачіпає: customers
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
customers.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"customer_id",
"patch"
]
}
{
"type": "object"
}
subscribers.delete — Видалити підписникаЩо робить: Видаляє email із підписок магазину.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii | ||
| Наслідки | subscriber_deleted | ||
Що зачіпає: customers
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
{
"type": "object",
"properties": {
"subscriber_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"subscriber_id"
]
}
{
"type": "object"
}
subscribers.list — Підписники розсилкиЩо робить: Повертає email-підписників магазину.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii | ||
| Наслідки | — | ||
Що зачіпає: customers
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
}
},
"additionalProperties": false
}
{
"type": "object"
}
reviews.delete — Видалити відгукЩо робить: Видаляє відгук; чинний signal автоматично перерахує рейтинг товару.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii | ||
| Наслідки | review_deleted, product_rating_recalculated | ||
Що зачіпає: reviews, product_rating
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
{
"type": "object",
"properties": {
"review_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"review_id"
]
}
{
"type": "object"
}
reviews.list — Список відгуківЩо робить: Повертає відгуки з фільтром товару й оцінки; містить email автора.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | customer_pii | ||
| Наслідки | — | ||
Що зачіпає: reviews, product_rating
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"product_id": {
"type": "integer",
"minimum": 1
},
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5
}
},
"additionalProperties": false
}
{
"type": "object"
}
warehouse.history.report — Склад на датуЩо робить: Будує пагінований історичний звіт через чинний build_stock_history_page().
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | financial | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "ISO datetime"
},
"category_id": {
"type": "integer",
"minimum": 1
},
"query": {
"type": "string"
},
"only_positive": {
"type": "boolean",
"default": true
},
"page": {
"type": "integer",
"minimum": 1
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"additionalProperties": false,
"required": [
"date"
]
}
{
"type": "object"
}
warehouse.movements.list — Рухи складуЩо робить: Повертає незмінюваний журнал складських рухів з фільтрами товару й типу.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | financial, shop_internal | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"product_id": {
"type": "integer",
"minimum": 1
},
"movement_type": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object"
}
warehouse.purchases.get — Дані закупівліЩо робить: Повертає закупівлю та її товарні партії.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | financial | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"purchase_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"purchase_id"
]
}
{
"type": "object"
}
warehouse.purchases.list — Список закупівельЩо робить: Повертає закупівлі, їх етап, суми та стан синхронізації.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | financial | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"is_paid": {
"type": "boolean"
},
"stage_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}
{
"type": "object"
}
warehouse.purchases.sync — Синхронізувати закупівлюЩо робить: Викликає чинний request_purchase_sync(); залежно від обсягу виконує роботу одразу або через Celery.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | financial | ||
| Наслідки | physical_stock_rows_rebuilt, background_task_may_start | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
warehouse.purchases.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"purchase_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"purchase_id"
]
}
{
"type": "object"
}
warehouse.revisions.create — Створити ревізіюЩо робить: Створює чернетку ревізії й рахує system_qty кожного рядка через available_stock_count().
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | stock_revision_draft_created | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
warehouse.revisions.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write){
"type": "object",
"properties": {
"title": {
"type": "string"
},
"comment": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"minimum": 1
},
"fact_qty": {
"type": "integer",
"minimum": 0
},
"comment": {
"type": "string"
}
}
}
}
},
"additionalProperties": false,
"required": [
"items"
]
}
{
"type": "object"
}
warehouse.revisions.get — Дані ревізіїЩо робить: Повертає ревізію і всі її товарні рядки.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"revision_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"revision_id"
]
}
{
"type": "object"
}
warehouse.revisions.list — Список ревізійЩо робить: Повертає складські ревізії та їх фоновий стан.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write){
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"status": {
"type": "string",
"enum": [
"draft",
"posted"
]
}
},
"additionalProperties": false
}
{
"type": "object"
}
warehouse.revisions.post — Провести ревізіюЩо робить: Викликає чинний request_stock_revision_post(); операція може виконатися синхронно або перейти в Celery.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | stock_quantities_changed, stock_movements_created, background_task_may_start | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
warehouse.revisions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write){
"type": "object",
"properties": {
"revision_id": {
"type": "integer",
"minimum": 1
},
"author_user_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"revision_id",
"author_user_id"
]
}
{
"type": "object"
}
warehouse.revisions.update — Оновити чернетку ревізіїЩо робить: Замінює рядки лише чернетки ревізії та заново фіксує system_qty через наявний сервіс залишку.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | supported |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | stock_revision_draft_replaced | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
warehouse.revisions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write){
"type": "object",
"properties": {
"revision_id": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string"
},
"comment": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object"
}
}
},
"additionalProperties": false,
"required": [
"revision_id",
"items"
]
}
{
"type": "object"
}
warehouse.stock.list — Залишки товарівЩо робить: Повертає кешований залишок SKU та, за потреби, точний доступний залишок із чинного available_stock_count().
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"only_positive": {
"type": "boolean",
"default": false
},
"exact": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}
{
"type": "object"
}
warehouse.summary — Огляд складуЩо робить: Повертає кількість SKU, доступних одиниць, чернеток ревізій і незавершених складських операцій.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | warehouse | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: warehouse, stock_movements
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
shipping.methods.list — Методи доставкиЩо робить: Повертає публічні увімкнені методи через чинний shipping.registry.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: checkout.shipping, shipping_configuration
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
shipping.nova_poshta.cities.search — Пошук міст Нової поштиЩо робить: Викликає чинний cached search_cities() з обмеженням результатів.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: checkout.shipping, shipping_configuration
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"additionalProperties": false,
"required": [
"query"
]
}
{
"type": "object"
}
shipping.nova_poshta.warehouses.list — Відділення Нової поштиЩо робить: Викликає чинний cached get_warehouses() за city_ref, settlement_ref або city_name.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: checkout.shipping, shipping_configuration
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"city_ref": {
"type": "string"
},
"settlement_ref": {
"type": "string"
},
"city_name": {
"type": "string"
},
"query": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000
}
},
"additionalProperties": false
}
{
"type": "object"
}
shipping.settings.get — Налаштування доставкиЩо робить: Повертає конфіг усіх зареєстрованих shipping providers з перекладами.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: checkout.shipping, shipping_configuration
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
shipping.settings.update — Оновити метод доставкиЩо робить: Частково змінює is_active, title, description, address і переклади у settings_model зареєстрованого provider.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | checkout_shipping_options_changed | ||
Що зачіпає: checkout.shipping, shipping_configuration
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
shipping.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"code": {
"type": "string"
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"translations": {
"type": "object"
}
},
"additionalProperties": false,
"required": [
"code",
"patch"
]
}
{
"type": "object"
}
exchange.auto_import.get — Стан автоматичного імпортуЩо робить: Повертає активність, графік, політику дублікатів і managed_fields автоімпорту без повного source URL. Використовуй перед ручним оновленням товарів, щоб побачити, які поля може перетерти наступний запуск.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
exchange.catalog — Можливості імпорту й експортуЩо робить: Повертає системні пресети, field registries, трансформації та marketplace providers із чинних registry-функцій.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
{
"type": "object"
}
exchange.export_presets.create — Створити експортний пресетЩо робить: Створює пресет і колонки, перевіряючи поля та transforms чинними registry validators.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | export_preset_created | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
exchange.export_presets.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"columns": {
"type": "array",
"items": {
"type": "object"
}
}
},
"additionalProperties": false,
"required": [
"data",
"columns"
]
}
{
"type": "object"
}
exchange.export_presets.delete — Видалити експортний пресетЩо робить: Видаляє кастомний пресет, колонки й пов'язані data gateways каскадно.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | export_preset_and_gateways_deleted | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
exchange.export_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"preset_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"preset_id"
]
}
{
"type": "object"
}
exchange.export_presets.get — Дані експортного пресетуЩо робить: Повертає кастомний експортний пресет і колонки через get_runtime_custom_preset().
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"preset_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"preset_id"
]
}
{
"type": "object"
}
exchange.export_presets.list — Експортні пресетиЩо робить: Повертає системні й кастомні експортні пресети через чинні serializers.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
}
},
"additionalProperties": false
}
{
"type": "object"
}
exchange.export_presets.update — Оновити експортний пресетЩо робить: Частково оновлює пресет і атомарно замінює колонки через чинні validators.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | export_preset_changed | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
exchange.export_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"preset_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"columns": {
"type": "array",
"items": {
"type": "object"
}
}
},
"additionalProperties": false,
"required": [
"preset_id",
"patch",
"columns"
]
}
{
"type": "object"
}
exchange.gateways.create — Створити data gatewayЩо робить: Створює публічний gateway через DataGateway.clean() і необов'язковий IP allowlist.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | public_export_endpoint_created | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
exchange.gateways.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"allowed_ips": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"data"
]
}
{
"type": "object"
}
exchange.gateways.delete — Видалити data gatewayЩо робить: Видаляє публічний data gateway та IP allowlist.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | public_export_endpoint_deleted | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
exchange.gateways.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"gateway_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"gateway_id"
]
}
{
"type": "object"
}
exchange.gateways.get — Дані data gatewayЩо робить: Повертає один публічний data gateway.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"gateway_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"gateway_id"
]
}
{
"type": "object"
}
exchange.gateways.list — Публічні data gatewaysЩо робить: Повертає публічні URL експорту, джерела пресетів і IP allowlist.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
}
},
"additionalProperties": false
}
{
"type": "object"
}
exchange.gateways.update — Оновити data gatewayЩо робить: Частково оновлює gateway і за потреби атомарно замінює IP allowlist.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | public_export_endpoint_changed | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
exchange.gateways.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"gateway_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"allowed_ips": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"required": [
"gateway_id",
"patch"
]
}
{
"type": "object"
}
exchange.import_presets.create — Створити імпортний пресетЩо робить: Створює імпортний пресет і колонки, перевіряючи target fields і transforms чинними registry validators.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | supported |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | import_preset_created | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
exchange.import_presets.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"columns": {
"type": "array",
"items": {
"type": "object"
}
}
},
"additionalProperties": false,
"required": [
"data",
"columns"
]
}
{
"type": "object"
}
exchange.import_presets.delete — Видалити імпортний пресетЩо робить: Видаляє кастомний імпортний пресет і його колонки.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | import_preset_deleted | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
exchange.import_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"preset_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"preset_id"
]
}
{
"type": "object"
}
exchange.import_presets.get — Дані імпортного пресетуЩо робить: Повертає кастомний імпортний пресет і колонки через get_runtime_custom_import_preset().
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"preset_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"preset_id"
]
}
{
"type": "object"
}
exchange.import_presets.list — Імпортні пресетиЩо робить: Повертає системні й кастомні імпортні пресети через чинний payload builder.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
}
},
"additionalProperties": false
}
{
"type": "object"
}
exchange.import_presets.update — Оновити імпортний пресетЩо робить: Частково оновлює пресет і атомарно замінює колонки через чинні validators.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | import_preset_changed | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
exchange.import_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"preset_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
},
"columns": {
"type": "array",
"items": {
"type": "object"
}
}
},
"additionalProperties": false,
"required": [
"preset_id",
"patch",
"columns"
]
}
{
"type": "object"
}
exchange.operations.cancel — Скасувати операцію обмінуЩо робить: Скасовує активну Celery-задачу, якщо вона є, і завершує операцію через чинний cancel_exchange_operation().
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | background_task_revoked, exchange_operation_cancelled | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
{
"type": "object",
"properties": {
"operation_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"operation_id"
]
}
{
"type": "object"
}
exchange.operations.get — Дані операції обмінуЩо робить: Повертає один статус імпорту/експорту та error_json.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"operation_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"operation_id"
]
}
{
"type": "object"
}
exchange.operations.list — Операції обмінуЩо робить: Повертає історію імпорту/експорту через чинний serialize_operation().
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | import_export | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: catalog.import_export, background_operations
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"status": {
"type": "string"
},
"kind": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object"
}
notifications.channels.create — Створити каналЩо робить: Створює канал; provider.clean_config() викликається чинним model.clean(). Секрети приймаються, але не повертаються й редагуються в аудиті.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | notification_channel_created | ||
Що зачіпає: notifications, delivery_logs
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
notifications.channels.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"data": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"kind",
"data"
]
}
{
"type": "object"
}
notifications.channels.delete — Видалити каналЩо робить: Видаляє канал; delivery logs залишаються з channel=null.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | notification_channel_deleted | ||
Що зачіпає: notifications, delivery_logs
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
notifications.channels.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"channel_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"kind",
"channel_id"
]
}
{
"type": "object"
}
notifications.channels.get — Дані каналуЩо робить: Повертає один канал без секретних значень конфігурації.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: notifications, delivery_logs
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"channel_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"kind",
"channel_id"
]
}
{
"type": "object"
}
notifications.channels.list — Канали сповіщеньЩо робить: Повертає customer/form і merchant канали, schema провайдерів та ознаки налаштованих секретів без самих секретів.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: notifications, delivery_logs
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"kind": {
"type": "string",
"enum": [
"form",
"merchant"
]
}
},
"additionalProperties": false
}
{
"type": "object"
}
notifications.channels.update — Оновити каналЩо робить: Частково оновлює канал; відсутні секретні поля зберігаються, передані — замінюються й не повертаються.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | notification_channel_changed | ||
Що зачіпає: notifications, delivery_logs
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
notifications.channels.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"channel_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"kind",
"channel_id",
"patch"
]
}
{
"type": "object"
}
notifications.delivery_logs.list — Журнал доставокЩо робить: Повертає журнали customer/form або merchant повідомлень без повного HTML та секретів.
| Доступ | read | Ризик | medium |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: notifications, delivery_logs
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
},
"kind": {
"type": "string",
"enum": [
"form",
"merchant"
]
},
"status": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object"
}
redirects.create — Створити редиректЩо робить: Створює правило base_path → target_url через чинну модель.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | routing_changed | ||
Що зачіпає: storefront.routing
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
redirects.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"base_path": {
"type": "string"
},
"target_url": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"base_path",
"target_url"
]
}
{
"type": "object"
}
redirects.delete — Видалити редиректЩо робить: Видаляє правило редиректу.
| Доступ | write | Ризик | high |
|---|---|---|---|
| Підтвердження | required | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | routing_changed | ||
Що зачіпає: storefront.routing
Правило рішення: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.
redirects.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"redirect_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"redirect_id"
]
}
{
"type": "object"
}
redirects.list — Список редиректівЩо робить: Повертає правила редиректів магазину.
| Доступ | read | Ризик | low |
|---|---|---|---|
| Підтвердження | none | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | — | ||
Що зачіпає: storefront.routing
Правило рішення: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Пошук за текстовими полями."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000000,
"default": 0
}
},
"additionalProperties": false
}
{
"type": "object"
}
redirects.update — Оновити редиректЩо робить: Частково змінює source і target правила редиректу.
| Доступ | write | Ризик | medium |
|---|---|---|---|
| Підтвердження | recommended | Ідемпотентність | not_needed |
| Потрібні модулі | — | ||
| Класи даних | shop_internal | ||
| Наслідки | routing_changed | ||
Що зачіпає: storefront.routing
Правило рішення: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.
redirects.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write){
"type": "object",
"properties": {
"redirect_id": {
"type": "integer",
"minimum": 1
},
"patch": {
"type": "object",
"description": "Частковий набір дозволених полів."
}
},
"additionalProperties": false,
"required": [
"redirect_id",
"patch"
]
}
{
"type": "object"
}