Appearance
查询委托授权记录
POST
/openapi/v3/esign/delegate-authorizations/query
按证书 + 委托人查询该委托人在指定证书上的逐条授权记录,用于确认新增委托人是否生效、核实生效期,或在收到 409 esign_delegate_authorization_overlap 后核实具体冲突。
本接口为纯查询接口,不要求携带 X-ES-Request-ID。
记录粒度:每条对应一张证书 + 一个独立生效期
一个委托人可能同时持有对多张证书的委托授权,且每张证书各自独立的生效期——每条记录对应「一张证书 + 一段生效期」,而非按委托人汇总的单一状态。查询同一委托人在多张证书上的授权,需按 certId 分别查询。
Body 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| certId | string | 是 | 云签证书 ID,用作归属校验锚点(须为调用方账户名下的企业证书),同时限定查询范围为该证书上的授权记录 |
| delegateId | string | 是 | 委托人人员 ID,取自新增委托人响应的 delegateId(本接口仅支持按 delegateId 查询,不支持按证件信息查询) |
| page | int | 否 | 页码,从 1 开始;不传或非正数按 1 处理 |
| pageSize | int | 否 | 每页条数;不传或非正数按 20 处理,超过 100 按 100 截断 |
响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
| content | array | 授权记录列表 |
| content[].id | string | 授权记录 ID |
| content[].delegateId | string | 委托人人员 ID |
| content[].certId | string | 云签证书 ID |
| content[].certSerialNumber | string | 证书序列号 |
| content[].certDn | string | 证书主题可分辨名称(DN) |
| content[].validFrom | string | 生效时间(毫秒时间戳字符串) |
| content[].validTo | string | 失效时间(毫秒时间戳字符串);缺省 / 空字符串表示长期有效 |
| content[].status | string | 授权状态:ACTIVE(生效中)/ REVOKED(已撤销)。见下方说明 |
| content[].sourceWillId | string | 产生该授权的意愿 ID,对应发起新增委托人时返回的 willId |
| page | int | 当前页码 |
| pageSize | int | 每页条数 |
| total | string | 总条数(长整型一律字符串,见通用说明) |
status=ACTIVE 不等于「当前时刻生效中」
status 只表示该记录是否已被撤销:ACTIVE 表示尚未撤销,REVOKED 表示已被禁用委托人等操作撤销。ACTIVE 记录是否在当前时刻实际生效,仍须结合 validFrom / validTo 与当前时间判断——ACTIVE 但尚未到 validFrom,或已超过 validTo,均不代表委托人此刻可以代签。
请求示例
bash
curl -X POST 'https://api.certcloud.cn/openapi/v3/esign/delegate-authorizations/query' \
-H 'Content-Type: application/json' \
-H 'X-CC-Auth-Key: your-auth-key' \
-H 'X-CC-Key-ID: your-key-id' \
-d '{
"certId": "esign-cert-xxx",
"delegateId": "delegate-xxx",
"page": 1,
"pageSize": 20
}'1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
javascript
const response = await fetch('https://api.certcloud.cn/openapi/v3/esign/delegate-authorizations/query', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CC-Auth-Key': 'your-auth-key',
'X-CC-Key-ID': 'your-key-id',
},
body: JSON.stringify({
certId: 'esign-cert-xxx',
delegateId: 'delegate-xxx',
page: 1,
pageSize: 20,
})
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
go
req, _ := http.NewRequest("POST", "https://api.certcloud.cn/openapi/v3/esign/delegate-authorizations/query", strings.NewReader(`{
"certId": "esign-cert-xxx",
"delegateId": "delegate-xxx",
"page": 1,
"pageSize": 20
}`))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-CC-Auth-Key", "your-auth-key")
req.Header.Set("X-CC-Key-ID", "your-key-id")
resp, _ := http.DefaultClient.Do(req)1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
python
import requests
resp = requests.post(
'https://api.certcloud.cn/openapi/v3/esign/delegate-authorizations/query',
headers={
'X-CC-Auth-Key': 'your-auth-key',
'X-CC-Key-ID': 'your-key-id',
},
json={
'certId': 'esign-cert-xxx',
'delegateId': 'delegate-xxx',
'page': 1,
'pageSize': 20,
}
)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
响应示例
200成功
json
{
"code": "0",
"data": {
"content": [
{
"id": "auth-xxx",
"delegateId": "delegate-xxx",
"certId": "esign-cert-xxx",
"certSerialNumber": "5A1B2C3D4E5F6A7B",
"certDn": "CN=张三,O=某某科技有限公司,C=CN",
"validFrom": "1784457961968",
"validTo": "1790000000000",
"status": "ACTIVE",
"sourceWillId": "will-xxx"
}
],
"page": 1,
"pageSize": 20,
"total": "1"
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
错误码
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 400 | esign_invalid_body | 请求体非法:JSON 语法错误或字段类型不符(整数字段传字符串、字符串字段传数字等),请求体未被解析 |
| 400 | esign_invalid_request | certId 或 delegateId 缺失 |
| 404 | esign_cert_not_found | certId 不存在 |
| 403 | esign_cross_account_denied | certId 不属于当前账户 |
| 409 | esign_upstream_rejected | 云签终态拒绝;error 为 [上游码] 文案,仅供人工排查。见上游错误响应与重试 |
| 409 | esign_upstream_error | 云签暂时性失败,可稍后重试。见上游错误响应与重试 |
名下无授权记录时返回空列表
委托人存在但名下无授权记录时,返回 200 与空 content 数组,不是错误。注意 delegateId 无效(不存在、不属该证书企业、或对应人员不是委托人)时会被上游拒绝(409 esign_upstream_rejected),而非返回空列表。
