更新凭证的链上状态

最近更新时间:2025-02-27 01:59:54

我的收藏

1. 接口描述

接口请求域名: tdid.tencentcloudapi.com 。

  1. 首次更新凭证状态基于不同场景参数有所差异,分以下两种场景:
    (1) 颁发凭证的DID是本腾讯云账号创建
    (2) 颁发凭证的DID是非本腾讯云账号创建(此调用方式也适用于场景1)
  2. 首次更新过凭证状态后,凭证状态已绑定该账号的链上用户,后续更新凭证状态只需参数CredentialStatus即可, OperateCredential和OriginCredential参数均不需要

默认接口请求频率限制:20次/秒。

推荐使用 API Explorer
点击调试
API Explorer 提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成 SDK 调用示例。

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接口颁发,凭证参数说明如下:

  1. 凭证模板 id (cpt)固定为 1
  2. claim需三个字段:
    (1) action: 固定为updateCredentialState
    (2) originCredential: 携带待更新状态的凭证原始内容
    (3) credentialStatus: 凭证状态结构的json字符串,包括3个字段:
    Id: 凭证 id,对应凭证的 id 字段
    issuer: 凭证颁发者 Did
    Status: 凭证状态(0:吊销;1:有效)
  3. 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。

命令行工具

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%>