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

456 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)