查询配额余量
- 请求地址:
GET /quota - 接口概述:
查询配额余量。撤销/过期批次不计入;无生效批次的产品不出现。
-
请求参数:
无
-
请求体:
无
-
请求示例:
GET {api-base-url}/quota HTTP/1.1
bitkey: ••••••
- 响应示例:
{
"status": 0,
"data": {
"total": 1,
"items": [
{
"productName": "HJ-ProductA",
"features": [
{
"name": "license-core",
"version": "99.1",
"totalQuota": 1000,
"totalQuotaUsage": 120,
"endDate": "2027-12-31 23:59:59"
}
]
}
]
}
}
申请发放
- 请求地址:
POST /quota/update_code - 接口概述:
申请发放授权。
-
请求参数:
无
-
请求体:
| 参数名 | 参数类型 | 必需 | 参数说明 |
|---|---|---|---|
| productName | string | ✅ | 产品名称 |
| businessName | string | ✅ | 业务名称;单机/集团类型由此判定;仅支持FLOAT/LOCAL(单机浮动)与GROUP(集团)类型,其余类型返回515 |
| mac | string | ✅ | 终端设备MAC,License与之绑定;整单同一设备 |
| endDate | string | ➖ | yyyy-MM-dd;整单缺省到期日,未指定模版级endDate的模版回退此值 |
| templates | array | ✅ | 模版申请列表,至少一项;同一申请内模版名不可重复 |
| templates[].templateName | string | ✅ | 模版名称 |
| templates[].count | integer | ✅ | ≥1;单机业务固定1;集团业务=用户数(每命中特征项扣count点) |
| templates[].endDate | string | ➖ | yyyy-MM-dd;模版级到期日,优先于顶层endDate;上限=本模版命中特征项的最早批次结束日期,越界整单拒绝 |
| templates[].version | string | ➖ | 模版级特征项版本(如2.0),按集团版本规则匹配模版内版本特征项,见下方业务规则「版本参数」 |
- 请求示例:
POST {api-base-url}/quota/update_code HTTP/1.1
bitkey: ••••••
Content-Type: application/json
{
"productName": "HJ-ProductA",
"businessName": "Tenant_XYZ",
"mac": "00:11:22:33:44:55",
"endDate": "2027-12-31",
"templates": [
{ "templateName": "Simulator", "count": 1, "endDate": "2027-06-30" },
{ "templateName": "Debugger", "count": 3 }
]
}
- 响应示例:
{
"status": 0,
"data": {
"items": [
{ "code": "<bitLicenseList>…多模版合并 License…</bitLicenseList>" }
]
}
}
业务规则
-
业务类型:仅支持FLOAT/LOCAL(单机浮动)与GROUP(集团)类型业务,其余类型(云/USB/帐号授权等)返回515拒绝。
-
扣点:单机业务每命中特征项扣1点(count固定1);集团业务每命中特征项扣count点。 余量按特征项记账、跨模版共享——模版只是扣点路由,同一份余量可发任何模版组合。
-
覆盖范围:申请模版所含的每个特征项都必须已有生效批次额度,任一特征项无额度即整单拒绝(21006)。
-
到期日(逐模版独立确定):
templates[].endDate→顶层endDate→该模版命中特征的最早批次结束日期; 上限=该模版自己的最早批次结束日期(各模版分别约束,互不压缩);不支持永久授权。 -
版本参数(
templates[].version非空时生效,逐模版独立;比较规则同集团按版本占用特征项:按major.minor数值比较、忽略前导零、无小数点视作.0):- 记录版本=输入版本:直接匹配,License携带记录版本;
- 记录版本高于输入版本:License以输入版本发放(要求该产品特征项已开启"可修改值",否则515整单拒绝);扣点仍按记录特征项计;
- 记录版本低于输入版本:额度未覆盖该版本,515整单拒绝;
- 非版本特征项不受影响,原样发证;改写后同一模版内出现同名同版本特征项→1291整单拒绝。
-
原子性:任一模版校验失败整单拒绝、零扣减;同一成员的申请串行处理,并发不超发。
-
操作日志:成功发放自动记录申请参数审计日志(不含License明文,需平台侧开启选项)。
查询申请记录
- 请求地址:
POST /quota/queries - 接口概述:
查询授权申请记录。
-
请求参数:
无
-
请求体:
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
| querys | array | ➖ | 查询条件,仅支持regDate(授权码注册时间) |
| querys[].name | string | ✅ | 固定regDate |
| querys[].op | string | ✅ | =、<>、>、>=、<、<=、like |
| querys[].values | array | ✅ | 支持yyyy-MM-dd与yyyy-MM-dd HH:mm:ss;非法日期值返回参数错误 |
分页参数走URL query:offset(默认0)、limit(默认50,最大1000)。
- 请求示例:
POST {api-base-url}/quota/queries?offset=0&limit=50 HTTP/1.1
bitkey: ••••••
Content-Type: application/json
{ "querys": [ { "name": "regDate", "op": ">=", "values": ["2026-09-01"] } ] }
- 响应示例:
{
"status": 0,
"data": {
"total": 2,
"items": [
{
"productName": "HJ-ProductA",
"templateName": "Simulator",
"regDate": "2026-09-23 10:20:30"
}
]
}
}
查询配额批次
- 请求地址:
GET /quota/batches - 接口概述:
查询配额批次。含已撤销/已过期批次,供对账审计。
-
请求参数:
无
-
请求体:
无
-
请求示例:
无
-
响应示例:
{
"status": 0,
"data": {
"total": 1,
"items": [
{
"productName": "HJ-ProductA",
"regDate": "2026-09-01 09:00:00",
"endDate": "2027-12-31 23:59:59",
"comment": "2026年度额度",
"status": 0,
"features": [
{ "name": "license-core", "quota": 1000, "used": 120 }
]
}
]
}
}