How to connect an AI agent to a Shopcore store

How to connect an AI agent to a Shopcore store

Secure access to approved store actions without access to code or the server.

Shopcore AI API is a single gateway to approved store actions. It does not expose Python, the database, the file system, or server access.

For AI agents: always fetch the live catalogue from GET /ai/v1/methods/ before acting. Never invent method or parameter names. Prefer low-risk read methods and obtain explicit owner confirmation before high-risk changes.

Access

  1. Open Site settings in the Hive admin.
  2. Enable the last toggle, AI agent API.
  3. Open AI agent access to view the identifier, copy the connection prompt, or regenerate the token. Regeneration immediately revokes the previous token.

The key identifier is a non-secret label used for logs, recognition, and revocation. It is shown separately only in Hive settings. Only the token authorizes requests and must remain secret.

API flow

GET https://<your-hive-host>/ai/v1/methods/
Authorization: Bearer <your-token>
POST https://<your-hive-host>/ai/v1/invoke/
Authorization: Bearer <your-token>
Content-Type: application/json

{"method": "system.status", "params": {}, "options": {"confirmed": false}}

The manifest supports group, access, and risk filters. File methods use multipart fields method, params_json, options_json, plus the named file fields declared by the method.

Upload your own image into a page, article or blog-home block with pages.blocks.media.set: send the file in the file field and take the field path from media_fields in the pages.blocks.get response (for example background_image or slides.1.background_image). Only that field changes; remove an image with pages.blocks.media.delete.

Responses and context

Every successful response includes request status, request_id, method metadata, data, catalogue version, and store context. If a response does not contain the needed domain data, call the relevant read method instead of guessing.

Risk and confirmation

Read current state first. Methods with confirmation: required are rejected unless the owner has explicitly approved the exact action and the agent sends options.confirmed=true. Dynamic-risk methods may require confirmation for sensitive parameters such as custom HTML, indexing, or legal details. Audit logs redact tokens, passwords, and secrets.

Critical domain rules

Products and automatic import

Before a manual product change, call exchange.auto_import.get. If automatic import is active, updates existing products, and the field appears in managed_fields, the next run may overwrite the manual change. Give the owner a choice: proceed once, change/disable the import mapping, or skip the manual edit.

Warehouse stock

When the warehouse module is enabled, catalog.products.update rejects patch.warehouse_count. Use warehouse.stock.list → warehouse.revisions.create → warehouse.revisions.get → confirmed warehouse.revisions.post.

Blocks and custom HTML

Search pages.blocks.catalog first. If the visual block is missing, use html_code for the custom UI and enable only the smallest required expose_* fields from shopcore.html-block-data.v1.

Every dataset is off by default. The block does not grant Python, raw backend context, private-data, or AI-token access and HTML changes require explicit confirmation.

Upload images for custom HTML into the block image library (images, up to 30) with pages.blocks.media.set and append=true, then reference them in HTML as [[image:key]].

Product order in the “Товари сайту” block

The site_products block has a content.shared.sort setting (since catalog_version 2026-09-26.1; -number since 2026-09-27.1): number — default (by sequence number), -number — by sequence number, reversed, price — cheapest first, -price — most expensive first, -views — most popular, -updated_at — newest first, -rating — top rated. These are the catalog block's sort keys plus -number; an unknown value falls back to number.

It is a block setting, not a visitor choice: show_sort stays off. Change the order with pages.blocks.update in content.shared; the load-more button, pagination and auto-scroll keep the same order. With the warehouse module enabled, in-stock products come first.

Product placeholder images

A new product has a default cover image. Add real images, set the intended cover, and call catalog.product_images.list again: the old placeholder may move into the gallery and must be removed before publishing.

Category menu icons

Check media.*_is_placeholder and menu_media_requires_attention. Replace the default icon, icon_hover, and image with suitable files or deliberately remove them.

Page checkpoints

Before a broad, non-targeted redesign, call pages.copy to create an unpublished independent copy of metadata, active blocks, translations, and assets. Use block snapshots for targeted edits; snapshotting every block with its position is only a fallback because it is not an atomic page version.

Review and question moderation

Before moderating, read reviews.settings.get and the record itself with reviews.get or questions.get: never publish a review or question without reading its text. Reject spam, advertising, abuse, and suspicious records with status rejected via reviews.moderate / questions.moderate instead of deleting them — they leave the storefront and rating but stay in the history.

A questions.reply answer is published immediately on behalf of the shop. Author emails are personal data: do not reveal them without need or pass them to third parties.

Multiple shipping methods

courier, post, and self_pickup may have multiple instances. Call shipping.settings.get first and use the exact provider:id public code for update or delete.

required_fields must be a subset of show_fields. Checkout snapshots preserve the selected title, description, and pickup address in existing orders.

Data for a custom HTML block

Custom HTML receives JSON only after the required dataset is explicitly enabled in that block. When every switch is off, no JSON node is rendered and no data-specific query runs.

FieldExposed data
expose_site_dataSite name and URL, language, currency, timezone, warehouse/account flags, and only cart line count and subtotal.
expose_navigation_dataPublished pages and the current shop's category tree, capped at 200 records per collection.
expose_context_dataRuntime type and public current page, category, or product data.
expose_product_dataUp to 24 products from current, latest, catalog, current_category, or selected_category.

Read it from an inline script:

const root = document.currentScript.closest('[data-shopcore-html-code-block]');
const node = root?.querySelector('[data-shopcore-html-data] script[type="application/json"]');
const data = node ? JSON.parse(node.textContent) : {};

Enable only the data the UI actually consumes and respect products.meta.truncated. Never call the private AI API from storefront JavaScript.

Images for custom HTML

The block has an images library of up to 30 images with key, image, and alt. Only JPG, PNG, WEBP, and GIF up to 15 MB are accepted; the server verifies the content and stores the file as WEBP up to 2400 px. SVG and other files are rejected.

Agent upload: pages.blocks.media.set with append=true, field=images.{item_count}.image (listed in media_fields), and item={"key": "hero", "alt": "…"}; the response contains library_item.token. Without append the same field replaces the image, and pages.blocks.media.delete with remove_item=true removes the item.

<img src="[[image:hero]]" alt="Hero photo">

When the page renders, [[image:key]] is replaced with the current image URL, so the HTML stays valid after an image is replaced. An unknown key renders as an empty string and is listed in the builder strip.

Preventing flashes during JavaScript substitution

Prefer server-rendered values. Read the schema with pages.blocks.catalog or pages.blocks.get and save cart labels, button text, and other visible values in native block fields whenever possible.

If JavaScript substitution is genuinely required, resolve the header runtime page through pages.list, place a preloader before the mutating script, perform substitutions in one early pass, and release the preloader centrally. Add exception and 3–5 second timeout fallbacks, accessible status text, and safe no-script behavior. Verify hard reloads on a throttled connection and mobile viewport.

Recommended store-migration pipeline

  1. Fetch the live manifest and call system.overview; never assume an old method schema.
  2. Preflight automatic import, modules, languages, warehouse, categories, products, pages, existing blocks, and the block catalogue.
  3. Validate source encoding, required fields, stable source IDs/SKUs, parent relations, slug collisions, prices, and media URLs before writing.
  4. Persist source_id → shopcore_id mappings and checkpoints. Treat normalized-title matching only as a reviewed, collision-free fallback.
  5. Produce a no-write dry run with create/update/skip/conflict counts and all high-risk actions.
  6. Create entities unpublished; use read-before-write and expected_updated_at. Resolve page/category/block IDs from runtime context, slug, or another stable attribute instead of hard-coding them.
  7. Create variations, filters, upsells, and other relations only after every referenced entity exists. Upsells attach to each exact product or variation explicitly.
  8. Upload media with bounded concurrency, validation, retry/backoff for 429/5xx, and post-timeout reads before retrying a possibly successful write.
  9. Prefer standard blocks and preserve untouched fields. Apply the preloader rule above to unavoidable client-side substitutions.
  10. Verify counts, mappings, duplicates, prices, relations, media, SEO, pages, blocks, and representative storefront URLs; publish only after verification.
  11. Return a resume-safe summary with request IDs and created/updated/skipped/failed records, never the token.

Method catalogue: 204

This is the complete human- and machine-readable snapshot. The live manifest takes precedence if catalogue versions differ. Canonical method titles and descriptions are currently maintained in Ukrainian. catalog_version: 2026-09-18.2

Система (4)

Стан і можливості (2)

read Risk: low

system.overview — Огляд даних магазину

What it does: Дає компактні лічильники каталогу, сторінок, замовлень, клієнтів і журналу AI без завантаження самих записів.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: shop.capabilities

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
read Risk: low

system.status — Стан магазину

What it does: Повертає ідентичність магазину, публічний URL, стан підписки та модулів.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classespublic, shop_internal
Side effects—
Additional AI safety context

What it touches: shop.capabilities

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}

Журнал AI (2)

read Risk: medium

audit.requests.get — Деталі AI-запиту

What it does: Повертає один запис журналу з автоматично прихованими секретами.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: ai.audit_log

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "request_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

audit.requests.list — Список AI-запитів

What it does: Повертає журнал викликів цього магазину з фільтрами за методом і статусом; вміст запитів не включає.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: ai.audit_log

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}

Каталог (52)

Категорії (5)

write Risk: medium Confirmation: recommended

catalog.categories.create — Створити категорію

What it does: Створює категорію у наявному MPTT-дереві; slug генерується автоматично, якщо не переданий. Після створення перевір category.media та menu_media_requires_attention: дефолтні icon/icon_hover/image не слід залишати в меню — завантажте доречні або очистіть їх.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectscatalog_tree_changed
Additional AI safety context

What it touches: catalog.categories, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Стандартні icon/icon_hover/image категорії можуть потрапити в меню як видимі заглушки.
Preflight checks
  • catalog.categories.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Перевір menu_media_requires_attention; завантаж доречні іконки/картинку або очисти дефолтні поля в адмінці.
Input data (params)
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "parent_id": {
      "type": [
        "integer",
        "null"
      ]
    },
    "number": {
      "type": "integer"
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.categories.delete — Видалити категорію

What it does: Видаляє категорію. Через правила моделі також може видалити її дочірню гілку; товари отримують порожню основну категорію.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscategory_branch_deleted, products_detached
Additional AI safety context

What it touches: catalog.categories, storefront.catalog

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Стандартні icon/icon_hover/image категорії можуть потрапити в меню як видимі заглушки.
Preflight checks
  • catalog.categories.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Перевір menu_media_requires_attention; завантаж доречні іконки/картинку або очисти дефолтні поля в адмінці.
Input data (params)
{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "category_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.categories.get — Дані категорії

What it does: Повертає категорію, її шлях, переклади, медіа, SEO та кількість товарів. Поля media.*_is_placeholder і menu_media_requires_attention показують, чи лишилися стандартні іконки/картинка меню, які треба свідомо заповнити або прибрати.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.categories, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Стандартні icon/icon_hover/image категорії можуть потрапити в меню як видимі заглушки.
Safer path
  • Перевір menu_media_requires_attention; завантаж доречні іконки/картинку або очисти дефолтні поля в адмінці.
Input data (params)
{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "category_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.categories.list — Список категорій

What it does: Повертає дерево категорій магазину з батьком, рівнем і кількістю дочірніх категорій.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.categories, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Стандартні icon/icon_hover/image категорії можуть потрапити в меню як видимі заглушки.
Safer path
  • Перевір menu_media_requires_attention; завантаж доречні іконки/картинку або очисти дефолтні поля в адмінці.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.categories.update — Оновити категорію

What it does: Частково оновлює назву, дерево, порядок і SEO категорії з перевіркою циклів та належності магазину. Після зміни структури перевір category.media: стандартні icon/icon_hover/image треба замінити доречними або прибрати з меню.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscatalog_tree_or_seo_changed
Additional AI safety context

What it touches: catalog.categories, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Стандартні icon/icon_hover/image категорії можуть потрапити в меню як видимі заглушки.
Preflight checks
  • catalog.categories.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Перевір menu_media_requires_attention; завантаж доречні іконки/картинку або очисти дефолтні поля в адмінці.
Input data (params)
{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "category_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}

Товари (16)

read Risk: low

catalog.buy_together.get — Супутні товари

What it does: Повертає супутні товари для одного товару.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.buy_together.set — Задати супутні товари

What it does: Замінює список супутніх товарів через наявну M2M-модель.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsbuy_together_replaced
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.product_images.add — Додати фото товару

What it does: Додає завантажене multipart-поле file до галереї; формат і resize перевіряє чинне поле ProductImg.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsmedia_uploaded
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "file_field": {
      "type": "string",
      "default": "file"
    },
    "alt": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.product_images.delete — Видалити фото

What it does: Видаляє одне фото галереї разом із файлом через наявний signal моделі.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsmedia_deleted
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "image_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id",
    "image_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.product_images.list — Фото товару

What it does: Повертає головне фото й упорядковану галерею товару з ознаками заглушок. Після встановлення першого реального cover стандартна заглушка може перейти в галерею — знайдіть items[].is_placeholder=true і видаліть її.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Автоматична фото-заглушка не повинна залишатися головним фото або елементом галереї готового товару.
Safer path
  • Після set_cover повторно виклич catalog.product_images.list і видали items з is_placeholder=true до публікації.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.product_images.set_cover — Зробити фото головним

What it does: Міняє місцями головне фото товару та вибране фото галереї за чинним UI-патерном. Якщо старим cover була автоматична заглушка, вона перейде в галерею: після операції викличте catalog.product_images.list і видаліть placeholder.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsproduct_cover_changed
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
  • Автоматична фото-заглушка не повинна залишатися головним фото або елементом галереї готового товару.
Preflight checks
  • catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
  • Після set_cover повторно виклич catalog.product_images.list і видали items з is_placeholder=true до публікації.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "image_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id",
    "image_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: low

catalog.product_images.update — Оновити фото товару

What it does: Змінює alt і порядок наявного фото галереї.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsmedia_metadata_changed
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.product_images.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.product_specifications.list — Характеристики товару

What it does: Повертає характеристики товару з перекладами.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.product_specifications.replace — Замінити характеристики

What it does: Атомарно замінює весь список характеристик товару; кожен елемент має spec, description і необов'язкові translations.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsproduct_specifications_replaced
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.product_specifications.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id",
    "items"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.products.create — Створити товар

What it does: Створює товар через чинну модель Product, тому автоматичні slug і SKU лишаються єдиним джерелом логіки. За замовчуванням товар не публікується і має стандартне фото-заглушку: додайте реальні фото, зробіть потрібне головним і приберіть заглушку з галереї перед публікацією.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsproduct_created
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
  • Автоматична фото-заглушка не повинна залишатися головним фото або елементом галереї готового товару.
Preflight checks
  • catalog.products.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
  • Після set_cover повторно виклич catalog.product_images.list і видали items з is_placeholder=true до публікації.
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.products.delete — Видалити товар

What it does: Переносить товар і його варіації у відновлюваний кошик на 14 днів. Якщо модуль складу увімкнений і є доступний залишок, без zero_stock=true видалення блокується; підтверджений сценарій створює звичайну ревізію до нуля лише для цих товарів. author_user_id активного працівника береться через customers.list. Відновлення картки не відновлює списаний залишок.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsproduct_and_variations_soft_deleted, live_cart_lines_removed, stock_revision_may_be_posted
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.products.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "zero_stock": {
      "type": "boolean",
      "default": false
    },
    "author_user_id": {
      "type": "integer",
      "minimum": 1,
      "description": "ID активного працівника цього магазину з customers.list; обов'язковий для автоматичної ревізії."
    },
    "responsible_user_id": {
      "type": "integer",
      "description": "Deprecated alias for author_user_id."
    },
    "reset_stock": {
      "type": "boolean",
      "description": "Deprecated alias for zero_stock."
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.products.get — Дані товару

What it does: Повертає повну безпечну картку товару, переклади, SEO, категорії та пов'язані дані. image_is_placeholder=true означає, що товар досі має автоматичну заглушку, яку треба замінити до публікації.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "include_deleted": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.products.list — Список товарів

What it does: Повертає товари з пошуком, фільтрами категорії, публікації, архіву, варіацій і залишку.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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"
      ]
    },
    "deletion_status": {
      "type": "string",
      "enum": [
        "active",
        "deleted",
        "all"
      ],
      "default": "active"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.products.restore — Відновити товар

What it does: Відновлює товар і все його сімейство варіацій із 14-денного кошика. Складські залишки, списані ревізією під час видалення, не повертаються.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsproduct_and_variations_restored, stock_not_restored
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.products.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.products.update — Оновити товар

What it does: Частково оновлює дозволені поля товару й переклади; бізнес-логіка save() для slug/SKU не дублюється.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Important: Якщо склад увімкнений, patch.warehouse_count заборонений: створи ревізію, перевір її й проведи після підтвердження.
AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsproduct_changed
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
  • Якщо склад увімкнений, patch.warehouse_count заборонений: створи ревізію, перевір її й проведи після підтвердження.
Preflight checks
  • 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)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
  • warehouse.revisions.create
  • warehouse.revisions.post
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium

catalog.products.visibility.set — Публікація товару

What it does: Вузько змінює стани публікації та архіву товару.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsstorefront_visibility_changed
Additional AI safety context

What it touches: catalog.products, storefront.catalog

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.products.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "is_published": {
      "type": "boolean"
    },
    "is_archival": {
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}

Upsell-групи (19)

write Risk: medium Confirmation: recommended

catalog.product_upsells.attach — Прикріпити upsell-групу

What it does: Прикріплює групу лише до вказаного Product; батько та дочірні варіації не змінюються.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsproduct_upsell_attached
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.product_upsells.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "group_id": {
      "type": "integer",
      "minimum": 1
    },
    "selection_type_override": {
      "type": "string",
      "enum": [
        "",
        "single",
        "multiple"
      ]
    },
    "max_selected_override": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0
    },
    "is_active": {
      "type": "boolean"
    },
    "number": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id",
    "group_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.product_upsells.detach — Від’єднати upsell-групу

What it does: Видаляє одну товарну прив’язку та її overrides, але не видаляє групу з бібліотеки.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsproduct_upsell_detached
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.product_upsells.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "assignment_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "assignment_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.product_upsells.get — Прив’язка upsell до товару

What it does: Повертає одну товарну прив’язку та локальні overrides її опцій.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "assignment_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "assignment_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.product_upsells.list — Upsell-групи товару

What it does: Повертає точні прив’язки конкретного Product. Варіації не успадковуються неявно і мають власні прив’язки.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: low

catalog.product_upsells.overrides.clear — Скинути локальний override upsell

What it does: Видаляє локальне перевизначення; товар знову використовує активність і ціну спільної опції.

AccesswriteRisklow
ConfirmationnoneIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsproduct_upsell_option_override_cleared
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
Preflight checks
  • catalog.product_upsells.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "assignment_id": {
      "type": "integer",
      "minimum": 1
    },
    "option_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "assignment_id",
    "option_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.product_upsells.overrides.set — Задати локальну ціну upsell

What it does: Створює або оновлює локальну доступність і доплату опції лише для одного товару. null успадковує базову ціну, 0 явно задає нуль.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsproduct_upsell_option_overridden
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.product_upsells.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "assignment_id": {
      "type": "integer",
      "minimum": 1
    },
    "option_id": {
      "type": "integer",
      "minimum": 1
    },
    "is_enabled": {
      "type": "boolean"
    },
    "price_delta_override": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "required": [
    "assignment_id",
    "option_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.product_upsells.update — Оновити товарний upsell

What it does: Змінює лише локальні правила прив’язки, не редагуючи спільну групу чи інші товари.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsproduct_upsell_rules_changed
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.product_upsells.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "assignment_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "assignment_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.upsell_groups.create — Створити upsell-групу

What it does: Створює shop-scoped групу в бібліотеці. Опції додаються вузьким методом catalog.upsell_options.create.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsupsell_group_created
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.upsell_groups.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "selection_type": {
      "type": "string",
      "enum": [
        "single",
        "multiple"
      ]
    },
    "max_selected": {
      "type": "integer",
      "minimum": 0
    },
    "is_reusable": {
      "type": "boolean"
    },
    "is_active": {
      "type": "boolean"
    },
    "number": {
      "type": "integer",
      "minimum": 0
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.upsell_groups.delete — Видалити upsell-групу

What it does: Видаляє групу, її опції та всі товарні прив’язки; snapshots у кошиках і замовленнях зберігаються.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsupsell_group_and_assignments_deleted
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • catalog.upsell_groups.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "group_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "group_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.upsell_groups.get — Upsell-група

What it does: Повертає групу, переклади, усі її опції та товари, до яких вона прикріплена.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "group_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "group_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.upsell_groups.list — Бібліотека upsell-груп

What it does: Повертає лише upsell-групи магазину токена з кількістю опцій і товарних прив’язок.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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_active": {
      "type": "boolean"
    },
    "is_reusable": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.upsell_groups.update — Оновити upsell-групу

What it does: Частково оновлює спільні правила групи. Зміна вплине на всі прив’язані товари без локального override.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsshared_upsell_group_changed
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.upsell_groups.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "group_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "group_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.upsell_options.create — Додати upsell-опцію

What it does: Додає опцію до групи того самого магазину; price_delta є доплатою до ціни товару.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsupsell_option_created
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.upsell_options.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "group_id": {
      "type": "integer",
      "minimum": 1
    },
    "title": {
      "type": "string"
    },
    "price_delta": {
      "type": "integer",
      "minimum": 0
    },
    "is_active": {
      "type": "boolean"
    },
    "number": {
      "type": "integer",
      "minimum": 0
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "group_id",
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.upsell_options.delete — Видалити upsell-опцію

What it does: Видаляє спільну опцію та її overrides; snapshots уже створених кошиків і замовлень зберігаються.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsupsell_option_and_overrides_deleted
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • catalog.upsell_options.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "option_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.upsell_options.get — Upsell-опція

What it does: Повертає одну опцію з базовою доплатою та перекладами.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "option_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.upsell_options.image.delete — Видалити картинку upsell-опції

What it does: Видаляє необов’язкову картинку опції; текстовий вигляд upsell лишається доступним.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsupsell_option_media_deleted
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • catalog.upsell_options.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "option_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.upsell_options.image.set — Завантажити картинку upsell-опції

What it does: Встановлює або замінює необов’язкову картинку опції з multipart-поля; чинний ResizedImageField нормалізує файл у WEBP.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsupsell_option_media_changed
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.upsell_options.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1
    },
    "file_field": {
      "type": "string",
      "default": "file"
    }
  },
  "additionalProperties": false,
  "required": [
    "option_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.upsell_options.list — Опції upsell-групи

What it does: Повертає shop-scoped опції однієї групи з базовими доплатами.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
    },
    "group_id": {
      "type": "integer",
      "minimum": 1
    },
    "is_active": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.upsell_options.update — Оновити upsell-опцію

What it does: Оновлює базову опцію. Нова доплата застосовується до товарів, де немає власного price override.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsshared_upsell_option_changed
Additional AI safety context

What it touches: catalog.upsells, storefront.product, cart.pricing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • catalog.upsell_options.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "option_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "option_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}

Фільтри й варіації (12)

write Risk: medium Confirmation: recommended

catalog.filter_values.create — Створити значення фільтра

What it does: Додає текстове або кольорове значення до фільтра.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsfilter_value_created
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "type": "object",
  "properties": {
    "filter_id": {
      "type": "integer",
      "minimum": 1
    },
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "filter_id",
    "data"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.filter_values.delete — Видалити значення фільтра

What it does: Видаляє значення та його прив'язки до товарів.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsfilter_value_deleted, product_filter_links_deleted
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Input data (params)
{
  "type": "object",
  "properties": {
    "value_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "value_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.filter_values.update — Оновити значення фільтра

What it does: Частково оновлює назву, колір, активність і порядок значення.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsfilter_value_changed
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "type": "object",
  "properties": {
    "value_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "value_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.filters.create — Створити фільтр

What it does: Створює фільтр checkbox, color або image через чинну модель.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscatalog_filter_created
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "data"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.filters.delete — Видалити фільтр

What it does: Видаляє фільтр, його значення та прив'язки товарів каскадно.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscatalog_filter_deleted, product_filter_links_deleted
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Input data (params)
{
  "type": "object",
  "properties": {
    "filter_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "filter_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.filters.get — Дані фільтра

What it does: Повертає один фільтр та всі його значення.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "filter_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "filter_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.filters.list — Список фільтрів

What it does: Повертає фільтри каталогу та їх значення.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.filters.update — Оновити фільтр

What it does: Частково оновлює дозволені поля фільтра.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscatalog_filter_changed
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "type": "object",
  "properties": {
    "filter_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "filter_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.product_filters.get — Атрибути товару

What it does: Повертає значення фільтрів, призначені конкретному SKU.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

catalog.product_filters.set — Задати атрибути товару

What it does: Замінює прив'язки фільтрів товару атомарно; один фільтр може мати одне значення для SKU.

Important: Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsproduct_filter_links_replaced
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Активний автоімпорт може перетерти змінені поля товару або відновити видалені дані під час наступного запуску.
Preflight checks
  • catalog.product_filters.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • exchange.auto_import.get — Перевір активність, duplicate_policy і managed_fields; при перетині покажи ризик власнику та дай вибір. (before_product_write)
Safer path
  • Змінити або вимкнути мапінг автоімпорту для поля, яке має керуватися вручну.
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

catalog.variations.get — Варіації товару

What it does: Повертає кореневий товар і впорядковані дочірні SKU.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "product_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

catalog.variations.set — Задати варіації товару

What it does: Атомарно замінює дочірні SKU кореневого товару й синхронізує поле father так само, як чинний admin inline.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencysupported
Required modules—
Data classesshop_internal
Side effectsvariation_family_rebuilt
Additional AI safety context

What it touches: catalog.filters, catalog.variations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}

Сторінки та контент (49)

Сторінки (10)

write Risk: medium Confirmation: recommended

pages.copy — Створити копію сторінки

What it does: Створює неопубліковану незалежну копію сторінки поточного магазину разом з усіма активними блоками, перекладами та окремими копіями assets. Це рекомендована точка відкату перед широкою зміною дизайну всієї сторінки; для точкової зміни одного блока достатньо block snapshot.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsunpublished_page_copy_created, block_assets_copied
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Копія збільшує використання файлового сховища, бо assets фізично копіюються; вона завжди створюється неопублікованою.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для однієї вузької зміни створи snapshot лише відповідного блока замість повної копії сторінки.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "title": {
      "type": "string",
      "maxLength": 300
    },
    "slug": {
      "type": "string",
      "maxLength": 300
    }
  },
  "additionalProperties": false,
  "required": [
    "page_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

pages.create — Створити сторінку

What it does: Створює звичайну сторінку через чинну модель Page; за замовчуванням не публікує її.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectspage_created
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • pages.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

pages.delete — Видалити сторінку

What it does: Переносить сторінку в кошик на 14 днів без видалення її блоків і файлів. Storefront та runtime одразу перестають її використовувати; до остаточного очищення сторінку можна відновити.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectspage_soft_deleted, storefront_page_hidden
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "page_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.get — Дані сторінки

What it does: Повертає сторінку з перекладами, SEO, meta та впорядкованими блоками.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "include_deleted": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "required": [
    "page_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.layouts.get — Runtime-сторінки

What it does: Повертає сторінки, призначені для каталогу, категорії, товару та checkout.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

pages.layouts.set — Призначити runtime-сторінку

What it does: Призначає наявну сторінку магазину для каталогу, категорії, товару або checkout через чинні layout-моделі.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsruntime_route_page_changed
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "runtime_context": {
      "type": "string",
      "enum": [
        "catalog",
        "category",
        "product",
        "checkout"
      ]
    },
    "page_id": {
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "runtime_context",
    "page_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.list — Список сторінок

What it does: Повертає сторінки магазину, їх URL, роль у runtime, кількість активних блоків і статус кошика.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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"
    },
    "deletion_status": {
      "type": "string",
      "enum": [
        "active",
        "deleted",
        "all"
      ],
      "default": "active"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

pages.restore — Відновити сторінку

What it does: Відновлює сторінку з 14-денного кошика. Її активні блоки знову рендеряться, але блоки, видалені окремо, залишаються у кошику блоків до окремого відновлення.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectspage_restored, storefront_page_may_return
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "page_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

pages.update — Оновити сторінку

What it does: Частково оновлює назву, URL, SEO, meta та переклади; не змінює блоки й публікацію.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectspage_metadata_changed
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "page_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium

pages.visibility.set — Публікація сторінки

What it does: Вузько публікує або приховує сторінку.

AccesswriteRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsstorefront_visibility_changed
Additional AI safety context

What it touches: pages, storefront.routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "is_published": {
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "required": [
    "page_id",
    "is_published"
  ]
}
Result (data)
{
  "type": "object"
}

Блоки (17)

write Risk: low

pages.block_snapshots.create — Зберегти знімок блока

What it does: Створює незмінний shop-scoped знімок блока сторінки, статті або головної блогу разом із перекладами, налаштуваннями та фізичними копіями файлів. Для широкого редизайну використовуй pages.copy, blog.articles.copy або знімки всіх блоків головної блогу.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsblock_snapshot_created, media_copied
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Знімок фіксує один блок, а не всю сторінку/статтю: metadata і загальний порядок блоків не версіонуються атомарно.
Preflight checks
  • pages.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для контрольної версії матеріалу збережи snapshot кожного активного блока та окремо зафіксуй його position із pages.blocks.list.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    },
    "title": {
      "type": "string",
      "maxLength": 160
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id",
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

pages.block_snapshots.delete — Видалити збережений блок

What it does: Безповоротно видаляє знімок блока та його незалежні копії assets. Уже створені зі знімка блоки не змінюються.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsblock_snapshot_deleted, snapshot_media_deleted
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Знімок фіксує один блок, а не всю сторінку/статтю: metadata і загальний порядок блоків не версіонуються атомарно.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для контрольної версії матеріалу збережи snapshot кожного активного блока та окремо зафіксуй його position із pages.blocks.list.
Input data (params)
{
  "type": "object",
  "properties": {
    "snapshot_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "snapshot_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.block_snapshots.get — Дані збереженого блока

What it does: Повертає повний immutable payload знімка: content, переклади, design, data_config, extra та власні копії assets.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Знімок фіксує один блок, а не всю сторінку/статтю: metadata і загальний порядок блоків не версіонуються атомарно.
Safer path
  • Для контрольної версії матеріалу збережи snapshot кожного активного блока та окремо зафіксуй його position із pages.blocks.list.
Input data (params)
{
  "type": "object",
  "properties": {
    "snapshot_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "snapshot_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: dynamic Confirmation: recommended

pages.block_snapshots.instantiate — Додати збережений блок

What it does: Створює у сторінці або статті новий блок і uid із зафіксованого payload. Assets копіюються заново; metadata власника цей механізм не відновлює.

AccesswriteRiskdynamic
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectspage_content_changed, media_copied
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Ризик залежить від полів і контенту; перевір параметри та обери найвужчий метод.
  • Знімок фіксує один блок, а не всю сторінку/статтю: metadata і загальний порядок блоків не версіонуються атомарно.
Preflight checks
  • pages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для контрольної версії матеріалу збережи snapshot кожного активного блока та окремо зафіксуй його position із pages.blocks.list.
Input data (params)
{
  "type": "object",
  "properties": {
    "snapshot_id": {
      "type": "integer",
      "minimum": 1
    },
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "insert_mode": {
      "type": "string",
      "enum": [
        "end",
        "before",
        "after"
      ]
    },
    "target_block_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "snapshot_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.block_snapshots.list — Збережені блоки

What it does: Повертає незалежні знімки блоків лише поточного магазину. Вони придатні для сторінок і статей: повна версія потребує snapshot кожного активного блока та окремо збереженого position.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Знімок фіксує один блок, а не всю сторінку/статтю: metadata і загальний порядок блоків не версіонуються атомарно.
Safer path
  • Для контрольної версії матеріалу збережи snapshot кожного активного блока та окремо зафіксуй його position із pages.blocks.list.
Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.blocks.catalog — Каталог блоків

What it does: Повертає реальний registry page builder: групи, всі зареєстровані типи блоків, контексти, schemas, defaults і контракт backend/runtime-даних. Для html_code тут описані окремі opt-in перемикачі безпечного JSON (усі за замовчуванням вимкнені) і медіатека images до 30 зображень для [[image:ключ]].

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classespublic, shop_internal
Side effects—
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "block_code": {
      "type": "string"
    },
    "runtime_context": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: dynamic Confirmation: recommended

pages.blocks.create — Створити блок

What it does: Вставляє зареєстрований блок у сторінку, статтю або головну блогу через єдиний BuilderProvider. Передайте рівно один page_id/article_id/blog_settings_id.

AccesswriteRiskdynamic
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectscontent_changed
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Ризик залежить від полів і контенту; перевір параметри та обери найвужчий метод.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_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": [
    "block_code"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

pages.blocks.delete — Видалити блок

What it does: Переносить блок сторінки, статті або головної блогу у кошик на 14 днів; переклади й assets зберігаються для відновлення.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsblock_soft_deleted, block_hidden_from_render
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: low

pages.blocks.enabled.set — Увімкнути або вимкнути блок

What it does: Вузько змінює видимість одного блока сторінки, статті або головної блогу без видалення контенту.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsblock_visibility_changed
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    },
    "is_enabled": {
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id",
    "is_enabled"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.blocks.get — Дані блока

What it does: Повертає один блок сторінки, статті або головної блогу разом із чинними schemas та значеннями. Передайте рівно один page_id/article_id/blog_settings_id.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    },
    "include_deleted": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.blocks.list — Блоки сторінки, статті або головної блогу

What it does: Спільний метод повертає блоки сторінки, статті або головної сторінки блогу. Передайте рівно один page_id/article_id/blog_settings_id; бібліотека, схеми й рендерер спільні.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "deletion_status": {
      "type": "string",
      "enum": [
        "active",
        "deleted",
        "all"
      ],
      "default": "active"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

pages.blocks.media.delete — Прибрати зображення з блока

What it does: Очищає одне поле зображення блока (той самий field, що в pages.blocks.media.set) і видаляє файл, завантажений у це поле. Інші поля, елементи repeater і тексти не змінюються. Для перекладного поля без language очищає його для всіх мов магазину. Для медіатеки html_code (images) remove_item=true прибирає елемент повністю разом із ключем; [[image:ключ]] у HTML після цього нічого не підставить, тож спершу прибери його з HTML.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscontent_changed, block_media_deleted, media_file_deleted
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    },
    "field": {
      "type": "string",
      "maxLength": 255,
      "description": "Шлях поля зображення з media_fields блока: background_image або для repeater slides.0.image."
    },
    "language": {
      "type": "string",
      "description": "Лише для перекладного поля: код мови. Якщо не передано, зміна застосовується до всіх увімкнених мов магазину."
    },
    "remove_item": {
      "type": "boolean",
      "default": false,
      "description": "Лише для медіатеки: прибрати елемент повністю."
    },
    "expected_updated_at": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id",
    "field"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

pages.blocks.media.set — Завантажити зображення в блок

What it does: Завантажує власне зображення агента в одне поле зображення блока сторінки, статті або головної блогу й одразу записує його URL у блок. Надішліть multipart/form-data: method, params_json, options_json і файл (поле file або назва з file_field). Шлях field беріть із media_fields відповіді pages.blocks.get: звичайне поле (background_image) або елемент repeater (slides.0.image). Змінюється лише вказане поле, сусідні елементи repeater і тексти зберігаються. Поле type=image приймає JPG/PNG/WEBP/GIF і конвертує їх у WEBP до 2400px; image_asset додатково приймає безпечний SVG до 1 МБ. Максимум 15 МБ. Для перекладного поля без language картинка ставиться для всіх мов магазину. Файл належить лише цьому блоку магазину; попередній файл цього поля видаляється. Для html_code є медіатека images (до 30 зображень, лише JPG/PNG/WEBP/GIF → WEBP): додай зображення з append=true і field=images.{item_count}.image, задай item.key; у HTML вставляй [[image:ключ]] — сервер підставить поточний URL, тож після заміни зображення HTML міняти не треба. Відповідь повертає library_item з ключем, URL і токеном.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscontent_changed, block_media_uploaded, old_media_file_deleted
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    },
    "field": {
      "type": "string",
      "maxLength": 255,
      "description": "Шлях поля зображення з media_fields блока: background_image або для repeater slides.0.image."
    },
    "language": {
      "type": "string",
      "description": "Лише для перекладного поля: код мови. Якщо не передано, зміна застосовується до всіх увімкнених мов магазину."
    },
    "file_field": {
      "type": "string",
      "default": "file"
    },
    "append": {
      "type": "boolean",
      "default": false,
      "description": "Лише для медіатеки (media_library=true, наприклад images у html_code): додати новий елемент; index у field має дорівнювати item_count."
    },
    "item": {
      "type": "object",
      "description": "Лише для медіатеки: текстові поля елемента з item_fields, наприклад {\"key\": \"hero\", \"alt\": \"Опис\"}."
    },
    "expected_updated_at": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id",
    "field"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: low

pages.blocks.move — Перемістити блок

What it does: Міняє блок сторінки, статті або головної блогу місцями з сусіднім за чинним алгоритмом builder UI.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsblock_order_changed
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    },
    "direction": {
      "type": "string",
      "enum": [
        "up",
        "down"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id",
    "direction"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: low

pages.blocks.restore — Відновити блок

What it does: Відновлює блок із кошика конкретної сторінки, статті або головної блогу разом із перекладами та assets.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsblock_restored, content_render_changed
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_id": {
      "type": "integer",
      "minimum": 1
    },
    "block_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "block_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

pages.blocks.runtime_guide — Backend-дані блоків

What it does: Пояснює server-side render pipeline, фактичні поля get_base_data/get_products, route-контексти та дані кожного динамічного блока; для власного HTML документує opt-in JSON shopcore.html-block-data.v1, ліміти та заборонені приватні дані.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classespublic, shop_internal
Side effects—
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: dynamic Confirmation: recommended

pages.blocks.update — Оновити блок

What it does: Частково оновлює блок сторінки, статті або головної блогу через ті самі schemas і validators, що й builder UI. Передайте рівно один page_id/article_id/blog_settings_id. Верхньорівневі ключі content зливаються з чинними, але repeater-поле (наприклад slides або items) замінюється цілим масивом, тому передавайте його повністю. Файли можна додати multipart-полями upload__shared__<field> або upload__translated__<lang>__<field> навіть без content; для однієї картинки простіше використовувати pages.blocks.media.set.

AccesswriteRiskdynamic
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscontent_changed, media_may_change
Additional AI safety context

What it touches: pages.blocks, storefront.layout

Decision rule: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Ризик залежить від полів і контенту; перевір параметри та обери найвужчий метод.
  • html_code не відкриває Python або сирий backend. Безпечний JSON для браузера з'являється лише через явно ввімкнені expose_* поля; не вмикай набори, які UI не використовує.
Preflight checks
  • pages.blocks.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • pages.blocks.catalog — Спочатку знайди стандартний блок та його schema; власний HTML використовуй лише коли готового UI немає. (before_block_design)
Safer path
  • Спочатку використай стандартний block provider; для власного UI ввімкни лише потрібні частини shopcore.html-block-data.v1 і врахуй ліміт товарів.
Input data (params)
{
  "type": "object",
  "properties": {
    "page_id": {
      "type": "integer",
      "minimum": 1
    },
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "blog_settings_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": [
    "block_id"
  ]
}
Result (data)
{
  "type": "object"
}

Блог (22)

Статті (10)

write Risk: medium Confirmation: recommended

blog.articles.copy — Створити копію статті

What it does: Створює чернетку статті з незалежними копіями всіх активних блоків та assets; рекомендовано перед широким редизайном статті.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_article_copy_created, block_assets_copied
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Копія статті є чернеткою і фізично копіює assets блоків, тому збільшує використання сховища.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для вузької зміни одного блока створи лише snapshot цього блока.
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "title": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.articles.create — Створити статтю блогу

What it does: Створює незалежну статтю без технічної Page та 9 стартових блоків із українським текстом-рибою. Перший блок — штатний hero_centered: він містить shop-scoped картинку, заголовок із назви створюваної статті та підзаголовок з excerpt або тексту-підказки. Коли цей маркований блок стоїть першим, окрема штатна шапка матеріалу перед ним не рендериться — обкладинка є справжнім першим екраном і єдиним H1. Автоматичний шаблон не заповнює поле BlogArticle.cover, тому весь стартовий матеріал можна видалити як звичайні блоки й отримати чисту статтю. За замовчуванням це чернетка. Спочатку прочитайте pages.blocks.list з article_id, замініть текст-рибу та налаштування через pages.blocks.update або видаліть непотрібні блоки; додаткові блоки — pages.blocks.create. Перед публікацією замініть картинку першого hero_centered через multipart pages.blocks.update, передавши файл у полі upload__shared__background_image, і перевірте його заголовок та підзаголовок. Переклад контенту блоків uk, для інших мов додайте переклади блоків. Не публікуйте текст-рибу як готовий матеріал. Окремі поля статті cover та og_image, якщо вони свідомо потрібні поза стартовим блоковим шаблоном, як і раніше підтримують multipart та blog.articles.media.set/delete. Копіювання через blog.articles.copy переносить лише блоки й медіа оригіналу без домішування стартового макета.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modulesblog
Data classesshop_internal
Side effectsblog_article_created, starter_blocks_created, starter_block_media_created
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

blog.articles.delete — Видалити статтю блогу

What it does: М'яко видаляє статтю на 14 днів; URL одразу зникає. Її блоки й assets фізично зберігаються, а стан блоків у кошику не змінюється.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_article_soft_deleted, blog_url_removed
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

blog.articles.get — Дані статті блогу

What it does: Повертає метадані, SEO, переклади й посилання на спільний API блоків статті.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "include_deleted": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

blog.articles.list — Статті блогу

What it does: Повертає статті поточного магазину з boolean-статусом is_published, категорією, тегами та кількістю блоків. Підтримує ті самі базові фільтри, що й публічний блог: query, category_id і tag_id.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Input data (params)
{
  "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_published": {
      "type": "boolean"
    },
    "category_id": {
      "type": "integer",
      "minimum": 1
    },
    "tag_id": {
      "type": "integer",
      "minimum": 1
    },
    "include_deleted": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.articles.media.delete — Видалити зображення статті

What it does: Очищає лише вибране поле cover або og_image і видаляє його старий файл. Текст, блоки та інше зображення статті не змінюються.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_article_media_deleted, media_file_deleted
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "target": {
      "type": "string",
      "enum": [
        "cover",
        "og_image"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id",
    "target"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.articles.media.set — Завантажити зображення статті

What it does: Завантажує обкладинку cover або SEO-зображення og_image статті. Надішліть multipart/form-data: method, params_json, options_json і файл; назва файлового поля за замовчуванням file та може бути змінена параметром file_field.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_article_media_changed, old_media_file_deleted
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "target": {
      "type": "string",
      "enum": [
        "cover",
        "og_image"
      ]
    },
    "file_field": {
      "type": "string",
      "default": "file"
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id",
    "target"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: low

blog.articles.restore — Відновити статтю блогу

What it does: Відновлює статтю, якщо її URL ще вільний. Окремо видалені блоки не відновлюються автоматично — для них використайте pages.blocks.restore.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_article_restored
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.articles.update — Оновити статтю блогу

What it does: Частково оновлює метадані, SEO, категорію й теги статті; блоки не змінює. У multipart-запиті можна передати поля cover та og_image; для окремої роботи із зображеннями використовуйте blog.articles.media.set/delete.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_article_changed, blog_url_may_change, seo_may_change
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.articles.visibility.set — Статус публікації статті

What it does: Вузько перемикає boolean is_published: false лишає статтю чернеткою, true публікує зараз. Відкладеного статусу немає.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_article_visibility_changed
Additional AI safety context

What it touches: blog.articles, pages.blocks, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.articles.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "article_id": {
      "type": "integer",
      "minimum": 1
    },
    "is_published": {
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "required": [
    "article_id",
    "is_published"
  ]
}
Result (data)
{
  "type": "object"
}

Категорії й теги (8)

write Risk: low

blog.categories.create — Створити категорію блогу

What it does: Створює shop-scoped категорію; URL автоматично унікалізується серед активних і видалених записів.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_category_created
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.categories.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

blog.categories.delete — Видалити категорію блогу

What it does: М'яко видаляє категорію; статті зберігаються і втрачають категорію лише після фінального очищення.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_category_soft_deleted
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.categories.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "category_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

blog.categories.list — Категорії блогу

What it does: Повертає категорії лише поточного магазину.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Input data (params)
{
  "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_deleted": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.categories.update — Оновити категорію блогу

What it does: Частково оновлює категорію поточного магазину.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_category_changed, blog_urls_may_change
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.categories.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "category_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: low

blog.tags.create — Створити тег блогу

What it does: Створює shop-scoped тег; тег за замовчуванням noindex.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_tag_created
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.tags.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "title"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

blog.tags.delete — Видалити тег блогу

What it does: М'яко видаляє тег; статті не видаляються.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_tag_soft_deleted
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.tags.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "tag_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "tag_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

blog.tags.list — Теги блогу

What it does: Повертає теги лише поточного магазину.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Input data (params)
{
  "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_deleted": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.tags.update — Оновити тег блогу

What it does: Частково оновлює тег поточного магазину.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_tag_changed, blog_urls_may_change
Additional AI safety context

What it touches: blog.taxonomy, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.tags.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "tag_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "tag_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}

Налаштування блогу (4)

read Risk: low

blog.settings.get — Налаштування блогу

What it does: Повертає глобальні налаштування блогу. Модуль за замовчуванням вимкнений; власник вмикає його в налаштуваннях сайту. Єдиний запис налаштувань блогу з'являється там само, а у вкладці Блог лишається контент.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: blog.settings, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: low

blog.settings.listing.update — Налаштувати список статей

What it does: Вузький сумісний шлюз до властивостей блока blog_grid головної сторінки: pagination/infinite, сітка від 1x1 до 5x5, повна сітка або власна кількість статей у порції, показ фільтрів зверху чи в сайдбарі. Для повного керування включно з дизайном використовуйте pages.blocks.* з blog_settings_id.

AccesswriteRisklow
ConfirmationnoneIdempotencysupported
Required modulesblog
Data classesshop_internal
Side effectsblog_listing_changed
Additional AI safety context

What it touches: blog.settings, storefront.routing, seo

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "listing_mode": {
      "type": "string",
      "enum": [
        "pagination",
        "infinite"
      ]
    },
    "grid_size": {
      "type": "string",
      "enum": [
        "1x1",
        "2x2",
        "3x3",
        "4x4",
        "5x5"
      ]
    },
    "article_count_mode": {
      "type": "string",
      "enum": [
        "full_grid",
        "custom"
      ]
    },
    "articles_count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "show_filters": {
      "type": "boolean"
    },
    "filters_position": {
      "type": "string",
      "enum": [
        "top",
        "sidebar"
      ]
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

blog.settings.update — Оновити налаштування блогу

What it does: Оновлює назву, опис, автора за замовчуванням і SEO блогу. Сітка, фільтри та спосіб завантаження є властивостями блока blog_grid і змінюються через pages.blocks.update або вузький blog.settings.listing.update.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesblog
Data classesshop_internal
Side effectsblog_listing_changed, seo_changed
Additional AI safety context

What it touches: blog.settings, storefront.routing, seo

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

blog.settings.url_prefix.set — Змінити URL-частину блогу

What it does: Змінює перший сегмент усіх публічних URL блогу для поточного магазину. Наприклад, blog на news змінює /blog/article/ на /news/article/. Старий префікс зберігається як 301 redirect alias; після зміни перевірте ручні посилання в меню.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencysupported
Required modulesblog
Data classesshop_internal
Side effectsall_blog_public_urls_changed, old_blog_prefix_redirect_added, seo_urls_changed, manual_navigation_links_may_need_update
Additional AI safety context

What it touches: blog.settings, storefront.routing, seo

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Блог ізольований магазином: ніколи не підставляй category/tag/article id з іншого магазину; API додатково перевіряє shop.
Preflight checks
  • blog.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "url_prefix": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[a-z0-9]+(?:[-_][a-z0-9]+)*$",
      "description": "Один незарезервований URL-сегмент латиницею без слешів."
    }
  },
  "additionalProperties": false,
  "required": [
    "url_prefix"
  ]
}
Result (data)
{
  "type": "object"
}

Налаштування (17)

Магазин (10)

read Risk: low

settings.catalog.get — Налаштування каталогу

What it does: Повертає чинні параметри показу дочірніх товарів і фільтрації варіацій.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: shop.settings

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

settings.catalog.update — Оновити налаштування каталогу

What it does: Частково змінює два чинні каталожні тумблери через helper налаштувань.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscatalog_behavior_changed
Additional AI safety context

What it touches: shop.settings

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • settings.catalog.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: dynamic Confirmation: recommended

settings.company.update — Оновити реквізити компанії

What it does: Частково оновлює назву, email, ЄДРПОУ, IBAN, додаткову інформацію та переклади. Ідентифікаційні й банківські дані потребують явного підтвердження.

AccesswriteRiskdynamic
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal, financial
Side effectslegal_or_contact_details_changed
Additional AI safety context

What it touches: shop.settings

Decision rule: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Ризик залежить від полів і контенту; перевір параметри та обери найвужчий метод.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
Preflight checks
  • settings.profile.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

settings.languages.base.set — Задати базову мову

What it does: Змінює базову мову через чинний helper сторінки налаштувань і прибирає її з додаткових.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectspublic_url_language_policy_changed
Additional AI safety context

What it touches: shop.settings

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • settings.languages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "code"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

settings.languages.extra.set — Увімкнути додаткову мову

What it does: Вмикає або вимикає додаткову мову через чинний helper налаштувань.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsstore_languages_changed
Additional AI safety context

What it touches: shop.settings

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • settings.languages.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "additionalProperties": false,
  "required": [
    "code",
    "enabled"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

settings.languages.get — Мови магазину

What it does: Повертає базову, увімкнені й доступні мови магазину.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: shop.settings

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
read Risk: low

settings.modules.get — Стани модулів

What it does: Повертає тумблери модулів і тарифні стани з чинного serializer налаштувань.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: shop.settings

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

settings.modules.set — Увімкнути або вимкнути модуль

What it does: Змінює один чинний module toggle через існуючу тарифну та складську перевірку. Вимкнення AI заблокує наступні виклики цього токена.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsmodule_access_changed, warehouse_reset_may_be_enqueued
Additional AI safety context

What it touches: shop.settings

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • settings.modules.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

settings.profile.get — Профіль налаштувань

What it does: Повертає безпечний зріз базових, каталожних, модульних, мовних і компанійних налаштувань без паролів, токенів та секретів.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: shop.settings

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: low

settings.site_name.update — Змінити назву сайту

What it does: Змінює назву сайту через той самий валідатор поля, який використовує сторінка налаштувань.

AccesswriteRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectssite_identity_changed
Additional AI safety context

What it touches: shop.settings

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
Preflight checks
  • settings.profile.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "site_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    }
  },
  "additionalProperties": false,
  "required": [
    "site_name"
  ]
}
Result (data)
{
  "type": "object"
}

Домен (2)

read Risk: medium

domain.settings.get — Налаштування домену

What it does: Повертає домен, DNS/TLS-статус, очікувані IP, помилку перевірки та обов'язкове пояснення DNS propagation: навіть після status=active старий сайт може бути видимим на окремих пристроях до завершення TTL — після зміни DNS це може тривати до 48 годин.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal, contact
Side effects—
Additional AI safety context

What it touches: shop.domain, dns, tls, public_routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: contact. Не передавай їх поза завданням.
  • Зміна домену впливає на DNS, TLS-сертифікат, canonical URL та доступність storefront.
  • Навіть після status=active окремий пристрій або провайдер може до завершення DNS TTL — до 48 годин після зміни A-записів або DNS-серверів — показувати попередній сайт; це нормальне поширення DNS.
Preflight checks
  • domain.settings.get — Перевір status, resolved_ips і dns_target_ips; окремо звір root та www, реєстрове NS-делегування, нові авторитетні DNS і кілька публічних резолверів. (before_reporting_domain_failure)
Safer path
  • Спочатку збережи домен із connect_requested=false і перевір DNS-налаштування.
  • Якщо status=active і публічні DNS уже вказують на Hive, поясни TTL користувачу та дочекайся завершення кешу замість повторної конфігурації.
Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

domain.settings.update — Оновити домен

What it does: Частково змінює домен, email для Let's Encrypt і стан підключення через чинний save_domain_settings_from_user(); DNS/SSL обробляються наявним фоновим процесом. Після status=active агент має пояснити, що DNS-кеш окремих провайдерів або пристроїв може ще до 48 годин показувати попередній сайт.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencysupported
Required modules—
Data classesshop_internal, contact
Side effectspublic_domain_changed, dns_and_tls_workflow_changed, old_domain_runtime_may_be_cleaned
Additional AI safety context

What it touches: shop.domain, dns, tls, public_routing

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: contact. Не передавай їх поза завданням.
  • Зміна домену впливає на DNS, TLS-сертифікат, canonical URL та доступність storefront.
  • Навіть після status=active окремий пристрій або провайдер може до завершення DNS TTL — до 48 годин після зміни A-записів або DNS-серверів — показувати попередній сайт; це нормальне поширення DNS.
Preflight checks
  • domain.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • domain.settings.get — Перевір status, resolved_ips і dns_target_ips; окремо звір root та www, реєстрове NS-делегування, нові авторитетні DNS і кілька публічних резолверів. (before_reporting_domain_failure)
Safer path
  • Спочатку збережи домен із connect_requested=false і перевір DNS-налаштування.
  • Якщо status=active і публічні DNS уже вказують на Hive, поясни TTL користувачу та дочекайся завершення кешу замість повторної конфігурації.
Input data (params)
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 253
    },
    "certificate_email": {
      "type": "string",
      "maxLength": 254
    },
    "connect_requested": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}

Дизайн (2)

read Risk: low

design.theme.get — Дизайн теми

What it does: Повертає активну тему, кольори, системні шрифти, ваги, розміри та власні font groups без бінарних даних.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: storefront.theme

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

design.theme.update — Оновити дизайн теми

What it does: Частково змінює дозволені кольори, стандартні шрифти, ваги, розміри та radius через ThemeUserSettings.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectssite_design_changed
Additional AI safety context

What it touches: storefront.theme

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • design.theme.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}

SEO (3)

read Risk: low

seo.audit — SEO-аудит

What it does: Викликає чинний build_seo_audit(shop): score, секції, лічильники та рекомендації.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: seo, search_indexing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
read Risk: low

seo.settings.get — SEO-налаштування

What it does: Повертає глобальні SEO-поля магазину та URL OG-зображення.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: seo, search_indexing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: dynamic Confirmation: recommended

seo.settings.update — Оновити SEO

What it does: Частково оновлює глобальні SEO-поля. Увімкнення або вимкнення індексації вимагає підтвердження.

AccesswriteRiskdynamic
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectssearch_indexing_or_metadata_changed
Additional AI safety context

What it touches: seo, search_indexing

Decision rule: Оціни фактичні поля; для HTML, секретів, індексації чи широкої зміни отримай явне підтвердження.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Ризик залежить від полів і контенту; перевір параметри та обери найвужчий метод.
Preflight checks
  • seo.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}

Продажі (33)

Замовлення (11)

write Risk: high Confirmation: required

orders.cancel — Скасувати замовлення

What it does: Викликає Order.cancel_order(): скасовує замовлення і звільняє складський резерв; reason записується лише якщо передано author_user_id.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effectsstock_released, order_cancelled
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    },
    "reason": {
      "type": "string"
    },
    "author_user_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

orders.comment.add — Додати коментар до замовлення

What it does: Додає внутрішній коментар від конкретного працівника магазину; автор задається явно, щоб журнал не приписував AI чужу особу.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effectsorder_comment_created
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

orders.confirm — Підтвердити замовлення

What it does: Викликає Order.confirm_order(): підтверджує, резервує склад і ставить клієнтський email у чергу.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effectsstock_reserved, customer_email_enqueued
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

orders.documents.generate — Згенерувати документи

What it does: Викликає чинний Order.prepare_docs() для рахунку та видаткової накладної.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsinvoice_and_waybill_generated
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

orders.documents.mark_sent — Позначити документи відправленими

What it does: Викликає чинний Order.doc_send().

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsdocument_state_changed
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

orders.fiscalization.mark — Позначити фіскалізованим

What it does: Викликає Order.order_fiscalized(check_link) і ставить лист із чеком у чергу.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsfiscalization_state_changed, customer_email_enqueued
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    },
    "check_link": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id",
    "check_link"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

orders.fulfillment.pack — Позначити запакованим

What it does: Викликає Order.order_pack() і ставить клієнтський email у чергу.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectspacking_state_changed, customer_email_enqueued
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

orders.fulfillment.ship — Позначити відправленим

What it does: Викликає Order.order_send(ttn), синхронізує ТТН у чинній OrderDelivery і ставить email у чергу.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsshipping_state_changed, customer_email_enqueued
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    },
    "ttn": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id",
    "ttn"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

orders.get — Дані замовлення

What it does: Повертає повне замовлення: товари, суму, доставку, оплату, статуси, документи та внутрішні коментарі.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii, financial
Side effects—
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii, financial. Не передавай їх поза завданням.
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

orders.list — Список замовлень

What it does: Повертає замовлення з пошуком, джерелом і окремими status-фільтрами; містить контактні дані клієнтів.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii, financial
Side effects—
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii, financial. Не передавай їх поза завданням.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

orders.payment.mark_paid — Позначити оплаченим

What it does: Викликає Order.order_paid(): фіксує оплату, резервує склад і ставить email у чергу.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effectspayment_state_changed, stock_reserved, customer_email_enqueued
Additional AI safety context

What it touches: orders, customers, stock

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • orders.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "order_id"
  ]
}
Result (data)
{
  "type": "object"
}

Оплати (3)

read Risk: medium

payments.settings.get — Налаштування методу оплати

What it does: Повертає один платіжний провайдер і його безпечну конфігурацію; секрет показується лише як secret_configured. Для code=wayforpay поле integration містить custom_domain_ready, причину блокування без власного домену, чинний Service URL після підключення та повну послідовність налаштування.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesfinancial, shop_internal
Side effects—
Additional AI safety context

What it touches: checkout.payments, payment_configuration

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
  • Секрети приймаються лише як вхідні дані й ніколи не повертаються у відповіді або журналі.
  • Для code=wayforpay спочатку перевір integration.custom_domain_ready. Якщо false, confirmation_url=null: підключи власний домен і не використовуй технічний URL як Service URL.
  • Коли custom_domain_ready=true, обов'язково перенеси integration.confirmation_url у поле Service URL кабінету WayForPay; без callback Shopcore не підтвердить оплату.
  • WayForPay testMode=true передає ціну кожного товарного рядка і платної доставки як 1; перед production-активацією встанови false.
  • Після зміни активного домену confirmation_url зміниться — Service URL у кабінеті WayForPay також треба оновити.
Safer path
  • Спочатку налаштуй метод вимкненим, перевір власний домен через domain.settings.get, прочитай payments.settings.get, перенеси Service URL, перевір тестову оплату й лише потім активуй.
Input data (params)
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "enum": [
        "wayforpay",
        "bank_personal",
        "bank_business",
        "cash"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "code"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

payments.settings.list — Налаштування оплат

What it does: Повертає всі зареєстровані платіжні провайдери, checkout-представлення і стан налаштувань без secret_key. Для WayForPay також повертає custom_domain_ready і точний confirmation_url для поля Service URL лише після підключення власного домену, порядок налаштування, поведінку testMode і результат callback.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesfinancial, shop_internal
Side effects—
Additional AI safety context

What it touches: checkout.payments, payment_configuration

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
  • Секрети приймаються лише як вхідні дані й ніколи не повертаються у відповіді або журналі.
  • Для code=wayforpay спочатку перевір integration.custom_domain_ready. Якщо false, confirmation_url=null: підключи власний домен і не використовуй технічний URL як Service URL.
  • Коли custom_domain_ready=true, обов'язково перенеси integration.confirmation_url у поле Service URL кабінету WayForPay; без callback Shopcore не підтвердить оплату.
  • WayForPay testMode=true передає ціну кожного товарного рядка і платної доставки як 1; перед production-активацією встанови false.
  • Після зміни активного домену confirmation_url зміниться — Service URL у кабінеті WayForPay також треба оновити.
Safer path
  • Спочатку налаштуй метод вимкненим, перевір власний домен через domain.settings.get, прочитай payments.settings.get, перенеси Service URL, перевір тестову оплату й лише потім активуй.
Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

payments.settings.update — Оновити метод оплати

What it does: Частково оновлює налаштування зареєстрованого платіжного provider через чинні моделі та full_clean(). secret_key можна передати для WayForPay, але він не повертається у відповіді або журналі. confirmation_url є обчислюваним read-only полем: його не передають у patch. Копіювати його з after.integration.confirmation_url до Service URL можна лише коли custom_domain_ready=true; технічний домен для production не використовують.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesfinancial, secret_input
Side effectscheckout_payment_options_changed, payment_credentials_may_change
Additional AI safety context

What it touches: checkout.payments, payment_configuration

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: financial, secret_input. Не передавай їх поза завданням.
  • Секрети приймаються лише як вхідні дані й ніколи не повертаються у відповіді або журналі.
  • Для code=wayforpay спочатку перевір integration.custom_domain_ready. Якщо false, confirmation_url=null: підключи власний домен і не використовуй технічний URL як Service URL.
  • Коли custom_domain_ready=true, обов'язково перенеси integration.confirmation_url у поле Service URL кабінету WayForPay; без callback Shopcore не підтвердить оплату.
  • WayForPay testMode=true передає ціну кожного товарного рядка і платної доставки як 1; перед production-активацією встанови false.
  • Після зміни активного домену confirmation_url зміниться — Service URL у кабінеті WayForPay також треба оновити.
  • Зміна впливає на варіанти оплати в checkout і може змінити платіжні реквізити.
Preflight checks
  • payments.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Спочатку налаштуй метод вимкненим, перевір власний домен через domain.settings.get, прочитай payments.settings.get, перенеси Service URL, перевір тестову оплату й лише потім активуй.
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}

Клієнти (5)

read Risk: medium

customers.get — Дані клієнта

What it does: Повертає профіль користувача магазину й останні замовлення.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii, financial
Side effects—
Additional AI safety context

What it touches: customers

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii, financial. Не передавай їх поза завданням.
Input data (params)
{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "customer_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

customers.list — Список клієнтів і працівників

What it does: Повертає користувачів магазину з ролями; потрібний, зокрема, для явного author_user_id у внутрішніх коментарях.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effects—
Additional AI safety context

What it touches: customers

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

customers.update — Оновити профіль клієнта

What it does: Частково змінює контактні дані й активність профілю; паролі, права та ролі не доступні.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effectscustomer_profile_changed
Additional AI safety context

What it touches: customers

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
Preflight checks
  • customers.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "customer_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

subscribers.delete — Видалити підписника

What it does: Видаляє email із підписок магазину.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effectssubscriber_deleted
Additional AI safety context

What it touches: customers

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
Input data (params)
{
  "type": "object",
  "properties": {
    "subscriber_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "subscriber_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

subscribers.list — Підписники розсилки

What it does: Повертає email-підписників магазину.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effects—
Additional AI safety context

What it touches: customers

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}

Відгуки (6)

write Risk: high Confirmation: required

reviews.delete — Видалити відгук

What it does: Безповоротно видаляє відгук і перераховує рейтинг товару. Для спаму й небажаних відгуків спершу розглянь reviews.moderate зі status=rejected: запис зникає з сайту, але лишається в історії.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effectsreview_deleted, product_rating_recalculated
Additional AI safety context

What it touches: reviews, product_rating

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
Preflight checks
  • reviews.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "review_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "review_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

reviews.get — Дані відгуку

What it does: Повертає один відгук магазину з повним текстом, статусом модерації, нотаткою модератора й даними підтвердженої покупки.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effects—
Additional AI safety context

What it touches: reviews, product_rating

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
Input data (params)
{
  "type": "object",
  "properties": {
    "review_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "review_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

reviews.list — Список відгуків

What it does: Повертає відгуки магазину з фільтрами за статусом модерації (pending/published/rejected), товаром, оцінкою, підтвердженою покупкою й текстом. За замовчуванням спочатку ті, що чекають модерації. status_counts показує кількість за статусами з урахуванням інших фільтрів. Містить email авторів.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effects—
Additional AI safety context

What it touches: reviews, product_rating

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
Input data (params)
{
  "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": [
        "pending",
        "published",
        "rejected",
        "all"
      ],
      "default": "all"
    },
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "rating": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "verified_purchase": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

reviews.moderate — Модерувати відгуки

What it does: Змінює статус модерації одного або до 100 відгуків: published — показати на сайті й врахувати в рейтингу, rejected — приховати (запис лишається, спам краще відхиляти, а не видаляти), pending — повернути на перевірку. Рейтинг кожного зачепленого товару перераховується. note зберігається як внутрішня нотатка модератора.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classescustomer_pii
Side effectsreview_status_changed, storefront_reviews_changed, product_rating_recalculated
Additional AI safety context

What it touches: reviews, product_rating

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
Preflight checks
  • reviews.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "review_id": {
      "type": "integer",
      "minimum": 1
    },
    "review_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1
      },
      "minItems": 1,
      "maxItems": 100,
      "uniqueItems": true
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "published",
        "rejected"
      ]
    },
    "note": {
      "type": "string",
      "maxLength": 1000,
      "description": "Внутрішня нотатка модератора; покупцю не показується."
    }
  },
  "additionalProperties": false,
  "required": [
    "status"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

reviews.settings.get — Налаштування відгуків

What it does: Повертає налаштування відгуків і питань магазину: головний вимикач reviews_enabled (без нього блок відгуків не рендериться, питання теж неактивні), хто може писати відгуки та питання, режим публікації (immediate/moderated) і чи увімкнено питання. effective показує, чи сайт зараз реально приймає відгуки й питання з урахуванням модуля «Кабінет користувача».

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: reviews, product_rating

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

reviews.settings.update — Змінити налаштування відгуків

What it does: Частково змінює налаштування відгуків і питань. Політики registered і purchased доступні лише з увімкненим модулем «Кабінет користувача». Зміна publication_mode діє лише на нові відгуки й питання; черга pending автоматично не публікується. reviews_enabled=false прибирає блок відгуків із сайту й зупиняє прийом відгуків і питань (опубліковані дані не видаляються).

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsstorefront_feedback_rules_changed
Additional AI safety context

What it touches: reviews, product_rating

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • reviews_enabled=false прибирає блок відгуків із сайту й зупиняє прийом відгуків і питань.
  • Політики registered і purchased працюють лише з увімкненим модулем «Кабінет користувача».
Preflight checks
  • reviews.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "reviews_enabled": {
      "type": "boolean"
    },
    "review_author_policy": {
      "type": "string",
      "enum": [
        "anyone",
        "registered",
        "purchased"
      ]
    },
    "questions_enabled": {
      "type": "boolean"
    },
    "question_author_policy": {
      "type": "string",
      "enum": [
        "anyone",
        "registered",
        "purchased"
      ]
    },
    "publication_mode": {
      "type": "string",
      "enum": [
        "immediate",
        "moderated"
      ]
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}

Питання про товари (8)

write Risk: high Confirmation: required

questions.delete — Видалити питання

What it does: Безповоротно видаляє питання разом з усією розмовою. Для спаму спершу розглянь questions.moderate зі status=rejected: питання зникне з сайту, але лишиться в історії.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effectsquestion_deleted, storefront_questions_changed
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
Preflight checks
  • questions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "question_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "question_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

questions.get — Питання з розмовою

What it does: Повертає питання разом з усією розмовою: повідомлення покупця й відповіді магазину з їхніми статусами модерації.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effects—
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
Input data (params)
{
  "type": "object",
  "properties": {
    "question_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "question_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

questions.list — Список питань про товари

What it does: Повертає питання покупців із фільтрами за статусом (pending/published/rejected/closed), товаром, наявністю відповіді магазину й текстом. Спочатку ті, що чекають модерації або мають нові повідомлення на перевірці. text — перше повідомлення, has_shop_answer і pending_messages допомагають знайти питання без відповіді. Містить email авторів.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effects—
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
Input data (params)
{
  "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": [
        "pending",
        "published",
        "rejected",
        "closed",
        "all"
      ],
      "default": "all"
    },
    "product_id": {
      "type": "integer",
      "minimum": 1
    },
    "answered": {
      "type": "boolean",
      "description": "true — є відповідь магазину, false — ще немає."
    },
    "has_pending_messages": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

questions.messages.delete — Видалити повідомлення в питанні

What it does: Безповоротно видаляє одне повідомлення з розмови (наприклад, помилкову відповідь магазину). Перше повідомлення — це саме питання, його видаляє questions.delete. Для спаму від покупця спершу розглянь questions.messages.moderate зі status=rejected.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effectsquestion_message_deleted, storefront_questions_changed
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
Preflight checks
  • questions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "message_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "message_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

questions.messages.moderate — Модерувати повідомлення в питаннях

What it does: Змінює статус окремих повідомлень у розмовах (до 100): published, rejected або pending. Перше повідомлення питання модерується разом із питанням через questions.moderate, тому тут воно не приймається.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classescustomer_pii
Side effectsquestion_message_status_changed, storefront_questions_changed
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
Preflight checks
  • questions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "message_id": {
      "type": "integer",
      "minimum": 1
    },
    "message_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1
      },
      "minItems": 1,
      "maxItems": 100,
      "uniqueItems": true
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "published",
        "rejected"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "status"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

questions.messages.update — Змінити відповідь магазину

What it does: Змінює текст однієї відповіді магазину. Повідомлення покупців змінювати не можна — їх можна лише модерувати.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsshop_answer_changed, storefront_questions_changed
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
Preflight checks
  • questions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "message_id": {
      "type": "integer",
      "minimum": 1
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000
    }
  },
  "additionalProperties": false,
  "required": [
    "message_id",
    "text"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

questions.moderate — Модерувати питання

What it does: Змінює статус одного або до 100 питань: published — показати на сторінці товару, rejected — приховати, pending — повернути на перевірку, closed — закрити розмову (питання лишається видимим, покупець більше не може писати). published і rejected застосовуються також до повідомлень покупця в цьому питанні, як у панелі модерації.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classescustomer_pii
Side effectsquestion_status_changed, storefront_questions_changed
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
Preflight checks
  • questions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "question_id": {
      "type": "integer",
      "minimum": 1
    },
    "question_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1
      },
      "minItems": 1,
      "maxItems": 100,
      "uniqueItems": true
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "published",
        "rejected",
        "closed"
      ]
    },
    "note": {
      "type": "string",
      "maxLength": 1000,
      "description": "Внутрішня нотатка модератора; покупцю не показується."
    }
  },
  "additionalProperties": false,
  "required": [
    "status"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

questions.reply — Відповісти на питання

What it does: Додає відповідь магазину в розмову; вона публікується одразу й видима на сторінці товару. Якщо питання ще чекає модерації, відповідь можлива лише з publish_question=true (питання й повідомлення покупця будуть опубліковані). close_after=true закриває розмову після відповіді. У закрите питання відповісти не можна.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classescustomer_pii
Side effectsshop_answer_published, storefront_questions_changed
Additional AI safety context

What it touches: product_questions, storefront.product

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: customer_pii. Не передавай їх поза завданням.
  • Містить персональні дані покупців (email): не розкривай їх без потреби й не передавай третім сторонам.
  • Зміна одразу впливає на те, що бачать покупці на сторінці товару.
  • Відповідь публікується одразу від імені магазину; перевір факти (наявність, ціну, терміни) перед відповіддю.
Preflight checks
  • questions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Для спаму й небажаних записів використовуй статус rejected через reviews.moderate / questions.moderate замість видалення.
Input data (params)
{
  "type": "object",
  "properties": {
    "question_id": {
      "type": "integer",
      "minimum": 1
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000
    },
    "publish_question": {
      "type": "boolean",
      "default": false
    },
    "close_after": {
      "type": "boolean",
      "default": false
    }
  },
  "additionalProperties": false,
  "required": [
    "question_id",
    "text"
  ]
}
Result (data)
{
  "type": "object"
}

Операції (49)

Склад (12)

read Risk: medium

warehouse.history.report — Склад на дату

What it does: Будує пагінований історичний звіт через чинний build_stock_history_page().

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesfinancial
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

warehouse.movements.list — Рухи складу

What it does: Повертає незмінюваний журнал складських рухів з фільтрами товару й типу.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesfinancial, shop_internal
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
read Risk: medium

warehouse.purchases.get — Дані закупівлі

What it does: Повертає закупівлю та її товарні партії.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesfinancial
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
Input data (params)
{
  "type": "object",
  "properties": {
    "purchase_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "purchase_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

warehouse.purchases.list — Список закупівель

What it does: Повертає закупівлі, їх етап, суми та стан синхронізації.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesfinancial
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

warehouse.purchases.sync — Синхронізувати закупівлю

What it does: Викликає чинний request_purchase_sync(); залежно від обсягу виконує роботу одразу або через Celery.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required moduleswarehouse
Data classesfinancial
Side effectsphysical_stock_rows_rebuilt, background_task_may_start
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Метод працює з чутливими класами даних: financial. Не передавай їх поза завданням.
Preflight checks
  • warehouse.purchases.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "purchase_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "purchase_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

warehouse.revisions.create — Створити ревізію

What it does: Створює чернетку ревізії й рахує system_qty кожного рядка через available_stock_count().

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required moduleswarehouse
Data classesshop_internal
Side effectsstock_revision_draft_created
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Проведення ревізії створює складські рухи та змінює фактичні залишки.
Preflight checks
  • warehouse.revisions.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write)
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

warehouse.revisions.get — Дані ревізії

What it does: Повертає ревізію і всі її товарні рядки.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Проведення ревізії створює складські рухи та змінює фактичні залишки.
Input data (params)
{
  "type": "object",
  "properties": {
    "revision_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "revision_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

warehouse.revisions.list — Список ревізій

What it does: Повертає складські ревізії та їх фоновий стан.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Проведення ревізії створює складські рухи та змінює фактичні залишки.
Preflight checks
  • warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write)
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

warehouse.revisions.post — Провести ревізію

What it does: Викликає чинний request_stock_revision_post(); операція може виконатися синхронно або перейти в Celery.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effectsstock_quantities_changed, stock_movements_created, background_task_may_start
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Проведення ревізії створює складські рухи та змінює фактичні залишки.
Preflight checks
  • warehouse.revisions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "revision_id": {
      "type": "integer",
      "minimum": 1
    },
    "author_user_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "revision_id",
    "author_user_id"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

warehouse.revisions.update — Оновити чернетку ревізії

What it does: Замінює рядки лише чернетки ревізії та заново фіксує system_qty через наявний сервіс залишку.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencysupported
Required moduleswarehouse
Data classesshop_internal
Side effectsstock_revision_draft_replaced
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Проведення ревізії створює складські рухи та змінює фактичні залишки.
Preflight checks
  • warehouse.revisions.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
  • warehouse.stock.list — Звір поточний точний залишок перед формуванням fact_qty. (before_revision_write)
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

warehouse.stock.list — Залишки товарів

What it does: Повертає кешований залишок SKU та, за потреби, точний доступний залишок із чинного available_stock_count().

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
read Risk: low

warehouse.summary — Огляд складу

What it does: Повертає кількість SKU, доступних одиниць, чернеток ревізій і незавершених складських операцій.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required moduleswarehouse
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: warehouse, stock_movements

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}

Доставка (7)

read Risk: low

shipping.methods.list — Методи доставки

What it does: Повертає публічні увімкнені методи та розраховану вартість. Для відсоткової ціни й порога передайте order_amount — суму товарів без доставки.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: checkout.shipping, shipping_configuration

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "order_amount": {
      "type": "number",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
read Risk: low

What it does: Викликає чинний cached search_cities() з обмеженням результатів.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: checkout.shipping, shipping_configuration

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "additionalProperties": false,
  "required": [
    "query"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

shipping.nova_poshta.warehouses.list — Відділення Нової пошти

What it does: Викликає чинний cached get_warehouses() за city_ref, settlement_ref або city_name.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: checkout.shipping, shipping_configuration

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

shipping.settings.create — Створити метод доставки

What it does: Створює ще один екземпляр courier, post або self_pickup лише в магазині токена. У patch можна передати is_paid, price_mode=fixed|order_percent, price_value і free_from_order_amount.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modules—
Data classesshop_internal
Side effectscheckout_shipping_option_created
Additional AI safety context

What it touches: checkout.shipping, shipping_configuration

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Зміна впливає на варіанти доставки та поля, які побачить покупець у checkout.
Preflight checks
  • shipping.settings.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Спочатку збережи метод вимкненим або перевір його поточний settings snapshot.
Input data (params)
{
  "type": "object",
  "properties": {
    "provider_code": {
      "type": "string",
      "enum": [
        "courier",
        "post",
        "self_pickup"
      ]
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "provider_code"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

shipping.settings.delete — Видалити метод доставки

What it does: Видаляє конкретний courier, post або self_pickup за кодом provider:id. Старі замовлення зберігають snapshot назви й адреси.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscheckout_shipping_option_deleted
Additional AI safety context

What it touches: checkout.shipping, shipping_configuration

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
  • Зміна впливає на варіанти доставки та поля, які побачить покупець у checkout.
Preflight checks
  • shipping.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Спочатку збережи метод вимкненим або перевір його поточний settings snapshot.
Input data (params)
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "code"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

shipping.settings.get — Налаштування доставки

What it does: Повертає всі екземпляри методів доставки, їх публічні коди, поля checkout і переклади.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: checkout.shipping, shipping_configuration

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Potential hazards
  • Зміна впливає на варіанти доставки та поля, які побачить покупець у checkout.
Safer path
  • Спочатку збережи метод вимкненим або перевір його поточний settings snapshot.
Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

shipping.settings.update — Оновити метод доставки

What it does: Оновлює конкретний shop-scoped метод. Для courier, post і self_pickup передавай точний код виду provider:id; required_fields мають бути підмножиною show_fields. Платність задають is_paid, price_mode=fixed|order_percent, price_value та необов’язковий free_from_order_amount.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectscheckout_shipping_options_changed, checkout_shipping_price_changed
Additional AI safety context

What it touches: checkout.shipping, shipping_configuration

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • Зміна впливає на варіанти доставки та поля, які побачить покупець у checkout.
Preflight checks
  • shipping.settings.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Safer path
  • Спочатку збережи метод вимкненим або перевір його поточний settings snapshot.
Input data (params)
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string"
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "translations": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "required": [
    "code",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}

Імпорт та експорт (20)

read Risk: medium

exchange.auto_import.get — Стан автоматичного імпорту

What it does: Повертає активність, графік, політику дублікатів і managed_fields автоімпорту без повного source URL. Використовуй перед ручним оновленням товарів, щоб побачити, які поля може перетерти наступний запуск.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
  • managed_fields — консервативний список полів, які наступний автоімпорт може оновити.
Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.catalog — Можливості імпорту й експорту

What it does: Повертає системні пресети, field registries, трансформації та marketplace providers із чинних registry-функцій.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

exchange.export_presets.create — Створити експортний пресет

What it does: Створює пресет і колонки, перевіряючи поля та transforms чинними registry validators.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modulesimport_export
Data classesshop_internal
Side effectsexport_preset_created
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • exchange.export_presets.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "columns": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "data",
    "columns"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

exchange.export_presets.delete — Видалити експортний пресет

What it does: Видаляє кастомний пресет, колонки й пов'язані data gateways каскадно.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectsexport_preset_and_gateways_deleted
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • exchange.export_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "preset_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "preset_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.export_presets.get — Дані експортного пресету

What it does: Повертає кастомний експортний пресет і колонки через get_runtime_custom_preset().

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "preset_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "preset_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.export_presets.list — Експортні пресети

What it does: Повертає системні й кастомні експортні пресети через чинні serializers.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

exchange.export_presets.update — Оновити експортний пресет

What it does: Частково оновлює пресет і атомарно замінює колонки через чинні validators.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectsexport_preset_changed
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • exchange.export_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

exchange.gateways.create — Створити data gateway

What it does: Створює публічний gateway через DataGateway.clean() і необов'язковий IP allowlist.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectspublic_export_endpoint_created
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • exchange.gateways.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "allowed_ips": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "data"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

exchange.gateways.delete — Видалити data gateway

What it does: Видаляє публічний data gateway та IP allowlist.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectspublic_export_endpoint_deleted
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • exchange.gateways.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "gateway_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "gateway_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.gateways.get — Дані data gateway

What it does: Повертає один публічний data gateway.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "gateway_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "gateway_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.gateways.list — Публічні data gateways

What it does: Повертає публічні URL експорту, джерела пресетів і IP allowlist.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

exchange.gateways.update — Оновити data gateway

What it does: Частково оновлює gateway і за потреби атомарно замінює IP allowlist.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectspublic_export_endpoint_changed
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • exchange.gateways.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

exchange.import_presets.create — Створити імпортний пресет

What it does: Створює імпортний пресет і колонки, перевіряючи target fields і transforms чинними registry validators.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencysupported
Required modulesimport_export
Data classesshop_internal
Side effectsimport_preset_created
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • exchange.import_presets.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    },
    "columns": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": false,
  "required": [
    "data",
    "columns"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

exchange.import_presets.delete — Видалити імпортний пресет

What it does: Видаляє кастомний імпортний пресет і його колонки.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectsimport_preset_deleted
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • exchange.import_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "preset_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "preset_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.import_presets.get — Дані імпортного пресету

What it does: Повертає кастомний імпортний пресет і колонки через get_runtime_custom_import_preset().

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "preset_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "preset_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.import_presets.list — Імпортні пресети

What it does: Повертає системні й кастомні імпортні пресети через чинний payload builder.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

exchange.import_presets.update — Оновити імпортний пресет

What it does: Частково оновлює пресет і атомарно замінює колонки через чинні validators.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectsimport_preset_changed
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • exchange.import_presets.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "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"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

exchange.operations.cancel — Скасувати операцію обміну

What it does: Скасовує активну Celery-задачу, якщо вона є, і завершує операцію через чинний cancel_exchange_operation().

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effectsbackground_task_revoked, exchange_operation_cancelled
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Input data (params)
{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "operation_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.operations.get — Дані операції обміну

What it does: Повертає один статус імпорту/експорту та error_json.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "operation_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

exchange.operations.list — Операції обміну

What it does: Повертає історію імпорту/експорту через чинний serialize_operation().

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modulesimport_export
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: catalog.import_export, background_operations

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}

Канали сповіщень (6)

write Risk: high Confirmation: required

notifications.channels.create — Створити канал

What it does: Створює канал; provider.clean_config() викликається чинним model.clean(). Секрети приймаються, але не повертаються й редагуються в аудиті.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsnotification_channel_created
Additional AI safety context

What it touches: notifications, delivery_logs

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • notifications.channels.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "data"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

notifications.channels.delete — Видалити канал

What it does: Видаляє канал; delivery logs залишаються з channel=null.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsnotification_channel_deleted
Additional AI safety context

What it touches: notifications, delivery_logs

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • notifications.channels.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "channel_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "channel_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

notifications.channels.get — Дані каналу

What it does: Повертає один канал без секретних значень конфігурації.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: notifications, delivery_logs

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "channel_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "channel_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

notifications.channels.list — Канали сповіщень

What it does: Повертає customer/form і merchant канали, schema провайдерів та ознаки налаштованих секретів без самих секретів.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: notifications, delivery_logs

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

notifications.channels.update — Оновити канал

What it does: Частково оновлює канал; відсутні секретні поля зберігаються, передані — замінюються й не повертаються.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsnotification_channel_changed
Additional AI safety context

What it touches: notifications, delivery_logs

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • notifications.channels.get — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "channel_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "kind",
    "channel_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: medium

notifications.delivery_logs.list — Журнал доставок

What it does: Повертає журнали customer/form або merchant повідомлень без повного HTML та секретів.

AccessreadRiskmedium
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: notifications, delivery_logs

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}

Редиректи (4)

write Risk: medium Confirmation: recommended

redirects.create — Створити редирект

What it does: Створює правило base_path → target_url через чинну модель.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsrouting_changed
Additional AI safety context

What it touches: storefront.routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • redirects.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "base_path": {
      "type": "string"
    },
    "target_url": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "base_path",
    "target_url"
  ]
}
Result (data)
{
  "type": "object"
}
write Risk: high Confirmation: required

redirects.delete — Видалити редирект

What it does: Видаляє правило редиректу.

AccesswriteRiskhigh
ConfirmationrequiredIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsrouting_changed
Additional AI safety context

What it touches: storefront.routing

Decision rule: Отримай явне підтвердження конкретної дії безпосередньо перед викликом.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Дію може бути складно або неможливо скасувати; потрібне підтвердження точної операції.
Preflight checks
  • redirects.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "redirect_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "additionalProperties": false,
  "required": [
    "redirect_id"
  ]
}
Result (data)
{
  "type": "object"
}
read Risk: low

redirects.list — Список редиректів

What it does: Повертає правила редиректів магазину.

AccessreadRisklow
ConfirmationnoneIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effects—
Additional AI safety context

What it touches: storefront.routing

Decision rule: Можна викликати без підтвердження, але запитуй лише потрібні дані й не роби зайвих змін.

Input data (params)
{
  "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
}
Result (data)
{
  "type": "object"
}
write Risk: medium Confirmation: recommended

redirects.update — Оновити редирект

What it does: Частково змінює source і target правила редиректу.

AccesswriteRiskmedium
ConfirmationrecommendedIdempotencynot_needed
Required modules—
Data classesshop_internal
Side effectsrouting_changed
Additional AI safety context

What it touches: storefront.routing

Decision rule: Спочатку виконай preflight, покажи користувачу наслідок і віддай перевагу вузькому методу.

Potential hazards
  • Змінює live-стан магазину; результат і помилки записуються в AI-журнал.
  • Помилка може змінити поведінку магазину або дані; покажи очікуваний результат до запису.
Preflight checks
  • redirects.list — Прочитай поточний стан і не перезаписуй поля, яких користувач не просив змінювати. (before_write)
Input data (params)
{
  "type": "object",
  "properties": {
    "redirect_id": {
      "type": "integer",
      "minimum": 1
    },
    "patch": {
      "type": "object",
      "description": "Частковий набір дозволених полів."
    }
  },
  "additionalProperties": false,
  "required": [
    "redirect_id",
    "patch"
  ]
}
Result (data)
{
  "type": "object"
}