cisd/docs/plans/2026-03-02-cisd-init-api-curl-examples.md
2026-03-05 11:08:57 +08:00

5.1 KiB
Raw Blame History

CISD 初始化 API Curl 样例集

  • 日期2026-03-02
  • 适用接口前缀:/api/v1/device/api/v1/init
  • 说明:以下样例用于联调,不包含生产鉴权与审计策略

1. 公共变量

BASE_URL="${BASE_URL:-http://127.0.0.1:8080}"
INTERNAL_TOKEN="${INTERNAL_TOKEN:-change-me-internal-token}"

2. 查询设备预置版本信息

curl -sS \
  -H "X-Internal-Token: ${INTERNAL_TOKEN}" \
  "${BASE_URL}/api/v1/device/status" | jq

预期关键字段:

  1. data.presetProductTypeENTERPRISE|INDIRECT|DIRECT
  2. data.presetVersion

3. 企业/间参请求体RabbitMQ

cat > /tmp/cisd-init-standard-rabbit.json <<'JSON'
{
  "orgCodeType": "BIC",
  "orgCode": "AAAABBBBXXX",
  "orgNameCn": "测试机构",
  "orgNameEn": "TEST BANK",
  "deployMode": "SINGLE",
  "nodes": {
    "node01Ip": "10.0.0.11"
  },
  "mq": {
    "mqType": "RABBITMQ",
    "channelUsername": "cisd_channel_user",
    "channelPassword": "cisd_channel_pass"
  },
  "licenses": {
    "receiverLicenseFileId": "file-receiver-001"
  }
}
JSON

4. 企业/间参请求体TLQ

cat > /tmp/cisd-init-standard-tlq.json <<'JSON'
{
  "orgCodeType": "BIC",
  "orgCode": "AAAABBBBXXX",
  "orgNameCn": "测试机构",
  "orgNameEn": "TEST BANK",
  "deployMode": "DUAL",
  "nodes": {
    "node01Ip": "10.0.0.11",
    "node02Ip": "10.0.0.12"
  },
  "mq": {
    "mqType": "TLQ",
    "channelUsername": "cisd_channel_user",
    "channelPassword": "cisd_channel_pass",
    "tlqLicenseFileId": "file-tlq-license-001"
  },
  "licenses": {
    "receiverLicenseFileId": "file-receiver-001"
  }
}
JSON

5. 轻量化直参请求体RABBITMQ_TLQ

cat > /tmp/cisd-init-direct-tlq.json <<'JSON'
{
  "orgCodeType": "BIC",
  "orgCode": "AAAABBBBXXX",
  "orgNameCn": "测试机构",
  "orgNameEn": "TEST BANK",
  "deployMode": "DUAL",
  "nodes": {
    "node01Ip": "10.0.1.11",
    "node02Ip": "10.0.1.12"
  },
  "mq": {
    "mqType": "RABBITMQ_TLQ",
    "channelUsername": "cisd_channel_user",
    "channelPassword": "cisd_channel_pass",
    "tlqLicenseFileId": "file-tlq-license-001"
  },
  "licenses": {
    "receiverLicenseFileId": "file-receiver-001",
    "cfgZipFileId": "/opt/cpconfig.cfg"
  },
  "signServer": {
    "signHost": "172.30.1.101",
    "signPort": 50006,
    "signType": "Infosec",
    "signCertDn": "CN=051@AAAABBBBXXX@7321@1,OU=Org,OU=CIPS,O=CFCA OCA1,C=CN",
    "signCertSn": "1154809590",
    "signPassword": "secret"
  },
  "directTlq": {
    "localNodeSeq": "A",
    "upstreamInstitutions": "CIPSCNSHXXX;CIPSCNWXXXX",
    "upstreamCocCount": 2
  }
}
JSON

6. 轻量化直参请求体RABBITMQ_CFMQ

cat > /tmp/cisd-init-direct-cfmq.json <<'JSON'
{
  "orgCodeType": "BIC",
  "orgCode": "AAAABBBBXXX",
  "orgNameCn": "测试机构",
  "orgNameEn": "TEST BANK",
  "deployMode": "SINGLE",
  "nodes": {
    "node01Ip": "10.0.1.11"
  },
  "mq": {
    "mqType": "RABBITMQ_CFMQ",
    "channelUsername": "cisd_channel_user",
    "channelPassword": "cisd_channel_pass",
    "cfmqConfigFileId": "/pmts/cfg/cfmqapi_trans.properties"
  },
  "licenses": {
    "receiverLicenseFileId": "file-receiver-001",
    "cfgZipFileId": "/opt/cpconfig.cfg"
  },
  "signServer": {
    "signHost": "172.30.1.101",
    "signPort": 50006,
    "signType": "Infosec",
    "signCertDn": "CN=051@AAAABBBBXXX@7321@1,OU=Org,OU=CIPS,O=CFCA OCA1,C=CN",
    "signCertSn": "1154809590",
    "signPassword": "secret"
  }
}
JSON

7. 初始化任务执行链路(通用)

<REQUEST_JSON> 替换为上面任一 json 文件路径。

REQUEST_JSON="/tmp/cisd-init-standard-rabbit.json"

# 1) preview
curl -sS -X POST \
  -H "Content-Type: application/json" \
  -H "X-Internal-Token: ${INTERNAL_TOKEN}" \
  "${BASE_URL}/api/v1/init/preview" \
  -d @"${REQUEST_JSON}" | jq

# 2) create task
TASK_ID="$(curl -sS -X POST \
  -H "Content-Type: application/json" \
  -H "X-Internal-Token: ${INTERNAL_TOKEN}" \
  "${BASE_URL}/api/v1/init/tasks" \
  -d @"${REQUEST_JSON}" | jq -r '.data.taskId')"

echo "TASK_ID=${TASK_ID}"

# 3) execute task
curl -sS -X POST \
  -H "X-Internal-Token: ${INTERNAL_TOKEN}" \
  "${BASE_URL}/api/v1/init/tasks/${TASK_ID}/execute" | jq

# 4) query steps
curl -sS \
  -H "X-Internal-Token: ${INTERNAL_TOKEN}" \
  "${BASE_URL}/api/v1/init/tasks/${TASK_ID}/steps" | jq

8. 单步日志查询(失败定位)

STEP_NO=3
curl -sS \
  -H "X-Internal-Token: ${INTERNAL_TOKEN}" \
  "${BASE_URL}/api/v1/init/tasks/${TASK_ID}/steps/${STEP_NO}/log" | jq -r '.data.content'

9. 常见问题

  1. 直参 TLQ 报 directTlq is required:请求体缺 directTlq 三字段。
  2. APP_MQ_CREDENTIALS_APPLY 失败:应用配置匹配路径无文件或无写权限。
  3. MQ 连接失败:确认 TMS_INIT_EXECUTOR_STANDARD_RABBIT_CREDENTIAL_SECRET_KEY 与收发器解密密钥一致。

10. 一键执行脚本(推荐)

chmod +x scripts/cisd_init_flow.sh
REQUEST_JSON=/tmp/cisd-init-standard-rabbit.json \
BASE_URL=http://127.0.0.1:8080 \
INTERNAL_TOKEN=change-me-internal-token \
./scripts/cisd_init_flow.sh

输出目录默认:/tmp/cisd-init-run/run-<timestamp>,包含每一步请求响应与失败日志抓取结果。