# Manager API

Manager API 是 DynamicApp 控制面入口,用于发布、部署、启动、停止、激活、回滚、查询状态和读取日志。

# 统一响应

Manager API 使用统一响应模型:

{
  "succeeded": true,
  "message": "OK",
  "errorCode": "",
  "data": {}
}

# 认证边界

默认 Ticket 请求头:

X-DynamicApp-Manager-Ticket

生产环境必须把 Manager 绑定到内网或控制面网络,并配置控制面 Ticket。旧配置名 RequireAccessToken 和 AccessTokens 仅保留兼容读取,新配置应使用 RequireTicket 和 Tickets。

# 路由列表

方法 路由 用途
GET /dynamicapp-manager/applications 查询控制面板应用总览,合并 Manifest 历史和当前运行目标
GET /dynamicapp-manager/targets 查询运行目标快照
GET /dynamicapp-manager/target/{dynamicAppId}/{modId}/{version} 查询单个运行目标
GET /dynamicapp-manager/manifests 查询全部 Manifest 历史
GET /dynamicapp-manager/manifests/{dynamicAppId} 查询 Manifest 历史
GET /dynamicapp-manager/packages 查询包管理器库存,按 DynamicApp、Mod 和版本列出已上传包、版本文件和 Manifest 指向的已安装 Mod 目录文件
GET /dynamicapp-manager/packages/applications 查询包管理应用目录,包含已创建但暂未上传 Mod 包的应用
GET /dynamicapp-manager/archived 查询已归档目标,供坏包或错误 Manifest 治理审计
POST /dynamicapp-manager/packages/applications 创建包管理应用目录;该操作只持久化应用命名空间,不发布 Manifest
POST /dynamicapp-manager/publish 发布 Manifest 并登记目标
POST /dynamicapp-manager/deploy 调用 Host 协调器完成发布、启动、健康检查和激活
POST /dynamicapp-manager/mods/configure 通过 JSON 动态配置一个 Mod,并选择发布或部署
POST /dynamicapp-manager/mods/upload 上传 Process 模式 Mod zip 包,保存、解压、生成 Manifest,并选择发布或部署
POST /dynamicapp-manager/start 基于已发布 Manifest 启动指定版本,健康检查通过后激活
POST /dynamicapp-manager/restart 停止并重新启动指定版本
POST /dynamicapp-manager/activate 激活指定版本
POST /dynamicapp-manager/health 对指定版本执行即时健康探测
POST /dynamicapp-manager/rollback 回滚到最近健康旧版本
POST /dynamicapp-manager/stop 停止指定版本
POST /dynamicapp-manager/archive 归档指定目标版本,并从默认应用列表和启动链路中隔离
POST /dynamicapp-manager/unarchive 解除指定目标版本归档,使其重新进入管理视图
POST /dynamicapp-manager/state 手动更新生命周期和健康状态
POST /dynamicapp-manager/logs 查询 Process 模式日志

# 单目标操作请求体

{
  "dynamicAppId": "security-platform",
  "modId": "auth",
  "version": "1.0.0.1"
}

# Manifest 历史

IDynamicAppManifestStore 用于保存 Manifest 快照:

  • 默认实现:InMemoryDynamicAppManifestStore。
  • 文件实现:FileDynamicAppManifestStore。
  • 历史记录模型:DynamicAppManifestRecord。

发布成功时,DefaultDynamicAppManager.PublishAsync(...) 会保存 Manifest 快照,供审计、人工查验和回滚策略使用。

文件历史存储示例:

builder.Services.AddFileDynamicAppManifestStore(options =>
{
    options.FilePath = "data/dynamicapp-manifests.json";
    options.MaxRecordsPerApp = 50;
});

查询指定 DynamicApp 的 Manifest 历史:

GET /dynamicapp-manager/manifests/{dynamicAppId}
X-DynamicApp-Manager-Ticket: <ticket>