2245 lines
112 KiB
JSON
2245 lines
112 KiB
JSON
{
|
||
"version": 1,
|
||
"routes": [
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/backups/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.delete"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/firewall/address-lists",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.addressLists.delete"
|
||
],
|
||
"reason": "Общий REST/MCP address-list сервис: scoped ID, human plan, консервативные защиты зависимых правил, полный stable proof, отдельная проверка expiry window, shared locks/read-back/revision/no retry."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/firewall/rules",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.rules.delete"
|
||
],
|
||
"reason": "Общий REST/MCP сервис формы Firewall: человеческий sealed plan, scoped native ID, полный matcher/order proof, статическая цель, shared locks, read-back, отдельный статус ревизии и отсутствие retry."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/gre/tunnels",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.gre.delete"
|
||
],
|
||
"reason": "Общий REST/MCP GRE business executor: интерфейс и v4/v6 адреса, staged disabled, opaque native proof/dependencies, PSK purpose reference, protections/budget/locks, per-command read-back, partial/unknown без retry; SQL/HTTP проверены."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/ipsec/certs/:serverId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.certificates.delete"
|
||
],
|
||
"reason": "Общий REST/MCP single certificate DELETE любого выбранного сертификата: force только для peer/identity ссылок, CA/CRL guards без обхода, native ID/private proof, intent/read-back, история и exact VERIFIED; SQL/HTTP any-cert/force/alias/lost/revoke/ABA/privacy приняты. Native force-reference поведение принимается отдельно на CHR."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/ipsec/peers/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.peers.delete"
|
||
],
|
||
"reason": "Общий REST/MCP сервис принят SQL/HTTP: права и human approval, private source fences, bounded transport, точная семантика, partial/unknown без повторов; сетевой forwarding не заявляется."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/ipsec/server/:serverId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.server.delete"
|
||
],
|
||
"reason": "Полный общий REST/MCP server removal: точный ordered manifest, зависимости foreign MC/pool и peer/certificate, полный certificate graph и объявленные CA cascade, preservation profiles/proposals, staged ACK/private read-back и история. Human/server/protection/budget guards; unknown не повторяется. SQL/HTTP parity, runtime countdown и dynamic policy exclusions приняты; настоящий CHR cascade отдельно не проверялся."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/ipsec/users/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.users.delete"
|
||
],
|
||
"reason": "Общий REST/MCP executor полного удаления клиента с необязательным сертификатом, dependency/source proofs, последовательными intent/read-back, managed-only историей и SQL/HTTP-приёмкой без replay."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/mcp/grants/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/mcp/management-channels/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/mcp/oauth/clients/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/mcp/protections/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/servers/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.delete"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/users/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.delete"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/users/:id/bindings/:bindingId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.binding_remove"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/wireguard/interfaces/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.interfaces.delete",
|
||
"ros.wireguard.delete"
|
||
],
|
||
"reason": "Общий REST/MCP каскад с запечатанными зависимостями, отдельным бюджетом каждой команды, read-back и остановкой без повтора; native alias не приобретает каскадных полномочий."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/api/wireguard/peers/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.peers.delete",
|
||
"ros.wireguard_peer.delete"
|
||
],
|
||
"reason": "Общий REST/MCP сервис удаления peer: подтверждённый parent, привязки пользователей, полный непрозрачный private proof, защита сервера/интерфейса, drift и endpoint ABA, одна команда DELETE, проверка остальных peers, partial/unknown без повтора и отдельный receipt ревизии."
|
||
},
|
||
{
|
||
"method": "DELETE",
|
||
"path": "/mcp",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/.well-known/oauth-authorization-server",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/.well-known/oauth-protected-resource",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/alerts",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"alerts.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/alerts/outbox",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"alerts.outbox.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/auth/config",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Bootstrap/health авторизации интерфейса; бизнес-операция MCP отсутствует."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/backups",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.list"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/backups/:id/download",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.download"
|
||
],
|
||
"reason": "Общий сервис REST/MCP, scoped источники и защиты, человеческое подтверждение, intent/read-back или безопасный human-only artifact, SQL/HTTP-приёмка и сверка без replay."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/backups/jobs/:jobId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.jobs.read"
|
||
],
|
||
"reason": "Общий реестр фактической REST backup-очереди: доступ только к целиком разрешённой задаче, проверка устройств и прогресса, ограниченные страницы результатов, без notes/имён/путей/текстов ошибок. Временные задачи очищаются при закрытии приложения и restore; несовпадающие или неоднозначные ID не угадываются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/backups/schedule",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.schedule.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/backups/storage",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.storage.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/bfd/sessions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.bfd.sessions.read"
|
||
],
|
||
"reason": "Общие REST/MCP state-read сервисы и модели; legacy REST сохраняет defaults совместимости, MCP возвращает observed DTO с null/Unknown. Серверная область до опроса, пагинация, явные failures, areas и отдельное чтение BFD."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/bgp/catalog",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.bgp.catalog.read"
|
||
],
|
||
"reason": "Общие BGP catalog poll/parser; серверы ограничиваются до опроса, пагинация и failures сохраняются явно."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/bgp/sessions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.bgp.sessions.read"
|
||
],
|
||
"reason": "Общий readBgpSessionsForServer/parser и pollBgpCatalog; эффективный scope до SQL/native, серверная и строковая пагинация, failures/incomplete сохраняют частичный отказ вместо успешного пустого списка."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/bgp/sessions/raw/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.bgp.sessions.raw.read"
|
||
],
|
||
"reason": "Общий readRawBgpSessionsForServer, scope/disabled до native GET, bounded raw DTO с метаданными сервера и маскированием ключей до выдачи/аудита."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/certificates",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.state.read"
|
||
],
|
||
"reason": "Общий REST/MCP источник сертификатов с проверкой schema и clock offset; refresh только повторяет чтение без записи. Область до опроса, unknown в MCP, native keys исключены; HTTP/SQL parity и malformed failure проверены."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/certificates/acme-settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.acme.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/certificates/issue/:jobId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.jobs.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/certificates/renew-settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.renew.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/certificates/state",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.state.read"
|
||
],
|
||
"reason": "Общий сервис REST/MCP с ограниченным типизированным DTO; права и серверная область проверяются до SQL/DNS/опроса, выдача ограничена, ошибки и неизвестные значения сохраняются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/containers",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"containers.state.read"
|
||
],
|
||
"reason": "Общий REST/MCP collector контейнеров; область до опроса, стабильные страницы, explicit partial/unsupported, env values и cmd скрыты в MCP. Реальные HTTP/SQL тесты сравнивают legacy каталог и observed DTO."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/containers/state",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"containers.state.read"
|
||
],
|
||
"reason": "Общий сервис REST/MCP с ограниченным типизированным DTO; права и серверная область проверяются до SQL/DNS/опроса, выдача ограничена, ошибки и неизвестные значения сохраняются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/events",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"events.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/evobgp/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"evobgp.settings.read"
|
||
],
|
||
"reason": "Общие readEvoBgpSettings/publicEvoBgpSettings без создания строки и без API-ключа; полный эффективный каталог проверяется до чтения."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/filters/gre-tunnels",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.gre.catalog.read"
|
||
],
|
||
"reason": "Общие fetchServerFilters/pollGreCatalog с REST; разрешённые серверы отбираются до опроса, выдача ограничена, IPsec secret не передаётся, ошибки устройств сохраняются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/filters/revisions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"config.filters.revisions.read"
|
||
],
|
||
"reason": "Общий listRevisions с REST: только метаданные, максимум 50 записей; серверная область и права проверяются до SQL, payload ревизии не выдаётся."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/filters/rules",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.filters.catalog.read"
|
||
],
|
||
"reason": "Общий REST/MCP live/cache reader BGP-in, scope до опроса/SQL, native order/unknown flags, scoped stale fallback; MCP observer не обновляет cache/revisions и не подтверждает эффекты parser hints."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/firewall/all",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.state.read"
|
||
],
|
||
"reason": "Общий listFirewallAll/fetchFirewallState с областью до HTTP; MCP получает observed flags/counters без legacy defaults, отдельные matcher-поля, пагинацию и failures. Неполные flags/ошибки не сохраняются как observed revision."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/firewall/revisions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"config.firewall.revisions.read"
|
||
],
|
||
"reason": "Общий listRevisions с REST: только метаданные, максимум 50 записей; серверная область и права проверяются до SQL, payload ревизии не выдаётся."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/geoip",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"geoip.read"
|
||
],
|
||
"reason": "Общий buildGeoipStatus: только локальные readers и метаданные; глобальная эффективная область проверяется до чтения."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/gre/revisions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"config.gre.revisions.read"
|
||
],
|
||
"reason": "Общий listRevisions с REST: только метаданные, максимум 50 записей; серверная область и права проверяются до SQL, payload ревизии не выдаётся."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/gre/tunnels",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.gre.state.read"
|
||
],
|
||
"reason": "Общий REST/MCP опрос GRE и IPv4/IPv6-адресов; ограничение серверов до чтения, страницы адресов, nullable-наблюдения, происхождение метаданных, PSK скрыт; MCP не сохраняет историю и не подтверждает forwarding."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/internet-path/latest",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.internet-path.latest.read"
|
||
],
|
||
"reason": "Общий latest-row REST/MCP reader, scoped JSON-проекция в SQL до разбора скрытых записей, проверка server bindings и схемы, вложенная пагинация, известные нули/unknown и secret-free whitelist. Возвращается сохранённая интерпретация с возрастом/stale/clockSkew; она не доказывает текущий маршрут или forwarding."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/internet-path/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"internet-path.settings.read"
|
||
],
|
||
"reason": "Общий сервис настроек коллектора; полная область серверов, защита зависимостей, подтверждённый план и проверка сохранения."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/ipsec",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.state.read"
|
||
],
|
||
"reason": "Общий REST polling/parser по выбранным серверам до HTTP; MCP использует safe observed DTO без key material, nullable flags/counters и явные failures. Пагинация каталогов и вложенных peers/VTEP/certificates, без обновления истории конфигурации или утверждения о forwarding."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/ipsec/revisions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"config.ipsec.revisions.read"
|
||
],
|
||
"reason": "Общий listRevisions с REST: только метаданные, максимум 50 записей; серверная область и права проверяются до SQL, payload ревизии не выдаётся."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/logs",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.query"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/logs/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.get"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/logs/:id/context",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.context"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/logs/export",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.export"
|
||
],
|
||
"reason": "Общий REST/MCP SQL-источник с server scope до бюджета 50000 строк/8 MiB; маскированная зашифрованная выгрузка с атомарной квотой и отдельным logs.export.read для чтения частей с повторной авторизацией."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/logs/live",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.follow"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/logs/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.settings.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/logs/summary",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.summary"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/artifacts/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/audit",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/catalog",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/connections",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/connections/:id/grants",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/coverage",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/database/receipts/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/devices/:serverId/:resource",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/devices/catalog",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/drift",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/management-channels",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/oauth/clients",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/oauth/requests/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/operations",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/overview",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/plans",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/plans/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/protections",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/requests",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/routing-profiles",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/mcp/settings",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/ospf/all",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.state.read"
|
||
],
|
||
"reason": "Общие REST/MCP state-read сервисы и модели; legacy REST сохраняет defaults совместимости, MCP возвращает observed DTO с null/Unknown. Серверная область до опроса, пагинация, явные failures, areas и отдельное чтение BFD."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/ospf/catalog",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.catalog.read"
|
||
],
|
||
"reason": "Общий OSPF/BFD catalog parser; область серверов ограничивается до опроса, коллекции и серверы выдаются страницами с явными failures."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/ospf/instances",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.state.read"
|
||
],
|
||
"reason": "Общие REST/MCP state-read сервисы и модели; legacy REST сохраняет defaults совместимости, MCP возвращает observed DTO с null/Unknown. Серверная область до опроса, пагинация, явные failures, areas и отдельное чтение BFD."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/ospf/interfaces",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.state.read"
|
||
],
|
||
"reason": "Общие REST/MCP state-read сервисы и модели; legacy REST сохраняет defaults совместимости, MCP возвращает observed DTO с null/Unknown. Серверная область до опроса, пагинация, явные failures, areas и отдельное чтение BFD."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/ospf/neighbors",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.state.read"
|
||
],
|
||
"reason": "Общие REST/MCP state-read сервисы и модели; legacy REST сохраняет defaults совместимости, MCP возвращает observed DTO с null/Unknown. Серверная область до опроса, пагинация, явные failures, areas и отдельное чтение BFD."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/recursive-routes",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.recursive.routes.read"
|
||
],
|
||
"reason": "Общий REST/MCP reader с явным live/stale fallback, строгими effective properties, устойчивыми логическими ID и scoped SQL. MCP observer не меняет кеш/ревизии; malformed source не объявляется успешным пустым каталогом."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/recursive-routes/catalog",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.recursive.catalog.read"
|
||
],
|
||
"reason": "Общий сервис REST/MCP с ограниченным типизированным DTO; права и серверная область проверяются до SQL/DNS/опроса, выдача ограничена, ошибки и неизвестные значения сохраняются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/recursive-routes/gateways",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.recursive.gateways.read"
|
||
],
|
||
"reason": "Общий REST/MCP reader шлюзов приложения с агрегацией up/down/unknown, пагинацией и ограничением сервера до опроса; active не трактуется как подтверждение передачи пакетов."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/recursive-routes/gateways/catalog",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.recursive.gateways.catalog.read"
|
||
],
|
||
"reason": "Общий сервис REST/MCP с ограниченным типизированным DTO; права и серверная область проверяются до SQL/DNS/опроса, выдача ограничена, ошибки и неизвестные значения сохраняются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/recursive-routes/revisions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"config.recursive-routes.revisions.read"
|
||
],
|
||
"reason": "Общий listRevisions с REST: только метаданные, максимум 50 записей; серверная область и права проверяются до SQL, payload ревизии не выдаётся."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/scheduler/runs",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"scheduler.runs"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/scheduler/status",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"scheduler.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.list"
|
||
],
|
||
"reason": "Общий сервис каталога с ограничениями серверов и типизированным MCP-ответом."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers-api-ping/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.api-ping.settings.read"
|
||
],
|
||
"reason": "Общий сервис настроек коллектора; полная область серверов, защита зависимостей, подтверждённый план и проверка сохранения."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.list"
|
||
],
|
||
"reason": "Общий сервис каталога с ограничениями серверов и типизированным MCP-ответом."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id/bgp/sessions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.bgp.sessions.read"
|
||
],
|
||
"reason": "Явный serverId в общем sessions-адаптере: общий reader/parser и poller, scope до опроса; диагностические ошибки/неизвестные счётчики не подменяются нулём."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id/containers",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"containers.state.read"
|
||
],
|
||
"reason": "Общий REST/MCP collector контейнеров; область до опроса, стабильные страницы, explicit partial/unsupported, env values и cmd скрыты в MCP. Реальные HTTP/SQL тесты сравнивают legacy каталог и observed DTO."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id/ospf",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.state.read"
|
||
],
|
||
"reason": "Общие REST/MCP state-read сервисы и модели; legacy REST сохраняет defaults совместимости, MCP возвращает observed DTO с null/Unknown. Серверная область до опроса, пагинация, явные failures, areas и отдельное чтение BFD."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id/ros-src-address",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.source-address.read"
|
||
],
|
||
"reason": "Общий сервис REST/MCP с ограниченным типизированным DTO; права и серверная область проверяются до SQL/DNS/опроса, выдача ограничена, ошибки и неизвестные значения сохраняются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id/snapshots",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.snapshots.read"
|
||
],
|
||
"reason": "Общий сервис REST/MCP с ограниченным типизированным DTO; права и серверная область проверяются до SQL/DNS/опроса, выдача ограничена, ошибки и неизвестные значения сохраняются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id/vxlan",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.vxlan.state.read"
|
||
],
|
||
"reason": "Общий REST polling/parser по выбранным серверам до HTTP; MCP использует safe observed DTO без key material, nullable flags/counters и явные failures. Пагинация каталогов и вложенных peers/VTEP/certificates, без обновления истории конфигурации или утверждения о forwarding."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/servers/:id/wan-runtime",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.wan-runtime.read"
|
||
],
|
||
"reason": "Общий readWanRuntimeForServer и модель IPv4/main: scope/disabled до native GET, bound DHCP, explicit unknown/ambiguous default и адреса, ошибка источника не выдаётся за пустое состояние; forwarding не подтверждается."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/sidebar-counts",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"system.sidebar.counts.read"
|
||
],
|
||
"reason": "Общий REST/MCP readSidebarCounts: SQL COUNT без DTO/привязок пользователей, global allow + все права источников, каталог до 100 серверов до native reads, coalescing, null/unknown отличается от zero, source interval и nonatomic snapshot; реальные SQL/permission/no-native-on-denial проверки."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/statistics",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"statistics.read"
|
||
],
|
||
"reason": "Общий SQL-сервис статистики/pivot; MCP требует выбранный сервер и период до 31 дня, обновляет только его интерфейсы."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/statistics/pivot",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"statistics.pivot"
|
||
],
|
||
"reason": "Общий SQL-сервис статистики/pivot; MCP требует выбранный сервер и период до 31 дня, обновляет только его интерфейсы."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/system/database/backup",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"database.backup"
|
||
],
|
||
"reason": "Общий backup service/event: обязательное human approval, полный global/server scope, exclusive drain, bounded real pg_dump, private temporary libpq service file, encrypted signed receipt и download только JWT владельца; SQL/HTTP проверены."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/bound-interfaces",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.bindings.history.read"
|
||
],
|
||
"reason": "Общий расчёт привязок по сохранённым samples: scoped user eligibility до JSON/метрик, user/server/binding pages, скрытые peer keys/comments, known zero/unknown, binding drift proof и отсутствие RouterOS/планов записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.talkers.read"
|
||
],
|
||
"reason": "Общая REST/MCP проекция разговоров; серверная область применяется до SQL и pending, источник ограничен, глобальные runtime/host-поля не раскрываются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/analytics",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.analytics.read"
|
||
],
|
||
"reason": "Общий REST analytics engine в scoped режиме: сервер до SQL, topology без скрытых пользователей/ключей, обход общего кэша, bounded read и страницы, source/access/topology fences; retained данные и контекстные оценки скоростей явно разделены."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/clients",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.clients.read"
|
||
],
|
||
"reason": "Общие REST/MCP readers: scope до SQL/агрегации и каталогов, hidden-binding exclusion, bounded pages/counters, наблюдаемые retained rows вместо выдуманных online/wire rates; клиентская attribution и coverage явно ограничены."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/exporters",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.exporters.read"
|
||
],
|
||
"reason": "Общие REST/MCP readers: scope до SQL/агрегации и каталогов, hidden-binding exclusion, bounded pages/counters, наблюдаемые retained rows вместо выдуманных online/wire rates; клиентская attribution и coverage явно ограничены."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/host-files",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.hostFiles.export"
|
||
],
|
||
"reason": "Общий REST builder файлов NetFlow; полный глобальный допуск и человеческий план создают зашифрованный owner-only артефакт. Ключи не возвращаются MCP; скачивание через JWT повторно проверяет credential/права/область/источник/подпись/hash/срок."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/host-status",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"netflow.host.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/live",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.live.read"
|
||
],
|
||
"reason": "Ограниченное наблюдение через общий live-сервис REST/MCP: scope до источника, uncached выборки, отмена и отзыв доступа, общий лимит подписок и SQL/HTTP-приёмка."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/map-hops",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.map.read"
|
||
],
|
||
"reason": "Общий REST map engine со scoped SQL/pending/topology, отказом от общего кэша/enrichment, проверками источника/настроек/доступа, лимитами и вложенными страницами; предполагаемые связи не выдаются за traceroute или forwarding proof."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/monthly",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.monthly.read"
|
||
],
|
||
"reason": "Общие REST/MCP readers: scope до SQL/агрегации и каталогов, hidden-binding exclusion, bounded pages/counters, наблюдаемые retained rows вместо выдуманных online/wire rates; клиентская attribution и coverage явно ограничены."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flow/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"netflow.settings.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/flows",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.talkers.read"
|
||
],
|
||
"reason": "Общая REST/MCP проекция разговоров; серверная область применяется до SQL и pending, источник ограничен, глобальные runtime/host-поля не раскрываются."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/servers",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.servers.history.read"
|
||
],
|
||
"reason": "Общий REST/MCP reader сохранённой истории: scoped SQL/context до чтения, enabled каталог и страницы серверов, подтверждённый ноль/unknown masks, freshness, предел строк без частичных итогов, без RouterOS и observer writes."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/servers/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.server.history.read"
|
||
],
|
||
"reason": "Общий REST/MCP расчёт сервера/интерфейса по сохранённым counters; scoped SQL до разбора, disabled/stale/error не становятся текущим нулём, known volume отдельно от coverage, bounded range/rows, без опроса."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/servers/:id/interfaces",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.server.interfaces.read"
|
||
],
|
||
"reason": "Общий REST/MCP интерфейсный reader за 24 часа: aggregate-only, nullable statusKnown/freshness, будущие samples исключены, страницы/предел строк, без current-state и forwarding claims."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/servers/:id/live",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.live.read"
|
||
],
|
||
"reason": "Общий readTrafficLiveSample; MCP возвращает ограниченную серию до трёх срезов вместо бесконечного SSE. Полнота суммы, направление RX/TX, отзыв доступа и смена источника проверяются перед каждым новым native-запросом."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.settings.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/users",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.users.history.read"
|
||
],
|
||
"reason": "Общий расчёт REST/MCP: eligibility/scope до SQL JSON, исключение пользователей со скрытыми привязками, страницы пользователей/серверов/привязок, явный subtotal, guarded global unbound, freshness и проверка drift без observer writes."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/traffic/users/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.user.history.read"
|
||
],
|
||
"reason": "Общий REST/MCP user-traffic builder с scoped SQL input вместо глобальной гидрации: nullable masks, peer-specific counters без вывода ключа, completeness выбранных источников, guards прав/server/binding proof."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/uptime/overview",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.overview.read"
|
||
],
|
||
"reason": "Общий readUptimeOverview; SQL scope до samples/provenance, bounded pages/window, unknown вместо UI zeros, явный historical fallback, повторные source/probe/grant checks, только stored data без сетевых команд и секретов."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/uptime/probes",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.ping.probes.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/uptime/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.settings.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/uptime/sources/:id/interfaces",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.ping.interfaces.read"
|
||
],
|
||
"reason": "Общий reader/model интерфейсов: scope/disabled до native, effective disabled, unknown flag явно непригоден; пагинация и ошибки не подменяются пустым успехом."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/uptime/speed-probes",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.speed.probes.read"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/uptime/speed-test/endpoints/:id/interfaces",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.speed.interfaces.read"
|
||
],
|
||
"reason": "Общий reader/model с IPv4 address candidates, без выдуманных flags; bounded пагинация и адреса, неизвестное состояние видно отдельно."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/uptime/speed-test/runs",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.speed.runs.read"
|
||
],
|
||
"reason": "Общий readSpeedHistoryRuns/mapSpeedHistoryRun; оба serverId ограничены в SQL до LIMIT/OFFSET и parser, стабильный порядок, unknown/zero сохранены."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/users",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.list"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/users/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.get"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/users/interface-catalog",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.interfaces.read"
|
||
],
|
||
"reason": "Общий сервис каталога с ограничениями серверов и типизированным MCP-ответом."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/users/interface-catalog-state",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.interfaces.state"
|
||
],
|
||
"reason": "Общий сервис каталога с ограничениями серверов и типизированным MCP-ответом."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/vxlan",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.vxlan.state.read"
|
||
],
|
||
"reason": "Общий REST polling/parser по выбранным серверам до HTTP; MCP использует safe observed DTO без key material, nullable flags/counters и явные failures. Пагинация каталогов и вложенных peers/VTEP/certificates, без обновления истории конфигурации или утверждения о forwarding."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/wireguard",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.state.read"
|
||
],
|
||
"reason": "Общий REST polling/parser по выбранным серверам до HTTP; MCP использует safe observed DTO без key material, nullable flags/counters и явные failures. Пагинация каталогов и вложенных peers/VTEP/certificates, без обновления истории конфигурации или утверждения о forwarding."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/api/wireguard/revisions",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"config.wireguard.revisions.read"
|
||
],
|
||
"reason": "Общий listRevisions с REST: только метаданные, максимум 50 записей; серверная область и права проверяются до SQL, payload ревизии не выдаётся."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/health",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Bootstrap/health авторизации интерфейса; бизнес-операция MCP отсутствует."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/mcp",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "GET",
|
||
"path": "/oauth/authorize",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/firewall/address-lists",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.addressLists.toggle"
|
||
],
|
||
"reason": "Общий REST/MCP address-list сервис: scoped ID, human plan, консервативные защиты зависимых правил, полный stable proof, отдельная проверка expiry window, shared locks/read-back/revision/no retry."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/firewall/rules",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.rules.toggle"
|
||
],
|
||
"reason": "Общий REST/MCP сервис формы Firewall: человеческий sealed plan, scoped native ID, полный matcher/order proof, статическая цель, shared locks, read-back, отдельный статус ревизии и отсутствие retry."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/gre/tunnels",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.gre.update"
|
||
],
|
||
"reason": "Общий REST/MCP GRE business executor: интерфейс и v4/v6 адреса, staged disabled, opaque native proof/dependencies, PSK purpose reference, protections/budget/locks, per-command read-back, partial/unknown без retry; SQL/HTTP проверены."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/ipsec/peers/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.peers.update"
|
||
],
|
||
"reason": "Общий REST/MCP peer PATCH всех REST-полей, same-value/native empty strings и history-only noop; certificate presence отклоняется. Native alias сохраняет comment и входит в общий private proof/intent/read-back/history. SQL/HTTP lost/ignored/collateral/reference mismatch/grant/protection/reconcile приняты; native rename gate остаётся отдельным."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/ipsec/users/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.users.update"
|
||
],
|
||
"reason": "Полный общий REST/MCP PATCH клиента: display name, static IPv4/pool reset, PSK reference, Remote ID/disabled, cert-only promotion/ignored fields, чужой mode-config upsert с consumer closure, история, полный private proof и staged ACK/read-back. Human/server/operation/protection guards и SQL/HTTP parity приняты; lost ACK не повторяется."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/uptime/probes/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.ping.visibility.update"
|
||
],
|
||
"reason": "Общий guarded updateProbeShowOnDashboard: scoped конфигурация, approval, защиты глобального probe ID, проверка drift/read-back без запуска сетевых измерений."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/users/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.update",
|
||
"users.permissions.update"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/wireguard/interfaces/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.interfaces.update"
|
||
],
|
||
"reason": "Общий REST/MCP WireGuard PATCH: все поля, scoped key refs, rename peer/address ссылок, primary/secondary адреса, private dependency proof, actual byte limits, epoch ABA, intent/fences/read-back и exact VERIFIED reconcile без replay. Сторонние routing/firewall/application зависимости требуют отдельного плана; SQL/HTTP проверены, native readiness отдельно не заявляется."
|
||
},
|
||
{
|
||
"method": "PATCH",
|
||
"path": "/api/wireguard/peers/:serverId/:rosId",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.peers.update",
|
||
"ros.wireguard_peer.update"
|
||
],
|
||
"reason": "Общий REST/MCP сервис изменения peer: зависимости, приватный proof, один PATCH, точный read-back и отдельная read-only сверка без повтора."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/_internal/mcp/portal/revocations",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/alerts/outbox/:id/retry",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"alerts.outbox.retry"
|
||
],
|
||
"reason": "Общий REST/MCP повтор unknown: human approval, acknowledged duplicate risk, private row source proof under lock, CAS version/status and application protections; подтверждается только постановка в очередь."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/alerts/telegram/test",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"alerts.telegram.test"
|
||
],
|
||
"reason": "Общий REST/MCP test payload и единственный guarded POST после человеческого подтверждения. Full global/server scope, owner/purpose secretRef, private proof и late fence; ack не delivery, reject/unknown без повтора, bounded response и запрет redirect."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/backups/:id/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.restore"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/backups/create",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.create"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/backups/storage/sync",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.storage.sync"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/backups/storage/test",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.storage.test"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/certificates/acme-settings/test",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.acme.test"
|
||
],
|
||
"reason": "Общий сервис REST/MCP, scoped источники и защиты, человеческое подтверждение, intent/read-back или безопасный human-only artifact, SQL/HTTP-приёмка и сверка без replay."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/certificates/issue",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.issue"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/certificates/refresh",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.state.read"
|
||
],
|
||
"reason": "Общий REST/MCP источник сертификатов с проверкой schema и clock offset; refresh только повторяет чтение без записи. Область до опроса, unknown в MCP, native keys исключены; HTTP/SQL parity и malformed failure проверены."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/events/batch",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"events.batch.append"
|
||
],
|
||
"reason": "Общий REST/MCP client batch insert: все поля и payload, server UUID, human approval/full global scope, bounded encrypted plan, atomic insert и exact VERIFIED read-only global/portal reconcile; lost acknowledgement/tamper/late pause/protection не повторяются. Это записи журнала, не доказательства системных действий."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/evobgp/catalog",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"evobgp.catalog.read"
|
||
],
|
||
"reason": "Общие parser/formatter и distinct server counts, полный эффективный scope до HTTP/SQL, credentials только из БД, bounded GET без redirects, пагинация всех коллекций с fingerprint и сохранением неизвестных счётчиков."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/evobgp/test",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"evobgp.connection.check"
|
||
],
|
||
"reason": "Общий ограниченный modules GET; MCP принимает сохранённый ключ или owner/destination-bound secret reference вместо открытого секрета. Полная серверная область проверяется до HTTP, результат не отражает upstream payload и не сохраняет настройки."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/filters/revisions/:id/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"filters.revision.restore"
|
||
],
|
||
"reason": "Общий guarded applyFiltersToServer; scoped filters revision/checksum повторно проверяются после approval, те же зависимости/защиты и native/DB/revision read-back, human only."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/firewall/address-lists",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.addressLists.create"
|
||
],
|
||
"reason": "Общий REST/MCP address-list сервис: scoped ID, human plan, консервативные защиты зависимых правил, полный stable proof, отдельная проверка expiry window, shared locks/read-back/revision/no retry."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/firewall/revisions/:id/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.revision.restore"
|
||
],
|
||
"reason": "Общий строгий REST/MCP restore: scoped revision fingerprint, full native proof, точный static порядок/дубликаты, staged disabled preparation, per-command read-back, защиты/бюджет/locks и no retry."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/firewall/rules",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.rules.create"
|
||
],
|
||
"reason": "Общий REST/MCP сервис формы Firewall: человеческий sealed plan, scoped native ID, полный matcher/order proof, статическая цель, shared locks, read-back, отдельный статус ревизии и отсутствие retry."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/firewall/rules/move",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.rules.move"
|
||
],
|
||
"reason": "Общий moveFirewallRule: точные ID/порядок и все matcher-поля без счётчиков, static source/destination, sealed человеческий план, защиты всей таблицы/сервера, fingerprint перед POST, read-back, без retry и явное состояние сохранения ревизии."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/geoip/update",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"geoip.update"
|
||
],
|
||
"reason": "Общий сервис REST/MCP, scoped источники и защиты, человеческое подтверждение, intent/read-back или безопасный human-only artifact, SQL/HTTP-приёмка и сверка без replay."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/gre/revisions/:id/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.gre.revision.restore"
|
||
],
|
||
"reason": "Общий строгий REST/MCP GRE restore: весь раздел и IPv4/IPv6 адреса, зависимости и защиты, отключение перед адресами, приватные proof/PSK, human approval, поштучный read-back и отказ без повторной записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/gre/tunnels",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.gre.create"
|
||
],
|
||
"reason": "Общий REST/MCP GRE business executor: интерфейс и v4/v6 адреса, staged disabled, opaque native proof/dependencies, PSK purpose reference, protections/budget/locks, per-command read-back, partial/unknown без retry; SQL/HTTP проверены."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/ipsec/certs/:serverId/export",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.existing-certificates.export"
|
||
],
|
||
"reason": "Общий REST/MCP executor существующего сертификата: оба selector и все роли, явный private/CA intent, human MCP plan, actor/key no-replay, exact owned file/read/cleanup, encrypted owner-only artifact/TTL; синтетическая SQL/HTTP/portal и browser приёмка. Native CHR отдельно."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/ipsec/revisions/:id/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.revisions.restore"
|
||
],
|
||
"reason": "Общий REST/MCP revision restore: strict fingerprint/schema, private whole-state proof, PKI/profile/policy/pool dependencies, exact clears, human approval и read-back без replay. Утраченные PKI ключи не генерируются."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/ipsec/server/init",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.server.init"
|
||
],
|
||
"reason": "Общий REST/MCP init: полная форма, raw dependency closure, подпись только новых ACK-owned сертификатов, human approval, per-command fences/read-back и обязательная история."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/ipsec/users",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.users.create"
|
||
],
|
||
"reason": "Full shared guarded client creation, purpose-bound secret refs, human-approved encrypted PKCS12 artifact and owner portal; private export separately authorized"
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/ipsec/users/:serverId/:rosId/cert",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.ipsec.existing-certificates.export"
|
||
],
|
||
"reason": "Общий REST/MCP executor существующего сертификата: оба selector и все роли, явный private/CA intent, human MCP plan, actor/key no-replay, exact owned file/read/cleanup, encrypted owner-only artifact/TTL; синтетическая SQL/HTTP/portal и browser приёмка. Native CHR отдельно."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/connections",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/connections/:id/check",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/connections/:id/grants",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/connections/:id/revalidate",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/connections/:id/rotate",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/connections/:id/status",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/database/archives",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/database/plan",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/devices/:serverId/:resource/plan",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/management-channels",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/oauth/clients",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/oauth/consent",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/operations/:id/reconcile",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/operations/:id/recover",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/pause",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/plans/:id/apply",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/plans/:id/decision",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/policy/preview",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/protections",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/routing-profiles/:id/check",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/routing-profiles/:id/pause",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/routing-profiles/plan",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/secrets",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/mcp/stop-automation",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/network/resolve-hosts",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.hosts.resolve"
|
||
],
|
||
"reason": "Общий bounded resolveNetworkHosts: явный global grant и network-write как в REST, IPv4/DNS/IDN validation, IPv6 literal без DNS как unsupported, дедупликация, TTL/cache/pending/deadline caps, stage access/cancel fences и различение manager resolver от RouterOS/path proof."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/recursive-routes/revisions/:id/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.recursive.revision.restore"
|
||
],
|
||
"reason": "Общий applyRecursiveToServer/executeRecursiveApply с REST: scoped revision/fingerprint, максимум 50 маршрутов, effective properties, зависимости фильтров/таблиц/интерфейсов, полный бюджет create+delete+metadata и read-back native/revision."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/scheduler/jobs/:jobKey/run-now",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"scheduler.run"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/scheduler/refresh",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"scheduler.refresh"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.create"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers-api-ping/collect-now",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.api-ping.collect"
|
||
],
|
||
"reason": "Общий полный manual executor REST/MCP: все включённые устройства, samples/partition maintenance/settings и отложенный глобальный alert engine. GLOBAL + весь каталог, человеческий план, явный skipped при busy, audit/idempotency и no replay; SQL/HTTP приёмка пройдена без реальных уведомлений."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/containers/remove",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"containers.remove"
|
||
],
|
||
"reason": "Общий removeContainer/removeStoppedContainer с REST: fresh stopped-only, идентичность конфигурации/интерфейса, защиты родителя и подтверждение удаления. Native delete alias использует тот же план."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/containers/restart",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"containers.restart"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/containers/start",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"containers.start"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/containers/stop",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"containers.stop"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/exec",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.terminal.read"
|
||
],
|
||
"reason": "Общий REST/MCP allowlist терминальной диагностики: 15 типизированных сценариев, все aliases и форматирование, прежнее servers:write право, полный scope/epoch до credentials, bounded transport/output и отзыв между запросами. SQL/REST parity подтверждена; произвольные CLI-команды не принимаются."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/ospf/optimize",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.application.optimize"
|
||
],
|
||
"reason": "Общий legacy REST ranker/apply; human-only полный каталог, private source/prefix proofs, native dispatch/read-back и отдельное восстановление."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/ospf/optimize/preview",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.ospf.application.preview"
|
||
],
|
||
"reason": "Общий REST/MCP reader рейтинга приложения; peer scope и probes отсекаются SQL до чтения, latest aggregate traffic требует известной дельты. MCP разделяет modeled/observed, ограничивает страницы/peers, повторно проверяет доступ/источник перед GET/POST и отменяет HTTP при остановке. Preview не создаёт план и не заменяет строгий family/VRF-aware optimizer."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/poll",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.poll"
|
||
],
|
||
"reason": "Полный human-approved servers.poll: исходный sealed допуск и actual operation ID, общий снимок/обслуживание истории, quota-bound durable журнал, сохранённая квитанция без повтора native. UI REST-обработчик сохранён; retained admission limits MCP применяются отдельно."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/:id/probes/run",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.probes.run"
|
||
],
|
||
"reason": "Общий v2 service executor для всех6 диагностик: REST JWT/local и MCP human plan, durable stages/receipts, общие квоты, текущие права, отмена и bounded retention; публичная регистрация и SQL/HTTP/DNS приёмка проверены."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/servers/test-connection",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.test-connection"
|
||
],
|
||
"reason": "Общий REST/MCP сервис принят SQL/HTTP: права и human approval, private source fences, bounded transport, точная семантика, partial/unknown без повторов; сетевой forwarding не заявляется."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/system/database/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"database.restore"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/traffic/collect-now",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.collect"
|
||
],
|
||
"reason": "Полный общий REST/MCP executor: GLOBAL и весь каталог, человеческий план, штатные samples/settings/locks и глобальный alert hook. SQL/HTTP приёмка на одноразовой БД/localhost; busy/partial/unknown без автоматического повтора, квитанция не подтверждает доставку уведомлений."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/traffic/flow-overlay",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.overlay.apply"
|
||
],
|
||
"reason": "Общий сервис REST/MCP, scoped источники и защиты, человеческое подтверждение, intent/read-back или безопасный human-only artifact, SQL/HTTP-приёмка и сверка без replay."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/traffic/flow/host-reconcile",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"netflow.host.reconcile"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/traffic/flow/overlay",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.overlay.apply"
|
||
],
|
||
"reason": "Общий сервис REST/MCP, scoped источники и защиты, человеческое подтверждение, intent/read-back или безопасный human-only artifact, SQL/HTTP-приёмка и сверка без replay."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/traffic/flow/purge",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.purge"
|
||
],
|
||
"reason": "Полный общий REST/MCP сценарий: human/global scope, acknowledged drain всех retiring workers, транзакционная очистка, сохранение настроек/ключей/peers, утверждённый partition inventory/budget, journal/restart, SQL/HTTP-приёмка и unknown без replay."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/traffic/flow/rebuild-facts",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.facts.rebuild"
|
||
],
|
||
"reason": "Общий REST/MCP rebuild: обязательное human/global/full-server подтверждение, строгий drain существующих writers, атомарные кубы/событие/квитанция, source/protection guards и отдельная read-only сверка без replay. Принят на настоящей временной SQL-базе через MCP и JWT REST; живой worker отдельно не запускался."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/traffic/flow/settings/generate-keys",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.flow.settings.generate-keys"
|
||
],
|
||
"reason": "Shared full-config CAS, single-use durable receipt, human approval; public key only, no collector or host apply"
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/uptime/collect-now",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.collect"
|
||
],
|
||
"reason": "Полный общий REST/MCP executor: GLOBAL и весь каталог, человеческий план, штатные samples/settings/locks и глобальный alert hook. SQL/HTTP приёмка на одноразовой БД/localhost; busy/partial/unknown без автоматического повтора, квитанция не подтверждает доставку уведомлений."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/uptime/probes/collect-group",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.ping.group.collect"
|
||
],
|
||
"reason": "Полный общий REST/MCP executor: GLOBAL и весь каталог, человеческий план, штатные samples/settings/locks и глобальный alert hook. SQL/HTTP приёмка на одноразовой БД/localhost; busy/partial/unknown без автоматического повтора, квитанция не подтверждает доставку уведомлений."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/uptime/speed-test",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.speed.test"
|
||
],
|
||
"reason": "Обычный RouterOS bandwidth-test через общий speed-сервис: MCP проверяет оба server scope, человеческое подтверждение, срок и лимит нагрузки; общие блокировки, аудит и стандартная история. Без отдельного реестра узлов, ключей и Docker-окон; no replay при unknown."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/users",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.create"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/users/:id/bindings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"users.binding_add"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/wireguard/export",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.export"
|
||
],
|
||
"reason": "Общий REST/MCP export для rsc/conf/peer-conf: явный private-key opt-in, human approval, зашифрованный файл на 15 минут только владельцу через JWT; модель получает квитанцию. Полная SQL/HTTP-проверка форматов, обоих ID пира, source/grant/checkpoint и tamper; неоднозначное или невоспроизводимое состояние отклоняется."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/wireguard/import",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.import.preview",
|
||
"network.wireguard.import"
|
||
],
|
||
"reason": "Общий REST/MCP импорт .rsc/.conf: owner/purpose/server contentRef, скрытые ключи, disabled preparation и selective activation всех peers/address/interface, отдельные object refs и полный command budget, per-command durable intent/fence/read-back, prefix checkpoint, exact VERIFIED reconcile; partial/unknown без автоматического повтора или компенсации."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/wireguard/interfaces",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.interfaces.create"
|
||
],
|
||
"reason": "Общий сервис REST/MCP, scoped источники и защиты, человеческое подтверждение, intent/read-back или безопасный human-only artifact, SQL/HTTP-приёмка и сверка без replay."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/wireguard/peers",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"network.wireguard.peers.create"
|
||
],
|
||
"reason": "Общий REST/MCP peer create и native alias: полная форма, существующий parent/dependencies, secret refs, staged disabled, per-command fences/read-back, exact verified checkpoint, partial/unknown без retry; SQL/HTTP проверены."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/api/wireguard/revisions/:id/restore",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"config.wireguard.revisions.restore"
|
||
],
|
||
"reason": "Общий REST/MCP whole-section restore: строгая ревизия, encrypted desired keys, полный dependency inventory, staged disable, exact clears, per-command fences и read-back без replay."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/mcp",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/oauth/revoke",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "POST",
|
||
"path": "/oauth/token",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/alerts/rules",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"alerts.replace"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/alerts/telegram",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"alerts.telegram.update"
|
||
],
|
||
"reason": "Общий guarded REST/MCP selective-update сервис; полный global/server scope, человеческий план, owner/purpose secretRef или явное очищение, private source/reference proof, проверки перед записью и read-back. Сообщения не отправляются."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/backups/schedule",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.schedule.update"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/backups/storage",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"backups.storage.update"
|
||
],
|
||
"reason": "Общий REST updateBackupStorageSettings: глобальный человеческий план, полный каталог серверов/защиты, owner/destination-bound secretRef вместо literal secret, keyed credential proof, защита S3-архивов и занятости, полная проверка конфигурации/сохранённого ключа, partial при несовпадении и idempotency. Настройка не объявляется проверкой доступности S3."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/certificates/acme-settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.acme.update"
|
||
],
|
||
"reason": "Общий REST/MCP settings executor: owner/purpose secret refs, full global scope, human approval, bounded private SQL/source proof, CAS/read-back, verified exact receipt и no replay; SQL/HTTP проверены."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/certificates/renew-settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"certificates.renew.update"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/evobgp/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"evobgp.settings.update"
|
||
],
|
||
"reason": "Общий guarded writeEvoBgpSettings/schema; подтверждение человеком, URL-bound opaque secret вместо ключа, явное удаление ключа, fingerprint всех настроек и полного каталога, read-back включая ключ без его выдачи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/filters/rules",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"filters.rules.replace"
|
||
],
|
||
"reason": "Общий guarded applyFiltersToServer: human approval, совместные filters/network/BGP права, HMAC источника и routing dependencies, server-wide protections, безопасный compiler, native read-back до metadata/revision, без удаления чужих правил и автоматического повтора."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/firewall/address-lists",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.addressLists.update"
|
||
],
|
||
"reason": "Общий REST/MCP address-list сервис: scoped ID, human plan, консервативные защиты зависимых правил, полный stable proof, отдельная проверка expiry window, shared locks/read-back/revision/no retry."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/firewall/rules",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"firewall.rules.update"
|
||
],
|
||
"reason": "Общий REST/MCP сервис формы Firewall: человеческий sealed plan, scoped native ID, полный matcher/order proof, статическая цель, shared locks, read-back, отдельный статус ревизии и отсутствие retry."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/geoip",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"geoip.settings.update"
|
||
],
|
||
"reason": "Общий schema/updateGeoipSettings и refreshScheduler; защищённый human-approved план, полный каталог зависимостей, fingerprint конфигурации без observer metadata и read-back сохранённых полей."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/internet-path/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"internet-path.settings.update"
|
||
],
|
||
"reason": "Общий сервис настроек коллектора; полная область серверов, защита зависимостей, подтверждённый план и проверка сохранения."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/logs/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"logs.settings.update"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/mcp/connections/:id",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/mcp/settings",
|
||
"status": "excluded",
|
||
"operations": [],
|
||
"reason": "Управление самим MCP, транспорт или машинная авторизация: отдельного AI-инструмента нет."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/recursive-routes",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"routing.recursive.routes.replace"
|
||
],
|
||
"reason": "Общий applyRecursiveToServer для полного apply/copy набора до 50 строк: человеческий план, стоимость create+delete+metadata, sealed native/DB/filter proof, устойчивые ID, проверка зависимостей и каждого нового/удаляемого маршрута, независимый native/cache/revision read-back и отсутствие повторов при partial/unknown."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/servers-api-ping/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.api-ping.settings.update"
|
||
],
|
||
"reason": "Общий сервис настроек коллектора; полная область серверов, защита зависимостей, подтверждённый план и проверка сохранения."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/servers/:id",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"servers.update"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/traffic/flow/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"netflow.settings.update"
|
||
],
|
||
"reason": "Full 10-field shared CAS and fenced main/worker lifecycle, global store/RIPE scope, human approval and durable two-phase receipt; readiness separate"
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/traffic/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"traffic.settings.update"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/uptime/probes",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.ping.probes.replace"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/uptime/settings",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.settings.update"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
},
|
||
{
|
||
"method": "PUT",
|
||
"path": "/api/uptime/speed-probes",
|
||
"status": "mediated",
|
||
"operations": [
|
||
"uptime.speed.probes.replace"
|
||
],
|
||
"reason": "Типизированный MCP-адаптер этого сервисного сценария; применяются собственные scopes, лимиты, проверка зависимостей и подтверждение записи."
|
||
}
|
||
]
|
||
}
|