本文档提供 Market 系统中所有 API 接口的完整参考。
所有 API 接口的前缀为 /app-store/api/v2。
所有 API 响应遵循标准格式:
{
"success": boolean,
"message": string,
"data": object | array | null
}常见 HTTP 状态码:
200 OK: 请求成功400 Bad Request: 请求参数无效401 Unauthorized: 认证失败404 Not Found: 资源未找到500 Internal Server Error: 服务器错误503 Service Unavailable: 服务暂时不可用
大多数接口需要用户认证。用户信息从请求头中提取:
X-Bfl-User: 从请求头获取用户 ID(当前版本)X-Authorization: 基于 Token 的认证(旧版,已废弃)
获取当前用户的市场数据哈希值。
响应:
{
"success": true,
"message": "Market hash retrieved successfully",
"data": {
"hash": string
}
}获取当前用户的完整市场数据(包含 AppInfoLatest 和 AppStateLatest)。
响应:
{
"success": true,
"message": "Market data retrieved successfully",
"data": {
"user_data": {
"sources": object,
"hash": string
},
"user_id": string,
"timestamp": number
}
}注意: 应用信息接口(POST /apps)和市场数据接口(GET /market/data)在业务上是相同的,只是请求路径和格式不同。
获取特定应用信息(支持批量查询)。
请求体:
{
"apps": [
{
"appid": string,
"sourceDataName": string
}
]
}响应:
{
"success": true,
"message": "Apps information retrieved successfully",
"data": {
"apps": array,
"total_count": number,
"not_found": array
}
}上传应用安装包。
请求: Multipart 表单数据
chart: 文件(必需,.tgz 或 .tar.gz,最大 100MB)source: 字符串(可选,默认: "upload")
响应:
{
"success": true,
"message": "App package uploaded and processed successfully",
"data": {
"filename": string,
"source": string,
"user_id": string,
"app_info": object
}
}获取应用版本历史。
请求体:
{
"appName": string
}响应:
{
"success": true,
"message": "Version history retrieved successfully",
"data": {
"data": [
{
"appName": string,
"version": string,
"versionName": string,
"mergedAt": string,
"upgradeDescription": string
}
]
}
}获取当前用户的应用状态数据(仅 AppStateLatest)。
响应:
{
"success": true,
"message": "Market state retrieved successfully",
"data": {
"user_data": {
"sources": object,
"hash": string
},
"user_id": string,
"timestamp": number
}
}获取系统状态聚合(安装操作的前置接口)。
响应:
{
"success": true,
"message": "System status aggregation complete",
"data": {
"user_info": object,
"cur_user_resource": object,
"cluster_resource": object,
"terminus_version": object
}
}安装应用。
路径参数:
id: 应用 ID
请求体:
{
"source": string,
"app_name": string,
"version": string,
"sync": boolean,
"envs": [
{
"env_name": string,
"env_value": string
}
]
}响应(异步):
{
"success": true,
"message": "App installation started successfully",
"data": {
"task_id": string
}
}响应(同步):
{
"success": true,
"message": "App installation completed successfully",
"data": object
}克隆应用(使用不同配置创建新实例)。
路径参数:
id: 应用 ID
请求体:
{
"source": string,
"app_name": string,
"title": string,
"sync": boolean,
"envs": [
{
"env_name": string,
"env_value": string
}
],
"entrances": [
{
"name": string,
"port": number,
"protocol": string
}
]
}响应(异步):
{
"success": true,
"message": "App clone installation started successfully",
"data": {
"task_id": string
}
}响应(同步):
{
"success": true,
"message": "App clone installation completed successfully",
"data": object
}取消应用安装。
路径参数:
id: 应用名称
请求体:
{
"sync": boolean
}响应(异步):
{
"success": true,
"message": "App installation cancellation started successfully",
"data": {
"task_id": string
}
}响应(同步):
{
"success": true,
"message": "App installation cancellation completed successfully",
"data": object
}升级应用。
路径参数:
id: 应用 ID
请求体:
{
"source": string,
"app_name": string,
"version": string,
"sync": boolean,
"envs": [
{
"env_name": string,
"env_value": string
}
]
}响应(异步):
{
"success": true,
"message": "App upgrade started successfully",
"data": {
"task_id": string
}
}响应(同步):
{
"success": true,
"message": "App upgrade completed successfully",
"data": object
}卸载应用。
路径参数:
id: 应用名称
请求体:
{
"sync": boolean,
"all": boolean
}响应(异步):
{
"success": true,
"message": "App uninstallation started successfully",
"data": {
"task_id": string
}
}响应(同步):
{
"success": true,
"message": "App uninstallation completed successfully",
"data": object
}打开应用。
请求体:
{
"id": string
}响应:
{
"success": true,
"message": "Application opened successfully",
"data": null
}恢复暂停的应用。
请求体:
{
"appName": string,
"all": boolean
}响应:
{
"success": true,
"message": "Application resumed successfully",
"data": {
"appName": string,
"type": string,
"result": object
}
}停止运行中的应用。
请求体:
{
"appName": string,
"all": boolean
}请求体参数:
appName: 应用名称(必需)all: 是否停止所有实例,默认为 false(可选)
响应:
{
"success": true,
"message": "Application stopped successfully",
"data": {
"appName": string,
"type": string,
"result": object
}
}删除本地源应用。
请求体:
{
"app_name": string,
"app_version": string
}响应:
{
"success": true,
"message": "App deleted successfully from upload source",
"data": {
"app_name": string,
"app_version": string,
"user_id": string,
"source": string,
"deleted_at": number
}
}检查应用支付状态(推荐路由,带源参数)。
路径参数:
source: 市场源名称id: 应用 ID
请求头:
X-Forwarded-Host: 必需,用于构建回调 URL
响应:
{
"success": true,
"message": "App payment status retrieved successfully",
"data": {
"app_id": string,
"source": string,
"requires_purchase": boolean,
"status": string,
"message": string,
"payment_error": string
}
}检查应用支付状态(旧版路由,搜索所有源)。
路径参数:
id: 应用 ID
请求头:
X-Forwarded-Host: 必需,用于构建回调 URL
响应:
{
"success": true,
"message": "App payment status retrieved successfully",
"data": {
"app_id": string,
"source": string,
"requires_purchase": boolean,
"status": string,
"message": string,
"payment_error": string
}
}购买应用。
路径参数:
source: 市场源名称id: 应用 ID
请求头:
X-Forwarded-Host: 必需,用于用户 DID 解析
响应:
{
"success": true,
"message": "OK",
"data": {
"app_id": string,
"source": string,
"user": string
}
}提交签名以处理支付。
请求体:
{
"jws": string,
"application_verifiable_credential": {
"productId": string,
"txHash": string
},
"product_credential_manifest": object
}请求头:
X-Bfl-User: 必需X-Forwarded-Host: 必需
响应:
{
"success": true,
"message": "Signature submission processed successfully",
"data": {
"jws": string,
"sign_body": string,
"user": string,
"status": string
}
}前端支付完成后启动支付轮询。
请求体:
{
"source_id": string,
"app_id": string,
"tx_hash": string,
"product_id": string
}请求头:
X-Forwarded-Host: 必需
响应:
{
"success": true,
"message": "Payment polling started successfully",
"data": {
"success": boolean,
"message": string,
"status": string
}
}前端通知支付就绪。
请求体:
{
"source_id": string,
"app_id": string,
"product_id": string,
"frontend_data": object
}请求头:
X-Forwarded-Host: 必需
响应:
{
"success": true,
"message": "Frontend payment state updated",
"data": {
"app_id": string,
"source": string,
"user": string,
"frontend_data": object
}
}当支付已确认且 VC 存在时,补偿性重推 VC 给 LarePass(topic: save_payment_vc),用于处理首推可能未达的场景。
请求体:
{
"product_id": "string"
}请求头:
X-Bfl-User: 必需
响应:
{
"success": true,
"message": "VC resent to LarePass successfully",
"data": {
"product_id": "string"
}
}获取签名回调(来自 LarePass)。
请求体:
{
"signed": boolean,
"jws": string,
"application_verifiable_credential": {
"productId": string,
"txHash": string
},
"product_credential_manifest": object
}请求头:
X-Bfl-User: 必需
响应:
{
"success": true,
"message": "Fetch signature callback processed",
"data": {
"status": string,
"user": string,
"jws_present": boolean
}
}获取市场源配置。
响应:
{
"success": true,
"message": "Market source configuration retrieved successfully",
"data": array
}添加市场源配置。
请求体:
{
"id": string,
"name": string,
"type": "local" | "remote",
"base_url": string,
"description": string
}响应:
{
"success": true,
"message": "Market source added successfully",
"data": array
}删除市场源配置。
路径参数:
id: 市场源 ID
响应:
{
"success": true,
"message": "Market source deleted successfully",
"data": array
}获取当前用户的市场设置。
响应:
{
"success": true,
"message": "Market settings retrieved successfully",
"data": object
}更新当前用户的市场设置。
请求体:
{
// MarketSettings 对象
}响应:
{
"success": true,
"message": "Market settings updated successfully",
"data": object
}获取市场调试内存信息(仅用于开发调试)。
响应:
{
"success": true,
"message": "Market information retrieved successfully",
"data": {
"users_data": object,
"cache_stats": object,
"total_users": number,
"total_sources": number
}
}获取缓存和 Redis 诊断信息(仅用于开发调试)。
响应:
{
"success": true,
"message": "Diagnostic information retrieved successfully",
"data": {
"cache_stats": object,
"users_data": object,
"total_users": number,
"total_sources": number,
"is_running": boolean
}
}强制从 Redis 重新加载缓存数据(仅用于开发调试)。
响应:
{
"success": true,
"message": "Cache data reloaded successfully from Redis",
"data": null
}清理无效的待处理数据(仅用于开发调试)。
响应:
{
"success": true,
"message": "Cleanup completed successfully",
"data": {
"cleaned_count": number
}
}按特定条件查询日志(仅用于开发调试)。
查询参数:
start: 偏移量(默认: 0)size: 限制数量(默认: 100,最大: 1000)type: 按日志类型过滤app: 按应用名称过滤start_time: 按开始时间过滤(Unix 时间戳)end_time: 按结束时间过滤(Unix 时间戳)
响应:
{
"success": true,
"message": "Logs retrieved successfully",
"data": {
"records": array,
"total_count": number,
"start": number,
"size": number,
"requested_size": number
}
}获取运行时状态(支持可选过滤器)。
查询参数:
user_id: 按用户 ID 过滤source_id: 按源 ID 过滤app_name: 按应用名称过滤task_status: 按任务状态过滤task_type: 按任务类型过滤
响应:
{
"success": true,
"message": "Runtime state retrieved successfully",
"data": {
"app_states": object,
"tasks": array,
"components": array,
"timestamp": number
}
}获取运行时仪表板(HTML 页面)。
响应: 包含运行时状态可视化的 HTML 页面
获取应用处理流程的运行时仪表板(HTML 页面)。
响应: 包含应用处理流程可视化的 HTML 页面