Сайт ↗
Разделы документации
О проекте · 0.8.1

Локальный API генератора

Какие запросы использует Generator UI и как учитывать ревизии при интеграции собственного инструмента.

На этой странице

Этот API меняет модель проекта: сущности, поля, связи и настройки генерации. Он не работает с записями статей или товаров в БД приложения. API нужен для интеграции инструментов с редактором; обычная работа выполняется через Generator UI, автоматизация — через CLI.

Как с ним работает Generator UI

В Project settings и Content вы меняете настройки и сохраняете их через Finish. Интерфейс отправляет текущую ревизию модели, чтобы не затереть более новое изменение. Если состояние устарело, UI сообщает о конфликте.

В Generate команда Preview changes показывает будущие изменения, Generate применяет их, а History хранит результаты.

Запуск и сессия

Локальный сервер запускается через serve или start. Его сессия не связана с аккаунтом системы администрирования готового приложения.

admingen-cli --path ./docs-demo serve --addr 127.0.0.1:8080
curl --fail http://127.0.0.1:8080/healthz

/healthz подтверждает доступность сервера генератора. Он не проверяет готовность созданного приложения. UI открывает локальную сессию через POST /api/session; защищённые запросы передают выданный Bearer-токен.

Чтение модели и настроек

Метод и путь Результат
GET /api/project Текущая модель проекта.
PUT /api/project Сохранение допустимых настроек проекта.
GET /api/entities Список сущностей.
GET /api/model-editor Данные модели в формате редактора.
GET /api/modules Список модулей.
GET /api/modules/{moduleName} Данные одного модуля.
GET /api/plan План генерации.
GET /api/history История результатов.

Изменение конкретной части модели

Метод и путь Действие
POST /api/modules Создать модуль.
PUT/DELETE /api/modules/{moduleName} Изменить или удалить модуль.
POST /api/entities/entity-draft Создать сущность с проверкой ревизии.
PUT /api/entities/{entityName}/settings Изменить настройки, не заменяя поля и связи.
DELETE /api/entities/{entityName}/entity-draft Удалить сущность.
POST /api/entities/{entityName}/field-draft Создать поле с согласованными параметрами.
PUT/DELETE /api/entities/{entityName}/field-draft/{fieldName} Изменить или удалить поле.
POST /api/entities/{entityName}/relation-draft Создать связь через текущий редактор.
POST /api/entities/{entityName}/collection-draft Создать коллекцию.
PUT/DELETE /api/entities/{entityName}/collection-draft/{relationName} Изменить или удалить коллекцию.
PUT /api/entities/{entityName}/projection-fields Сохранить выборку virtual отдельно от остальных настроек.

Есть и низкоуровневые маршруты: POST /api/entities/{entityName}/fields, PUT/DELETE .../fields/{fieldName}, POST .../relations, PUT/DELETE .../relations/{relationName}. Текущий UI использует команды для конкретного действия. Не заменяйте их отправкой целой устаревшей копии сущности: так можно потерять другие изменения.

Генерация, восстановление и переименование

POST /api/diff строит различия, POST /api/generate применяет генерацию. GET /api/manifest-rollback показывает восстановление сохранённой модели; POST по тому же адресу подтверждает его.

Переименование выполняется через POST .../fields/{fieldName}/rename-preview и POST .../fields/{fieldName}/rename. Эти операции проверяют ожидаемые ревизии.

Тело запроса должно соответствовать обработчику: данные модели и ревизии нельзя заменить произвольным JSON PATCH. При ошибке устаревшей ревизии перечитайте модель. Если неизвестно, завершился ли предыдущий запрос, сначала обновите состояние через Refresh. Повторное создание без проверки может повторить уже выполненное изменение.

HTTP-ошибки содержат message и дополнительный contractError; их формат отличается от CLI.

Что выбрать для своей задачи

Для ручной работы используйте Generator UI. Для повторяемых действий — CLI: он сам загружает модель и формирует корректное изменение. Локальный HTTP API выбирайте, когда нужен инструмент, интегрированный именно с редактором, а не external API готового приложения.