datai/datai-scenes/datai-scene-salesforce/docs/api-docs/2026-02-06-004-05-api.md

559 lines
15 KiB
Markdown
Raw 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 文档
## 元数据
- 需求编号004-05
- 创建时间2026-02-06
- 创建人AI Assistant
- 版本号v1.0.0
- 模块Tooling API - 动作和自动化
## API 概述
### 功能描述
Tooling API 动作和自动化功能提供 Salesforce 动作覆盖ActionOverride和可操作列表ActionableList的管理能力包括创建、更新、删除、查询动作覆盖查询可操作列表以及获取各种枚举类型。
### 基础信息
- **基础路径**`/salesforce/tooling/action-automation`
- **认证方式**JWT Token通过 Header 传递)
- **权限控制**:基于若依权限系统
- **数据格式**JSON
### 通用响应格式
```json
{
"code": 200,
"msg": "操作成功",
"data": { ... }
}
```
### 通用错误响应格式
```json
{
"code": 500,
"msg": "错误信息",
"data": { ... }
}
```
## 接口列表
### 1. 创建动作覆盖
- **功能描述**创建新的动作覆盖ActionOverride
- **请求方式**POST
- **请求路径**`/salesforce/tooling/action-automation/action-override/create`
- **权限要求**`tooling:action:create`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| actionName | String | 是 | 动作名称,长度 1-255 字符 |
| content | String | 否 | 动作内容,长度 0-131072 字符 |
| formFactor | String | 否 | 表单因子(如 Large, Medium, Small |
| pageOrSobjectType | String | 是 | 页面或 SObject 类型,长度 1-255 字符 |
| recordType | String | 否 | 记录类型 ID长度 18 字符 |
| type | String | 是 | 动作覆盖类型(如 Default, Flexipage 等) |
#### 请求示例
```json
{
"actionName": "New",
"content": "{}",
"formFactor": "Large",
"pageOrSobjectType": "Account",
"type": "Default"
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | Object | 操作结果 |
| data.success | Boolean | 是否成功 |
| data.id | String | 创建的记录 ID |
| data.createdDate | String | 创建时间 |
| data.errorCode | String | 错误码(失败时) |
| data.errorMessage | String | 错误信息(失败时) |
#### 成功响应示例
```json
{
"code": 200,
"msg": "创建动作覆盖成功",
"data": {
"success": true,
"id": "01Ixx0000000001EAA",
"createdDate": "2026-02-06T10:30:00",
"lastModifiedDate": "2026-02-06T10:30:00"
}
}
```
#### 失败响应示例
```json
{
"code": 500,
"msg": "创建动作覆盖失败",
"data": {
"success": false,
"errorCode": "TOOLING_ACTION_002",
"errorMessage": "ActionOverride with the specified name already exists"
}
}
```
---
### 2. 更新动作覆盖
- **功能描述**:更新现有的动作覆盖
- **请求方式**PUT
- **请求路径**`/salesforce/tooling/action-automation/action-override/update`
- **权限要求**`tooling:action:update`
#### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | String | 是 | 动作覆盖 ID长度 18 字符 |
| actionName | String | 否 | 动作名称,长度 1-255 字符 |
| content | String | 否 | 动作内容,长度 0-131072 字符 |
| formFactor | String | 否 | 表单因子 |
| pageOrSobjectType | String | 否 | 页面或 SObject 类型 |
| recordType | String | 否 | 记录类型 ID |
| type | String | 否 | 动作覆盖类型 |
#### 请求示例
```json
{
"id": "01Ixx0000000001EAA",
"actionName": "New",
"content": "{\"updated\": true}",
"formFactor": "Large",
"pageOrSobjectType": "Account",
"type": "Flexipage"
}
```
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Object | 操作结果 |
| data.success | Boolean | 是否成功 |
| data.id | String | 更新的记录 ID |
| data.lastModifiedDate | String | 最后修改时间 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "更新动作覆盖成功",
"data": {
"success": true,
"id": "01Ixx0000000001EAA",
"lastModifiedDate": "2026-02-06T11:00:00"
}
}
```
---
### 3. 删除动作覆盖
- **功能描述**:删除指定的动作覆盖
- **请求方式**DELETE
- **请求路径**`/salesforce/tooling/action-automation/action-override/delete/{id}`
- **权限要求**`tooling:action:delete`
#### 路径参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | String | 是 | 动作覆盖 ID长度 18 字符 |
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Object | 操作结果 |
| data.success | Boolean | 是否成功 |
| data.id | String | 删除的记录 ID |
#### 成功响应示例
```json
{
"code": 200,
"msg": "删除动作覆盖成功",
"data": {
"success": true,
"id": "01Ixx0000000001EAA"
}
}
```
---
### 4. 查询动作覆盖
- **功能描述**:分页查询动作覆盖列表
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/action-override/query`
- **权限要求**`tooling:action:query`
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| actionName | String | 否 | 动作名称,支持模糊查询 |
| pageOrSobjectType | String | 否 | 页面或 SObject 类型 |
| type | String | 否 | 动作覆盖类型 |
| pageNum | Integer | 否 | 页码,默认 1 |
| pageSize | Integer | 否 | 每页大小,默认 10 |
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Object | 分页结果 |
| data.total | Long | 总记录数 |
| data.rows | Array | 动作覆盖列表 |
| data.rows[].id | String | 记录 ID |
| data.rows[].actionName | String | 动作名称 |
| data.rows[].pageOrSobjectType | String | 页面或 SObject 类型 |
| data.rows[].type | String | 动作覆盖类型 |
| data.rows[].createdDate | String | 创建时间 |
| data.rows[].lastModifiedDate | String | 最后修改时间 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "查询动作覆盖成功",
"data": {
"total": 25,
"rows": [
{
"id": "01Ixx0000000001EAA",
"actionName": "New",
"pageOrSobjectType": "Account",
"type": "Default",
"createdDate": "2026-02-06T10:30:00",
"lastModifiedDate": "2026-02-06T11:00:00"
}
]
}
}
```
---
### 5. 查询可操作列表
- **功能描述**分页查询可操作列表ActionableList
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/actionable-list/query`
- **权限要求**`tooling:action:query`
#### 查询参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| name | String | 否 | 列表名称,支持模糊查询 |
| type | String | 否 | 列表类型 |
| pageNum | Integer | 否 | 页码,默认 1 |
| pageSize | Integer | 否 | 每页大小,默认 10 |
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Object | 分页结果 |
| data.total | Long | 总记录数 |
| data.rows | Array | 可操作列表 |
| data.rows[].id | String | 记录 ID |
| data.rows[].name | String | 列表名称 |
| data.rows[].type | String | 列表类型 |
| data.rows[].sourceType | String | 源类型 |
| data.rows[].createdDate | String | 创建时间 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "查询可操作列表成功",
"data": {
"total": 10,
"rows": [
{
"id": "00Dxx0000000001EAA",
"name": "My Actionable List",
"type": "List",
"sourceType": "Sobject",
"createdDate": "2026-02-06T10:30:00"
}
]
}
}
```
---
### 6. 获取动作覆盖类型
- **功能描述**:获取所有支持的动作覆盖类型
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/action-override/types`
- **权限要求**`tooling:action:query`
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Array | 动作覆盖类型列表 |
| data[].value | String | 类型值 |
| data[].label | String | 类型标签 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "获取动作覆盖类型成功",
"data": [
{ "value": "Default", "label": "Default" },
{ "value": "Flexipage", "label": "Flexipage" },
{ "value": "LightningComponent", "label": "Lightning Component" },
{ "value": "Scontrol", "label": "Scontrol" },
{ "value": "Standard", "label": "Standard" },
{ "value": "Visualforce", "label": "Visualforce" }
]
}
```
---
### 7. 获取动作子类型
- **功能描述**:获取所有支持的动作子类型
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/action/subtypes`
- **权限要求**`tooling:action:query`
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Array | 动作子类型列表 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "获取动作子类型成功",
"data": [
{ "value": "ActionLink", "label": "Action Link" },
{ "value": "Flow", "label": "Flow" },
{ "value": "InvocableAction", "label": "Invocable Action" },
{ "value": "ProductivityAction", "label": "Productivity Action" },
{ "value": "QuickAction", "label": "Quick Action" }
]
}
```
---
### 8. 获取可操作列表类型
- **功能描述**:获取所有支持的可操作列表类型
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/actionable-list/types`
- **权限要求**`tooling:action:query`
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Array | 可操作列表类型列表 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "获取可操作列表类型成功",
"data": [
{ "value": "List", "label": "List" },
{ "value": "MruList", "label": "MRU List" },
{ "value": "Queue", "label": "Queue" }
]
}
```
---
### 9. 获取可操作列表源类型
- **功能描述**:获取所有支持的可操作列表源类型
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/actionable-list/source-types`
- **权限要求**`tooling:action:query`
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Array | 可操作列表源类型列表 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "获取可操作列表源类型成功",
"data": [
{ "value": "Sobject", "label": "Sobject" },
{ "value": "Flow", "label": "Flow" },
{ "value": "Apex", "label": "Apex" }
]
}
```
---
### 10. 获取动作任务分配类型
- **功能描述**:获取所有支持的动作任务分配类型
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/action-task/assigned-to-types`
- **权限要求**`tooling:action:query`
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Array | 动作任务分配类型列表 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "获取动作任务分配类型成功",
"data": [
{ "value": "Owner", "label": "Owner" },
{ "value": "User", "label": "User" },
{ "value": "Queue", "label": "Queue" }
]
}
```
---
### 11. 获取动作 HTTP 方法
- **功能描述**:获取所有支持的动作 HTTP 方法
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/action/http-methods`
- **权限要求**`tooling:action:query`
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Array | HTTP 方法列表 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "获取动作 HTTP 方法成功",
"data": [
{ "value": "GET", "label": "GET" },
{ "value": "POST", "label": "POST" },
{ "value": "PUT", "label": "PUT" },
{ "value": "DELETE", "label": "DELETE" },
{ "value": "PATCH", "label": "PATCH" }
]
}
```
---
### 12. 获取动作邮件发送者类型
- **功能描述**:获取所有支持的动作邮件发送者类型
- **请求方式**GET
- **请求路径**`/salesforce/tooling/action-automation/action/email-sender-types`
- **权限要求**`tooling:action:query`
#### 响应参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码 |
| msg | String | 提示信息 |
| data | Array | 邮件发送者类型列表 |
#### 成功响应示例
```json
{
"code": 200,
"msg": "获取动作邮件发送者类型成功",
"data": [
{ "value": "CurrentUser", "label": "Current User" },
{ "value": "OrgWideEmailAddress", "label": "Org-Wide Email Address" },
{ "value": "DefaultWorkflowUser", "label": "Default Workflow User" }
]
}
```
---
## 错误码
### 错误码列表
| 错误码 | 说明 | 场景 |
|--------|------|------|
| TOOLING_ACTION_001 | Session 无效或已过期 | Salesforce 会话过期或无效 |
| TOOLING_ACTION_002 | 创建动作覆盖失败 | 创建动作覆盖时发生错误 |
| TOOLING_ACTION_003 | 更新动作覆盖失败 | 更新动作覆盖时发生错误 |
| TOOLING_ACTION_004 | 删除动作覆盖失败 | 删除动作覆盖时发生错误 |
| TOOLING_ACTION_005 | 查询动作覆盖失败 | 查询动作覆盖时发生错误 |
| TOOLING_ACTION_006 | 查询可操作列表失败 | 查询可操作列表时发生错误 |
| TOOLING_ACTION_007 | 获取动作覆盖类型失败 | 获取动作覆盖类型时发生错误 |
| TOOLING_ACTION_008 | 获取动作子类型失败 | 获取动作子类型时发生错误 |
| TOOLING_ACTION_009 | 获取可操作列表类型失败 | 获取可操作列表类型时发生错误 |
| TOOLING_ACTION_010 | 获取可操作列表源类型失败 | 获取可操作列表源类型时发生错误 |
| TOOLING_ACTION_011 | 权限不足 | 用户没有执行该操作的权限 |
### 错误响应示例
```json
{
"code": 500,
"msg": "Session 无效或已过期",
"data": {
"success": false,
"errorCode": "TOOLING_ACTION_001",
"errorMessage": "Session 无效或已过期"
}
}
```
## 相关文档
- [需求文档](../requirements/sub/2026-01-28-004-05-动作和自动化.md)
- [设计文档](../design/2026-02-03-004-05-动作和自动化-设计.md)
- [决策记录](../decisions/2026-02-03-004-05-ADR-动作和自动化技术选型.md)
- [SQL 脚本](../sql/2026-02-03-004-05-动作和自动化操作日志.sql)
- [提示词文档](../prompts/2026-02-06-004-05-prompt-动作和自动化.md)
- [变更日志](../changelog/2026-02-06-004-05-changelog.md)
- [复盘文档](../retros/2026-02-06-004-05-retro.md)
- [会话记录](../sessions/2026-02-03-004-05-session.md)