datai/datai-scenes/datai-scene-salesforce/docs/api-docs/2026-02-05-002-07-api.md

456 lines
11 KiB
Markdown
Raw Normal View History

# API 文档 - WSDL 转换功能
## 元数据
- **需求编号**002-07
- **需求名称**WSDL 转换
- **创建时间**2026-02-05
- **创建人**AI Assistant
- **版本**v1.0.0
## API 概述
WSDL 转换 API 提供将 WSDL 文件转换为 Apex 类的功能,支持从 URL 和 XML 两种方式进行转换,并提供转换历史查询、转换详情查询、删除转换记录等功能。
**基础路径**`/wsdl`
**模块**`datai-salesforce-apex`
## 接口列表
### 1. 从 URL 转换 WSDL
- **功能描述**:从 WSDL URL 转换 WSDL 到 Apex 类
- **请求方式**POST
- **请求路径**`/wsdl/conversion/convertFromUrl`
- **权限要求**`apex:wsdl:convert`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| wsdlUrl | String | 是 | WSDL URL长度 1-500 字符 |
| packageName | String | 否 | 包名称,长度 0-255 字符 |
| generateAsync | Boolean | 否 | 是否生成异步方法,默认 false |
#### 请求示例
```json
{
"wsdlUrl": "https://example.com/service?wsdl",
"packageName": "com.example",
"generateAsync": true
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| message | String | 提示信息 |
| data | Object | 转换结果 |
| data.conversionId | Long | 转换记录 ID |
| data.success | Boolean | 转换是否成功 |
| data.apexClasses | Array | 生成的 Apex 类列表 |
| data.warnings | Array | 警告信息列表 |
| data.errors | Array | 错误信息列表 |
#### 成功响应示例
```json
{
"code": 200,
"message": "WSDL 转换成功",
"data": {
"conversionId": 1,
"success": true,
"apexClasses": [
{
"classId": 1,
"className": "ExampleService",
"classType": "Class",
"classBody": "public class ExampleService { ... }"
},
{
"classId": 2,
"className": "ExampleServiceRequest",
"classType": "Class",
"classBody": "public class ExampleServiceRequest { ... }"
}
],
"warnings": [
"警告:某些类型可能无法完全转换"
],
"errors": []
}
}
```
#### 失败响应示例
```json
{
"code": 400,
"message": "WSDL URL 不能为空",
"data": null
}
```
---
### 2. 从 XML 转换 WSDL
- **功能描述**:从 WSDL XML 内容转换 WSDL 到 Apex 类
- **请求方式**POST
- **请求路径**`/wsdl/conversion/convertFromXml`
- **权限要求**`apex:wsdl:convert`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| wsdlXml | String | 是 | WSDL XML 内容 |
| packageName | String | 否 | 包名称,长度 0-255 字符 |
| generateAsync | Boolean | 否 | 是否生成异步方法,默认 false |
#### 请求示例
```json
{
"wsdlXml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>...",
"packageName": "com.example",
"generateAsync": false
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| message | String | 提示信息 |
| data | Object | 转换结果 |
| data.conversionId | Long | 转换记录 ID |
| data.success | Boolean | 转换是否成功 |
| data.apexClasses | Array | 生成的 Apex 类列表 |
| data.warnings | Array | 警告信息列表 |
| data.errors | Array | 错误信息列表 |
#### 成功响应示例
```json
{
"code": 200,
"message": "WSDL 转换成功",
"data": {
"conversionId": 2,
"success": true,
"apexClasses": [
{
"classId": 3,
"className": "MyService",
"classType": "Class",
"classBody": "public class MyService { ... }"
}
],
"warnings": [],
"errors": []
}
}
```
#### 失败响应示例
```json
{
"code": 400,
"message": "WSDL XML 内容不能为空",
"data": null
}
```
---
### 3. 查询转换历史列表
- **功能描述**:分页查询 WSDL 转换历史记录,支持多种筛选条件
- **请求方式**GET
- **请求路径**`/wsdl/conversion/list`
- **权限要求**`apex:wsdl:list`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| pageNum | Integer | 否 | 当前页码,默认 1 |
| pageSize | Integer | 否 | 每页记录数,默认 10 |
| status | String | 否 | 转换状态success/failed |
| startTime | String | 否 | 开始时间格式yyyy-MM-dd HH:mm:ss |
| endTime | String | 否 | 结束时间格式yyyy-MM-dd HH:mm:ss |
#### 请求示例
```
GET /wsdl/conversion/list?status=success&pageNum=1&pageSize=20
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| message | String | 提示信息 |
| data | Object | 分页数据 |
| data.total | Long | 总记录数 |
| data.rows | Array | 转换记录列表 |
| data.rows[].conversionId | Long | 转换记录 ID |
| data.rows[].orgType | String | 组织类型 |
| data.rows[].orgId | String | 组织 ID |
| data.rows[].wsdlUrl | String | WSDL URL |
| data.rows[].packageName | String | 包名称 |
| data.rows[].generateAsync | Boolean | 是否生成异步方法 |
| data.rows[].status | String | 转换状态 |
| data.rows[].errorMessage | String | 错误消息 |
| data.rows[].createTime | String | 创建时间 |
| data.rows[].updateTime | String | 更新时间 |
#### 成功响应示例
```json
{
"code": 200,
"message": "查询成功",
"data": {
"total": 50,
"rows": [
{
"conversionId": 1,
"orgType": "source",
"orgId": "00Dxx0000001GWP",
"wsdlUrl": "https://example.com/service?wsdl",
"packageName": "com.example",
"generateAsync": true,
"status": "success",
"errorMessage": null,
"createTime": "2026-02-05 10:00:00",
"updateTime": "2026-02-05 10:00:30"
}
]
}
}
```
---
### 4. 查询转换记录详情
- **功能描述**:根据 ID 查询单个 WSDL 转换记录的详细信息
- **请求方式**GET
- **请求路径**`/wsdl/conversion/{conversionId}`
- **权限要求**`apex:wsdl:query`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| conversionId | Long | 是 | 转换记录 ID路径参数 |
#### 请求示例
```
GET /wsdl/conversion/1
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| message | String | 提示信息 |
| data | Object | 转换记录详情 |
| data.conversionId | Long | 转换记录 ID |
| data.orgType | String | 组织类型 |
| data.orgId | String | 组织 ID |
| data.wsdlUrl | String | WSDL URL |
| data.wsdlXml | String | WSDL XML 内容 |
| data.packageName | String | 包名称 |
| data.generateAsync | Boolean | 是否生成异步方法 |
| data.status | String | 转换状态 |
| data.errorMessage | String | 错误消息 |
| data.createTime | String | 创建时间 |
| data.updateTime | String | 更新时间 |
| data.apexClasses | Array | 生成的 Apex 类列表 |
| data.apexClasses[].classId | Long | 类 ID |
| data.apexClasses[].className | String | 类名称 |
| data.apexClasses[].classType | String | 类类型 |
| data.apexClasses[].classBody | String | 类代码 |
| data.apexClasses[].namespace | String | 命名空间 |
| data.apexClasses[].isAsync | Boolean | 是否异步 |
| data.apexClasses[].createTime | String | 创建时间 |
#### 成功响应示例
```json
{
"code": 200,
"message": "查询成功",
"data": {
"conversionId": 1,
"orgType": "source",
"orgId": "00Dxx0000001GWP",
"wsdlUrl": "https://example.com/service?wsdl",
"wsdlXml": null,
"packageName": "com.example",
"generateAsync": true,
"status": "success",
"errorMessage": null,
"createTime": "2026-02-05 10:00:00",
"updateTime": "2026-02-05 10:00:30",
"apexClasses": [
{
"classId": 1,
"className": "ExampleService",
"classType": "Class",
"classBody": "public class ExampleService { ... }",
"namespace": "com.example",
"isAsync": false,
"createTime": "2026-02-05 10:00:00"
}
]
}
}
```
#### 失败响应示例
```json
{
"code": 404,
"message": "转换记录不存在",
"data": null
}
```
---
### 5. 删除转换记录
- **功能描述**:删除指定的 WSDL 转换记录
- **请求方式**DELETE
- **请求路径**`/wsdl/conversion/{conversionId}`
- **权限要求**`apex:wsdl:delete`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| conversionId | Long | 是 | 转换记录 ID路径参数 |
#### 请求示例
```
DELETE /wsdl/conversion/1
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| message | String | 提示信息 |
| data | Integer | 删除的记录数 |
#### 成功响应示例
```json
{
"code": 200,
"message": "删除成功",
"data": 1
}
```
#### 失败响应示例
```json
{
"code": 404,
"message": "转换记录不存在",
"data": null
}
```
---
### 6. 批量删除转换记录
- **功能描述**:批量删除 WSDL 转换记录
- **请求方式**DELETE
- **请求路径**`/wsdl/conversion/batch`
- **权限要求**`apex:wsdl:delete`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| conversionIds | Array | 是 | 转换记录 ID 列表 |
#### 请求示例
```json
{
"conversionIds": [1, 2, 3]
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| message | String | 提示信息 |
| data | Integer | 删除的记录数 |
#### 成功响应示例
```json
{
"code": 200,
"message": "批量删除成功,删除 3 条记录",
"data": 3
}
```
#### 失败响应示例
```json
{
"code": 400,
"message": "转换记录 ID 列表不能为空",
"data": null
}
```
---
## 错误码
| 错误码 | 错误名称 | 说明 | HTTP 状态码 |
|--------|---------|------|-------------|
| WSDL_001 | WSDL_URL_EMPTY | WSDL URL 不能为空 | 400 |
| WSDL_002 | WSDL_XML_EMPTY | WSDL XML 内容不能为空 | 400 |
| WSDL_003 | WSDL_CONVERT_FAILED | WSDL 转换失败 | 500 |
| WSDL_004 | CONVERSION_NOT_FOUND | 转换记录不存在 | 404 |
| WSDL_005 | CONVERSION_ID_EMPTY | 转换记录 ID 不能为空 | 400 |
| WSDL_006 | BATCH_DELETE_IDS_EMPTY | 批量删除 ID 列表不能为空 | 400 |
| WSDL_007 | WSDL_PARSE_FAILED | WSDL 解析失败 | 500 |
| WSDL_008 | APEX_CLASS_GENERATE_FAILED | Apex 类生成失败 | 500 |
## 相关文档
- [需求文档](../requirements/sub/2026-01-28-002-07-WSDL转换.md)
- [设计文档](../design/2026-02-03-002-07-WSDL转换-设计.md)
- [决策记录](../decisions/2026-02-03-002-07-ADR-WSDL转换技术选型.md)
- [SQL 脚本](../sql/2026-02-03-002-07-WSDL转换.sql)
- [提示词文档](../prompts/2026-02-03-002-07-prompt-WSDL转换.md)
- [变更日志](../changelog/2026-02-05-002-07-changelog.md)
- [复盘文档](../retros/2026-02-05-002-07-retro.md)