API接口描述

创建链上账户

进行权证发行或者发放权证给其他用户时,发行方和其他用户均需要有一个链上身份即链上账户,通过该接口可以创建一个链上身份,创建链上身份前,需要业务自己做好用户的实名认证处理,创建链上身份后需要业务自己做好现实用户和链上用户的关联。

接口方法

antchain.caasplatform.extend.rights.create

请求参数

名称

是否必选

类型

取值约束

示例值

描述

service_id

STRING

-

cme2021034016405521c119

合约实例id

account_name

STRING

-

testAccount

账号名称

返回参数

名称

类型

示例值

描述

req_msg_id

STRING

b20167e21a8d4cc2b5f1022d24f43815

请求唯一ID,用于链路跟踪和问题排查

result_code

STRING

OK

结果码,一般OK表示调用成功

result_msg

STRING

OK

请求返回的消息,如果失败则为失败的相关描述

address

STRING

01f661a065ebc437fa99ec1f867bd4d2965109f4fcacc2ae136fd0d35738099e52b1448bac137c7792753585352f3f4c5fe6c7484c1e71ecfbd9b0886ef83e13

链上账户地址

接口示例

// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        //强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        //本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        CreateExtendRightsRequest createExtendRightsRequest = new CreateExtendRightsRequest()
                .setServiceId("cme2021034016405521c119")
                .setAccountName("testAccount");
        client.createExtendRights(createExtendRightsRequest);
    }
}

响应示例

{
  "address": "01f661a065ebc437fa99ec1f867bd4d2965109f4fcacc2ae136fd0d35738099e52b1448bac137c7792753585352f3f4c5fe6c7484c1e71ecfbd9b0886ef83e13",
  "resultCode": "OK",
  "reqMsgId": "7571290506d849e58d6fe9877eab7c99",
  "resultMsg": "OK"
}

结果码

果码

说明

解决方案

OK

成功结果码

创建资源文件

权证铸造时需要有相应的资源文件,资源文件本身是JSON串,用于描述使用的资源信息,示例如下:

{
  "name": "测试权证",
  "description": "这个只是测试使用的权证描述",
  "attributes": [
    "{\"author\":\"testUser\",\"tag\":\"这个是扩展补充数据\"}"
  ],
  "fileId": "https://test.al.com/lxsrpdpj3cdcea44_4.23.jpeg"
}

这里面,重点包括资源文件的名称、资源文件的描述、资源文件图片信息(fileId),以及属性信息,属性信息包括作者和标签为tag的扩展信息。

其中资源文件图片信息是一个图片资源的URL地址,可以是自己的一个可供访问的URL资源地址,也可以通过OpenAPI来上传资源图片,由合约服务来托管相关图片,同时分配一个可供访问的资源图片URL地址。

如果传入的是一个非直接可访问的地址,为自己内部系统管理的一个文件ID,则在后续查询资源文件时进行转换。

接口方法

antchain.caasplatform.extend.rights.upload

请求参数

名称

是否必选

类型

取值约束

示例值

描述

name

STRING

-

测试权证

资源名称

description

STRING

-

这个只是测试使用的权证描述

资源描述

file_id

STRING

-

资源文件id,如果使用合约服务进行文件托管,可以不设置文件ID,通过SDK提供的方式来做文件上传。如果文件自己管理,可以存放具体的可访问的文件URL(建议)或者文件ID,如果是文件ID,最后结果输出需要自己进行文件可访问地址转换

data

STRING

-

这个是扩展补充数据

扩展字段

author

STRING

-

testUser

作者或发行方,该部分主要用于资源描述文件使用,可用作页面展示

返回参数

名称

类型

示例值

描述

req_msg_id

STRING

b20167e21a8d4cc2b5f1022d24f43815

请求唯一ID,用于链路跟踪和问题排查

result_code

STRING

OK

结果码,一般OK表示调用成功

result_msg

STRING

OK

请求返回的消息,如果失败则为失败的相关描述

rights_id

LONG

数据资产id,后续资产铸造等都会用到

接口示例

// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET")); 
        UploadExtendRightsRequest uploadExtendRightsRequest = new UploadExtendRightsRequest()
                .setData("这个是扩展补充数据")
                .setAuthor("testUser")
                .setName("测试权证")
                .setDescription("这个只是测试使用的权证描述");
        //以下通过托管文件方式来进行资源文件创建,上传资源文件
        File file = new File("资产文件相关位置");
        uploadExtendRightsRequest.setFileObjectName(file.getName());
        uploadExtendRightsRequest.setFileObject(new FileInputStream(file));
        client.uploadExtendRights(uploadExtendRightsRequest);
    }
}

如果不使用文件托管,资源文件自己进行管理,则需要对上述示例中的以下内容进行调整。

        //以下通过托管文件方式来进行资源文件创建,上传资源文件
        File file = new File("资产文件相关位置");
        uploadExtendRightsRequest.setFileObjectName(file.getName());
        uploadExtendRightsRequest.setFileObject(new FileInputStream(file));
  • 可以调整为提供直接可供访问的URL文件地址的方式。

            //以下提供直接可供访问的URL文件地址
            uploadExtendRightsRequest.setFileId("https://test.al.com/lxsrpdpj3cdcea44_4.23.jpeg");
  • 也可以调整为自己管理文件的方式

            //以下提供自己管理文件的相关唯一ID,后续查询资源文件返回的数据中,
            //对FileID再进行转换,转为可供访问的文件URL
            uploadExtendRightsRequest.setFileId("asfainnerasda1313asda1r");

响应示例

{
  "rightsId": 171922085292216,
  "resultCode": "OK",
  "reqMsgId": "70f7a36d3b3140c0b13a69de09747b4c",
  "resultMsg": "OK"
}

结果码

果码

说明

解决方案

OK

成功结果码

权证铸造

权证铸造即权证发行,数字权证合约可以发行一批权证,这一批权证将共用一个tokenId

接口方法

antchain.caasplatform.general.rights.register

请求参数

名称

是否必选

类型

取值约束

示例值

描述

service_id

STRING

-

cme2021034016405521c119

合约实例id

account

STRING

-

testAccount

创建链上账户时指定的accountName

id

LONG

-

171922085292216

通过调用托管资源接口返回的资源id:rights_id

amount

LONG

-

100

要铸造的数据资产数量

data

STRING

-

扩展参数

返回参数

名称

类型

示例值

描述

req_msg_id

STRING

b20167e21a8d4cc2b5f1022d24f43815

请求唯一ID,用于链路跟踪和问题排查

result_code

STRING

OK

结果码,一般OK表示调用成功

result_msg

STRING

OK

请求返回的消息,如果失败则为失败的相关描述

tx_hash

STRING

c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626

合约调用交易哈希

block_number

LONG

10000

合约调用交易块高

code

LONG

0

合约调用的错误码,0表示成功

接口示例

// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        RegisterGeneralRightsRequest registerGeneralRightsRequest = new RegisterGeneralRightsRequest()
                .setServiceId("cme2021034016405521c119")
                .setAccount("testAccount")
                .setAmount(100L)
                .setId(171922085292216L);
        client.registerGeneralRights(registerGeneralRightsRequest);
    }
}

响应示例

{
  "code": 0,
  "blockNumber": 20929865,
  "resultCode": "OK",
  "txHash": "4309817fd1fb76e9b47b07619dc48cd14d0c8118553bb39f24ec629e935eb465",
  "reqMsgId": "4715d546c5804bb9b16cf451357ed833",
  "resultMsg": "OK"
}

结果码

果码

说明

解决方案

OK

成功结果码

权证转移

用户购买或者发行方赠送时,将权证从发行方转移到购买方。

接口方法

antchain.caasplatform.general.rights.pay

请求参数

名称

是否必选

类型

取值约束

示例值

描述

service_id

STRING

-

cme2021034016405521c119

合约实例id

from

STRING

-

testAccount

持有资产的链上账号名称

to

STRING

-

toUserAccount

接收资产的链上账号名称

id

LONG

-

171922085292216

数据资产ID

amount

LONG

-

10

要转增的数据资产数量

data

STRING

-

扩展数据

返回参数

名称

类型

示例值

描述

req_msg_id

STRING

b20167e21a8d4cc2b5f1022d24f43815

请求唯一ID,用于链路跟踪和问题排查

result_code

STRING

OK

结果码,一般OK表示调用成功

result_msg

STRING

OK

请求返回的消息,如果失败则为失败的相关描述

tx_hash

STRING

c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626

合约调用交易哈希

block_number

LONG

10000

合约调用交易块高

code

LONG

0

合约调用的错误码,0表示成功

接口示例

// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        PayGeneralRightsRequest payGeneralRightsRequest = new PayGeneralRightsRequest()
                .setServiceId("cme2021034016405521c119")
                .setFrom("testAccount")
                .setTo("toUserAccount")
                .setId(171922085292216L)
                .setAmount(1L);
        client.payGeneralRights(payGeneralRightsRequest);
    }
}

响应示例

{
  "code": 0,
  "blockNumber": 20930209,
  "resultCode": "OK",
  "txHash": "d3e5f5bc657ba4fec8301abf8fc9aa4f4d4789af02489d9bae0e367be52cd71a",
  "reqMsgId": "55ee78971a794e3bb82c56fed015808a",
  "resultMsg": "OK"
}

结果码

果码

说明

解决方案

OK

成功结果码

资源文件查询

创建资源文件后即可调用该接口查询资源描述文件的内容。

接口方法

antchain.caasplatform.general.rights.get

请求参数

名称

是否必选

类型

取值约束

示例值

描述

service_id

STRING

-

cme2021034016405521c119

合约实例id

token_id

LONG

-

171922085292216

数据资产id

返回参数

名称

类型

示例值

描述

req_msg_id

STRING

b20167e21a8d4cc2b5f1022d24f43815

请求唯一ID,用于链路跟踪和问题排查

result_code

STRING

OK

结果码,一般OK表示调用成功

result_msg

STRING

OK

请求返回的消息,如果失败则为失败的相关描述

tx_hash

STRING

c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626

合约调用交易哈希

block_number

LONG

10000

合约调用交易块高

code

LONG

0

合约调用的错误码,0表示成功

result

STRING

https://caas-backend-prod.antdigital.com/caas/contract/extend/getAssetUri/171922085292216

资产对应资源文件的描述文件,为JSON字符串

针对result,请求后将获得资源描述文件,文件的详细格式与说明参考创建资源文件

接口示例

// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 强烈建议不要把合约服务的AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下合约服务的安全。
        // 本示例通过从环境变量中读取合约服务的AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量CONTRACT_SERVICE_ACCESS_KEY_ID和CONTRACT_SERVICE_ACCESS_SECRET。
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient(System.getenv("CONTRACT_SERVICE_ACCESS_KEY_ID"),
        System.getenv("CONTRACT_SERVICE_ACCESS_SECRET"));
        GetGeneralRightsRequest getGeneralRightsRequest = new GetGeneralRightsRequest()
                .setTokenId(171922085292216L)
                .setServiceId("cme2021034016405521c119");
        client.getGeneralRights(getGeneralRightsRequest);
    }
}

响应示例

{
  "result": "https://caas-backend-prod.antdigital.com/caas/contract/extend/getAssetUri/171922085292216",
  "code": 0,
  "blockNumber": 20929866,
  "resultCode": "OK",
  "txHash": "d8aa1ed871a6f1c3574f253b5cc67337e0f91cb300b2f5b3fde343858eb87832",
  "reqMsgId": "25af2ab547e547f487e91b4747b45d14",
  "resultMsg": "OK"
}

结果码

果码

说明

解决方案

OK

成功结果码

账户资产余额查询

查询某个账户的某个资产的拥有数量。

接口方法

antchain.caasplatform.general.rightsbalance.get

请求参数

名称

是否必选

类型

取值约束

示例值

描述

service_id

STRING

-

cme2021034016405521c119

合约实例id

account

STRING

-

sltest24081303

账号的地址

id

LONG

-

171922085292216

数据资产id

返回参数

名称

类型

示例值

描述

req_msg_id

STRING

b20167e21a8d4cc2b5f1022d24f43815

请求唯一ID,用于链路跟踪和问题排查

result_code

STRING

OK

结果码,一般OK表示调用成功

result_msg

STRING

OK

请求返回的消息,如果失败则为失败的相关描述

tx_hash

STRING

c73c751472a9f9fbceef29665101377ba7e170b649b83db33b4634d4484ac626

合约调用交易哈希

block_number

LONG

10000

合约调用交易块高

code

LONG

0

合约调用的错误码,0表示成功

result

STRING

资产对应资源文件的描述文件,为JSON字符串

针对result,请求后将获得资源描述文件,文件的详细格式与说明参考创建资源文件

接口示例

// This file is auto-generated, don't edit it. Thanks.
package com.antgroup.antchain.openapi.sample;
 
import com.aliyun.tea.*;
import com.antgroup.antchain.openapi.caasplatform.*;
import com.antgroup.antchain.openapi.caasplatform.models.*;
 
public class Client {
 
    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.antgroup.antchain.openapi.caasplatform.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config();
        // 您的AccessKey ID
        config.accessKeyId = accessKeyId;
        // 您的AccessKey Secret
        config.accessKeySecret = accessKeySecret;
        return new com.antgroup.antchain.openapi.caasplatform.Client(config);
    }
 
    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.antgroup.antchain.openapi.caasplatform.Client client = Client.createClient("accessKeyId", "accessKeySecret");
        GetGeneralRightsbalanceRequest request = new GetGeneralRightsbalanceRequest();
        request.setServiceId("cme2021034016405521c119");
        request.setAccount("sltest24081303");
        request.setId(171922085292216L);
        GetGeneralRightsbalanceResponse response = caasClient.getGeneralRightsbalance(request);
    }
}

响应示例

{
  "blockNumber": 120384752,
  "code": 0,
  "reqMsgId": "043b28078b354266b4d04ae372bf65de",
  "result": "21",
  "resultCode": "OK",
  "resultMsg": "OK",
  "txHash": "6466ed67793ba561e672a93863ce2f0dc548cf2acc12dfe8e2602f36604ee3a5"
}

结果码

果码

说明

解决方案

OK

成功结果码