Public API v1

Стабильный контракт Public API.

Расчётные и рендерные маршруты Public API работают без Bearer-токена. Portal BFF и аккаунтные management-операции остаются защищёнными cookie-сессией или историческим account secret.

Базовый URL

Прямые интеграции отправляют запросы на отдельный API origin:

https://api.tmm-agent.ru
Расчёты не требуют токена
Browser BFF использует защищённую cookie-сессию для приватного редактора, аккаунта, истории и billing UI. Маршруты compute, preview, XMCD, Markdown, SVG, Scene JSON и CDW работают без Authorization; исторические management-эндпоинты сохраняют собственную защиту.

Синхронный compute без токена

POST /v1/compute принимает multipart-бандл с моделью, документом и при необходимости локальными .scene.json или .render.json. Он синхронно возвращает проверенные linkage, render и SVG-артефакты. Запрос не использует Bearer-токен, quote, баланс или account registry.

Для итогового CDW используйте POST /v1/linkage/cdw/scene или POST /v1/linkage/cdw/page. Эти маршруты также работают без токена и возвращают подписанный план, который создаёт локальный KOMPAS Renderer.

Произвольные Scene JSON и CDW

Эти маршруты не читают YAML механизма, не создают durable run и не изменяют баланс или реестр. Отправьте high-level .scene.json напрямую в /v1/scenes/resolve, чтобы получить canonical Scene v2 .render.json:

curl --fail-with-body \
  --header 'Content-Type: application/json' \
  --data-binary @input.scene.json \
  "https://api.tmm-agent.ru/v1/scenes/resolve" > output.render.json

Для CDW получите свежий agent_challenge из локального KOMPAS Renderer (GET /v1/capabilities), передайте envelope с options.version=1. /v1/cdw/scene принимает поле scene, а /v1/cdw/render — поле render с Scene v2. Ответ — подписанный ZIP-план; сам .cdw создаёт локальный Renderer.

curl --fail-with-body \
  --header 'Content-Type: application/json' \
  --data-binary @cdw-request.json \
  "https://api.tmm-agent.ru/v1/cdw/scene" > cdw-plan.zip

# cdw-request.json: {scene: <high-level JSON>, options: {version: 1, agent_challenge: CHALLENGE}}
Промежуточные файлы можно исправлять
Агент может произвольно редактировать полученные .scene.json и .render.json, чтобы улучшить или исправить оформление. Перед отправкой сохраните соответствующий JSON-контракт: high-level scene для .scene.json и Scene v2 для .render.json.

Документы Markdown могут включать локальные .scene.json и .render.json через видимые {{tmm-scene name="..."}} директивы. Команды tmm md и tmm kompas page передают найденные scene/render-объекты как workspace и предпочитают локальный файл сгенерированной fallback-сцене. Подробный синтаксис и команды описаны в документации CLI.

AI-agent workflow и skills

Полный набор разделов для курсового проекта и отдельного курсового ДЗ первого семестра опубликован в WORKFLOW.md. Ссылки на skills: metric-synthesis, mathcad-mechanisms, tmm-yaml, tmm-cli и tmm-graphics.

Состав и порядок разделов определяются заданием; отдельные разделы могут отсутствовать. Для курсового проекта выберите нужные разделы и выполняйте их в порядке задания. Для курсового ДЗ первого семестра используйте отдельный комплект из YAML, кинематики и листов одного положения. Синтез оформляется в editable XMCD, физический YAML собирается итеративно, динамика переписывается самостоятельно из-за альфа-статуса, а каждый итоговый график Mathcad получает соответствующую сцену и рендер в КОМПАС.

Маршруты

Surface намеренно ограничен. Остальные внутренние endpoints не являются частью публичного контракта.

  • GET
    /v1/mechanisms/balance
    Баланс доступных механизмов аккаунта
  • GET
    /v1/mechanisms
    Реестр активированных механизмов без raw descriptor
  • POST
    /v1/mechanisms/quote
    Advisory classification без резервирования credit
  • GET
    /v1/kompas-renderer/installer
    Установщик рендерера КОМПАС
  • POST
    /v1/compute
    Синхронный tokenless compute: linkage, render и SVG из multipart-бандла
  • POST
    /v1/linkage/preview/mechanism
    SVG-preview механизма
  • POST
    /v1/linkage/preview/forces
    Силовой SVG-preview
  • POST
    /v1/linkage/publication-source
    Публикационный catalog из YAML модели
  • POST
    /v1/linkage/worksheet
    Бесплатный текстовый Mathcad preview
  • POST
    /v1/linkage/xmcd
    Бесплатные native Mathcad 15 XMCD bytes
  • POST
    /v1/linkage/markdown/render
    SVG-листы Markdown по YAML-derived catalog
  • POST
    /v1/scenes/render
    SVG из high-level или Scene v2 JSON
  • POST
    /v1/scenes/resolve
    High-level .scene.json → Scene v2 .render.json, без токена
  • POST
    /v1/cdw/scene
    Произвольный .scene.json → подписанный CDW-план, без YAML и токена
  • POST
    /v1/cdw/render
    Произвольный Scene v2 .render.json → подписанный CDW-план, без токена
  • POST
    /v1/linkage/cdw/scene
    Синхронный YAML-сценарий → подписанный CDW-план для локального КОМПАС, без токена
  • POST
    /v1/linkage/cdw/page
    Синхронная Markdown-страница → подписанный CDW-план для локального КОМПАС, без токена
  • PUT
    /v1/linkage/xmcd/{uuid}
    Legacy XMCD route for historical native-XMCD durable replay
  • PUT
    /v1/linkage/cdw/scenes/{uuid}
    Legacy CDW-план для исторического durable replay
  • PUT
    /v1/linkage/cdw/pages/{uuid}
    Legacy CDW-план страницы для исторического durable replay

Защищённые аккаунтные операции

Исторический Bearer token

Только management API

Некоторые старые account-scoped маршруты баланса и реестра сохраняют Bearer-защиту. Расчётные и рендерные маршруты этот секрет не принимают и не требуют.

Вход пользователя

Private editor и account UI

Браузерная сессия защищает редактор, историю, billing и поддержку. Не включайте account-секрет в YAML, URL или артефакты.

curl --fail-with-body \
  --header "Authorization: Bearer $TMM_API_TOKEN" \
  "https://api.tmm-agent.ru/v1/mechanisms/balance"

Tokenless preview и рендер

POST /v1/linkage/worksheet принимает UTF-8 YAML и возвращает текстовый preview с private, no-store. Соседний POST /v1/linkage/xmcd возвращает native application/x-mathcad+xml bytes; оба маршрута не меняют баланс или реестр и не требуют Bearer-токена.

POST /v1/linkage/markdown/render принимает publication-source bundle и options с format и необязательным логическим source_path Markdown-документа. Этот путь нужен для разрешения относительных ссылок producer-generated tmm-scene и tmm-segment. Масштабы локального UI материализуются в атрибутах scale generated tmm-scene блоков до отправки.

Исторические GET /v1/mechanisms/balance, GET /v1/mechanisms и POST /v1/mechanisms/quote относятся к account management и не нужны для расчёта. Legacy PUT /v1/linkage/xmcd/{uuid} и старые CDW durable routes сохранены только для исторических записей.