{ "openapi": "3.0.3", "info": { "title": "TMS CISD Init Internal API", "version": "1.0.0", "description": "CISD 一体机初始化相关内部接口(含设备状态接口)。\n返回体统一为 ApiResponse 包装结构。\n" }, "servers": [ { "url": "http://127.0.0.1:8080", "description": "Local" } ], "tags": [ { "name": "Device", "description": "设备信息与状态" }, { "name": "File", "description": "内部文件上传与查询" }, { "name": "Init", "description": "CISD 初始化任务" } ], "security": [ { "InternalTokenAuth": [ ] } ], "paths": { "/api/v1/device/info": { "get": { "tags": [ "Device" ], "summary": "获取设备信息", "operationId": "getDeviceInfo", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseDeviceInfoResponse" } } } } } } }, "/api/v1/device/status": { "get": { "tags": [ "Device" ], "summary": "获取设备状态(含预制版本信息)", "operationId": "getDeviceStatus", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseDeviceInfoResponse" } } } } } } }, "/api/v1/device/restart": { "post": { "tags": [ "Device" ], "summary": "重启设备", "operationId": "restartDevice", "parameters": [ { "name": "X-User", "in": "header", "required": false, "schema": { "type": "string" }, "description": "操作人" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseDeviceActionResponse" } } } } } } }, "/api/v1/files/upload": { "post": { "tags": [ "File" ], "summary": "上传文件并返回 fileId", "operationId": "uploadFile", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "required": [ "file" ], "properties": { "file": { "type": "string", "format": "binary" } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseFileUploadResponse" } } } } } } }, "/api/v1/files/{fileId}": { "get": { "tags": [ "File" ], "summary": "查询文件元数据", "operationId": "getFileDetail", "parameters": [ { "name": "fileId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "上传接口返回的 fileId" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseFileDetailResponse" } } } } } } }, "/api/v1/init/template": { "get": { "tags": [ "Init" ], "summary": "获取初始化模板元信息", "operationId": "getInitTemplate", "parameters": [ { "name": "version", "in": "query", "required": false, "schema": { "type": "string" }, "description": "兼容参数,后端按预置版本返回" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseInitPlanTemplateResponse" } } } } } } }, "/api/v1/init/preview": { "post": { "tags": [ "Init" ], "summary": "初始化预检(不落库)", "operationId": "previewInitPlan", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InitPreviewRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseInitPreviewResponse" } } } } } } }, "/api/v1/init/tasks": { "post": { "tags": [ "Init" ], "summary": "创建初始化任务", "operationId": "createInitTask", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InitPreviewRequest" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseInitCreateTaskResponse" } } } } } } }, "/api/v1/init/tasks/{taskId}": { "get": { "tags": [ "Init" ], "summary": "查询任务详情", "operationId": "getInitTaskDetail", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseInitTaskDetailResponse" } } } } } } }, "/api/v1/init/tasks/{taskId}/steps": { "get": { "tags": [ "Init" ], "summary": "查询任务步骤", "operationId": "getInitTaskSteps", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseInitTaskStepResponseList" } } } } } } }, "/api/v1/init/tasks/{taskId}/steps/{stepNo}/log": { "get": { "tags": [ "Init" ], "summary": "查询步骤日志", "operationId": "getInitTaskStepLog", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "stepNo", "in": "path", "required": true, "schema": { "type": "integer", "format": "int32" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseInitTaskStepLogResponse" } } } } } } }, "/api/v1/init/tasks/{taskId}/execute": { "post": { "tags": [ "Init" ], "summary": "执行初始化任务", "operationId": "executeInitTask", "parameters": [ { "name": "taskId", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiResponseInitTaskExecuteResponse" } } } } } } } }, "components": { "securitySchemes": { "InternalTokenAuth": { "type": "apiKey", "in": "header", "name": "X-Internal-Token" } }, "schemas": { "ApiResponseBase": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "code": { "type": "integer", "format": "int32", "example": 200 }, "msg": { "type": "string", "example": "success" }, "timestamp": { "type": "integer", "format": "int64", "example": 1740902400000 }, "traceId": { "type": "string", "nullable": true }, "path": { "type": "string", "nullable": true }, "details": { "type": "object", "additionalProperties": true, "nullable": true } } }, "ApiResponseDeviceInfoResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DeviceInfoResponse" } } } ] }, "ApiResponseDeviceActionResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DeviceActionResponse" } } } ] }, "ApiResponseFileUploadResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/FileUploadResponse" } } } ] }, "ApiResponseFileDetailResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/FileDetailResponse" } } } ] }, "ApiResponseInitPlanTemplateResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InitPlanTemplateResponse" } } } ] }, "ApiResponseInitPreviewResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InitPreviewResponse" } } } ] }, "ApiResponseInitCreateTaskResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InitCreateTaskResponse" } } } ] }, "ApiResponseInitTaskDetailResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InitTaskDetailResponse" } } } ] }, "ApiResponseInitTaskStepResponseList": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/InitTaskStepResponse" } } } } ] }, "ApiResponseInitTaskStepLogResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InitTaskStepLogResponse" } } } ] }, "ApiResponseInitTaskExecuteResponse": { "allOf": [ { "$ref": "#/components/schemas/ApiResponseBase" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/InitTaskExecuteResponse" } } } ] }, "DeviceInfoResponse": { "type": "object", "properties": { "deviceId": { "type": "string" }, "status": { "type": "string" }, "version": { "type": "string" }, "presetProductType": { "type": "string", "enum": [ "ENTERPRISE", "INDIRECT", "DIRECT" ] }, "presetVersion": { "type": "string" }, "presetSource": { "type": "string" } } }, "DeviceActionResponse": { "type": "object", "properties": { "action": { "type": "string" }, "accepted": { "type": "boolean" }, "operator": { "type": "string" }, "acceptedAt": { "type": "string" } } }, "FileUploadResponse": { "type": "object", "properties": { "fileId": { "type": "string" }, "size": { "type": "integer", "format": "int64" }, "storagePath": { "type": "string" } } }, "FileDetailResponse": { "type": "object", "properties": { "fileId": { "type": "string" }, "originalFilename": { "type": "string" }, "storagePath": { "type": "string" }, "status": { "type": "string", "enum": [ "ACTIVE" ] }, "size": { "type": "integer", "format": "int64" } } }, "InitPlanTemplateResponse": { "type": "object", "properties": { "presetProductType": { "type": "string", "enum": [ "ENTERPRISE", "INDIRECT", "DIRECT" ] }, "presetVersion": { "type": "string" }, "supportedVersions": { "type": "array", "items": { "type": "string" } }, "templatePath": { "type": "string" } } }, "InitPreviewRequest": { "type": "object", "required": [ "orgCodeType", "orgCode", "orgNameCn", "deployMode", "nodes", "mq", "licenses" ], "properties": { "orgCodeType": { "type": "string", "enum": [ "BIC", "CIPSID", "LEI" ] }, "orgCode": { "type": "string", "maxLength": 32 }, "orgNameCn": { "type": "string", "maxLength": 128 }, "orgNameEn": { "type": "string", "maxLength": 256 }, "deployMode": { "type": "string", "enum": [ "SINGLE", "DUAL", "QUAD" ] }, "nodes": { "$ref": "#/components/schemas/InitPreviewRequestNodes" }, "mq": { "$ref": "#/components/schemas/InitPreviewRequestMq" }, "licenses": { "$ref": "#/components/schemas/InitPreviewRequestLicenses" }, "signServer": { "$ref": "#/components/schemas/InitPreviewRequestSignServer" }, "directTlq": { "$ref": "#/components/schemas/InitPreviewRequestDirectTlqConfig" } }, "description": "初始化请求体。部分字段为条件必填:\n- 先上传文件到 `/api/v1/files/upload`,再将返回的 `fileId` 填入下述 fileId 字段\n- ENTERPRISE: mq.mqType 仅支持 RABBITMQ 或 TLQ\n- INDIRECT: mq.mqType 仅支持 RABBITMQ 或 RABBITMQ_TLQ\n- DIRECT + RABBITMQ_TLQ 需提供 directTlq\n- DIRECT 需提供 signServer 与 licenses.cfgZipFileId\n- ENTERPRISE + TLQ、INDIRECT + RABBITMQ_TLQ、DIRECT + RABBITMQ_TLQ 需提供 mq.tlqLicenseFileId\n- RABBITMQ_CFMQ 需提供 mq.cfmqConfigFileId\n" }, "InitPreviewRequestNodes": { "type": "object", "required": [ "node01Ip" ], "properties": { "node01Ip": { "type": "string", "pattern": "^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$" }, "node02Ip": { "type": "string", "pattern": "^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$" }, "node03Ip": { "type": "string", "pattern": "^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$" }, "node04Ip": { "type": "string", "pattern": "^(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}$" } } }, "InitPreviewRequestMq": { "type": "object", "required": [ "mqType", "channelUsername", "channelPassword" ], "properties": { "mqType": { "type": "string", "description": "按产品区分的支持方式枚举:\n- ENTERPRISE: RABBITMQ | TLQ\n- INDIRECT: RABBITMQ | RABBITMQ_TLQ\n- DIRECT: RABBITMQ_TLQ | RABBITMQ_CFMQ\n" }, "channelUsername": { "type": "string", "maxLength": 32 }, "channelPassword": { "type": "string", "maxLength": 128 }, "tlqLicenseFileId": { "type": "string", "maxLength": 128 }, "cfmqConfigFileId": { "type": "string", "maxLength": 128 } } }, "InitPreviewRequestLicenses": { "type": "object", "required": [ "receiverLicenseFileId" ], "properties": { "receiverLicenseFileId": { "type": "string", "maxLength": 128 }, "cfgZipFileId": { "type": "string", "maxLength": 128 } } }, "InitPreviewRequestSignServer": { "type": "object", "properties": { "signHost": { "type": "string", "maxLength": 64 }, "signPort": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535 }, "signType": { "type": "string", "enum": [ "Infosec", "CFCA" ] }, "signCertDn": { "type": "string", "maxLength": 512 }, "signCertSn": { "type": "string", "maxLength": 128 }, "signPassword": { "type": "string", "maxLength": 128 } } }, "InitPreviewRequestDirectTlqConfig": { "type": "object", "properties": { "localNodeSeq": { "type": "string", "enum": [ "A", "B" ] }, "upstreamInstitutions": { "type": "string", "maxLength": 256, "description": "上级机构编码,支持分号分隔" }, "upstreamCocCount": { "type": "integer", "format": "int32", "minimum": 1, "maximum": 2 } } }, "InitPreviewResponse": { "type": "object", "properties": { "resolvedProductType": { "type": "string" }, "presetVersion": { "type": "string" }, "stepCount": { "type": "integer", "format": "int32" }, "summary": { "type": "string" } } }, "InitCreateTaskResponse": { "type": "object", "properties": { "taskId": { "type": "string" }, "status": { "type": "string" }, "resolvedProductType": { "type": "string" }, "presetVersion": { "type": "string" } } }, "InitTaskDetailResponse": { "type": "object", "properties": { "taskId": { "type": "string" }, "status": { "type": "string" }, "resolvedProductType": { "type": "string" }, "presetVersion": { "type": "string" }, "orgCode": { "type": "string" }, "mqType": { "type": "string" }, "deployMode": { "type": "string" }, "initPlanJson": { "type": "string" } } }, "InitTaskStepResponse": { "type": "object", "properties": { "stepNo": { "type": "integer", "format": "int32" }, "stepCode": { "type": "string" }, "status": { "type": "string" }, "message": { "type": "string" }, "commandLine": { "type": "string" }, "logPath": { "type": "string" }, "exitCode": { "type": "integer", "format": "int32", "nullable": true } } }, "InitTaskStepLogResponse": { "type": "object", "properties": { "taskId": { "type": "string" }, "stepNo": { "type": "integer", "format": "int32" }, "stepCode": { "type": "string" }, "logPath": { "type": "string" }, "content": { "type": "string" } } }, "InitTaskExecuteResponse": { "type": "object", "properties": { "taskId": { "type": "string" }, "status": { "type": "string" }, "totalSteps": { "type": "integer", "format": "int32" }, "successSteps": { "type": "integer", "format": "int32" } } } } } }