1. 接口描述
接口请求域名: tdid.tencentcloudapi.com 。
- 首次更新凭证状态基于不同场景参数有所差异,分以下两种场景:
(1) 颁发凭证的DID是本腾讯云账号创建
(2) 颁发凭证的DID是非本腾讯云账号创建(此调用方式也适用于场景1) - 首次更新过凭证状态后,凭证状态已绑定该账号的链上用户,后续更新凭证状态只需参数CredentialStatus即可, OperateCredential和OriginCredential参数均不需要
默认接口请求频率限制:20次/秒。
2. 输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:UpdateCredentialState。 |
Version | 是 | String | 公共参数,本接口取值:2021-05-19。 |
Region | 是 | String | 公共参数,详见产品支持的 地域列表。 |
DAPId | 否 | Integer | DID应用Id 示例值:1 |
OperateCredential | 否 | String | 更新VC状态的临时凭证内容,通过创建凭证接口(CreateCredential)生成并签名,凭证类型为:OperateCredential, 为安全起见凭证过期时间不适合太长,如设置为1分钟内 |
OriginCredential | 否 | String | 待更新凭证状态的原始凭证内容 |
CredentialStatus | 否 | CredentialStatusInfo | 凭证状态信息 |
3. 输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Result | Boolean | 更新是否成功 示例值:true |
RequestId | String | 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 |
4. 示例
示例1 无需凭证鉴权首次更新凭证链上状态
用于颁发凭证的DID标识是本腾讯云账号创建的场景
由于凭证颁发凭证的DID是本账号创建默认拥有设置凭证状态权限,因此不需操作鉴权的临时凭证
OperateCredential不需设置,CredentialStatus为凭证状态信息,OriginCredential携带原始凭证的内容
输入示例
POST / HTTP/1.1
Host: tdid.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: UpdateCredentialState
<公共请求参数>
{
"DAPId": 51,
"CredentialStatus": {
"Id": "617481bf42ad384b3324551cb2f454be",
"Issuer": "did:tdid:c2:0x379106c7232aed1a50e8600511655b479c76b149",
"Status": 1
},
"OriginCredential": "{\"cptId\":1,\"issuer\":\"did:tdid:c2:0x379106c7232aed1a50e8600511655b479c76b149\",\"expirationDate\":\"2124-06-29T15:25:00+08:00\",\"issuanceDate\":\"2023-11-08T10:06:05+08:00\",\"context\":\"https://github.com/TencentCloud-Blockchain/TDID/blob/main/context/v1\",\"id\":\"617481bf42ad384b3324551cb2f454be\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"action\":\"deactiveDid\",\"age\":17},\"proof\":{\"created\":\"2023-11-08T10:06:05+08:00\",\"creator\":\"did:tdid:c2:0x379106c7232aed1a50e8600511655b479c76b149#keys-0\",\"signatureValue\":\"MEUCIQDUHK3znfKQA4XqiyRMgM0C6m/TbaAhzbA5PG3Mi8kFOwIgVnZWkCNrLiPC62ZUDzHfwd5aqh2nQPHpc7hLlRIflyg=\",\"type\":\"Secp256r1\",\"metaDigest\":\"3aba1bf7555b79e5217a87e39b5122e3e62d5c486878e6a24f629aed207561cb\",\"vcDigest\":\"9e71e2b5587517769b126a2877f8b6071cf3aa2389bd57618ba97f07a763984c\",\"privacy\":\"Public\",\"salt\":{\"action\":\"hFify\",\"age\":\"bEQqg\"}}}"
}
输出示例
{
"Response": {
"RequestId": "f5e12d37-100a-4b82-b522-7b76c519ed70",
"Result": true
}
}
示例2 需要凭证鉴权首次更新凭证链上状态
用于颁发凭证的DID标识是非本腾讯云账号创建的场景
由于凭证颁发凭证的DID为非本账号创建,默认无设置凭证状态的权限,因此需要临时凭证进行操作鉴权
OriginCredentialt和CredentialStatus不需设置,OperateCredential携带建操作鉴权临时凭证,凭证通过IssueCredential接口颁发,凭证参数说明如下:
- 凭证模板 id (cpt)固定为 1
- claim需三个字段:
(1) action: 固定为updateCredentialState
(2) originCredential: 携带待更新状态的凭证原始内容
(3) credentialStatus: 凭证状态结构的json字符串,包括3个字段:
Id: 凭证 id,对应凭证的 id 字段
issuer: 凭证颁发者 Did
Status: 凭证状态(0:吊销;1:有效) - ExpirationDate过期时间根据操作凭证创建时间和调用更新凭证状态接口的时间差来设置,通常状态实时更新,过期时间在1分钟内即可
输入示例
POST / HTTP/1.1
Host: tdid.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: UpdateCredentialState
<公共请求参数>
{
"DAPId": 5,
"OperateCredential": "{\n\t\"cptId\": 1,\n\t\"issuer\": \"did:tdid:w1:0xe0fd109747937fbaf68ef1f615c2cd8e87d22ffb\",\n\t\"expirationDate\": \"2023-12-01T10:00:00+08:00\",\n\t\"issuanceDate\": \"2023-09-19T20:13:36+08:00\",\n\t\"context\": \"https://github.com/TencentCloud-Blockchain/TDID/blob/main/context/v1\",\n\t\"id\": \"fw1652844bee8e5ecf1b404242b83f1b\",\n\t\"type\": [\"VerifiableCredential\"],\n\t\"credentialSubject\": {\n\t\t\"CredentialStatus\": {\n\t\t\t\"id\": \"8818fdd61eb84e4a745a3b04c96e5237\",\n\t\t\t\"issuer\": \"did:tdid:w1:0xe0fd109747937fbaf68ef1f615c2cd8e87d22ffb\",\n\t\t\t\"status\": 1\n\t\t},\n\t\t\"action\": \"updateCredentialState\",\n\t\t\"originCredential\": \"{\\\"cptId\\\":1,\\\"issuer\\\":\\\"did:tdid:w1:0xe0fd109747937fbaf68ef1f615c2cd8e87d22ffb\\\",\\\"expirationDate\\\":\\\"2023-12-01T10:00:00+08:00\\\",\\\"issuanceDate\\\":\\\"2023-09-19T20:04:20+08:00\\\",\\\"context\\\":\\\"https://github.com/TencentCloud-Blockchain/TDID/blob/main/context/v1\\\",\\\"id\\\":\\\"8818fdd61eb84e4a745a3b04c96e5237\\\",\\\"type\\\":[\\\"VerifiableCredential\\\"],\\\"credentialSubject\\\":{\\\"action\\\":\\\"updateCredentialState\\\"},\\\"proof\\\":{\\\"created\\\":\\\"2023-09-19T20:04:20+08:00\\\",\\\"creator\\\":\\\"did:tdid:w1:0xe0fd109747937fbaf68ef1f615c2cd8e87d22ffb#keys-0\\\",\\\"signatureValue\\\":\\\"MEUCIQDUneIwlLbh5AFjQt9HJhIZAQshT45/Em8hVOUjHcdu0QIgL3rg3A99qGGNszstF+GTV5IU4vT9OnI1lqM3f0w1JmI=\\\",\\\"type\\\":\\\"Secp256r1\\\",\\\"metaDigest\\\":\\\"6a216f84cb9w1b6170cb017cccd6w1d0b81aad200d5691914d6045471d0dd1ad\\\",\\\"vcDigest\\\":\\\"c7e13w1bcfa879c922f9141d085facc0ce1973e8d27d48238130739c1a332dcf\\\",\\\"privacy\\\":\\\"Public\\\",\\\"salt\\\":{\\\"action\\\":\\\"HZdDU\\\"}}}\"\n\t},\n\t\"proof\": {\n\t\t\"created\": \"2023-09-19T20:13:36+08:00\",\n\t\t\"creator\": \"did:tdid:w1:0xe0fd109747937fbaf68ef1f615c2cd8e87d22ffb#keys-0\",\n\t\t\"signatureValue\": \"MEUCIDkLg6EqmwvEHYLtjumpeqKz/hIi6EROMDXPPpNIxORHAiEA8T0LMI59tkBTz+llu/GkjToj5M8k5SwXFoU3fnjQ3mo=\",\n\t\t\"type\": \"Secp256r1\",\n\t\t\"metaDigest\": \"46894b7f54365d685ba587608d2b74f800404ebb76f5c32dd90bc3916e844ae2\",\n\t\t\"vcDigest\": \"d086ba831ab3185971c168w125bf2bd487d7eced3ede8d623b30cfe9da03bcaf\",\n\t\t\"privacy\": \"Public\",\n\t\t\"salt\": {\n\t\t\t\"CredentialStatus\": {\n\t\t\t\t\"id\": \"4dPOH\",\n\t\t\t\t\"issuer\": \"OJH5M\",\n\t\t\t\t\"status\": \"lm2W4\"\n\t\t\t},\n\t\t\t\"action\": \"r95wA\",\n\t\t\t\"orignCredential\": \"b3H4j\"\n\t\t}\n\t}\n}"
}
输出示例
{
"Response": {
"RequestId": "f5e12d37-100a-4b82-b522-7b76c519ed70",
"Result": true
}
}
示例3 凭证状态已上链再次更新状态的场景(非首次更新凭证状态)
首次更新过凭证状态后,凭证状态已绑定该账号的链上用户,所以后续更新凭证状态只需参数CredentialStatus即可, OperateCredential和OriginCredential参数均不需要
输入示例
POST / HTTP/1.1
Host: tdid.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: UpdateCredentialState
<公共请求参数>
{
"DAPId": 51,
"CredentialStatus": {
"Id": "617481bf42ad384b3324551cb2f454be",
"Issuer": "did:tdid:c2:0x379106c7232aed1a50e8600511655b479c76b149",
"Status": 0
}
}
输出示例
{
"Response": {
"RequestId": "f5e12d37-100a-4b82-b522-7b76c519ed70",
"Result": true
}
}
5. 开发者资源
腾讯云 API 平台
腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。
API Inspector
用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。
SDK
云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。
- Tencent Cloud SDK 3.0 for Python: GitHub Gitee
- Tencent Cloud SDK 3.0 for Java: GitHub Gitee
- Tencent Cloud SDK 3.0 for PHP: GitHub Gitee
- Tencent Cloud SDK 3.0 for Go: GitHub Gitee
- Tencent Cloud SDK 3.0 for Node.js: GitHub Gitee
- Tencent Cloud SDK 3.0 for .NET: GitHub Gitee
- Tencent Cloud SDK 3.0 for C++: GitHub Gitee
- Tencent Cloud SDK 3.0 for Ruby: GitHub Gitee
命令行工具
6. 错误码
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码。
错误码 | 描述 |
---|---|
Cam.InvalidAuth | CAM鉴权失败 |
Cpt.CreateCPTFailed | 创建凭证模板失败,请重新操作 |
Credential.CPTNotExisted | 凭证模板不存在 |
Credential.CredentialExpired | 凭证过期:<%ExtMsg%> |
Credential.FailedCreatePresentation | 创建凭证表达失败 |
Credential.GenerateCommitmentFailed | 生成证明承诺失败 |
Credential.GenerateRangeProof | 生成范围证明失败 |
Credential.HolderDidNotMatch | 凭证持有人DID不匹配,请确认后重新操作:<%ExtMsg%> |
Credential.InvalidCRDLId | 无效的凭证ID,请确认后重新操作:<%ExtMsg%> |
Credential.InvalidCRDLIssuer | 无效的凭证颁发者,请确认后重新操作 |
Credential.InvalidClaim | 无效的凭证声明,请确认声明格式:<%ExtMsg%> |
Credential.InvalidDisclosurePolicy | 无效的选择性披露策略,请确认后重新操作:<%ExtMsg%> |
Credential.InvalidOperateClaim | 无效的操作类型声明,请确认后重新操作:<%ExtMsg%> |
Credential.InvalidParas | 无效请求参数,请确认参数格式:<%ExtMsg%> |
Credential.InvalidProofCommitment | 无效的证明承诺 |
Credential.InvalidProofValue | 无效的证明值,证明值要求是无符号整形 |
Credential.InvalidZeroProof | 无效的零知识证明内容 |
Credential.IssuerDidNotMatch | 凭证颁发者DID不匹配,请确认后重新操作:<%ExtMsg%> |
Credential.NoIdInClaim | 凭证声明缺少ID字段,请确认后重新操作 |
Credential.ProofValueNotExisted | 证明数值不存在 |
Credential.VerifyCRDLFailed | 凭证验证失败:<%ExtMsg%> |
Credential.VerifyZeroProofFailed | 零知识证明验证失败 |
DataBase.FailedOperation | 数据库操作失败,请重新操作 |
DidFailedOperation.DidNotExisted | DID标识不存在:<%ExtMsg%> |
DidFailedOperation.DidSvcNotExisted | 用户尚未创建DID服务,请确认后重新操作 |
DidFailedOperation.NotDidCreator | 非DID创建者,无法更新DID状态 |
DidSdk.UnknownError | DID服务请求错误,请稍后重试或联系客服 |
FailedOperation.InvalidAuth | 用户接口鉴权失败 |
FailedOperation.OperationException | 操作失败。 |
FailedOperation.PermissionDenied | 用户无接口访问权限 |
HttpInvoker.NewQuestError | HTTP请求创建失败,请稍后重试,或联系客服 |
HttpInvoker.SendQuestError | HTTP请求发送失败,请稍后重试,或联系客服 |
InternalError.ServiceDisabled | 服务已停止,请您检查当前是否有计费套餐包 |
InternalError.ServiceError | 服务错误,请稍后重试,或联系客服 |
InternalError.UnknownError | 服务错误,请稍后重试,或联系客服 |
InvalidParameterValue.IllegalDateTime | 无效的时间格式,请确认后重新操作 |
InvalidParameterValue.IllegalValue | 请求参数格式错误,请按照格式要求重新填写 |
InvalidParameterValue.ResourceNotExisted | 用户请求资源未存在:<%ExtMsg%> |