网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Salesforce

2026-03-24 新闻来源:网淘吧 围观:100
电脑广告
手机广告

Salesforce

通过托管的 OAuth 身份验证访问 Salesforce REST API。使用 SOQL 查询记录、管理 sObject 并对您的 Salesforce 数据执行 CRUD 操作。

快速开始

# 查询联系人
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v59.0/query?q=SELECT+Id,Name,Email+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

基础 URL

https://gateway.maton.ai/salesforce/{native-api-path}

{native-api-path}替换为实际的 Salesforce REST API 端点路径。网关将请求代理到{instance}.salesforce.com(系统会自动替换为您的连接配置)并注入您的访问令牌。

身份验证

所有请求都需要在 Authorization 标头中包含 Maton API 密钥:

Authorization: Bearer $MATON_API_KEY

环境变量:将您的 API 密钥设置为MATON_API_KEY

export MATON_API_KEY="YOUR_API_KEY"

获取您的 API 密钥

  1. 请登录或在以下网址创建账户:maton.ai
  2. 前往maton.ai/settings
  3. 复制您的 API 密钥

连接管理

请在以下地址管理您的 Salesforce OAuth 连接https://ctrl.maton.ai

列出连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=salesforce&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

创建连接

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'salesforce'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

获取连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "connection": {
    "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "salesforce",
    "metadata": {}
  }
}

在浏览器中打开返回的url以完成 OAuth 授权。

删除连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

指定连接

如果您有多个Salesforce连接,请通过Maton-Connection请求头指定要使用哪一个:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/salesforce/services/data/v59.0/sobjects')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

如果省略,网关将使用默认(最早创建的)活跃连接。

API 参考

SOQL 查询

GET /salesforce/services/data/v59.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10

复杂查询示例:

GET /salesforce/services/data/v59.0/query?q=SELECT+Id,Name,Email+FROM+Contact+WHERE+Email+LIKE+'%example.com'+ORDER+BY+CreatedDate+DESC

获取对象

GET /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}

示例:

GET /salesforce/services/data/v59.0/sobjects/Contact/003XXXXXXXXXXXXXXX

创建对象

POST /salesforce/services/data/v59.0/sobjects/{objectType}
Content-Type: application/json

{
  "FirstName": "John",
  "LastName": "Doe",
  "Email": "john@example.com"
}

更新对象

PATCH /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}
Content-Type: application/json

{
  "Phone": "+1234567890"
}

删除对象

DELETE /salesforce/services/data/v59.0/sobjects/{objectType}/{recordId}

描述对象(获取模式)

GET /salesforce/services/data/v59.0/sobjects/{objectType}/describe

列出对象

GET /salesforce/services/data/v59.0/sobjects

搜索 (SOSL)

GET /salesforce/services/data/v59.0/search?q=FIND+{searchTerm}+IN+ALL+FIELDS+RETURNING+Contact(Id,Name)

复合请求 (批量多个操作)

POST /salesforce/services/data/v59.0/composite
Content-Type: application/json

{
  "compositeRequest": [
    {
      "method": "GET",
      "url": "/services/data/v59.0/sobjects/Contact/003XXXXXXX",
      "referenceId": "contact1"
    },
    {
      "method": "GET",
      "url": "/services/data/v59.0/sobjects/Account/001XXXXXXX",
      "referenceId": "account1"
    }
  ]
}

复合批处理请求

POST /salesforce/services/data/v59.0/composite/batch
Content-Type: application/json

{
  "batchRequests": [
    {"method": "GET", "url": "v59.0/sobjects/Contact/003XXXXXXX"},
    {"method": "GET", "url": "v59.0/sobjects/Account/001XXXXXXX"}
  ]
}

sObject 集合创建 (批量创建)

POST /salesforce/services/data/v59.0/composite/sobjects
Content-Type: application/json

{
  "allOrNone": true,
  "records": [
    {"attributes": {"type": "Contact"}, "FirstName": "John", "LastName": "Doe"},
    {"attributes": {"type": "Contact"}, "FirstName": "Jane", "LastName": "Smith"}
  ]
}

sObject 集合删除 (批量删除)

DELETE /salesforce/services/data/v59.0/composite/sobjects?ids=003XXXXX,003YYYYY&allOrNone=true

获取更新的记录

GET /salesforce/services/data/v59.0/sobjects/{objectType}/updated/?start=2026-01-30T00:00:00Z&end=2026-02-01T00:00:00Z

获取已删除的记录

GET /salesforce/services/data/v59.0/sobjects/{objectType}/deleted/?start=2026-01-30T00:00:00Z&end=2026-02-01T00:00:00Z

获取 API 限制

GET /salesforce/services/data/v59.0/limits

列出 API 版本

GET /salesforce/services/data/

常用对象

  • 账户- 公司/组织
  • 联系人- 与账户关联的人员
  • 潜在客户- 潜在客户
  • 商机- 销售交易
  • 案例- 支持案例
  • 任务- 待办事项
  • 事件- 日历事件

代码示例

JavaScript

const response = await fetch(
  'https://gateway.maton.ai/salesforce/services/data/v59.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+5',
  {
    headers: {
      'Authorization': `Bearer ${process.env.MATON_API_KEY}`
    }
  }
);
const data = await response.json();

Python

import os
import requests

response = requests.get(
    'https://gateway.maton.ai/salesforce/services/data/v59.0/query',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
    params={'q': 'SELECT Id,Name FROM Contact LIMIT 5'}
)

注意

  • 对 SOQL 查询使用 URL 编码(空格变为+)
  • 记录ID是15或18位字符与数字组成的字符串
  • API版本(v59.0)可以调整;最新版本是v65.0
  • 更新和删除操作成功时返回HTTP 204(无内容)
  • 用于更新/删除查询的日期采用ISO 8601格式:YYYY-MM-DDTHH:MM:SSZ
  • 在批量操作中使用allOrNone: true以实现原子事务
  • 重要提示:使用curl命令时,如果URL包含方括号(fields[]sort[]records[]),请使用curl -g来禁用通配符解析
  • 重要提示:当将curl输出通过管道传递给jq或其他命令时,像$MATON_API_KEY在某些shell环境中可能无法正确展开。通过管道传递时,可能会出现“无效API密钥”的错误。

错误处理

状态码含义
400缺少Salesforce连接
401Maton API密钥无效或缺失
429请求频率受限(每个账户每秒10个请求)
4xx/5xx来自Salesforce API的透传错误

故障排除:API密钥问题

  1. 检查MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
  1. 通过列出连接来验证API密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

故障排除:无效的应用名称

  1. 确保您的URL路径以salesforce开头。例如:
  • 正确示例:https://gateway.maton.ai/salesforce/services/data/v59.0/query
  • 错误示例:https://gateway.maton.ai/services/data/v59.0/query

资源

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Typeform 下一篇:Powerpoint / PPTX

相关文章

您是本站第236416名访客 今日有38篇新文章/评论