项目管理
使用流程
- 通过项目列表接口获取现有的项目
- 使用项目详情接口获取项目详细信息
- 使用项目新建/项目搜索/项目删除接口管理项目进行
- 通过项目版本列表接口获取项目对应的版本信息
- 获取当前项目的版本
额外
- 使用项目报告导出接口,导出项目的漏洞报告。
- 使用项目概况接口获取对应的项目漏洞信息。
当前项目版本修改
API Path:
/api/v1/project/version/current
请求方法:
POST
详细说明: 基于给定条件修改特定项目的版本号
请求参数:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 version_id 项目的版本 ID 是 [string] project_id 项目 ID 是 [int] 请求内容:
/api/v1/project/version/current{
"version_id": 183,
"project_id": 146
}响应内容:
{
"status": 201,
"msg": "版本设置成功"
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 status 状态码:201、202 否 [int] msg 状态信息:版本设置成功、版本不存在、版本设置失败 否 [string]
删除项目
API Path:
/api/v1/project/delete
请求方法:
POST
详细说明: 使用项目对应的
id
来删除项目请求参数
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 id 项目 ID 是 [int] 请求内容:
/api/v1/project/delete{
"id": 144
}响应内容:
{
"status": 201,
"msg": "项目删除成功"
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 status 状态码:201、202 否 [int] msg 状态信息:删除失败、项目删除成功 否 [string]
项目版本更新
API Path:
/api/v1/project/version/update
请求方法:
POST
详细说明: 更新对应的版本信息
请求参数:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 version_id 项目的版本 ID 是 [string] version_name 项目的版本名 是 [string] description 项目版本的描述 是 [string] project_id 项目 ID 是 [int] current_version 表示是否为当前版本,1 代表是,0 代表否 是 [int]
请求内容:
/api/v1/project/version/update{
"version_name": "1312",
"description": "11312",
"isEdit": true,
"version_id": 183,
"current_version": 1,
"project_id": 146
}响应内容:
{
"status": 201,
"msg": "更新成功"
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 status 状态码:201、202 否 [int] msg 状态信息:更新成功、参数错误 否 [string]
项目版本列表
API Path:
/api/v1/project/version/list/{project_id}
请求方法:
GET
详细说明: 获取项目对应的版本列表
REST 参数:
参数名 说明 必填 类型 值可能性 限制 示例 project_id 是 [int] 请求内容:
/api/v1/project/version/list/146
响应内容:
{
"status": 201,
"msg": "查询成功",
"data": [
{
"version_id": 183,
"version_name": "1312",
"current_version": 1,
"description": "13123"
},
{
"version_id": 182,
"version_name": "V1.0",
"current_version": 0,
"description": ""
}
]
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 data 是 [array] status 状态码:201 否 [int] msg 状态信息:success 否 [string] 参数名 说明 必填 类型 值可能性 限制 示例 version_id 项目的版本 ID 是 [int] version_name 项目的版本名 是 [string] current_version 表示是否为当前版本,1 代表是,0 代表否 是 [int] description 项目版本的描述 是 [string]
项目版本添加
API Path:
/api/v1/project/version/add
请求方法:
POST
详细说明: 基于给定条件添加指定项目版本,若指定版本号,将基于给定条件更新指定版本信息
请求参数:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 version_id 项目的版本 ID 是 [string] version_name 项目的版本名 是 [string] description 项目版本的描述 是 [string] project_id 项目 ID 是 [int] current_version 表示是否为当前版本,1 代表是,0 代表否 是 [int] 请求内容:
/api/v1/project/version/add{
"version_name": "1312",
"description": "13123",
"isEdit": true,
"project_id": 146
}响应内容:
{
"status": 201,
"msg": "创建成功",
"data": {
"version_id": 183,
"version_name": "1312",
"description": "13123"
}
}
返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 data 是 [array] status 状态码:201、202 否 [int] msg 状态信息:参数错误、创建成功 否 [string] 参数名 说明 必填 类型 值可能性 示例 version_id 项目的版本 ID 是 [string] version_name 项目的版本名 是 [string] description 项目版本的描述 是 [string]
项目报告导出
API Path:
/api/v1/project/export
请求方法:
GET
请求内容:
/api/v1/project/export?pid=143
响应内容:
application/octet-stream
项目对应的 word 报告详细说明: 基于以下条件,导出指定版本的报告或是特定漏洞的报告
Query 参数:
参数名 说明 必填 类型 限制 示例 pid 项目 ID 是 [int] pname 项目名 是 [string] vid 项目的版本 ID 是 [string]
项目列表
API Path:
/api/v1/projects
请求方法:
GET
详细说明: 用户对应的项目列表,支持使用项目模糊匹配搜索
Query 参数:
参数名 说明 必填 类型 限制 示例 name 项目名搜索,支持模糊匹配 否 [string] page 对应页码 否 [int] pageSize 每页数量,最大限制50,超过50输入视为50 否 [int]
请求内容:
/api/v1/projects?page=1&pageSize=20&name=123
响应内容:
{
"status": 201,
"msg": "success",
"data": [{
"id": 146,
"name": "123123321",
"mode": "插桩模式",
"vul_count": [],
"agent_count": 0,
"owner": "admin",
"latest_time": 1635493011,
"agent_language": []
}, {
"id": 143,
"name": "songtestFlask1455",
"mode": "插桩模式",
"vul_count": [],
"agent_count": 1,
"owner": "admin",
"latest_time": 1635490547,
"agent_language": ["PYTHON"]
}, {
"id": 142,
"name": "springsec-test-prod",
"mode": "插桩模式",
"vul_count": [],
"agent_count": 1,
"owner": "owefsad",
"latest_time": 1635479073,
"agent_language": ["JAVA"]
}],
"page": {
"alltotal": 60,
"num_pages": 3,
"page_size": 20
}
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 data 是 [array] status 状态码:201 否 [int] msg 状态信息:success 否 [string] 参数名 说明 必填 类型 值可能性 限制 示例 id 是 [int] name 否 [string] mode 否 [string] vul_count 漏洞数量 是 [string] agent_count 项目目前存活的 Agent 数量 是 [string] owner 项目拥有者 是 [string] latest_time 否 [int] agent_language Agent 的语言 是 [string]
项目搜索
API Path:
/api/v1/projects/summary/{id}
请求方法:
GET
详细说明: 项目的情况概览,包括:漏洞、项目版本、Agent 语言等信息
REST 参数:
参数名 说明 必填 类型 值可能性 限制 示例 id 是 [int] 请求内容:
/api/v1/projects/summary/146
响应内容:
{
"status": 201,
"msg": "success",
"data": {
"owner": "admin",
"name": "123123321",
"id": 146,
"mode": "插桩模式",
"latest_time": 1635493011,
"type_summary": [],
"day_num": [{
"day_label": "10-22",
"day_num": 0
},
{
"day_label": "10-23",
"day_num": 0
},
{
"day_label": "10-24",
"day_num": 0
},
{
"day_label": "10-25",
"day_num": 0
},
{
"day_label": "10-26",
"day_num": 0
},
{
"day_label": "10-27",
"day_num": 0
},
{
"day_label": "10-28",
"day_num": 0
},
{
"day_label": "10-29",
"day_num": 0
}
],
"level_count": [{
"level_id": 1,
"level_name": "高危",
"num": 0
},
{
"level_id": 2,
"level_name": "中危",
"num": 0
},
{
"level_id": 3,
"level_name": "低危",
"num": 0
},
{
"level_id": 4,
"level_name": "无风险",
"num": 0
},
{
"level_id": 5,
"level_name": "提示",
"num": 0
}
],
"versionData": {
"version_id": 183,
"version_name": "1312",
"description": "11312"
},
"agent_language": []
}
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 data 是 [object] status 状态码:201 否 [int] msg 状态信息:success 否 [string] 参数名 说明 必填 类型 值可能性 示例 name 项目名 是 [string] mode 项目模式 是 [string] id 项目ID 是 [int] latest_time 默认值为项目的当前版本 是 [int] versionData 项目的版本信息 是 [string] type_summary 关于漏洞类型的漏洞数量统计 是 [array] agent_language 项目中所涉及的 Agent 对应的语言 是 [array] level_count 基于漏洞等级的漏洞数量统计 是 [array] 参数名 说明 必填 类型 值可能性 示例 type_name 漏洞名 是 [string] type_count 漏洞类型的个数 是 [int] type_level 漏洞等级 是 [int] 参数名 说明 必填 类型 值可能性 示例 level_name 漏洞等级名 是 [string] level_id 漏洞等级 ID 是 [int] num 漏洞级别对应的漏洞数量 是 [int]
项目 Agent
API Path:
/api/v1/project/engines/{pid}
请求方法:
GET
详细说明: 获取项目对应的 Agent 列表
REST参数:
参数名 说明 必填 类型 值可能性 限制 示例 pid 是 [int]
请求内容:
/api/v1/project/engines/143
响应内容:
{
"status": 201,
"msg": "success",
"data": [
{
"id": 2116,
"token": "Darwin 18.7.0-bogon-v1.0.6-3752a9aad49d42fdac5bca7dd3e58bfe",
"short_name": "Darwin 18.7.0-bogon-v1.0.6"
}
]
}
返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 data 是 [array] data>>id Agent ID 是 [int] data>>token Agent 名称 是 [string] data>>shortname Agent 简称 是 [string] status 状态码:201 否 [int] msg 状态信息:success 否 [string]
项目详情
API Path:
/api/v1/project/{id}
请求方法:
GET
详细说明: 获取项目的版本信息,包括项目的当前版本
REST参数:
参数名 说明 必填 类型 值可能性 限制 示例 id 是 [int] 请求内容
/api/v1/project/139
响应内容
{
"status": 201,
"msg": "success",
"data": {
"name": "lost004",
"id": 138,
"mode": "插桩模式",
"scan_id": 5,
"agents": [
{
"id": 2083,
"name": "Windows 10-cain-v1.0.6-dongtai-agent-python"
}
],
"versionData": {
"version_id": 174,
"version_name": "V1.0",
"description": ""
}
}
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 data 是 [object] status 状态码:201、203 否 [int] msg 状态信息:success、no permission 否 [string] 参数名 说明 必填 类型 值可能性 限制 示例 name 项目名 是 [string] agents 项目对应的 Agent 是 [array] mode 项目模式 是 [string] scan_id 扫描策略对应的 ID 是 [int] versionData 项目的版本信息 是 [object] id 项目ID 是 [int] 参数名 说明 必填 类型 值可能性 限制 示例 name 项目版本名 是 [string] id 项目版本 ID 是 [int] 参数名 说明 必填 类型 值可能性 限制 示例 version_name 项目版本名称 是 [string] version_id 项目版本 ID 是 [int] description 项目版本描述 是 [string]
项目新建
API Path
/api/v1/project/add
请求方法:
POST
详细说明: 根据所给条件新建项目;当指定项目id时, 根据所给条件更新对应项目
请求参数:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 name 项目名 是 [string] agent_ids Agent 对应的 ID,使用","进行切分。 是 [string] mode 项目模式 是 [string] scan_id 扫描策略的对于 ID 是 [int] version_name 项目的版本名。 是 [string] pid 项目ID 是 [int] description 项目的描述信息 是 [string] 请求内容
/api/v1/project/add{
"name": "123123123123",
"mode": "插桩模式",
"agent_ids": "1,2",
"scan_id": 260,
"version_name": "123132",
"description": "1231"
}响应内容:
{
"status": 201,
"msg": "创建成功"
}返回结果:
Json Object
参数名 说明 必填 类型 值可能性 限制 示例 status 状态码:201、202、203 否 [int] msg 状态信息:参数错误、创建失败、项目名称已存在、创建成功、agent已被其他项目绑定 否 [string]