datai/datai-scenes/datai-scene-salesforce/docs/api-docs/2026-01-30-002-api.md

20 KiB
Raw Blame History

API 文档

元数据

  • 需求编号001
  • 子需求编号001-02
  • 创建时间2026-01-30
  • 创建人AI Assistant
  • 版本号v1.0.0

API 概述

本 API 文档描述了 Salesforce Partner API 的 CRUD 操作接口,包括 Create创建、Retrieve查询、Update更新、Delete删除、Upsert更新或插入、Merge合并六个核心操作。所有接口都支持单条记录和批量记录操作最多 200 条),并提供完整的参数验证、异常处理、权限控制和 Swagger 文档。

核心功能

  • 创建记录Create:创建新的 Salesforce 记录,支持单条记录和批量记录创建
  • 查询记录Retrieve:查询 Salesforce 记录,支持单条记录和批量记录查询
  • 更新记录Update:更新现有的 Salesforce 记录,支持单条记录和批量记录更新
  • 删除记录Delete:删除 Salesforce 记录,支持单条记录和批量记录删除
  • 更新或插入记录Upsert:更新或插入 Salesforce 记录,支持单条记录和批量记录 Upsert
  • 合并记录Merge:合并三条 Salesforce 记录

技术栈

  • 框架Spring Boot 3.x、Spring Security 6.x、若依框架
  • API 规范RESTful API
  • 文档工具Swagger/OpenAPI
  • 权限控制Spring Security@PreAuthorize
  • 参数验证Spring Boot Validation
  • 异常处理datai-salesforce-common 模块异常体系

认证方式

所有接口都需要用户认证,使用 Spring Security 的 @PreAuthorize("@ss.hasLogin()") 注解进行权限控制。用户必须登录后才能访问这些接口。

基础 URL

http://localhost:8080/partner/crud

响应格式

所有接口使用统一的响应格式:

{
  "code": 200,
  "msg": "操作成功",
  "data": {}
}
参数名 类型 说明
code Integer 状态码200 成功,其他失败)
msg String 提示信息
data Object 返回数据

接口列表

接口 1创建记录

功能描述

创建新的 Salesforce 记录,支持单条记录和批量记录创建(最多 200 条)。

请求方式

POST

请求路径

/partner/crud/create

请求参数

单条记录创建

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
fields Map<String, Object> 字段值(如 {"Name": "Test Account", "BillingCity": "San Francisco"}
records List<Map<String, Object>> 批量创建记录列表(如果提供,则忽略 objectType 和 fields

批量记录创建

参数名 类型 必填 说明
records List<Map<String, Object>> 批量创建记录列表(最多 200 条)

请求示例

单条记录创建

{
  "objectType": "Account",
  "fields": {
    "Name": "Test Account",
    "BillingCity": "San Francisco",
    "BillingState": "CA",
    "AnnualRevenue": 1000000.00
  }
}

批量记录创建

{
  "records": [
    {
      "Name": "Account 1",
      "BillingCity": "San Francisco"
    },
    {
      "Name": "Account 2",
      "BillingCity": "New York"
    },
    {
      "Name": "Account 3",
      "BillingCity": "Los Angeles"
    }
  ]
}

响应参数

单条记录创建

参数名 类型 说明
id String 记录 ID
success Boolean 是否成功
errors List 错误信息列表
created Boolean 是否创建

批量记录创建

参数名 类型 说明
- List 记录操作结果列表

响应示例

成功示例(单条记录)

{
  "code": 200,
  "msg": "创建成功",
  "data": {
    "id": "001xx000003DHb2AAG",
    "success": true,
    "errors": [],
    "created": true
  }
}

成功示例(批量记录)

{
  "code": 200,
  "msg": "批量创建成功",
  "data": [
    {
      "id": "001xx000003DHb2AAG",
      "success": true,
      "errors": [],
      "created": true
    },
    {
      "id": "001xx000003DHb3AAH",
      "success": true,
      "errors": [],
      "created": true
    },
    {
      "id": "001xx000003DHb4AAI",
      "success": true,
      "errors": [],
      "created": true
    }
  ]
}

失败示例

{
  "code": 500,
  "msg": "创建记录失败: INVALID_FIELD: No such column 'InvalidField' on sobject of type Account",
  "data": null
}

错误码

错误码 说明
500 创建记录失败
INVALID_FIELD 字段不存在或无效
INVALID_ID ID 无效
MALFORMED_QUERY 查询语法错误
INVALID_OPERATION 操作无效
DUPLICATE_VALUE 值重复
ENTITY_IS_DELETED 记录已删除
INSUFFICIENT_ACCESS 权限不足
INVALID_CROSS_REFERENCE_KEY 跨引用键无效

接口 2查询记录

功能描述

查询 Salesforce 记录,支持单条记录和批量记录查询(最多 200 条)。

请求方式

GET

请求路径

/partner/crud/retrieve

请求参数

单条记录查询

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
id String 记录 ID
fieldNames String 字段名称列表(逗号分隔,如 "Name,BillingCity,BillingState"

批量记录查询

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
ids String 记录 ID 列表(逗号分隔,最多 200 条)
fieldNames String 字段名称列表(逗号分隔,如 "Name,BillingCity,BillingState"

请求示例

单条记录查询

GET /partner/crud/retrieve?objectType=Account&id=001xx000003DHb2AAG&fieldNames=Name,BillingCity,BillingState

批量记录查询

GET /partner/crud/retrieve?objectType=Account&ids=001xx000003DHb2AAG,001xx000003DHb3AAH,001xx000003DHb4AAI&fieldNames=Name,BillingCity,BillingState

响应参数

单条记录查询

参数名 类型 说明
objectType String 对象类型
id String 记录 ID
fields Map<String, Object> 字段值
success Boolean 是否成功
errors List 错误信息列表

批量记录查询

参数名 类型 说明
- List 查询结果列表

响应示例

成功示例(单条记录)

{
  "code": 200,
  "msg": "查询成功",
  "data": {
    "objectType": "Account",
    "id": "001xx000003DHb2AAG",
    "fields": {
      "Name": "Test Account",
      "BillingCity": "San Francisco",
      "BillingState": "CA"
    },
    "success": true,
    "errors": []
  }
}

成功示例(批量记录)

{
  "code": 200,
  "msg": "查询成功",
  "data": [
    {
      "objectType": "Account",
      "id": "001xx000003DHb2AAG",
      "fields": {
        "Name": "Account 1",
        "BillingCity": "San Francisco",
        "BillingState": "CA"
      },
      "success": true,
      "errors": []
    },
    {
      "objectType": "Account",
      "id": "001xx000003DHb3AAH",
      "fields": {
        "Name": "Account 2",
        "BillingCity": "New York",
        "BillingState": "NY"
      },
      "success": true,
      "errors": []
    },
    {
      "objectType": "Account",
      "id": "001xx000003DHb4AAI",
      "fields": {
        "Name": "Account 3",
        "BillingCity": "Los Angeles",
        "BillingState": "CA"
      },
      "success": true,
      "errors": []
    }
  ]
}

失败示例

{
  "code": 500,
  "msg": "查询记录失败: INVALID_ID: Invalid ID: 001xx000003DHb2AAG",
  "data": null
}

错误码

错误码 说明
500 查询记录失败
INVALID_ID ID 无效
INVALID_FIELD 字段不存在或无效
ENTITY_IS_DELETED 记录已删除
INSUFFICIENT_ACCESS 权限不足

接口 3更新记录

功能描述

更新现有的 Salesforce 记录,支持单条记录和批量记录更新(最多 200 条)。

请求方式

PUT

请求路径

/partner/crud/update

请求参数

单条记录更新

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
id String 记录 ID
fields Map<String, Object> 字段值(如 {"BillingCity": "New York"}
records List 批量更新记录列表(如果提供,则忽略 objectType、id 和 fields

批量记录更新

参数名 类型 必填 说明
records List 批量更新记录列表(最多 200 条)

UpdateRecordItem

参数名 类型 必填 说明
id String 记录 ID
fields Map<String, Object> 字段值

请求示例

单条记录更新

{
  "objectType": "Account",
  "id": "001xx000003DHb2AAG",
  "fields": {
    "BillingCity": "New York",
    "BillingState": "NY",
    "AnnualRevenue": 2000000.00
  }
}

批量记录更新

{
  "records": [
    {
      "id": "001xx000003DHb2AAG",
      "fields": {
        "BillingCity": "New York",
        "BillingState": "NY"
      }
    },
    {
      "id": "001xx000003DHb3AAH",
      "fields": {
        "BillingCity": "Los Angeles",
        "BillingState": "CA"
      }
    },
    {
      "id": "001xx000003DHb4AAI",
      "fields": {
        "BillingCity": "Chicago",
        "BillingState": "IL"
      }
    }
  ]
}

响应参数

单条记录更新

参数名 类型 说明
id String 记录 ID
success Boolean 是否成功
errors List 错误信息列表

批量记录更新

参数名 类型 说明
- List 记录操作结果列表

响应示例

成功示例(单条记录)

{
  "code": 200,
  "msg": "更新成功",
  "data": {
    "id": "001xx000003DHb2AAG",
    "success": true,
    "errors": []
  }
}

成功示例(批量记录)

{
  "code": 200,
  "msg": "批量更新成功",
  "data": [
    {
      "id": "001xx000003DHb2AAG",
      "success": true,
      "errors": []
    },
    {
      "id": "001xx000003DHb3AAH",
      "success": true,
      "errors": []
    },
    {
      "id": "001xx000003DHb4AAI",
      "success": true,
      "errors": []
    }
  ]
}

失败示例

{
  "code": 500,
  "msg": "更新记录失败: INVALID_ID: Invalid ID: 001xx000003DHb2AAG",
  "data": null
}

错误码

错误码 说明
500 更新记录失败
INVALID_ID ID 无效
INVALID_FIELD 字段不存在或无效
ENTITY_IS_DELETED 记录已删除
INSUFFICIENT_ACCESS 权限不足

接口 4删除记录

功能描述

删除 Salesforce 记录,支持单条记录和批量记录删除(最多 200 条)。

请求方式

DELETE

请求路径

/partner/crud/delete

请求参数

单条记录删除

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
id String 记录 ID
ids String 记录 ID 列表(逗号分隔,最多 200 条)

批量记录删除

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
ids String 记录 ID 列表(逗号分隔,最多 200 条)

请求示例

单条记录删除

DELETE /partner/crud/delete?objectType=Account&id=001xx000003DHb2AAG

批量记录删除

DELETE /partner/crud/delete?objectType=Account&ids=001xx000003DHb2AAG,001xx000003DHb3AAH,001xx000003DHb4AAI

响应参数

单条记录删除

参数名 类型 说明
id String 记录 ID
success Boolean 是否成功
errors List 错误信息列表

批量记录删除

参数名 类型 说明
- List 记录操作结果列表

响应示例

成功示例(单条记录)

{
  "code": 200,
  "msg": "删除成功",
  "data": {
    "id": "001xx000003DHb2AAG",
    "success": true,
    "errors": []
  }
}

成功示例(批量记录)

{
  "code": 200,
  "msg": "批量删除成功",
  "data": [
    {
      "id": "001xx000003DHb2AAG",
      "success": true,
      "errors": []
    },
    {
      "id": "001xx000003DHb3AAH",
      "success": true,
      "errors": []
    },
    {
      "id": "001xx000003DHb4AAI",
      "success": true,
      "errors": []
    }
  ]
}

失败示例

{
  "code": 500,
  "msg": "删除记录失败: INVALID_ID: Invalid ID: 001xx000003DHb2AAG",
  "data": null
}

错误码

错误码 说明
500 删除记录失败
INVALID_ID ID 无效
ENTITY_IS_DELETED 记录已删除
ENTITY_IS_LOCKED_FOR_DELETION 记录被锁定,无法删除
INSUFFICIENT_ACCESS 权限不足

接口 5更新或插入记录

功能描述

更新或插入 Salesforce 记录,支持单条记录和批量记录 Upsert最多 200 条)。如果记录存在则更新,如果不存在则创建。

请求方式

POST

请求路径

/partner/crud/upsert

请求参数

单条记录 Upsert

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
externalIdField String 外部 ID 字段名称(如 "ExternalId__c"
fields Map<String, Object> 字段值(必须包含外部 ID 字段的值)
records List<Map<String, Object>> 批量 Upsert 记录列表(如果提供,则忽略 objectType、externalIdField 和 fields

批量记录 Upsert

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
externalIdField String 外部 ID 字段名称(如 "ExternalId__c"
records List<Map<String, Object>> 批量 Upsert 记录列表(最多 200 条,每条记录必须包含外部 ID 字段的值)

请求示例

单条记录 Upsert

{
  "objectType": "Account",
  "externalIdField": "ExternalId__c",
  "fields": {
    "ExternalId__c": "EXT001",
    "Name": "Test Account",
    "BillingCity": "San Francisco"
  }
}

批量记录 Upsert

{
  "objectType": "Account",
  "externalIdField": "ExternalId__c",
  "records": [
    {
      "ExternalId__c": "EXT001",
      "Name": "Account 1",
      "BillingCity": "San Francisco"
    },
    {
      "ExternalId__c": "EXT002",
      "Name": "Account 2",
      "BillingCity": "New York"
    },
    {
      "ExternalId__c": "EXT003",
      "Name": "Account 3",
      "BillingCity": "Los Angeles"
    }
  ]
}

响应参数

单条记录 Upsert

参数名 类型 说明
id String 记录 ID
success Boolean 是否成功
errors List 错误信息列表
created Boolean 是否创建

批量记录 Upsert

参数名 类型 说明
- List 记录操作结果列表

响应示例

成功示例(单条记录,创建)

{
  "code": 200,
  "msg": "Upsert 成功",
  "data": {
    "id": "001xx000003DHb2AAG",
    "success": true,
    "errors": [],
    "created": true
  }
}

成功示例(单条记录,更新)

{
  "code": 200,
  "msg": "Upsert 成功",
  "data": {
    "id": "001xx000003DHb2AAG",
    "success": true,
    "errors": [],
    "created": false
  }
}

成功示例(批量记录)

{
  "code": 200,
  "msg": "批量 Upsert 成功",
  "data": [
    {
      "id": "001xx000003DHb2AAG",
      "success": true,
      "errors": [],
      "created": true
    },
    {
      "id": "001xx000003DHb3AAH",
      "success": true,
      "errors": [],
      "created": false
    },
    {
      "id": "001xx000003DHb4AAI",
      "success": true,
      "errors": [],
      "created": true
    }
  ]
}

失败示例

{
  "code": 500,
  "msg": "Upsert 记录失败: INVALID_FIELD: No such column 'ExternalId__c' on sobject of type Account",
  "data": null
}

错误码

错误码 说明
500 Upsert 记录失败
INVALID_FIELD 字段不存在或无效
INVALID_ID ID 无效
ENTITY_IS_DELETED 记录已删除
INSUFFICIENT_ACCESS 权限不足
DUPLICATE_VALUE 值重复

接口 6合并记录

功能描述

合并三条 Salesforce 记录,将两条记录合并到主记录中。

请求方式

POST

请求路径

/partner/crud/merge

请求参数

参数名 类型 必填 说明
objectType String 对象类型(如 "Account"、"Contact"
masterRecordId String 主记录 ID
recordToMergeIds List 待合并记录 ID 列表(最多 2 条)

请求示例

{
  "objectType": "Account",
  "masterRecordId": "001xx000003DHb2AAG",
  "recordToMergeIds": [
    "001xx000003DHb3AAH",
    "001xx000003DHb4AAI"
  ]
}

响应参数

参数名 类型 说明
id String 记录 ID
success Boolean 是否成功
errors List 错误信息列表

响应示例

成功示例

{
  "code": 200,
  "msg": "合并成功",
  "data": {
    "id": "001xx000003DHb2AAG",
    "success": true,
    "errors": []
  }
}

失败示例

{
  "code": 500,
  "msg": "合并记录失败: INVALID_ID: Invalid ID: 001xx000003DHb2AAG",
  "data": null
}

错误码

错误码 说明
500 合并记录失败
INVALID_ID ID 无效
ENTITY_IS_DELETED 记录已删除
INSUFFICIENT_ACCESS 权限不足
CANNOT_MERGE_RECORD 无法合并记录(如记录类型不同)

数据模型

RecordResultVo

记录操作结果。

字段名 类型 说明
id String 记录 ID
success Boolean 是否成功
errors List 错误信息列表
created Boolean 是否创建(仅 Upsert 操作)

RetrieveResultVo

查询结果。

字段名 类型 说明
objectType String 对象类型
id String 记录 ID
fields Map<String, Object> 字段值
success Boolean 是否成功
errors List 错误信息列表

ErrorVo

错误信息。

字段名 类型 说明
statusCode String 状态代码
message String 错误消息
fields List 相关字段列表

错误码

通用错误码

错误码 说明
200 操作成功
400 请求参数错误
401 未授权
403 权限不足
404 资源不存在
500 服务器内部错误

Salesforce 错误码

错误码 说明
INVALID_FIELD 字段不存在或无效
INVALID_ID ID 无效
MALFORMED_QUERY 查询语法错误
INVALID_OPERATION 操作无效
DUPLICATE_VALUE 值重复
ENTITY_IS_DELETED 记录已删除
ENTITY_IS_LOCKED_FOR_DELETION 记录被锁定,无法删除
INSUFFICIENT_ACCESS 权限不足
INVALID_CROSS_REFERENCE_KEY 跨引用键无效
CANNOT_MERGE_RECORD 无法合并记录

相关文档