559 lines
15 KiB
Markdown
559 lines
15 KiB
Markdown
# 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)
|