跳到主要内容

项目端点

使用 /projects 端点来创建、查询、更新和删除 SkillFlaw 项目

所有已认证的项目端点都要求项目 scope。 至少需要提供 tenant-id 头;如果是业务域上下文,还需要提供 business-id;个人上下文下 is-self 默认是 true

读取项目列表

获取当前 scope 下可见的项目列表:


_10
curl -X GET \
_10
"$SKILLFLAW_URL/api/v1/projects/" \
_10
-H "accept: application/json" \
_10
-H "x-api-key: $SKILLFLAW_API_KEY" \
_10
-H "tenant-id: $TENANT_ID"

结果

_12
[
_12
{
_12
"name": "Starter Project",
_12
"description": "Manage your own projects. Download and upload projects.",
_12
"id": "1415de42-8f01-4f36-bf34-539f23e47466",
_12
"parent_id": null,
_12
"tenant_id": "3c0f3b3d-4d37-4f35-9a4a-b0f2db7c9f10",
_12
"business_id": 0,
_12
"is_online": false,
_12
"creator_name": "skillflaw"
_12
}
_12
]

创建项目


_11
curl -X POST \
_11
"$SKILLFLAW_URL/api/v1/projects/" \
_11
-H "Content-Type: application/json" \
_11
-H "x-api-key: $SKILLFLAW_API_KEY" \
_11
-H "tenant-id: $TENANT_ID" \
_11
-d '{
_11
"name": "new_project_name",
_11
"description": "Project discovery note",
_11
"components_list": [],
_11
"flows_list": []
_11
}'

如果你想在创建项目时同时加入组件与流程,可以分别从:

取到 components_listflows_list 的值后再一起提交。

把流程加入项目时,流程会从原位置移动到该项目下,而不是复制一份。

读取单个项目


_10
curl -X GET \
_10
"$SKILLFLAW_URL/api/v1/projects/$PROJECT_ID" \
_10
-H "accept: application/json" \
_10
-H "x-api-key: $SKILLFLAW_API_KEY" \
_10
-H "tenant-id: $TENANT_ID"

如果你显式提供 pagesize 等分页参数,响应结构会变成:


_10
{ "project": { ... }, "flows": { ...pagination... } }

更新项目


_17
curl -X PATCH \
_17
"$SKILLFLAW_URL/api/v1/projects/b408ddb9-6266-4431-9be8-e04a62758331" \
_17
-H "accept: application/json" \
_17
-H "Content-Type: application/json" \
_17
-H "x-api-key: $SKILLFLAW_API_KEY" \
_17
-H "tenant-id: $TENANT_ID" \
_17
-d '{
_17
"name": "updated_project_name",
_17
"description": "Updated discovery note",
_17
"parent_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
_17
"components": [
_17
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
_17
],
_17
"flows": [
_17
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
_17
]
_17
}'

每次 PATCH 都只会更新你显式提交的字段。

删除项目


_10
curl -X DELETE \
_10
"$SKILLFLAW_URL/api/v1/projects/$PROJECT_ID" \
_10
-H "accept: */*" \
_10
-H "x-api-key: $SKILLFLAW_API_KEY" \
_10
-H "tenant-id: $TENANT_ID"

导出项目

将某个项目下的所有流程打包下载为 ZIP。 导出时,SkillFlaw 会在打包前剥离流程 JSON 中的 API Key。


_10
curl -X GET \
_10
"$SKILLFLAW_URL/api/v1/projects/download/$PROJECT_ID" \
_10
-H "accept: application/json" \
_10
-H "x-api-key: $SKILLFLAW_API_KEY" \
_10
-H "tenant-id: $TENANT_ID" \
_10
--output skillflaw-project-flows.zip

导入项目

通过上传 JSON 文件导入一个项目定义:


_10
curl -X POST \
_10
"$SKILLFLAW_URL/api/v1/projects/upload/" \
_10
-H "accept: application/json" \
_10
-H "Content-Type: multipart/form-data" \
_10
-H "x-api-key: $SKILLFLAW_API_KEY" \
_10
-H "tenant-id: $TENANT_ID" \
_10
-F "file=@project-import.json;type=application/json"

上传文件必须包含:

  • project_name
  • project_description
  • flows

注意:当前后端不能直接消费 GET /api/v1/projects/download/{project_id} 返回的 ZIP 作为导入输入。

示例 project-import.json


_14
{
_14
"project_name": "Imported Project",
_14
"project_description": "Imported project discovery note",
_14
"flows": [
_14
{
_14
"name": "Imported Flow",
_14
"description": "Imported flow description",
_14
"data": {
_14
"nodes": [],
_14
"edges": []
_14
}
_14
}
_14
]
_14
}

其他项目相关端点

/api/v1/projects 还额外暴露了与在线调用、技能关系、授权关系和绑定状态有关的端点,例如:

  • POST /api/v1/projects/{project_id}/invoke
  • GET|POST|DELETE /api/v1/projects/{project_id}/skills
  • GET /api/v1/projects/{project_id}/skills/{skill_id}/download
  • GET|POST|DELETE /api/v1/projects/{project_id}/auth/users
  • GET|POST|DELETE /api/v1/projects/{project_id}/auth/groups
  • GET|POST|DELETE /api/v1/projects/{project_id}/auth/orgs
  • POST|DELETE /api/v1/projects/{project_id}/bind