声明环境变量※
export CTR_CERTS_ROOT=/home/kuscia/var/certs创建DomainDataSource※
- alice
curl -k -X POST 'https://localhost:8082/api/v1/domaindatasource/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"domain_id": "alice",
"datasource_id":"alice-ds-001",
"type":"oss",
"name": "aliceDS",
"info": {
"oss": {
"endpoint": "http://192.168.32.128:9000",
"bucket": "alice",
"access_key_id":"kusciaadmin",
"access_key_secret" :"kusciaadmin",
"storage_type": "minio"
}
},
"access_directly": true
}'- bob
curl -k -X POST 'https://localhost:8082/api/v1/domaindatasource/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"domain_id": "bob",
"datasource_id":"bob-ds-001",
"type":"oss",
"name": "bobDS",
"info": {
"oss": {
"endpoint": "http://192.168.32.128:9000",
"bucket": "bob",
"access_key_id":"kusciaadmin",
"access_key_secret" :"kusciaadmin",
"storage_type": "minio"
}
},
"access_directly": true
}'创建DomainData※
- alice
curl -k -X POST 'https://localhost:8082/api/v1/domaindata/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"domain_id": "alice",
"domaindata_id": "alice-001",
"datasource_id": "alice-ds-001",
"name": "alice001",
"type": "table",
"relative_uri": "teams.csv",
"columns": [
{
"name": "Id",
"type": "int",
"comment": "ID"
},
{
"name": "TeamId",
"type": "int",
"comment": "队伍ID"
},
{
"name": "TeamName",
"type": "str",
"comment": "队伍的全称或官方名称"
},
{
"name": "TotalUSDPrize",
"type": "float",
"comment": "队伍在比赛中获得的总奖金(美元)"
},
{
"name": "TotalTournaments",
"type": "int",
"comment": "队伍参加的总比赛次数"
},
{
"name": "Game",
"type": "str",
"comment": "队伍主要参与的游戏名称"
},
{
"name": "Genre",
"type": "str",
"comment": "游戏所属的类别(如第一人称射击、MOBA等)"
}
]
}'
- bob
curl -k -X POST 'https://localhost:8082/api/v1/domaindata/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"domain_id": "bob",
"domaindata_id": "bob-001",
"datasource_id": "bob-ds-001",
"name": "bob001",
"type": "table",
"relative_uri": "players.csv",
"columns": [
{
"name": "Id",
"type": "int",
"comment": "ID"
},
{
"name": "PlayerId",
"type": "int",
"comment": "选手ID"
},
{
"name": "NameFirst",
"type": "str",
"comment": "选手的名字(西方习惯放在前的名)"
},
{
"name": "NameLast",
"type": "str",
"comment": "选手的姓氏(西方习惯放在后的姓)"
},
{
"name": "CurrentHandle",
"type": "str",
"comment": "选手当前使用的游戏ID/昵称"
},
{
"name": "CountryCode",
"type": "str",
"comment": "选手国籍的ISO两位字母国家代码(如dk=丹麦)"
},
{
"name": "TotalUSDPrize",
"type": "float",
"comment": "选手职业生涯获得的总奖金(美元),精确到小数点后两位"
},
{
"name": "Game",
"type": "str",
"comment": "选手主要参赛的游戏全称"
},
{
"name": "Genre",
"type": "str",
"comment": "游戏所属的竞技类别(如FPS第一人称射击)"
}
]
}'
创建数据授权※
- alice
curl -k -X POST 'https://localhost:8082/api/v1/domaindatagrant/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"domain_id": "alice",
"domaindata_id": "alice-001",
"domaindatagrant_id": "alice2bob001",
"grant_domain": "bob"
}'
- bob
curl -k -X POST 'https://localhost:8082/api/v1/domaindatagrant/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"domain_id": "bob",
"domaindata_id": "bob-001",
"domaindatagrant_id": "bob2alice001",
"grant_domain": "alice"
}'
创建任务※
根据 initiator 决定发起方,即确定由哪方执行以下命令
curl -k -X POST 'https://localhost:8082/api/v1/job/create' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001",
"initiator": "alice",
"tasks": [
{
"task_id": "job-psi",
"app_image": "secretflow-image",
"parties": [
{
"domain_id": "alice",
"role": "partner"
},
{
"domain_id": "bob",
"role": "partner"
}
],
"alias": "job-psi",
"dependencies": [],
"task_input_config": "{\"sf_datasource_config\":{\"alice\":{\"id\":\"alice-ds-001\"},\"bob\":{\"id\":\"bob-ds-001\"}},\"sf_cluster_desc\":{\"parties\":[\"alice\",\"bob\"],\"devices\":[{\"name\":\"spu\",\"type\":\"spu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"runtime_config\\\":{\\\"protocol\\\":\\\"REF2K\\\",\\\"field\\\":\\\"FM64\\\"},\\\"link_desc\\\":{\\\"connect_retry_times\\\":60,\\\"connect_retry_interval_ms\\\":1000,\\\"brpc_channel_protocol\\\":\\\"http\\\",\\\"brpc_channel_connection_type\\\":\\\"pooled\\\",\\\"recv_timeout_ms\\\":1200000,\\\"http_timeout_ms\\\":1200000}}\"},{\"name\":\"heu\",\"type\":\"heu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"mode\\\": \\\"PHEU\\\", \\\"schema\\\": \\\"paillier\\\", \\\"key_size\\\": 2048}\"}],\"ray_fed_config\":{\"cross_silo_comm_backend\":\"brpc_link\"}},\"sf_node_eval_param\":{\"domain\":\"data_prep\",\"name\":\"psi\",\"version\":\"0.0.5\",\"attr_paths\":[\"protocol\",\"sort_result\",\"allow_duplicate_keys\",\"allow_duplicate_keys/yes/join_type\",\"allow_duplicate_keys/yes/join_type/left_join/left_side\",\"input/receiver_input/key\",\"input/sender_input/key\"],\"attrs\":[{\"s\":\"PROTOCOL_ECDH\"},{\"b\":true},{\"s\":\"yes\"},{\"s\":\"left_join\"},{\"ss\":[\"alice\"]},{\"ss\":[\"Game\"]},{\"ss\":[\"Game\"]}]},\"sf_input_ids\":[\"alice-001\",\"bob-001\"],\"sf_output_ids\":[\"psi-output\"],\"sf_output_uris\":[\"psi-output.csv\"]}",
"priority": 100
},
{
"task_id": "job-split",
"app_image": "secretflow-image",
"parties": [
{
"domain_id": "alice",
"role": "partner"
},
{
"domain_id": "bob",
"role": "partner"
}
],
"alias": "job-split",
"dependencies": [
"job-psi"
],
"task_input_config": "{\"sf_datasource_config\":{\"alice\":{\"id\":\"alice-ds-001\"},\"bob\":{\"id\":\"bob-ds-001\"}},\"sf_cluster_desc\":{\"parties\":[\"alice\",\"bob\"],\"devices\":[{\"name\":\"spu\",\"type\":\"spu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"runtime_config\\\":{\\\"protocol\\\":\\\"REF2K\\\",\\\"field\\\":\\\"FM64\\\"},\\\"link_desc\\\":{\\\"connect_retry_times\\\":60,\\\"connect_retry_interval_ms\\\":1000,\\\"brpc_channel_protocol\\\":\\\"http\\\",\\\"brpc_channel_connection_type\\\":\\\"pooled\\\",\\\"recv_timeout_ms\\\":1200000,\\\"http_timeout_ms\\\":1200000}}\"},{\"name\":\"heu\",\"type\":\"heu\",\"parties\":[\"alice\",\"bob\"],\"config\":\"{\\\"mode\\\": \\\"PHEU\\\", \\\"schema\\\": \\\"paillier\\\", \\\"key_size\\\": 2048}\"}],\"ray_fed_config\":{\"cross_silo_comm_backend\":\"brpc_link\"}},\"sf_node_eval_param\":{\"domain\":\"data_prep\",\"name\":\"train_test_split\",\"version\":\"0.0.1\",\"attr_paths\":[\"train_size\",\"test_size\",\"random_state\",\"shuffle\"],\"attrs\":[{\"f\":0.75},{\"f\":0.25},{\"i64\":1234},{\"b\":true}]},\"sf_output_uris\":[\"train-dataset.csv\",\"test-dataset.csv\"],\"sf_output_ids\":[\"train-dataset\",\"test-dataset\"],\"sf_input_ids\":[\"psi-output\"]}",
"priority": 100
}
]
}'
删除JOB※
⚠️仅能由发起方进行删除⚠️
curl -k -X POST 'https://localhost:8082/api/v1/job/delete' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'
查询JOB状态※
curl -k -X POST 'https://localhost:8082/api/v1/job/query' \
--header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
--header 'Content-Type: application/json' \
--cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
--key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
--cacert ${CTR_CERTS_ROOT}/ca.crt \
-d '{
"job_id": "job-alice-bob-001"
}'