1. 算法仓库管理
描述: 算法仓库管理 算法仓库管理相关接口
1.1. 获取算法包元数据
基础信息
Path: /v1/api/algorithm/getAlgoPackMetaData
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
algoUrl | string | 是 | 算法包url |
Body示例:
{
"algoUrl": "http://127.0.0.3:38080/api/v1/storage/download/Z3NwOi8vd3Vrb25n-5a506fcea8477a303c96d23af5e5c70e.tar"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─metaData | object | 否 | metaData | |
|─cards | object[] | 否 | 算法卡片 | |
|─algoCardTypeName | string | 否 | 算法卡片的名称,显示用 | |
|─algoCardType | string | 否 | 算法卡片的类型 | |
|─algoCardUuid | string | 否 | 算法卡片uuid | |
|─deviceModels | integer[] | 否 | 适配设备型号,通过《获取字典信息》接口获得 | |
|─authLimits | string | 否 | 授权维度相关信息,JSON格式 | |
|─algoType | string | 否 | 算法包具体类型,同一种算法包对不同的vendor、不同分析源类型均不同 | |
|─algoVersion | string | 否 | 算法包版本 | |
|─description | string | 否 | 算法包描述 | |
|─algoName | string | 否 | 算法包名称 | |
|─algoResolution | object[] | 否 | GPU信息 | |
|─accelerator | string | 否 | GPU型号: 如2070,T4,AX630等 | |
|─vendor | string | 否 | GPU产商: NVIDIA, AXERA | |
|─quota | double | 否 | 算法运行时需要占用的GPU个数 | |
|─streamVideoQuota | integer | 否 | 支持的视频分析路数 | |
|─streamCaptureQuota | integer | 否 | 支持的图片分析路数 | |
|─resolution | string | 否 | 算法能力说明,对不同显卡类型可配置不同 PIXELS_200W | |
|─analyzeQuota | integer | 否 | 支持的图片静态分析QPS |
响应示例:
{
"code":0,
"data":{
"metaData":{
"algoName":"人数统计",
"algoResolution":[
{
"accelerator":"AX630",
"analyzeQuota":0,
"quota":1.0,
"resolution":"PIXELS_200W",
"streamCaptureQuota":0,
"streamVideoQuota":16,
"vendor":"AXERA"
},
{
"accelerator":"AX630",
"analyzeQuota":0,
"quota":1.0,
"resolution":"PIXELS_400W",
"streamCaptureQuota":0,
"streamVideoQuota":8,
"vendor":"AXERA"
},
{
"accelerator":"AX630",
"analyzeQuota":0,
"quota":1.0,
"resolution":"PIXELS_800W",
"streamCaptureQuota":0,
"streamVideoQuota":4,
"vendor":"AXERA"
}
],
"algoType":"headcount_alarm",
"algoVersion":"2.0.0",
"authLimits":"null",
"cards":[
{
"algoCardType":"MAX_NUMBER_PEOPLE",
"algoCardTypeName":"区域密度检测",
"algoCardUuid":""
},
{
"algoCardType":"CROSS_LINE",
"algoCardTypeName":"出入口人数统计",
"algoCardUuid":""
}
],
"description":"区域密度检测、出入口人数统计",
"deviceModels":[
18,
18,
18
]
}
},
"msg":"成功"
}
1.2. 查询文件存在|分片上传-创建任务
基础信息
Path: /v1/api/storage/exists
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
checkType | integer | 否 | 判断方式- 0: (默认)按fileMd5校验,必传参数:FileMd5,fileName,选传:ttl- 1: 按fileId校验,必传参数:fileId,fileName,选传:ttl- 2: 按uri校验,必传参数:uri | |
createChunkTask | boolean | 否 | 分片上传时传true,代表生成分片任务 | |
fileName | string | 否 | 文件名,非uri方式查询时必传 | |
fileMd5 | string | 否 | 文件md5值 | |
uri | string | 否 | uri,base64编码串,解码后,形如gsp://{bucket}/{objectId} | |
ttl | integer | 否 | 文件过期时间,单位天,ttl=0 | |
fileId | string | 否 | 传了fileId,优先作为文件的objectId;也作为下载时的文件名称 |
Body示例:
{
"fileName": "algo_out_alert_alarm-thin@2.0.1.tar",
"fileMd5": "850e8a63eb35cd5e4d7f2dabc4ac7b1a",
"fileSize": 71577600,
"createChunkTask": true
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─isExists | boolean | 否 | 文件是否存在 | |
|─uploadId | string | 否 | 分片任务id,createChunkTask=true时返回 | |
|─chunkIds | string[] | 否 | 已上传的分片id数组,createChunkTask=true时返回 | |
|─uri | string | 否 | uri,base64编码串,解码后,形如gsp://{bucket}/{objectId} | |
|─url | string | 否 | url,文件URL全路径 |
响应示例:
{
"code":0,
"data":{
"chunkIds":[],
"isExists":false,
"uploadId":"98ba3370-4da9-43e7-8e97-564ce0418dd5",
"uri":"",
"url":""
},
"msg":"成功"
}
1.3. 设置算法包默认版本
基础信息
Path: /v1/api/algorithm/setDefaultVersion
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
algoVersion | string | 是 | 算法包版本 | |
algoUniqueType | string | 是 | 算法包类型唯一标识,根据algoType,algoBizType,Accelerator,deviceModel生成的唯一值,同类算法包具有唯一性(可通过/v1/api/algorithm/get接口获取) |
Body示例:
{
"algoVersion": "2.0.1",
"algoUniqueType": "d67a238c1edbac61ac535be792201699"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 |
响应示例:
{
"code": 0,
"msg": "成功"
}
1.4. 从url转存到gsp
基础信息
Path: /v1/api/storage/uploadByUrl
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
ttl | integer | 否 | 文件过期时间,单位天,ttl=0;注意忽略ttl | |
url | string | 是 | url,文件URL全路径 |
Body示例:
{
"url": "http://mirrors.gdc.megvii.com/EBG%algo_out_headcount_alarm%402.0.0.tar?OSSAccessKeyId=LTAI5tJR6FrmZm29kqi2RqSa&Expires=1700688810&Signature=K5HGXbGVcfLcqDVpNyAVTotgB68%3D"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─isExists | boolean | 否 | 文件是否存在 | |
|─uploadId | string | 否 | 分片任务id | |
|─uri | string | 否 | uri,base64编码串,解码后,形如gsp://{bucket}/{objectId} | |
|─url | string | 否 | url,文件URL全路径 |
响应示例:
{
"code":0,
"data":{
"isExists":false,
"uploadId":"977a150f-44c0-4081-970b-a06950e1f926",
"uri":"",
"url":""
},
"msg":"成功"
}
1.5. 获取算法包适配设备列表
基础信息
Path: /v1/api/algorithm/getAdapterDevices
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
deviceIp | string | 否 | 设备IP,支持模糊查询 | |
algoUuid | string | 是 | 算法包标识 | |
deviceModels | integer[] | 否 | 适配设备型号,通过《获取字典信息》接口获得 | |
zoneUuid | string | 否 | 设备所在区域,通过《设备区域树管理;区域树查询》接口获得 | |
pageSize | integer | 否 | 分页大小,不传默认20 | |
pageNum | integer | 否 | 当前页码,不传默认1 | |
deviceName | string | 否 | 设备名称,支持模糊查询 | |
onlyCount | boolean | 否 | onlyCount | |
deviceAlgoStatus | integer[] | 否 | 设备算法包状态,4:未部署- 5:部署中- 6:已部署- 8:更新中 | |
deviceStatus | integer | 否 | - 3: 在线- 4:离线-6:删除中 |
Body示例:
{
"pageSize": 10,
"pageNum": 1,
"algoUuid": "AG-8c0bb8d8687a49bab5a2",
"deviceModels": [
18
],
"zoneUuid": "0"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─total | integer | 是 | 总数 | |
|─pageSize | integer | 是 | 分页大小 | |
|─list | object[] | 否 | list | |
|─deviceUuid | string | 否 | 设备标识 | |
|─uploadId | string | 否 | 算法包部署ID | |
|─ip | string | 否 | 设备Ip | |
|─algoType | string | 否 | 设备算法包类型 | |
|─algoStatus | integer | 否 | 算法包部署状态:1: 未上传,2: 上传中,3: 已上传,4: 未安装,5: 安装中,6: 已安装,7: 卸载中,8: 更新中 | |
|─deploymentId | string | 否 | 算法包部署ID | |
|─deviceModel | integer | 否 | 1: MegEye-W5K-I8,2: MegEye-W4K-E7,3: ....,通过《获取字典信息》接口获得更多 | |
|─deviceRegion | string | 否 | 设备区域,层级结构 | |
|─version | string | 否 | 设备算法包版本 | |
|─deviceName | string | 否 | 设备名称 | |
|─deviceStatus | integer | 否 | - 3: 在线- 4:离线-6:删除中 | |
|─pageNum | integer | 是 | 当前页码 |
响应示例:
{
"code":0,
"data":{
"list":[
{
"algoStatus":6,
"algoType":"megalarm-mf-N-person-cu102-t4-act-nmix",
"deploymentId":"5",
"deviceModel":18,
"deviceName":"core",
"deviceRegion":"默认区域",
"deviceStatus":3,
"deviceUuid":"DE-c86f53e5f7464203985c2df441e4fbdb",
"ip":"10.117.56.174",
"uploadId":"00e85701-ac2e-49c7-841e-40df23db67b5",
"version":"5.1.0"
}
],
"pageNum":1,
"pageSize":10,
"total":1
},
"msg":"成功"
}
1.6. 分片上传-合并已上传分片
基础信息
Path: /v1/api/storage/concatFiles
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
uploadId | string | 是 | 分片任务id,exists接口返回的uploadId |
Body示例:
{
"uploadId": "977a150f-44c0-4081-970b-a06950e1f926"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─uri | string | 否 | 下载uri,base64编码串,解码后,形如gsp://{bucket}/{objectId} | |
|─url | string | 否 | url,文件URL全路径 |
响应示例:
{
"code":0,
"data":{
"uri":"Z3NwOi8vd3Vrb25n-02d97ce8716e91ab4e9f3034bc1884f2.tar",
"url":""
},
"msg":"成功"
}
1.7. 查询设备算法包可安装的数量
基础信息
Path: /v1/api/algorithm/getInstallLimit
Method: POST /v2/web/algorithm/getInstallLimit
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
deviceUuid | string | 是 | 设备uuid | |
algoUuid | string | 是 | 算法包uuid |
Body示例:
{
"deviceUuid": "DE-c86f53e5f7464203985c2df441e4fbdb",
"algoUuid": "AG-001"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─nodes | object[] | 否 | 算力节点 | |
|─resources | object[] | 否 | 算力资源 | |
|─accelerator | string | 否 | GPU型号 | |
|─total | double | 否 | GPU卡总数 | |
|─vendor | string | 否 | GPU产商 | |
|─quota | double | 否 | 当前算法包安装一份占用的资源,可以为小数,如0.5占用半张卡 | |
|─limit | integer | 否 | 算法包可安装最大数量 | |
|─free | double | 否 | 空闲数量 |
响应示例:
{
"code":0,
"data":{
"nodes":[
{
"resources":[
{
"accelerator":"2070",
"free":0.5,
"limit":0,
"quota":1.0,
"total":2.0,
"vendor":"NVIDIA"
}
]
}
]
},
"msg":"成功"
}
1.8. 文件上传
基础信息
Path: /v1/api/storage/upload
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | multipart/form-data | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
file | string | 是 | form-data文件流 | |
fileMd5 | string | 否 | 文件md5值,相同的文件fileMd5一样 | |
ttl | integer | 否 | 文件过期时间,单位天,空或者零值时,表示永不过期,非空时指定ttl空间下存储 | |
fileId | string | 否 | 为了重复上传相同fileMd5的文件,自定义fileId,优先作为文件key;也作为下载时的文件名称 | |
fileName | string | 是 | 必须指定文件名,否则其他接口感知无法该文件 |
Body示例:
{
"file": "c3BlYy...................",
"fileName": "algo_out_alert_alarm-thin@2.0.1.tar",
"fileMd5": "850e8a63eb35cd5e4d7f2dabc4ac7b1a",
"ttl": 0
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─uri | string | 是 | 上传返回的uri | |
|─url | string | 是 | 上传返回的url |
响应示例:
{
"code":0,
"data":{
"url": "http://127.0.01:38080/api/v1/storage/download/Z3NwOi8vd3Vrb25n-90807d4bbd94be83243e649df4a9b3d0.tar",
"uri": "Z3NwOi8vd3Vrb25n-90807d4bbd94be83243e649df4a9b3d0.tar"
},
"msg":"成功"
}
1.9. 更新算法包描述和文件名
描述:文件名与描述不能同时为空 若一方为空,则仅更新非空的一方。
基础信息
Path: /v1/api/algorithm/updatePackDesc
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
algoUuid | string | 否 | 算法包标识 | |
algoDescription | string | 否 | 算法包描述 | |
algoFileName | string | 否 | 算法包文件名 |
Body示例:
{
"algoUuid": "AG-8c0bb8d8687a49bab5a2",
"algoFileName": "EBG%E5%8F%91%E5%B8%83%E7%89%88%E6%9C%AC%2F%E5%B9%BB%E6%96%B9%2Frelease%E7%89%88%E6%9C%AC%2FV2.0.0%2F%E7%AE%97%E6%B3%95%E4%BB%93%E5%8C%85NV%2F%E8%AD%A6%E6%88%92%E8%A1%8C%E4%B8%BA%E4%BB%93%2Falgo_out_megalarm-mf-N-person-cu102-t4-act-nmix%405.1.0.tar?OSSAccessKeyId=LTAI5tJR6FrmZm29kqi2RqSa&Expires=1700685702&Signature=liFOI858j%2FNw8calUCIcd7KuFbE%3D",
"algoDescription": "看手机检测、接打电话、抽烟检测、人员奔跑、摔倒检测、睡岗检测、人员扭打、翻越闸机、人员聚众、人员值岗/离岗-超员、人员值岗/离岗-少员、人员值岗/离岗-离岗2"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 |
响应示例:
{
"code": 0,
"msg": "成功"
}
1.10. 判断算法包是否存在
基础信息
Path: /v1/api/algorithm/exists
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
file | string | 否 | base64编码, 必须是512字节的倍数,推荐8M,和algoUrl二选一 | |
algoUrl | string | 否 | 算法包可直接下载url,和file二选一 |
Body示例:
{
"file": "c3BlYy..................."
}
或
{
"algoUrl": "http://mirrors.gdc.megvii.com/EBG%E5%8F%91%E5%B8%83%E7%89%88%E6%9C%AC%2F%E5%B9%BB%E6%96%B9%2Frelease%E7%89%88%E6%9C%AC%2FV2.0.0%Falgo_out_headcount_alarm%402.0.0.tar?OSSAccessKeyId=LTAI5tJR6FrmZm29kqi2RqSa&Expires=1700688810&Signature=K5HGXbGVcfLcqDVpNyAVTotgB68%3D"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─algoUuid | string | 否 | 算法包uuid,如果算法包存在会返回否则为空 | |
|─isExist | boolean | 否 | 是否存在 |
响应示例:
{
"code": 0,
"msg": "成功"
}
1.11. 查询设备算法占用
基础信息
Path: /v1/api/algorithm/getOccupied
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
deviceUuid | string | 是 | 设备的deviceUuid |
Body示例:
{
"deviceUuid": "DE-c86f53e5f7464203985c2df441e4fbdb"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─total | integer | 否 | 总记录数 | |
|─list | object[] | 否 | list | |
|─algoType | string | 否 | 算法包具体类型,同一种算法包对不同的vendor、不同分析源类型均不同 | |
|─algoVersion | string | 否 | 算法版本 | |
|─algoName | string | 否 | 算法名称 | |
|─algoBusinessType | string | 否 | 算法商业化分类 FACE(人脸), STRUCTURE(结构化), ALARM(警戒), SAFETY(安监), MCLZ(明厨亮灶), etc | |
|─algoBusinessTypeName | string | 否 | 算法商业化分类描述(简短) 人脸,结构化,警戒,安监,明厨亮灶 etc | |
|─ratio | double | 否 | 资源占比,used/total |
响应示例:
{
"code":0,
"data":{
"list":[
{
"algoBusinessType":"FACE",
"algoBusinessTypeName":"人脸",
"algoName":"人脸(高质量)",
"algoType":"megsdk-faced-video-share",
"algoVersion":"latest",
"ratio":0.0
},
{
"algoBusinessType":"ALARM_BEHAVIOR_NV",
"algoBusinessTypeName":"行为警戒",
"algoName":"行为警戒",
"algoType":"megalarm-mf-N-person-cu102-t4-act-nmix",
"algoVersion":"5.1.0",
"ratio":4.17
}
],
"total":2
},
"msg":"成功"
}
1.12. 安装算法包到设备进度
基础信息
Path: /v1/api/algorithm/getDeployPackToDeviceProcess
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
deviceUuid | string | 是 | 设备uuid | |
uploadId | string | 是 | 上传标识 |
Body示例:
{
"uploadId": "adafbc67-dec1-4a80-bd4c-129c9a23ff89",
"deviceUuid": "DE-aeae7752ca4145569f3f047b5bfbdd77"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─uploadId | string | 否 | 上传标识 | |
|─progress | integer | 否 | 上传进度,0-100 |
响应示例:
{
"code":0,
"data":{
"progress":6,
"uploadId":""
},
"msg":"成功"
}
1.13. 查询设备算法包概览
基础信息
Path: /v1/api/algorithm/getNodes
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
deviceUuid | string | 是 | 设备的deviceUuid | |
sum | boolean | 否 | 是否合并返回节点. |
Body示例:
{
"deviceUuid": "DE-c86f53e5f7464203985c2df441e4fbdb"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─nodes | object[] | 否 | 算力节点 | |
|─resources | object[] | 否 | 资源信息 | |
|─accelerator | string | 否 | GPU型号 | |
|─total | double | 否 | 所有算法包占用的资源总量 | |
|─vendor | string | 否 | GPU产商 | |
|─indexFree | indexfreedto | 否 | 具体卡占用情况 | |
|─free | double | 否 | 空闲资源量 | |
|─occupied | occupieddto | 否 | 各算法包占用情况 |
响应示例:
{
"code":0,
"data":{
"nodes":[
{
"resources":[
{
"accelerator":"2070",
"free":0.0,
"indexFree":{
"0":0,
"1":0
},
"occupied":{
"行为警戒":1,
"人脸(高质量)":1
},
"total":2.0,
"vendor":"Nvidia"
}
]
}
]
},
"msg":"成功"
}
1.14. 卸载设备算法包
基础信息
Path: /v1/api/algorithm/unInstallPackFromDevice
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
items | object[] | 否 | items | |
|─deviceUuid | string | 是 | 设备uuid | |
|─algoUuid | string | 是 | 算法包uuid |
Body示例:
{
"items": [
{
"deviceUuid": "DE-83f80ec4974d40c2aca898999be010de",
"algoUuid": "AG-25c63481c23d4e8295c2"
}
]
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─items | object[] | 否 | items | |
|─msg | string | 否 | 错误信息code非0时有意义 | |
|─deviceUuid | string | 是 | 设备uuid | |
|─code | integer | 否 | 0标识成功,非0标识失败 | |
|─algoUuid | string | 否 | 算法包uuid |
响应示例:
{
"code":0,
"data":{
"items":[
{
"algoUuid":"AG-25c63481c23d4e8295c2",
"code":0,
"deviceUuid":"DE-83f80ec4974d40c2aca898999be010de",
"msg":""
}
]
},
"msg":"成功"
}
1.15. 查询设备算法包算法类型分组(支持离线设备)
基础信息
Path: /v1/api/algorithm/queryAlgosGroupByType
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
deviceUuid | string | 是 | 设备uuid | |
installed | boolean | 否 | 是否被安装 | |
algoType | string | 否 | 算法包具体类型,同一种算法包对不同的vendor、不同分析源类型均不同 | |
cabinCategory | integer | 否 | - 1: 人脸、结构化算法 - 2: 长尾算法仓 |
Body示例:
{
"deviceUuid": "DE-c86f53e5f7464203985c2df441e4fbdb",
"algoType": "megsdk-faced-capture-share"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─total | integer | 否 | 总记录数 | |
|─list | object[] | 否 | 算法包列表 | |
|─captureEventMaxNum | integer | 否 | 图片流布控内包含卡片的最大数量 | |
|─replicas | integer | 否 | 算法包安装的复本数量 | |
|─algoType | string | 否 | 算法包具体类型,同一种算法包对不同的vendor、不同分析源类型均不同 | |
|─algoBusinessType | string | 否 | 算法商业化分类 FACE(人脸), STRUCTURE(结构化), ALARM(警戒), SAFETY(安监), MCLZ(明厨亮灶), etc | |
|─algoBusinessTypeName | string | 否 | 算法商业化分类描述(简短) 人脸,结构化,警戒,安监,明厨亮灶 etc | |
|─algoName | string | 否 | 算法包名称 | |
|─algoHighLevelType | string | 否 | NORMAL(常规); HIGH(带高阶功能) | |
|─videoEventMaxNum | integer | 否 | 视频布控内包含卡片的最大数量 | |
|─analyzeEventMaxNum | integer | 否 | 图片分析布控内包含卡片的最大数量 | |
|─version | string | 否 | 当前已安装的算法版本 | |
|─installedAlgoUuid | string | 否 | 已安装算法的uuid |
响应示例:
{
"code":0,
"data":{
"list":[
{
"algoBusinessType":"FACE",
"algoBusinessTypeName":"人脸",
"algoHighLevelType":"NORMAL",
"algoName":"人脸(抓拍流)",
"algoType":"megsdk-faced-capture-share",
"analyzeEventMaxNum":0,
"captureEventMaxNum":1,
"installedAlgoUuid":"",
"replicas":0,
"version":"",
"videoEventMaxNum":0
}
],
"total":1
},
"msg":"成功"
}
1.16. 查询当前的算法包列表
基础信息
Path: /v1/api/algorithm/get
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
algoDeviceModels | integer[] | 否 | 适配设备型号,通过《获取字典信息》接口获得 | |
algoUuid | string | 否 | 算法包uuid | |
algoType | string | 否 | 算法类型 | |
algoDescription | string | 否 | 算法描述,支持模糊查询 | |
algoName | string | 否 | 算法名称,支持模糊查询 | |
deviceUuid | string | 否 | 适配设备uuid,不为空时只查询此设备型号及芯片适配的算法包 | |
algoUniqueType | string | 否 | 同一类算法包,根据algoType,algoBizType,Accelerator,deviceModel生成的唯一值 | |
pageSize | integer | 否 | 分页大小 | |
algoBusinessType | string | 否 | 算法包类型,同类型算法包不同芯片该字段不同,当algotype不为空时,此字段必填 | |
isOnlyDefault | boolean | 否 | 是否仅获取默认版本 | |
pageNum | integer | 否 | 当前页码 |
Body示例:
{
"pageNum": 1,
"algoName": "行为",
"algoDeviceModels": [
18
],
"algoUuid":"AG-8c0bb8d8687a49bab5a2",
"algoType":"megalarm-mf-N-person-cu102-t4-act-nmix",
"algoBusinessType":"ALARM_BEHAVIOR_NV",
"pageSize": 20
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─total | integer | 是 | 总数 | |
|─pageSize | integer | 是 | 分页大小 | |
|─list | object[] | 否 | list | |
|─metaData | object | 否 | metaData | |
|─cards | object[] | 否 | 算法卡片 | |
|─algoCardTypeName | string | 否 | 算法卡片的名称,显示用 | |
|─algoCardType | string | 否 | 算法卡片的类型 | |
|─algoCardUuid | string | 否 | 算法卡片uuid | |
|─deviceModels | integer[] | 否 | 适配设备型号,通过《获取字典信息》接口获得 | |
|─authLimits | string | 否 | 授权维度相关信息,JSON格式 | |
|─algoType | string | 否 | 算法包具体类型,同一种算法包对不同的vendor、不同分析源类型均不同 | |
|─algoVersion | string | 否 | 算法包版本 | |
|─description | string | 否 | 算法包描述 | |
|─algoName | string | 否 | 算法包名称 | |
|─algoResolution | object[] | 否 | GPU信息 | |
|─accelerator | string | 否 | GPU型号: 如2070,T4,AX630等 | |
|─vendor | string | 否 | GPU产商: NVIDIA, AXERA | |
|─quota | double | 否 | 算法运行时需要占用的GPU个数 | |
|─streamVideoQuota | integer | 否 | 支持的视频分析路数 | |
|─streamCaptureQuota | integer | 否 | 支持的图片分析路数 | |
|─resolution | string | 否 | 算法能力说明,对不同显卡类型可配置不同 PIXELS_200W | |
|─analyzeQuota | integer | 否 | 支持的图片静态分析QPS | |
|─creator | string | 否 | 创建的用户 | |
|─isDefault | boolean | 否 | 是否默认版本 | |
|─fileName | string | 否 | 算法包名字 | |
|─algoUuid | string | 否 | 算法包uuid | |
|─algoUniqueType | string | 否 | 同一类算法包,根据algoType,algoBizType,Accelerator,deviceModel生成的唯一值 | |
|─createTime | string | 否 | 算法包上传时间,Unix 时间戳,单位是毫秒 | |
|─algoBusinessType | string | 否 | 算法商业化分类 FACE(人脸), STRUCTURE(结构化), ALARM(警戒), SAFETY(安监), MCLZ(明厨亮灶), etc | |
|─algoBusinessTypeName | string | 否 | 算法商业化分类描述(简短) 人脸,结构化,警戒,安监,明厨亮灶 etc | |
|─algoHighLevelType | string | 否 | NORMAL(常规); HIGH(带高阶功能) | |
|─source | string | 否 | 算法包来源 | |
|─uri | string | 否 | 算法包在存储服务的地址uri,可能为空 | |
|─url | string | 否 | 算法包url地址 | |
|─pageNum | integer | 是 | 当前页码 |
响应示例:
{
"code":0,
"data":{
"list":[
{
"algoBusinessType":"ALARM_BEHAVIOR_NV",
"algoBusinessTypeName":"行为警戒",
"algoHighLevelType":"NORMAL",
"algoUuid":"AG-8c0bb8d8687a49bab5a2",
"createTime":"1700618408",
"creator":"openapi",
"fileName":"EBG%E5%8F%91%E5%B8%83%E7%89%88%E6%9C%AC%2F%E5%B9%BB%E6%96%B9%2Frelease%E7%89%88%E6%9C%AC%2FV2.0.0%2F%E7%AE%97%E6%B3%95%E4%BB%93%E5%8C%85NV%2F%E8%AD%A6%E6%88%92%E8%A1%8C%E4%B8%BA%E4%BB%93%2Falgo_out_megalarm-mf-N-person-cu102-t4-act-nmix%405.1.0.tar?OSSAccessKeyId=LTAI5tJR6FrmZm29kqi2RqSa&Expires=1700685702&Signature=liFOI858j%2FNw8calUCIcd7KuFbE%3D",
"isDefault":true,
"metaData":{
"algoName":"行为警戒",
"algoResolution":[
{
"accelerator":"2070",
"analyzeQuota":0,
"quota":0.5,
"resolution":"PIXELS_200W",
"streamCaptureQuota":0,
"streamVideoQuota":12,
"vendor":"NVIDIA"
},.....
],
"algoType":"megalarm-mf-N-person-cu102-t4-act-nmix",
"algoVersion":"5.1.0",
"authLimits":"null",
"cards":[
{
"algoCardType":"FALL",
"algoCardTypeName":"摔倒检测",
"algoCardUuid":"AC-0b493897450a4c52bc83"
},
{
"algoCardType":"FIGHT",
"algoCardTypeName":"人员扭打",
"algoCardUuid":"AC-5c55fde0e74d44dd98b4"
},......
],
"description":"看手机检测、接打电话、抽烟检测、人员奔跑、摔倒检测、睡岗检测、人员扭打、翻越闸机、人员聚众、人员值岗/离岗-超员、人员值岗/离岗-少员、人员值岗/离岗-离岗",
"deviceModels":[
18
]
},
"source":"MANUAL",
"uri":"Z3NwOi8vd3Vrb25n-02d97ce8716e91ab4e9f3034bc1884f2.tar",
"url":"http://127.0.0.2:38080/api/v1/storage/download/Z3NwOi8vd3Vrb25n-02d97ce8716e91ab4e9f3034bc1884f2.tar"
}
],
"pageNum":1,
"pageSize":20,
"total":1
},
"msg":"成功"
}
1.17. 获取转存进度
基础信息
Path: /v1/api/storage/getUploadProcess
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
uploadId | string | 是 | 分片任务id |
Body示例:
{
"uploadId": "977a150f-44c0-4081-970b-a06950e1f926"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─uploadProgress | integer | 否 | 上传进度,小于0表示出错,100时,返回url等信息 | |
|─uri | string | 否 | uri,base64编码串,解码后,形如gsp://{bucket}/{objectId} | |
|─url | string | 否 | url,文件URL全路径 | |
|─md5 | string | 否 | 文件md5 |
响应示例:
{
"code":0,
"data":{
"md5":"",
"uploadProgress":1,
"uri":"",
"url":""
},
"msg":"成功"
}
1.18. 分片上传-上传每片文件
基础信息
Path: /v1/api/storage/uploadChunk
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | multipart/form-data | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
file | string | 是 | form-data文件流,分片不能少于5MB | |
uploadId | string | 是 | 分片任务id,exists接口返回的uploadId | |
chunkId | string | 是 | 分片id,注意:从1开始 |
Body示例:
{
"file": "c3BlYy...................",
"chunkId": "14",
"uploadId": "98ba3370-4da9-43e7-8e97-564ce0418dd5"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 |
响应示例:
{
"code": 0,
"msg": "成功"
}
1.19. 删除算法包
基础信息
Path: /v1/api/algorithm/deletePackage
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
algoUuid | string | 否 | 算法包uuid,调用算法包上传或列表接口时可获得,二选一 | |
algoUniqueType | string | 否 | 同类算法包,根据algoType,algoBizType,Accelerator,deviceModel生成的唯一值,同类算法包具有唯一性 ,二选一 |
Body示例:
{
"algoUniqueType": "d67a238c1edbac61ac535be792201699"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 |
响应示例:
{
"code": 0,
"msg": "成功"
}
1.20. 获取字典信息
基础信息
Path: /v1/api/resource/dictionary
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─dictionaries | object[] | 否 | 字典列表 | |
|─name | string | 否 | 字典名 | |
|─options | object[] | 否 | 字典选项 | |
|─label | string | 否 | 选项名 | |
|─value | valuedto | 否 | 选项值,仅支持数字或者字符串 | |
|─key | string | 否 | 字典key |
响应示例:
{
"code":0,
"data":{
"dictionaries":[
{
"key":"deviceModel",
"name":"设备型号",
"options":[
{
"label":"MegEye-W5K-I8",
"value":1
},.....
{
"label":"PTLCube-B4H04-311",
"value":98
},
{
"label":"PTLCube-B4H08-311",
"value":99
}
]
}
]
},
"msg":"成功"
}
1.21. 安装算法包到设备
基础信息
Path: /v1/api/algorithm/DeployPackToDevice
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
items | object[] | 否 | items | |
|─deviceUuid | string | 是 | 设备标识 | |
|─algoUuid | string | 是 | 算法包标识 | |
|─replicas | integer | 否 | 算法包安装的复本数量 | |
|─accelerator | string | 否 | GPU型号: 如2070,T4,AX630等,当算法包适配多个芯片且设备中也存在多个芯片类型时填写(B4H设备无需填写,core跟幻方设备必传)。可从查询设备算法包可安装的数量返回结果中获取 |
Body示例:
{
"items": [
{
"algoUuid": "AG-8c0bb8d8687a49bab5a2",
"deviceUuid": "DE-c86f53e5f7464203985c2df441e4fbdb",
"replicas": 2,
"accelerator":"2070"
}
]
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─items | object[] | 否 | items | |
|─msg | string | 否 | 错误信息code非0时有意义 | |
|─deviceUuid | string | 是 | 设备标识 | |
|─code | integer | 否 | 0标识成功,非0标识失败 | |
|─algoUuid | string | 是 | 算法包标识 | |
|─uploadId | string | 否 | 上传ID |
响应示例:
{
"code":0,
"data":{
"items":[
{
"algoUuid":"AG-8c0bb8d8687a49bab5a2",
"code":0,
"deviceUuid":"DE-c86f53e5f7464203985c2df441e4fbdb",
"msg":"",
"uploadId":""
}
]
},
"msg":"成功"
}
1.22. 上传算法包
基础信息
Path: /v1/api/algorithm/uploadPackage
Method: POST
请求参数
Headers
参数名称 | 参数值 | 是否必须 | 备注 |
---|---|---|---|
Content-Type | application/json | 是 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
fileName | string | 是 | 算法包文件名 | |
description | string | 否 | 算法包描述 | |
fileMd5 | string | 是 | 算法包文件MD5 | |
uri | string | 否 | 算法包在存储服务的地址uri | |
url | string | 是 | 算法包url地址 |
Body示例:
{
"url": "http://127.0.01:38080/api/v1/storage/download/Z3NwOi8vd3Vrb25n-90807d4bbd94be83243e649df4a9b3d0.tar",
"uri": "Z3NwOi8vd3Vrb25n-90807d4bbd94be83243e649df4a9b3d0.tar",
"fileName": "algo_out_alert_alarm-thin@2.0.1.tar",
"fileMd5": "850e8a63eb35cd5e4d7f2dabc4ac7b1a",
"description": "人员值岗/离岗-离岗、人员扭打、电动车入梯、离开检测、车辆禁停、车辆逆行、人员值岗/离岗-超员、人员值岗/离岗-少员、人员聚众、抽烟检测、人员奔跑、接打电话、摔倒检测、看手机检测、睡岗检测、持械检测、防碰撞预警、入侵检测、越界检测、翻墙检测、攀爬检测、人员徘徊"
}
返回数据
Headers:
名称 | 值 | 必须 | 备注 |
---|---|---|---|
content-type | application/json;charset=UTF-8 | 否 |
Body
名称 | 类型 | 必须 | 默认值 | 备注 |
---|---|---|---|---|
code | integer | 否 | 状态码 | |
msg | string | 否 | 状态描述 | |
data | object | 否 | 具体的返回值 | |
|─algoUuid | string | 否 | 算法包标识 |
响应示例:
{
"code":0,
"data":{
"algoUuid":"AG-b1425fc2123a42998c22"
},
"msg":"成功"
}