- API 简介
- OAuth2.0
- 简介
- OAuth 请求
- 第 1 步:注册您的应用程序
- 第 3 步:生成访问令牌和刷新令牌
- 第 4 步:刷新访问令牌
- 第 5 步:撤消令牌
- 多数据中心
- API 限制
- GDPR 遵守
- API 仪表盘
- HTTP 状态码
- HTTP 方法
- 订阅 API
- 订阅通知
- 获取订阅详情
- 更新通知的订阅详情
- 更新通知的指定信息
- 取消订阅通知
- 取消订阅指定通知
- 批量读取 API
- 概述
- 创建批量读取(导出)任务
- 获取批量读取详情
- 下载批量读取结果
- 限制
- 模块 API
- 用户 API
- 获取用户
- 获取单个用户数据
- 职位 API
- 获取职位
- 获取单个职位数据
- 角色 API
- 获取角色
- 获取单个角色数据
- 元数据 API
- 模块元数据
- 字段
- 布局
- 单个布局
- 自定义视图
- 单个自定义视图
- 变量 API
- 获取变量
- 获取单个变量数据
- 获取变量组
- 创建变量
- 更新变量
- 更新指定变量
- 删除变量
- 删除多个变量
- 机构 API
- 获取机构数据
- 上传机构Logo
- 记录 API
- 批量记录 API
- 获取记录列表
- 插入记录
- 更新记录
- 插入或更新记录(upsert)
- 删除记录
- 获取删除的记录列表
- 搜索记录
- 单个记录 API
- 获取指定记录
- 插入指定记录
- 更新指定记录
- 删除指定记录
- 转化线索
- 链接模块 API
- 子表单 API
- 蓝图 API
- 获取蓝图信息
- 更新蓝图记录信息
- 标签 API
- 获取标签
- 获取指定标签的记录数
- 创建标签
- 合并标签
- 更新单个标签
- 批量更新标签
- 删除标签
- 将标签添加到指定记录
- 将标签添加到多个记录
- 从指定记录中删除标签
- 从多个记录中删除标签
- 获取相关记录
- 解除链接
- 备注 API
- 获取备注
- 获取指定备注数据
- 创建备注
- 创建指定备注
- 更新备注
- 删除指定备注
- 删除备注
- 获取附件列表
- 上传图片
- 下载图片
- 删除图片
API简介
Zoho CRM 提供了 REST API(应用编程接口),让您将 CRM 与第三方应用程序集成,例如财务、ERP、电子商务、自助门户和其他。
REST API 使用简单的 HTTP 方法,例如,GET、POST、PUT 和 DELETE。这些方法让 CRM 数据以 JSON 格式进行抽取(包括错误在内),让其更容易开发新应用程序以及与现有的业务应用程序进行集成。
备注:
所有对 API 的请求应通过 HTTPS 进行。API 请求和响应均采用 JSON 格式。
软件开发工具包 (SDK)
Zoho CRM API 的软件开发工具包(SDK)提供 Zoho CRM API 的包装器。因此,从您的客户端应用程序调用某一 Zoho CRM API 只是一种方法调用。
了解关于软件开发工具包(SDK)的更多信息:
OAuth2.0
简介
Zoho CRM API 用 OAuth2.0 协议进行身份验证。这允许您在保持用户名和密码私密的同时与任何应用程序共享指定数据。此协议为用户提供安全而便利的方式来使用身份验证。
为什么使用 OAuth2.0?
- 您可以随时撤销某一客户对应用程序的访问权。
- 不用向客户端泄露凭证。
- 如果客户端被黑客入侵,则由于访问令牌已签发给各应用程序且客户端不是一个整体,因此不会泄露任何信息。
- 指定作用域可应用于对客户端限制或提供对指定数据的访问。它对每一客户端应用程序均不相同。
OAuth2.0 工作原理
OAuth2.0 定义不同类型的令牌,在身份验证过程中用作不同的用途。请看一下以下术语及它们之间的差别。
受保护资源
Zoho CRM 资源,例如线索、联系人、交易等。
资源服务器
Zoho CRM 服务器,用来托管受保护资源。
资源所有者
您客户的任何最终用户,他们可授予对受保留资源的访问。
客户端
指发送请求到资源服务器、并以最终用户名义访问受保护资源的应用程序。
身份验证服务器
身份验证服务器对客户端提供必要的凭证(例如访问令牌和刷新令牌)。在此例中,它是指 Zoho CRM 身份验证服务器。
身份验证代码
由身份验证服务器创建的临时令牌,并通过浏览器发送到客户端。该客户端将发送此代码到身份验证服务器,以便获取访问令牌和刷新令牌。
访问令牌
指发送到资源服务器以访问用户的受保护资源的令牌。访问令牌提供对 Zoho CRM API 的安全临时访问,并由应用程序用来发送对所连接应用程序的请求。每一访问令牌将仅保持有效一小时,且只能用于作用域中所述的操作集合。
刷新令牌
一种可用来获取新访问令牌的令牌。此令牌具有无限的生命期,直到由最终用户撤销。
作用域
当访问每一端点时,您需要使用相应的密钥和作用域对应用程序进行身份验证。Zoho CRM API 使用所选的作用域,作用域用来控制客户端应用程序可访问的资源的类型。令牌通过用不同的作用域创建,以确保安全性得以提高。例如,您可以生成一个作用域来创建或查看线索,或查看元数据等。
可用的作用域
作用域名 | 相关的方法 |
---|---|
users | users.all |
org | org.all |
settings | settings.all, settings.territories, settings.custom_views, settings.related_lists, settings.modules, settings.tab_groups, settings.fields, settings.layouts, settings.macros, settings.custom_links, settings.custom_buttons, settings.roles, and settings.profiles |
modules | modules.all, modules.approvals, modules.leads, modules.accounts, modules.contacts, modules.deals, modules.campaigns, modules.tasks, modules.cases, modules.events, modules.calls, modules.solutions, modules.products, modules.vendors, modules.pricebooks, modules.quotes, modules.salesorders, modules.purchaseorders, modules.invoices, modules.custom, modules.dashboards, modules.notes, modules.activities, modules.search |
作用域包含三种重要的参数。它们分别为服务名、作用域名和操作类型。
例如,
https://accounts.zoho.com.cn/oauth/v2/auth?scope=ZohoCRM.modules.ALL
在以上示例中,API 的服务名为 "ZohoCRM"。作用域名为 "modules",它表示您 Zoho CRM 帐户的所有模块。操作类型为 "ALL",它表示您对模块有完全访问权。
操作类型可以为 ALL、READ、CREATE、DELETE 或 UPDATE。
组作用域
组作用域提供对可对记录执行的所有功能的完全访问权。例如,组作用域允许用户读取、创建、更新和删除所有模块的记录,单独的作用域在这些模块中允许根据要求只访问一个或一些模块。
例如,
https://accounts.zoho.com.cn/oauth/v2/auth?scope=ZohoCRM.modules.ALL,ZohoCRM.settings.ALL&
client_id={client_id}&response_type=code&
access_type={"offline"or"online"}&redirect_uri={redirect_uri}
以上作用域为用户提供对客户端 ZohoCRM 帐户中可用的所有模块的访问权。
您还可以通过设置指定作用域来限制某些权限,例如,将信息设为只读。
以下是一些示例:
- scope=ZohoCRM.modules.READ
- scope=ZohoCRM.modules.CREATE
- scope=ZohoCRM.modules.UPDATE
- scope=ZohoCRM.modules.DELETE
单独的作用域
单独的作用域用来提供对指定模块中数据的访问权,而不访问其他模块。
例如,
https://accounts.zoho.com.cn/oauth/v2/auth?scope=ZohoCRM.modules.leads.ALL,ZohoCRM.modules.deals.ALL,ZohoCRM.settings.ALL&
client_id={client_id}&response_type=code&
access_type={"offline"or"online"}&redirect_uri={redirect_uri}
以上作用域为用户仅提供对客户端 ZohoCRM 帐户中的线索和交易模块的访问权。
此外,您可对每一模块设置指定权限,例如,读取、创建、更新或删除。例如:
- scope=ZohoCRM.modules.leads.READ
- scope=ZohoCRM.modules.leads.CREATE
- scope=ZohoCRM.modules.leads.UPDATE
- scope=ZohoCRM.modules.leads.DELETE
要点
用户访问令牌必须保持机密,原因是它定义了您使用的 API 的类型。不要将访问令牌发布在公共论坛、公共存储库的任何地方,也不要泄露在您网站的客户端代码(如 HTML 或 JavaScript)上。公布于众可能导致数据盗窃、丢失或崩溃发生。
OAuth 请求
第 1 步:注册您的应用程序
在您开始身份验证和对 Zoho CRM API 发出任何调用之前,需要向 Zoho CRM API 注册您的应用程序。
若要注册:
- 转至站点:accounts.zoho.com.cn/developerconsole
- 单击添加客户端 ID。
- 输入客户端名、域和重定向 URL。
- 单击创建。
- 记下您的客户端 ID。
已注册的应用程序将收到以下凭证:
客户端 id – 从所连接应用程序生成的使用者密钥。
客户端密码 – 从所连接应用程序生成的使用者密码。
重定向 URI –您在应用程序注册期间所注册的回调 URL。
自有客户端:
如果用户没有自己的域和重定向URL,可以使用自有客户端来获取访问凭证。
步骤 1:
步骤 2:
点击查看代码 将为用户提供一个授权令牌。使用授权令牌来生成步骤 3访问和刷新令牌。
第 3 步:生成访问令牌和刷新令牌
OAuth2.0 请求通常用访问令牌进行身份验证,它作为持有者令牌进行传递。要使用此访问令牌,您需要构造常规 HTTP 请求,将其与持有者的值一同包包含在授权标头中。
需要以下参数以生成访问令牌和刷新令牌。
参数 | 描述 |
---|---|
grant_type | 输入值作为 authorization_code。 |
client_id | 指定从所连接应用程序获得的客户端 ID。 |
client_secret | 指定从所连接应用程序获得的客户端密码。 |
redirect_uri | 指定您在应用程序注册期间所注册的回调 URL。 |
code | 输入从上一步生成的授权令牌。 |
要生成访问令牌和刷新令牌:
- 发出 POST 请求,带以下 URL:
https://accounts.zoho.com.cn/oauth/v2/token?code={grant_token}&redirect_uri={redirect_uri}&client_id={client_id}&client_secret={client_secret}&grant_type=authorization_code
- 如果请求成功,您将收到以下输出:
{
"access_token": "{access_token}",
"refresh_token": "{refresh_token}",
"expires_in_sec": 3600,
"api_domain": "https://www.zohoapis.com",
"token_type": "Bearer",
"expires_in": 3600000
}
这样就完成了身份验证。一旦您的应用程序收到访问令牌,就在 HTTP 授权标头中将令牌发送到 Zoho CRM API,每一端点的值为 "Zoho-oauthtoken {access_token}"(对于每一请求)。请注意,"access_token" 将在 1 小时内到期。
第 4 步:刷新访问令牌
很明显,刷新令牌用来在当前令牌过了到期时间后生成新的访问令牌。
- 发出 POST 请求,带以下 URL:
https://accounts.zoho.com.cn/oauth/v2/token?refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}&grant_type=refresh_token
- 如果请求成功,您将收到以下输出
{
"access_token": "{new_access_token}",
"expires_in_sec": 3600,
"api_domain": "https://www.zohoapis.com",
"token_type": "Bearer",
"expires_in": 3600000
}
备注:
- 机构中一个 "用户" 最多可以有20个刷新令牌。每个刷新令牌最多可以有30个活动访问令牌(未过期)。
- 当用户创建第31个访问令牌时,将删除第1个创建的令牌并创建第31个令牌。但是,当他创建第21个刷新令牌时,将抛出错误。
- 我们已在所有示例中提供了样本测试 OAuth,因此您可自行测试任何示例。您可用您实际的令牌来取代样本 OAuth 令牌,从 CRM 帐户来测试请求。
第 5 步:撤消令牌
请按照下面的方法撤销refresh_token。
- 使用 "POST" HTTP 方法并构造以下 URL 来撤销 refresh_token。
https://accounts.zoho.com.cn/oauth/v2/token/revoke?token={refresh_token}
多数据中心
若要使 API 在重负载下工作,拥有多个数据中心必不可少。其原因是,不仅维护数据中心之间的负载均衡,而且它还提供一个更好的平台用于分析。什么是分析?它是数据和流量的累积,可用于监控、分析、报告和文档记录。
因此,有必要通过指定域名来清晰地在 API 调用之间进行区分。因此,数据中心的可用性和使用由指定的位置来决定,这进一步帮助分摊和减少每一数据中心的负载。受支持的域如下:
- 美国 - https://www.zohoapis.com.cn/
- 欧洲 - https://www.zohoapis.eu/
- 中国 - http://www.zohoapis.com.cn/
在 OAuth 配置的第二步,您将使用授权 URL 来发出请求,如下所示:
https://accounts.zoho.com.cn/oauth/v2/auth?&scope=ZohoCRM.users.ALL&client_id={client_id}&response_type=code&access_type={"offline"or"online"}&redirect_uri={redirect_uri}
该请求的响应将如下:
{redirect_uri}?code={grant_token}&location=cn&accounts-server=https%3A%2F%2Faccounts.zoho.com.cn
其中 redirect_uri 将必须由第 1 步指定。
最重要的将是 "location=cn&accounts-server=https%3A%2F%2Faccounts.zoho.com.cn” 部分,它表示基于地理位置的 URL。
请求必须由“accounts.zoho.com.cn”发出,一旦获取批准,则它将切换到其他域名以便于访问。
API 限制
Zoho CRM使用信用分数系统为您的应用提供使用率限制。 每次API调用都会减少1分。但是,对于某些 APIs,信用分数减少的方法是不一样的。例如,对于一个"转换线索 API",一次API调用将减少5分。
信用分数系统
Zoho CRM中的API调用与信用分数关联。基于您执行的API调用类型,分数从您的信用总积分中减少。信用分数的扣减基于API执行性能的强度和API调用中涉及的操作所使用的内存。
Zoho CRM各版本24小时内最高信用分数扣减限额
版本 | 允许的信用分数 | 最大信用分数 |
---|---|---|
免费版 | 5000 分 | 5000 分 |
标准版 | 5,000 分 + (用户许可数 x 250) | 100,000 分 |
高级版 | 10,000 分 + (用户许可数 x 500) | 200,000 分 |
旗舰版/Zoho One/CRM Plus | 10,000 分 + (用户许可数 x 1000) | 500,000 分 |
超级版 | 10,000 分 + (用户许可数 x 1000) | 1,000,000 分 |
备注:
- 例如,在 标准版中,如果一个机构有10个用户许可,机构每天可使用的最低API信用分数,增加(10 x 250)请求/天,也就是7500分。
- 即使用户许可的数量很高,API的信用分数限额也不会超过最大限额。例如:一个机构有500个旗舰版的用户许可,那么总的信用分数将变为 510,000。但是,实际上最大API信用分数限额为 500,000。
下面列出了一些API操作的信用分数扣减情况 -
API 调用 | 扣减的信用分数 |
---|---|
获取用户/职位/角色 | 1 |
获取模块列表 | 1 |
获取字段元数据 | 1 |
获取模块元数据 | 1 |
获取已删除记录的ID | 2 |
获取带有cvid参数的记录 | 3 |
转化线索 | 5 |
为多个记录添加/移除标签 | 每50条记录1分 |
插入/更新/Upsert | 每10条记录1分 |
批量读取初始化 | 50 |
所有其它APIs | 1 |
备注
- 插入/更新/Upsert API调用最多可执行100条记录, 而为多个记录添加/移除标签 API 调用最多可执行500条记录。所以,这两个API调用可以扣除的最大分数为10。
- 从API调用执行开始,此API限制就有一个24 小时滚动窗口进行计算。
Zoho CRM不同版本的并发限制
除了上面介绍的信用分数机制, 还有一个基于Zoho CRM中每个用户每个应用执行的并发调用数的并发系统用来计算API限制。这些并发限制指定了每个应用程序的用户在给定的时间点可以同时活动的API调用的最大数量。
版本 | 每个用户/应用的并发限制 |
---|---|
免费版 | 5 |
标准版 | 10 |
高级版 | 15 |
旗舰版/Zoho One/CRM Plus | 20 |
超级版 | 25 |
GDPR 合规性
GDPR是一套全面的规则,将取代现有的数据保护指令或指令95/46/EC,它将在整个欧盟实施。由于个人资料在世界各地传送的性质日益复杂,该计划旨在让欧盟公民直接控制他们希望如何处理自己的资料,并保护他们的资料私隐,从而赋予他们权力
备注:
- 本文件所载内容不应被解释为法律意见。请与您的法律顾问联络,了解GDPR如何影响您的组织,以及您需要做些什么来遵守GDPR。
- 以下API更改仅适用于启用GDPR遵从性的模块。
机构 API
一个新的键值 "privacy_settings" 添加到 机构 API中。该字段的数据类型为布尔型,例如: true/false
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/org"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本响应:
此字段的目的是检查该组织是否启用或禁用了GDPR。
备注:
- 如果 privacy_settings=true, 该机构即启用了GDPR合规性。
- 如果 privacy_settings=false, 该机构即禁用了GDPR合规性。
字段 API
CRM中的一个新字段名为 "数据处理基础细节" 将获取指定记录的合法数据处理依据。您可以根据希望如何处理客户数据来确定该字段中的值。
目前,该字段仅在线索,联系人,供货商 和 定制模块中支持。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/fields?module=Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
数据处理基础字段元数据字段:
一个新的键值 "private" 添加到此API中,将字段标记为受保护字段。该键值是一个 "JSON 对象" 或 "null"。
线索模块字段请求示例:
curl "https://www.zohoapis.com.cn/crm/v2/settings/fields?module=Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
线索模块字段响应示例:
通过在布局编辑器中启用该选项,可以将字段设置为“私有”。如果用户创建了一个受保护字段,但没有选择数据的敏感性(敏感/正常),那么私钥为null。
"type" 属性基于数据的敏感性可以是"高" 或 "低"。一旦为机构启用了隐私设置,记录GET API中显示的私有字段值将基于"Preferences" 进行设置。
"高" 和 "低" 的取值对应于 "敏感" 而 "正常" 取值显示在CRM界面的个人字段 中。
备注:
- 如果 "restricted" 在 私有 键中是true,那么字段的值将不会在任何与记录相关的API中公开。
记录 API - INSERT
插入或添加记录时, 数据处理基础细节密钥必须在POST请求中给出。此新密钥包含客户接受的同意书的详细信息。在另一种意义上,在请求中,此键可用于向指定记录添加同意细节。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
输入记录的样本请求:
该键中的值以JSON 对象的形式呈现。
备注:
- 更新和更新插入记录api遵循相同的请求模式。
- 如果插入记录时没有指定数据处理基础细节,那么Data_Processing_Basis_Details 键将变为 null。
记录 API - GET
这个API检索记录的所有数据以及同意细节。在下面的示例中,"邮件" 字段标记为私有字段。该字段的值变为 null。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/111111000000034001?include=private_fields"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本响应:
备注:
- 上面的例子也适用于批量操作(批量获取、批量插入等)。
- 在上面的样本响应中, "邮件" 字段标记为私有字段。该字段的值变为 "null",即使电子邮件记录存在。
- 在请求URL的参数部分添加"include=private_fields",以便在任意GET API中包含 "private_fields" 键。
- 如果指定记录的 "$stop_processing" 键为true,那么任何更新、更新插入或转换线索的过程都不能在记录上使用。
搜索 API
在搜索api中显示了数据处理基础(合法基础)细节以及记录细节
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/search?criteria=(Last_Name:equals:Boyle)"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本响应:
在上面的示例中,邮件 字段被标记为 私有 (restricted=true),因此,值为空(null)。
当通过条件搜索带有上述电子邮件的记录时,将引发以下错误:
备注:
- 搜索 API的输出响应类似于GET API。
- 不能通过条件搜索受限制的私有字段。
API 仪表板
新的 API 仪表版提供了全新的界面来查看您的使用情况统计信息。该界面由图形视图和表格视图组成。您可以根据模块、发出调用的所在 IP 地址、方法、用户或时间对统计信息进行分类。此仪表板支持先前版本的 API 及新版本的 API。
新的 API 使用情况统计信息:
- 进度栏在 90% 的 API 调用发出前闪烁紫色,在该进度后转为红色。
- 新的 API 遵循“最后 24 小时跟踪”方法。
备注:
- 最后 24 小时跟踪方法仅在新的 API 2.0 版本中有效。
- 在刷新统计信息时将有 15 分钟延迟。但是,已用的 API 调用数将立即更新。
- API 使用大于 30 天的统计信息将定期删除。
使用情况统计信息帮助您保持跟踪您已经执行的 API 调用数,以便计划如何以更高效的方式使用 CRM。API 2.0(新版)的统计信息按以下方式分类。
基于应用程序:
新的 API 调用基于指定的应用程序。因此,基于调用是从哪个应用程序发出的分类方法比根据 API 调用方法的分类方法更有意义。
图形视图:
环形图用于表示 API 调用的前 5 名应用程序。
单击列表视图图标以列表格式来查看使用前 5 的应用程序。
备注:
- 单击任一应用程序名以在表视图中打开应用程序的统计信息。
表视图:
应用程序列设为默认列,其余的信息相应排列。
基于模块:
您可根据从模块发出的 API 调用来查看使用情况统计信息。
图形视图:
只有前 5 名的模块显示在图形视图中。单击任一模块名以在表视图中打开统计信息,且默认列为“模块”。
备注:
- 单击列表按钮以查看从中发出 API 调用的前 5 方法,且可作为列表进行查看。
- 单击全部查看以查看所有模块的统计信息。
表视图:
表视图更加精确,因为它一次显示了关于模块的所有信息。
备注:
- 单击“排序“对所需视图中的表进行排序。
- 将指针悬浮在信息上,您可以看到记录之间的连接。
基于 IP 地址:
列表视图:
您可在图形视图页找到基于用户 IP 地址的统计信息。换而言之,统计信息按用户的访问点进行显示。将显示根据从 IP 地址发出的 API 调用数进行分类的前 5 个 IP 地址。要查看所有用户 IP 地址,单击全部查看。
备注:
- 单击任一 IP 地址以打开表视图,其中 IP 地址是默认列。
表视图:
表视图的 IP 地址列设为默认值,其余的信息根据它进行排列。
基于用户:
您可以在“热门的 API 用户”部分查看每个用户的 API 使用情况。
图形视图:
发出最多 API 调用的前 3 名用户列出在此部分。
备注:
- 单击全部查看,按所有单个用户来查看 API 调用数。
表视图:
用户使用的 IP 地址、方法和模块可通过在表视图中将用户列设为默认列来进行查看。但是,刷新此页面会重置视图。
基于时间:
一个了解您的使用情况和限制的更方便方式是考虑发出 API 调用的时间。这仅在图形视图中可用。
显示一天中各时段的统计数据:
显示一段日期内的统计数据:
HTTP 状态码
状态码 | 含义 | 描述 |
---|---|---|
200 | OK | API 请求成功。 |
201 | CREATED | 已对单记录插入实现了请求。 |
202 | ACCEPTED | 已对多记录插入实现了请求。 |
204 | NO CONTENT | 对于请求无内容可用。 |
304 | NOT MODIFIED | 所请求的页未修改。如果 "If-Modified-Since" 标头用于 GET API |
400 | BAD REQUEST | 所考虑的请求或授权无效。 |
401 | AUTHORIZATION ERROR | 提供的 API 密钥无效。 |
403 | FORBIDDEN | 无权执行该操作。 |
404 | NOT FOUND | 请求无效。 |
405 | METHOD NOT ALLOWED | 指定的方法不被允许。 |
413 | REQUEST ENTITY TOO LARGE | 当上传文件时,服务器未接受请求,因为超出限制的文件大小。 |
415 | UNSUPPORTED MEDIA TYPE | 当上传文件时,服务器未接受请求,因为媒体/文件类型不受支持。 |
429 | TOO MANY REQUESTS | 每分钟/天的 API 请求数超出限制。 |
500 | INTERNAL SERVER ERROR | 由于意外的服务器错误而遇到的一般错误。 |
HTTP 方法
方法 | 描述 |
---|---|
GET | 从给定的服务器检索数据。 |
POST | 插入或上传新资源到服务器。 |
PUT | 更新现有资源。这将用更新的内容取代目标资源。 |
DELETE | 删除指定位置的资源。 |
例如,通过使用 GET 方法,您可检索一列资源,或获取指定资源的详情。
要获取模块列表,如下所示发送请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/modules"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
要获得指定记录的详情,如下所示在 API 请求中发送 record_id:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000698006"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
模块 API
Zoho CRM 具有标准模块,例如,线索、客户、联系人、潜在客户、预测、活动等。有了 Zoho CRM REST API,您可以检索一列可用的模块,如下例中所示:
获取模块列表
用途
获取模块相关数据。这将在 CRM 帐户中检索一列可用的模块。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/modules
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.modules.{operation_type}
可能的操作类型 |
---|
ALL, READ |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/modules"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMRestClient client = ZCRMRestClient.getInstance();
BulkAPIResponse response = client.getAllModules();
List<ZCRMModule> modules = (List<ZCRMModule>) response.getData();
样本请求:
try{
$ins=ZCRMRestClient::getInstance();
$moduleArr=$ins->getAllModules()->getData();
foreach ($moduleArr as $module)
{
echo "ModuleName:".$module->getModuleName();
echo "SingLabel:".$module->getSingularLabel();
echo "PluLabel:".$module->getPluralLabel();
echo "BusinesscardLimit:".$module->getBusinessCardFieldLimit();
echo "ApiName:".$module->getAPIName();
$fields=$module->getFields();
if($fields==null)
{
continue;
}
foreach ($fields as $field)
{
echo $field->getApiName().", ";
echo $field->getLength().", ";
echo $field->IsVisible().", ";
echo $field->getFieldLabel().", ";
echo $field->getCreatedSource().", ";
echo $field->isMandatory().", ";
echo $field->getSequenceNumber().", ";
echo $field->isReadOnly().", ";
echo $field->getDataType().", ";
echo $field->getId().", ";
echo $field->isCustomField().", ";
echo $field->isBusinessCardSupported().", ";
echo $field->getDefaultValue().", ";
}
}
}
catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
只获取 API 支持的模块
zclient = ZohoCRMClient.get_client_objects(conf_file_location)[0]
Meta_data.get_module_names(zclient, true)
获取所有模块名称
zclient = ZohoCRMClient.get_client_objects(conf_file_location)[0]
Meta_data.get_module_names(zclient, false)
样本请求:
def get_modules(self):
try:
resp=ZCRMRestClient.get_instance().get_all_modules()
modules=resp.data
print resp.status_code
for module in modules:
print "\n\n::MODULE::"
print module.api_name
print module.is_convertable
print module.is_creatable
print module.is_editable
print module.is_deletable
print module.web_link
print module.singular_label
print module.plural_label
print module.modified_by
print module.modified_time
print module.is_viewable
print module.is_api_supported
print module.is_custom_module
print module.is_scoring_supported
print module.id
print module.module_name
print module.business_card_field_limit
print module.business_card_fields
profiles= module.profiles
if profiles is not None:
for profile inprofiles:
print profile.name
print profile.id
print module.display_field_name
print module.display_field_id
if module.related_lists is not None:
for relatedlist in module.related_lists:
print relatedlist.display_label
print relatedlist.is_visible
print relatedlist.api_name
print relatedlist.module
print relatedlist.name
print relatedlist.id
print relatedlist.href
print relatedlist.type
if module.layouts is not None:
for layout in module.layouts:
self.print_layout(layout)
if module.fields is not None:
for field_ins in module.fields:
self.print_filed(field_ins)
if module.related_list_properties is not None:
print module.related_list_properties.sort_by
print module.related_list_properties.sort_order
print module.related_list_properties.fields
print module.properties
print module.per_page
print module.search_layout_fields
print module.default_territory_name
print module.default_territory_id
print module.default_custom_view_id
print module.default_custom_view
print module.is_global_search_supported
print module.sequence_number
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
属性:
- "convertable" :描述用户是否可以将记录转化为另一种类型的记录。例如:将线索转化为交易。
- "creatable" : 查看用户是否可以在当前模块中创建一条记录。
- "generated_type" : 描述用户将生成的模块的类型。有 4 种类型:默认,web,自定义,链接。
- "api_supported" :API 当前不可访问的模块具有值 "false"。如果模块在将来受支持,则该值自动更改为 "true"。
- "modified_time" : 用户所作更改的日期和时间。
备注:
当访问资源时,"api_name" 键应在 JSON 数据中进行引用。每个模块、字段和相关列表将具有 API 名,该名称可用于第三方集成中。例如,如果想访问“线索”模块,则每次访问资源时,“Leads”必须用作 api_name。当创建自定义模块、自定义字段或相关列表标签时,新 API 名称会在 Zoho CRM 内部生成。请注意,默认模块、字段和相关列表的 API 名称不能更改。您只能更改自定义模块、字段和相关列表的 API 名称。
生成的 API 名称只能包括字母、数字和下划线。API 名称应为字母开头,且不得有两条连续的下划线,或以下划线结尾。
用户 API
在 Zoho CRM 中,用户就是被允许访问和管理 CRM 记录的人员。这些用户可以定义有不同的个人资源和类别,例如,管理员、标准等。
通过使用用户 API,您可以检索您的可用 CRM 用户的基本信息。使用类型参数来获取所需的用户列表。例如,可将参数类型设为管理员,以获取带管理个人资料的 CRM 用户的列表。详细的用户 API 和示例的解释如下所示:
获取用户
用途
检索 API 请求中指定的用户数据。您可以指定需要用用户 API 检索的用户的类型。例如,使用 type=AllUsers,以获取所有可用 CRM 用户的列表。
请求 URL
https://www.zohoapis.com.cn/crm/v2/users
作用域
scope=ZohoCRM.users.{operation_type}
可能的操作类型 |
---|
ALL - 对用户的完全访问 READ - 获取用户数据 |
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
type | 字符串 | AllUsers列示组织中的所有用户(包括活跃与不活跃的用户) ActiveUsers获取所有活跃用户的列表 DeactiveUsers获取所有已停用用户的列表 ConfirmedUsers获取已确认用户的列表 NotConfirmedUsers获取未确认用户的列表 DeletedUsers获取已删除用户的列表 ActiveConfirmedUsers获取已确认的活跃用户的列表 AdminUsers获取管理员用户的列表 ActiveConfirmedAdmins获取带管理权限且已确认的用户的列表 CurrentUser获取当前 CRM 用户的列表 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/users?type=AllUsers"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
获取所有用户
ZCRMRestClient client = ZCRMRestClient.getInstance();
BulkAPIResponse response = client.getOrganizationInstance().getAllUsers();
List<ZCRMUser> users = (List<ZCRMUser>) response.getData();
样本请求:
try{
$bulkAPIResponse=ZCRMOrganization::getInstance()->getAllUsers();
$users=$bulkAPIResponse->getData();
foreach($users as $userInstance)
{
echo $userInstance->getCountry();
$roleInstance=$userInstance->getRole();
echo $roleInstance->getId();
echo $roleInstance->getName();
$customizeInstance=$userInstance->getCustomizeInfo();
if($customizeInstance!=null)
{
echo $customizeInstance->getNotesDesc();
echo $customizeInstance->getUnpinRecentItem();
echo $customizeInstance->isToShowRightPanel();
echo $customizeInstance->isBcView();
echo $customizeInstance->isToShowHome();
echo $customizeInstance->isToShowDetailView();
}
echo $userInstance->getCity();
echo $userInstance->getSignature();
echo $userInstance->getNameFormat();
echo $userInstance->getLanguage();
echo $userInstance->getLocale();
echo $userInstance->isPersonalAccount();
echo $userInstance->getDefaultTabGroup();
echo $userInstance->getAlias();
echo $userInstance->getStreet();
$themeInstance=$userInstance->getTheme();
if($themeInstance!=null)
{
echo $themeInstance->getNormalTabFontColor();
echo $themeInstance->getNormalTabBackground();
echo $themeInstance->getSelectedTabFontColor();
echo $themeInstance->getSelectedTabBackground();
}
echo $userInstance->getState();
echo $userInstance->getCountryLocale();
echo $userInstance->getFax();
echo $userInstance->getFirstName();
echo $userInstance->getEmail();
echo $userInstance->getZip();
echo $userInstance->getDecimalSeparator();
echo $userInstance->getWebsite();
echo $userInstance->getTimeFormat();
$profile= $userInstance->getProfile();
echo $profile->getId();
echo $profile->getName();
echo $userInstance->getMobile();
echo $userInstance->getLastName();
echo $userInstance->getTimeZone();
echo $userInstance->getZuid();
echo $userInstance->isConfirm();
echo $userInstance->getFullName();
echo $userInstance->getPhone();
echo $userInstance->getDob();
echo $userInstance->getDateFormat();
echo $userInstance->getStatus();
}
}
catch(ZCRMException $e)
{
echo $e->getMessage();
echo $e->getExceptionCode();
echo $e->getCode();
}
样本请求:
Hash<String, Hash>
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
users_hash = api_obj.load_user_data
#it is of the form user_id vs user_hash with the corresponding user data
样本请求:
def get_users(self,user_type):
try:
if user_type=='all':
resp=ZCRMOrganization.get_instance().get_all_users()
elif user_type=='DeactiveUsers':
resp=ZCRMOrganization.get_instance().get_all_deactive_users()
elif user_type=='ActiveUsers':
resp=ZCRMOrganization.get_instance().get_all_active_users()
elif user_type=='ConfirmedUsers':
resp=ZCRMOrganization.get_instance().get_all_confirmed_users()
elif user_type=='NotConfirmedUsers':
resp=ZCRMOrganization.get_instance().get_all_not_confirmed_users()
elif user_type=='DeletedUsers':
resp=ZCRMOrganization.get_instance().get_all_deleted_users()
elif user_type=='ActiveConfirmedUsers':
resp=ZCRMOrganization.get_instance().get_all_active_confirmed_users()
elif user_type=='AdminUsers':
resp=ZCRMOrganization.get_instance().get_all_admin_users()
elif user_type=='ActiveConfirmedAdmins':
resp=ZCRMOrganization.get_instance().get_all_active_confirmed_admin_users()
elif user_type=='CurrentUser':
resp=ZCRMOrganization.get_instance().get_current_user()
print resp.status_code
if resp.status_code!=200:
return
users=resp.data
for user in users:
print "\n\n"
print user.id
print user.name
print user.signature
print user.country
crm_role=user.role
if crm_role is not None:
print crm_role.name
print crm_role.id
customize_info= user.customize_info
if customize_info is not None:
print customize_info.notes_desc
print customize_info.is_to_show_right_panel
print customize_info.is_bc_view
print customize_info.is_to_show_home
print customize_info.is_to_show_detail_view
print customize_info.unpin_recent_item
print user.city
print user.name_format
print user.language
print user.locale
print user.is_personal_account
print user.default_tab_group
print user.street
print user.alias
user_theme=user.theme
if user_theme is not None:
print user_theme.normal_tab_font_color
print user_theme.normal_tab_background
print user_theme.selected_tab_font_color
print user_theme.selected_tab_background
print user.state
print user.country_locale
print user.fax
print user.first_name
print user.email
print user.zip
print user.decimal_separator
print user.website
print user.time_format
crm_profile= user.profile
if crm_profile is not None:
print crm_profile.id
print crm_profile.name
print user.mobile
print user.last_name
print user.time_zone
print user.zuid
 nbsp; print user.is_confirm
print user.full_name
print user.phone
print user.dob
print user.date_format
print user.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
获取单用户数据
用途
获取任何指定用户的详情。在 API 请求中指定用户的唯一 id,以获得指定用户的数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/users/{user_id}
user_id - 指定用户的惟一 ID。
作用域
scope=ZohoCRM.users.{operation_type}
可能的操作类型 |
---|
ALL - 对用户的完全访问 READ - 获取用户数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/users/4108880000469041"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMRestClient client = ZCRMRestClient.getInstance();
APIResponse response =
client.getOrganizationInstance().getUser(123456789l);//userID
ZCRMUser user = (ZCRMUser) response.getData();
样本请求:
try{
$apiResponse=ZCRMOrganization::getInstance()->getUser($userId); // $userId - 需要获取其数据的用户ID。
$users=array($apiResponse->getData());
foreach($users as $userInstance)
{
echo $userInstance->getCountry();
$roleInstance=$userInstance->getRole();
echo $roleInstance->getId();
echo $roleInstance->getName();
$customizeInstance=$userInstance->getCustomizeInfo();
if($customizeInstance!=null)
{
echo $customizeInstance->getNotesDesc();
echo $customizeInstance->getUnpinRecentItem();
echo $customizeInstance->isToShowRightPanel();
echo $customizeInstance->isBcView();
echo $customizeInstance->isToShowHome();
echo $customizeInstance->isToShowDetailView();
}
echo $userInstance->getCity();
echo $userInstance->getSignature();
echo $userInstance->getNameFormat();
echo $userInstance->getLanguage();
echo $userInstance->getLocale();
echo $userInstance->isPersonalAccount();
echo $userInstance->getDefaultTabGroup();
echo $userInstance->getAlias();
echo $userInstance->getStreet();
$themeInstance=$userInstance->getTheme();
if($themeInstance!=null)
{
echo $themeInstance->getNormalTabFontColor();
echo $themeInstance->getNormalTabBackground();
echo $themeInstance->getSelectedTabFontColor();
echo $themeInstance->getSelectedTabBackground();
}
echo $userInstance->getState();
echo $userInstance->getCountryLocale();
echo $userInstance->getFax();
echo $userInstance->getFirstName();
echo $userInstance->getEmail();
echo $userInstance->getZip();
echo $userInstance->getDecimalSeparator();
echo $userInstance->getWebsite();
echo $userInstance->getTimeFormat();
$profile= $userInstance->getProfile();
echo $profile->getId();
echo $profile->getName();
echo $userInstance->getMobile();
echo $userInstance->getLastName();
echo $userInstance->getTimeZone();
echo $userInstance->getZuid();
echo $userInstance->isConfirm();
echo $userInstance->getFullName();
echo $userInstance->getPhone();
echo $userInstance->getDob();
echo $userInstance->getDateFormat();
echo $userInstance->getStatus();
}
}
catch(ZCRMException $e)
{
echo $e->getMessage();
echo $e->getExceptionCode();
echo $e->getCode();
}
样本请求:
def get_user(self):
try:
resp=ZCRMOrganization.get_instance().get_user(1386586000000105001)
print resp.status_code
if resp.status_code!=200:
return
users=[resp.data]
for user in users:
print user.id
print user.name
print user.signature
print user.country
crm_role=user.role
if crm_role is not None:
print crm_role.name
print crm_role.id
customize_info= user.customize_info
if customize_info is not None:
print customize_info.notes_desc
print customize_info.is_to_show_right_panel
print customize_info.is_bc_view
print customize_info.is_to_show_home
print customize_info.is_to_show_detail_view
print customize_info.unpin_recent_item
print user.city
print user.name_format
print user.language
print user.locale
print user.is_personal_account
print user.default_tab_group
print user.street
print user.alias
user_theme=user.theme
if user_theme is not None:
print user_theme.normal_tab_font_color
print user_theme.normal_tab_background
print user_theme.selected_tab_font_color
print user_theme.selected_tab_background
print user.state
print user.country_locale
print user.fax
print user.first_name
print user.email
print user.zip
print user.decimal_separator
print user.website
print user.time_format
crm_profile= user.profile
if crm_profile is not None:
print crm_profile.id
print crm_profile.name
print user.mobile
print user.last_name
print user.time_zone
print user.zuid
print user.is_confirm
print user.full_name
print user.phone
print user.dob
print user.date_format
print user.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
职位 API
在Zoho CRM中,由管理员为用户分配职位。通常,职位是指公司中不同级别的员工。例如,可以是经理、销售代表、主管、产品管理人员等。
通过职位 API,您可以检索角色的基本信息。职位API的详细说明和示例如下:
获取职位
用途
通过API请求检索职位的数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/roles
作用域
scope=ZohoCRM.settings.roles.{operation_type}
可能的操作类型 |
---|
ALL - 对职位数据的完全访问 READ - 获取职位数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/roles"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
获取所有用户
样本请求:
样本请求:
样本请求:
def get_roles(self):
try:
resp=ZCRMOrganization.get_instance().get_all_roles()
roles=resp.data
print resp.status_code
for role in roles:
print "\n\n"
print role.name
print role.id
print role.display_label
print role.is_admin
if role.reporting_to is not None:
print role.reporting_to.id
print role.reporting_to.name
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
获取单个职位数据
用途
用来获取任何指定角色的详细信息。在您的API请求中指定职位的唯一 ID,以获取指定职位的数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/roles/{role_id}
role_id - 指定职位的惟一 ID。
作用域
scope=ZohoCRM.settings.roles.{operation_type}
可能的操作类型 |
---|
ALL - 对职位数据的完全访问 READ - 获取职位数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/roles/2883756000000026005"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
def get_role(self):
try:
resp=ZCRMOrganization.get_instance().get_role(1386586000000026008)
roles=[resp.data]
print resp.status_code
for role in roles:
print role.name
print role.id
print role.display_label
print role.is_admin
if role.reporting_to is not None:
print role.reporting_to.id
print role.reporting_to.name
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
角色 API
角色定义了用户在Zoho CRM中拥有的一组特权。管理员可以决定用户的数据访问级别。在初始化期间,需要为所有用户分配角色。
通过角色API,您可以检索角色的基本信息。角色API的详细说明和示例如下:
获取角色
用途
通过API请求检索角色的数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/profiles
作用域
scope=ZohoCRM.settings.profiles.{operation_type}
可能的操作类型 |
---|
ALL - 对角色数据的完全访问 READ - 获取角色数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/profiles"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
获取所有用户
样本请求:
样本请求:
样本请求:
def get_profiles(self):
try:
resp=ZCRMOrganization.get_instance().get_all_profiles()
profiles=resp.data
print resp.status_code
for profile in profiles:
print "\n\n"
print profile.name
print profile.id
print profile.is_default
print profile.created_time
print profile.modified_time
print profile.modified_by
print profile.description
print profile.created_by
print profile.category
print profile.permissions
sections= profile.sections
if sections is not None:
for section in sections:
print section.name
print section.categories
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
获取单个角色数据
用途
获取任何指定角色的详细信息。在您的API请求中指定角色的唯一 ID,以获取指定角色的数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/profiles/{profile_id}
profile_id - 指定角色的唯一 ID。
作用域
scope=ZohoCRM.settings.profiles.{operation_type}
可能的操作类型 |
---|
ALL - 对角色数据的完全访问 READ - 获取角色数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/profiles/2883756000000026011"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
def get_profile(self):
try:
resp=ZCRMOrganization.get_instance().get_profile(1386586000000026014)
profiles=[resp.data]
print resp.status_code
for profile in profiles:
print profile.name
print profile.id
print profile.is_default
print profile.created_time
print profile.modified_time
print profile.modified_by
print profile.description
print profile.created_by
print profile.category
permissions= profile.permissions
if permissions is not None:
print ":::PERMISSIONS:::"
for permission in permissions:
print permission.name
print permission.id
print permission.display_label
print permission.module
print permission.is_enabled
sections= profile.sections
if sections is not None:
for section in sections:
print section.name
categories=section.categories
if categories is not None:
print "::::CATEGORIES:::"
for category in categories:
print category.name
print category.display_label
print category.permission_ids
print category.module
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
批量读取 API
Zoho CRM允许您导出并备份所有CRM数据。您可以从单个CRM模块导出数据(CSV格式)。结果只能作为ZIP文件使用。
创建批量读取任务(批量导出)
用途
用来创建批量读取任务以导出记录。
请求 URL
https://www.zohoapis.com.cn/crm/bulk/v2/read
作用域
scope=ZohoCRM.bulk.read
(and)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对记录的完全访问 READ - 获取批量读取任务 |
请求 JSON
属性 | 数据类型 | 必填 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
callback | 字符串 | 否 | 一个有效的允许HTTP Post方法的URL。批量读取任务的详细信息将在任务成功完成或任务失败时发布到此URL。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
query 显示属性 | JSON 对象 | 是 | 请参考下面的表格,了解查询 JSON 对象的信息。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
显示查询属性
|
请求方法
POST
样本请求:
curl "https://www.zohoapis.com.cn/crm/bulk/v2/read"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@inputData.json"
样本请求:
样本请求:
样本请求:
样本请求:
在上面的请求中,@inputData.json 包含样本输入数据。
样本输入:
样本响应:
创建批量读取任务
目的
创建批量数据导出任务。在一个任务中最多可以导出20万条记录。
请求 URL
https://www.zohoapis.com.cn/crm/bulk/v2/read
作用域
scope=ZohoCRM.bulk.read
(and)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,用户和自定义模块。 | ALL - 对记录的完全访问 READ - 获取批量读取任务 |
请求JSON
属性 | 数据类型 | 必填 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
callback 显示属性 | JSON 对象 | No | 一个应该允许HTTP Post方法的有效URL。批量读取任务的详细信息将在任务成功完成或任务失败时发布到此URL。示例 - "callback" : { "url": "https://sampledomain.com/getzohoresponse", "method": "post" } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
显示Callback属性
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
query 显示属性 | JSON对象 | 是 | 有关查询JSON对象的信息,请参阅下表。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
显示查询属性
|
响应结构
属性 | 数据类型 | 描述 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status | 字符串 | 指定API调用的状态。示例 - "status": "success" | |||||||||||||||||||
message | 字符串 | 指定任务的预定义注释。在发生错误时非常有用。示例 - "message": "Added successfully." | |||||||||||||||||||
details 显示属性 | JSON 对象 | 有关“details”JSON对象的信息,请参阅下表。 | |||||||||||||||||||
参数属性细节
|
请求方法
POST
示例请求:
curl "https://www.zohoapis.com.cn/crm/bulk/v2/read"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@inputData.json"
示例请求:
示例请求:
示例请求:
示例请求:
在上面的请求中, @inputData.json包含样本输入数据。
样本输入:
备注:
- 在一个导出任务中最多可以导出20万条记录。例如,"page" 为 "1" 而页面中的记录为 "200,000"。要了解关于批量API限制的更多信息,请参考这里。
- 如果"page" 是 "1",则取符合条件的前200,000条记录进行导出。
样本响应:
获取批量读取任务详情
用途
用来获取以前执行的批量读取任务的详细信息。
请求 URL
https://www.zohoapis.com.cn/crm/bulk/v2/read/{job_id}
job_id - 指定批量读取任务的惟一ID。
作用域
scope=ZohoCRM.bulk.read
(和)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对相关记录的完全访问 READ - 获取批量读取任务 |
请求 JSON
属性 | 数据类型 | 必填 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
callback | 字符串 | 否 | 一个有效的URL,它应该允许HTTP Post方法。批量读取任务的详细信息将在任务成功完成或任务失败时发布到此URL。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
query 显示属性 | JSON 对象 | 是 | 请参考下面的表格,了解查询 JSON 对象的信息。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
显示查询属性
|
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/bulk/v2/read/1000000031045"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
读取任务已添加的样本响应
读取任务进行中的样本响应
读取任务已完成的样本响应
备注:
- 此API支持Polling和Callback选项。
- 此API支持除备注、附件、邮件以及相关和交叉模块之外的所有模块。
- 此API端点不支持Sorting和Group by子句。
- 响应包含一个压缩文件{job_id}.zip,它以{job_id}.csv的文件形式包含结果。
- 在单个导出任务中最多包含200,000条记录。例如,"page" 可以是 "1"。
- 如果需要导出其他记录,"page" 值可以设置为"2",这样就可以获取从200,001 到 400,000的记录。
- 在CSV文件中,查找字段不包含记录名称,只有记录的"id"。
批量读取API的限制
- 每隔1分钟只允许10个下载请求。超过此限制可能会导致作为响应返回给用户的错误(http代码:429)。所有下载将不成功,下载请求将在一分钟后处理。
- 在完成批量读取任务之后哦,下载的文件只能访问一天。之后将无法通过端点访问任务。
- 最多可通过端点提供200个选择字段,任何超过200的字段,其数据将与该模块中可用的所有字段一起导出。
- "page"的最大值在导出请求正文中是500。
条件的限制
- 查询中可以使用的最大条件数为25。
- 'in' & 'not_in' 比较最多可以接受20个值。
例如:'Lead Status' - 'in' - 'Cold,Warm,Hot,Junk,Contacted,Not Contacted,....(20 个值)' - 不支持多行文本字段上的条件。
下载批量读取结果
用途
下载批量读取任务作为CSV文件。 (例如)大量输出记录。该文件将采用.zip格式。提取它以获取CSV文件。
请求 URL
https://www.zohoapis.com.cn/crm/bulk/v2/read/{job_id}/result
job_id - 指定批量读取任务的惟一id。
作用域
scope=ZohoCRM.bulk.read
(和)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对相关记录的完全访问 READ - 获取批量读取任务 |
请求 JSON
属性 | 数据类型 | 必填 | 描述 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
callback | 字符串 | 否 | 一个有效的URL,它应该允许HTTP Post方法。批量读取任务的详细信息将在任务成功完成或任务失败时发布到此URL。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
query 显示属性 | JSON 对象 | 是 | 请参考下面的表格,了解查询 JSON 对象的信息。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
显示查询属性
|
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/bulk/v2/read/1000000031045/result"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
备注:
- 响应包含一个压缩文件,{job_id}.zip,其中包含结果CSV文件。
元数据 API
返回所指定模块的字段、布局和相关列表的元数据。它列示了该用户的整个可用字段和相关列表。
模块元数据
用途
获取模块的元数据。在 API 请求中指定模块(例如线索、客户和潜在客户)的 API 名称。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/modules/{module_api_name}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.settings.modules.read
(或)
scope=ZohoCRM.settings.modules.all
(或)
scope=ZohoCRM.settings.all
请求方法
GET
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/modules/Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMRestClient client = ZCRMRestClient.getInstance();
APIResponse response = client.getModule("Products");//模块 API 名称
ZCRMModule module = (ZCRMModule) response.getData();
样本请求:
try{
$ins=ZCRMRestClient::getInstance();
$apiResponse=$ins->getModule("Leads");//模块 API 名称
$module=$apiResponse->getData();
echo "ModuleName:".$module->getModuleName();
echo "SingLabel:".$module->getSingularLabel();
echo "PluLabel:".$module->getPluralLabel();
echo "BusinesscardLimit:".$module->getBusinessCardFieldLimit();
echo "ApiName:".$module->getAPIName();
$fields=$module->getFields();
if($fields==null)
{
continue;
}
foreach ($fields as $field)
{
echo $field->getApiName().", ";
echo $field->getLength().", ";
echo $field->IsVisible().", ";
echo $field->getFieldLabel().", ";
echo $field->getCreatedSource().", ";
echo $field->isMandatory().", ";
echo $field->getSequenceNumber().", ";
echo $field->isReadOnly().", ";
echo $field->getDataType().", ";
echo $field->getId().", ";
echo $field->isCustomField().", ";
echo $field->isBusinessCardSupported().", ";
echo $field->getDefaultValue().", ";
}
}
catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
try:
resp=ZCRMRestClient.get_instance().get_module('Accounts') #模块 API 名称
modules=[resp.data]
print resp.status_code
for module in modules:
print module.api_name
print module.is_convertable
print module.is_creatable
print module.is_editable
print module.is_deletable
print module.web_link
print module.singular_label
print module.plural_label
print module.modified_by
print module.modified_time
print module.is_viewable
print module.is_api_supported
print module.is_custom_module
print module.is_scoring_supported
print module.id
print module.module_name
print module.business_card_field_limit
print module.business_card_fields
profiles= module.profiles
if profiles is not None:
for profile in profiles:
print profile.name
print profile.id
print module.display_field_name
print module.display_field_id
if module.related_lists is not None:
for relatedlist in module.related_lists:
print relatedlist.display_label
print relatedlist.is_visible
print relatedlist.api_name
print relatedlist.module
print relatedlist.name
print relatedlist.id
print relatedlist.href
print relatedlist.type
if module.layouts is not None:
for layout in module.layouts:
self.print_layout(layout)
if module.fields is not None:
for field_ins in module.fields:
self.print_field(field_ins)
if module.related_list_properties is not None:
print module.related_list_properties.sort_by
print module.related_list_properties.sort_order
print module.related_list_properties.fields
print module.properties
print module.per_page
print module.search_layout_fields
print module.default_territory_name
print module.default_territory_id
print module.default_custom_view_id
print module.default_custom_view
print module.is_global_search_supported
print module.sequence_number
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
字段
用途
获取指定模块的字段元数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/fields
作用域
scope=ZohoCRM.settings.fields.read
(或)
scope=ZohoCRM.settings.fields.all
(或)
scope=ZohoCRM.settings.all
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/fields?module=Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Products"); // 模块 API 名称
BulkAPIResponse response = module.getAllFields();
List<ZCRMField> fields = (List<ZCRMField>) response.getData();
样本请求:
try{
$moduleIns=ZCRMModule::getInstance("Leads");
$apiResponse=$moduleIns->getAllFields();
$fields=$apiResponse->getData();
foreach ($fields as $field)
{
echo $field->getApiName().", ";
echo $field->getLength().", ";
echo $field->IsVisible().", ";
echo $field->getFieldLabel().", ";
echo $field->getCreatedSource().", ";
echo $field->isMandatory().", ";
echo $field->getSequenceNumber().", ";
echo $field->isReadOnly().", ";
echo $field->getDataType().", ";
echo $field->getId().", ";
echo $field->isCustomField().", ";
echo $field->isBusinessCardSupported().", ";
$fieldLayoutPerm=$field->getFieldLayoutPermissions();
foreach ($fieldLayoutPerm as $perm)
{
echo $perm.", ";
}
$lookupField=$field->getLookupField();
if($lookupField!=null)
{
echo $lookupField->getModule().", ";
echo $lookupField->getDisplayLabel().", ";
echo $lookupField->getId().", ";
}
$pickListFields=$field->getPickListFieldValues();
foreach ($pickListFields as $pickList)
{
echo $pickList->getDisplayValue().", ";
echo $pickList->getSequenceNumber().", ";
echo $pickList->getActualValue().", ";
echo $pickList->getMaps().", ";
}
echo $field->isUniqueField().", ";
echo $field->isCaseSensitive().", ";
echo $field->isCurrencyField().", ";
echo $field->getPrecision().", ";
echo $field->getRoundingOption().", ";
echo $field->isFormulaField().", ";
echo $field->getFormulaReturnType().", ";
echo $field->getFormulaExpression().", ";
echo $field->isAutoNumberField().", ";
echo $field->getPrefix().", ";
echo $field->getSuffix().", ";
echo $field->getStartNumber().", ";
echo $field->getDecimalPlace().", ";
$convertMap=$field->getConvertMapping();
if($convertMap!=null)
{
foreach ($convertMap as $key=>$value)
{
echo $key.":".$value;
}
}
}
}
catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)[0]
accounts_obj = api_obj.load_crm_module(“Accounts”)
fields = accounts_obj.get_fields #fields -> 是field_id与ZCRMField对象的散列形式。
fields.each do |f_id, f_obj|
print “Field id ==> ”, f_id, “\n”
print “Field Name ==> ”, f_obj.field_name
end
样本请求:
def get_fields(self):
try:
module_ins=ZCRMModule.get_instance('Accounts') #模块 API 名称
resp=module_ins.get_all_fields()
print resp.status_code
field_ins_arr=resp.data
for field_ins in field_ins_arr:
print field_ins.api_name
print field_ins.id
print field_ins.is_custom_field
print field_ins.lookup_field
print field_ins.convert_mapping
print field_ins.is_visible
print field_ins.field_label
print field_ins.length
print field_ins.created_source
print field_ins.default_value
print field_ins.is_mandatory
print field_ins.sequence_number
print field_ins.is_read_only
print field_ins.is_unique_field
print field_ins.is_case_sensitive
print field_ins.data_type
print field_ins.is_formula_field
print field_ins.is_currency_field
print field_ins.picklist_values
print field_ins.is_auto_number
print field_ins.is_business_card_supported
print field_ins.field_layout_permissions
print field_ins.decimal_place
print field_ins.precision
print field_ins.rounding_option
print field_ins.formula_return_type
print field_ins.formula_expression
print field_ins.prefix
print field_ins.suffix
print field_ins.start_number
print field_ins.json_type
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
布局
用途
获取与指定模块相关联的布局。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/layouts
作用域
scope=ZohoCRM.settings.layouts.read
(或)
scope=ZohoCRM.settings.layouts.all
(或)
scope=ZohoCRM.settings.all
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/layouts?module=Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Products"); // 模块 API 名称
BulkAPIResponse response = module.getLayouts();
List<ZCRMLayout> layouts = (List<ZCRMLayout>) response.getData();
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Products");
$apiResponse= $zcrmModuleIns->getAllLayouts();
$layouts =$apiResponse->getData(); //这里$layouts是ZCRMLayout实例的数组
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_obj = api_obj.load_crm_module(“Accounts”)
layouts = accounts_obj.get_layouts #this is of the form Array<ZCRMLayout>
样本请求:
def get_all_layouts(self):
try:
module_ins=ZCRMModule.get_instance('Accounts') #模块 API 名称
resp=module_ins.get_all_layouts()
print resp.status_code
layout_ins_arr=resp.data
for layout_ins in layout_ins_arr:
print "\n\n:::LAYOUT DETAILS:::"
print layout_ins.name
print layout_ins.id
print layout_ins.created_time
print layout_ins.modified_time
print layout_ins.convert_mapping
print layout_ins.is_visible
print layout_ins.modified_by.id
profiles=layout_ins.accessible_profiles
if profiles is not None:
for profile in profiles:
print "\n\n"
print profile.id
print profile.name
print profile.is_default
print layout_ins.created_by
sections= layout_ins.sections
if sections is not None:
print "\n:::SECTION DETAILS:::"
for secton in sections:
print secton.name
print secton.display_name
print secton.column_count
print secton.sequence_number
fields=secton.fields
if fields is not None:
print "\n:::FIELD DETAILS:::"
for field_ins in fields:
print field_ins.api_name
print field_ins.id
print field_ins.is_custom_field
print field_ins.lookup_field
print field_ins.convert_mapping
print field_ins.is_visible
print field_ins.field_label
print field_ins.length
print field_ins.created_source
print field_ins.default_value
print field_ins.is_mandatory
print field_ins.sequence_number
print field_ins.is_read_only
print field_ins.is_unique_field
print field_ins.is_case_sensitive
print field_ins.data_type
print field_ins.is_formula_field
print field_ins.is_currency_field
print field_ins.picklist_values
print field_ins.is_auto_number
print field_ins.is_business_card_supported
print field_ins.field_layout_permissions
print field_ins.decimal_place
print field_ins.precision
print field_ins.rounding_option
print field_ins.formula_return_type
print field_ins.formula_expression
print field_ins.prefix
print field_ins.suffix
print field_ins.start_number
print field_ins.json_type
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
单个布局
用途
获取指定模块的布局详情
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/layouts/{layout_id}
layout_id - 指定布局的惟一ID。
作用域
scope=ZohoCRM.settings.layouts.read
(或)
scope=ZohoCRM.settings.layouts.all
(或)
scope=ZohoCRM.settings.all
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
样本请求:
"https://www.zohoapis.com.cn/crm/v2/settings/layouts/4108880000425045?module=Deals"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Products");// 模块 API 名称
APIResponse response = module.getLayoutDetails(12345690l);//布局ID
ZCRMLayout layout = (ZCRMLayout) response.getData();
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Products");
$apiResponse= $zcrmModuleIns->getLayoutDetails(410405000001021001);//布局 ID
$layout =$apiResponse->getData(); // 在这里,$layout 是 ZCRMLayout 实例
样本请求:
zclient, api_obj = get_client_objects(conf_file_location)[0]
accounts_obj = api_obj.load_crm_module(“Accounts”)
layout_id = “1234567890”
layout_obj = accounts_obj.get_layout(layout_id)
样本请求:
def get_layout(self):
try:
module_ins=ZCRMModule.get_instance('Accounts') #模块 API 名称
resp=module_ins.get_layout(440872000000254001) #LAYOUT ID
print resp.status_code
layout_ins_arr=[resp.data]
for layout_ins in layout_ins_arr:
print "\n\n:::LAYOUT DETAILS:::"
print layout_ins.name
print layout_ins.id
print layout_ins.created_time
print layout_ins.modified_time
print layout_ins.convert_mapping
print layout_ins.is_visible
print layout_ins.modified_by.id
profiles=layout_ins.accessible_profiles
if profiles is not None:
for profile in profiles:
print "\n\n"
print profile.id
print profile.name
print profile.is_default
print layout_ins.created_by.id
sections= layout_ins.sections
if sections is not None:
print "\n:::SECTION DETAILS:::"
for secton in sections:
print secton.name
print secton.display_name
print secton.column_count
print secton.sequence_number
fields=secton.fields
if fields is not None:
print "\n:::FIELD DETAILS:::"
for field_ins in fields:
print field_ins.api_name
print field_ins.id
print field_ins.is_custom_field
print field_ins.lookup_field
print field_ins.convert_mapping
print field_ins.is_visible
print field_ins.field_label
print field_ins.length
print field_ins.created_source
print field_ins.default_value
print field_ins.is_mandatory
print field_ins.sequence_number
print field_ins.is_read_only
print field_ins.is_unique_field
print field_ins.is_case_sensitive
print field_ins.data_type
print field_ins.is_formula_field
print field_ins.is_currency_field
picklist_values=field_ins.picklist_values
if picklist_values is not None:
for picklist_value_ins in picklist_values:
print picklist_value_ins.display_value
print picklist_value_ins.actual_value
print picklist_value_ins.sequence_number
print picklist_value_ins.maps
print field_ins.is_auto_number
print field_ins.is_business_card_supported
print field_ins.field_layout_permissions
print field_ins.decimal_place
print field_ins.precision
print field_ins.rounding_option
print field_ins.formula_return_type
print field_ins.formula_expression
print field_ins.prefix
print field_ins.suffix
print field_ins.start_number
print field_ins.json_type
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
自定义视图
用途
获取指定模块的自定义视图数据。您需要在 API 请求中指定模块名,自定义视图数据必须检索到此模块。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/custom_views
作用域
scope=ZohoCRM.settings.custom_views.read
(或)
scope=ZohoCRM.settings.custom_views.all
(或)
scope=ZohoCRM.settings.all
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/custom_views?module=Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Contacts");// 模块 API 名称
BulkAPIResponse response = module.getCustomViews();
List<ZCRMCustomView> customViews = (List<ZCRMCustomView>)
response.getData();
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Products");
$apiResponse=$zcrmModuleIns->getAllCustomViews();
$zcrmCustomViews=$apiResponse->getData(); // 在这里 $zcrmCustomViews 是 ZCRMCustomView 实例的数组
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_obj = api_obj.load_crm_module(“Accounts”)
custom_views = accounts_obj.get_custom_views
样本请求:
def get_all_customviews(self):
try:
module_ins=ZCRMModule.get_instance('Accounts') #模块 API 名称
resp=module_ins.get_all_customviews()
print resp.status_code
cv_ins_arr=resp.data
for customview_ins in cv_ins_arr:
print "\n\n:::CUSTOM VIEW DETAILS:::"
print customview_ins.id
print customview_ins.module_api_name
print customview_ins.display_value
print customview_ins.is_default
print customview_ins.name
print customview_ins.system_name
print customview_ins.sort_by
print customview_ins.category
fields=customview_ins.fields
print "\n:::FIELDS:::"
for field in fields:
print field
print customview_ins.favorite
print customview_ins.sort_order
cv_criteria= customview_ins.criteria
if cv_criteria is not None:
print "\n\n :::CRITERIA::::"
for criteria_ins in cv_criteria:
print criteria_ins.field
print criteria_ins.comparator
print criteria_ins.value
print customview_ins.criteria_pattern
categories=customview_ins.categories
print "\n\n :::CATEGORIES::::"
if categories is not None:
for category in categories:
print category.actual_value
print category.display_value
print customview_ins.is_off_line
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
单个自定义视图
用途
获取模块的任何指定记录的自定义视图数据。在 API 请求 URL 中指定模块的自定义视图 id,因此将会检索与指定记录相关的自定义视图数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/custom_views/{custom_view_id}
custom_view_id - 指定自定义视图的惟一ID。
作用域
scope=ZohoCRM.settings.custom_views.read
(或)
scope=ZohoCRM.settings.custom_views.all
(或)
scope=ZohoCRM.settings.all
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
样本请求:
"https://www.zohoapis.com.cn/crm/v2/settings/custom_views/4108880000066613?module=Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Contacts");
APIResponse response = module.getCustomView(98658369836l);
ZCRMCustomView customView = (ZCRMCustomView) response.getData();
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Products");
$apiResponse=$zcrmModuleIns->getCustomView(410405000005108011);//自定义视图 ID
$zcrmCustomView=$apiResponse->getData(); // 在这里 $zcrmCustomView 是 ZCRMCustomView的实例
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_obj = api_obj.load_crm_module(“Accounts”)
custom_views = accounts_obj.get_custom_views
custom_view_id = “1234567890”
custom_views.each do |cv_id, cv_hash|
if cv_id == custom_view_id then
return cv_hash #Hash containing corresponding custom view data
end
end
样本请求:
def get_customview(self):
try:
module_ins=ZCRMModule.get_instance('Accounts') #模块 API 名称
resp=module_ins.get_customview(440872000000091517) #CUSTOM VIEW ID
print resp.status_code
cv_ins_arr=[resp.data]
for customview_ins in cv_ins_arr:
print "\n\n:::CUSTOM VIEW DETAILS:::"
print customview_ins.id
print customview_ins.module_api_name
print customview_ins.display_value
print customview_ins.is_default
print customview_ins.name
print customview_ins.system_name
print customview_ins.sort_by
print customview_ins.category
fields=customview_ins.fields
print "\n:::FIELDS:::"
for field in fields:
print field
print customview_ins.favorite
print customview_ins.sort_order
cv_criteria= customview_ins.criteria
if cv_criteria is not None:
print "\n\n :::CRITERIA::::"
for criteria_ins in cv_criteria:
print criteria_ins.field
print criteria_ins.comparator
print criteria_ins.value
print customview_ins.criteria_pattern
categories=customview_ins.categories
print "\n\n :::CATEGORIES::::"
if categories is not None:
for category in categories:
print category.actual_value
print category.display_value
print customview_ins.is_off_line
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
变量 API
CRM变量可以具有唯一的值集,可以广泛用作电子邮件模板、邮件合并模板和库存模板中的合并字段。它还可以用作API中的可重用身份验证参数。
获取变量数据
目的
通过API请求检索所有可用的变量。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variables
作用域
scope=ZohoCRM.settings.variables.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 READ - 获取变量数据 |
请求方法
GET
备注:
- 在获取指定变量数据时,组ID/组API名称是必需的。
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
获取所有用户
示例请求:
示例请求:
示例请求:
样本响应:
获取单个变量数据
目的
获取任何指定变量的详细信息。在您的API请求中指定变量的unique id来获取指定变量组的数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variables/{variable_id}?group={variable_group_id}
variable_id - 指定变量的唯一id。
variable_group_id - 指定变量组的唯一id。
作用域
scope=ZohoCRM.settings.variables.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 READ - 获取变量数据 |
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
group* | 整型/字符串 | 指定变量所属组的惟一id/ API名称。 |
备注:
- 在获取指定变量数据时,组ID/组API名称是必需的。否则将抛出错误。
示例请求:使用变量ID和组ID
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables/40000000047003?group=40000000047001"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:使用变量API名称和组ID
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables/VariableSix?group=40000000047001"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:使用变量ID和组API名称
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables/40000000047003?group=Group2"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
示例请求:
示例请求:
样本响应:用于变量ID和组ID
Sample Response: For Variable API Name and Group ID
样本响应:用于变量ID和组API名称
获取变量组数据
目的
获取任何变量组的详细信息。在您的API请求中指定变量的唯一 id来获取指定变量组的数据。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variable_groups/{variable_group_id}
variable_id - 指定变量的唯一id。
作用域
scope=ZohoCRM.settings.variable_groups.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 READ - 获取变量数据 |
请求方法
GET
示例请求:使用变量组ID
curl "https://www.zohoapis.com.cn/crm/v2/settings/variable_groups/40000000047003"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:使用变量组API名称
curl "https://www.zohoapis.com.cn/crm/v2/settings/variable_groups/Group3"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
示例请求:
示例请求:
样本响应:
样本响应:
创建变量
目的
在CRM中创建一个新变量。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variables
作用域
scope=ZohoCRM.settings.variables.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 CREATE - 创建变量数据 |
属性规范
变量可以通过给POST请求创建,请求体包含以下属性:
密钥名 | 类型 | 描述 | 示例 | 必填 |
---|---|---|---|---|
name | 文本 | 这是将要创建的变量的显示名称。它是一个"唯一"字段。 | VariableName3 | 是 |
api_name | 文本 | 这是在任何API请求中引用的变量名称。它是一个"唯一" 字段。 | MainVariable | 是 |
type | 文本 | 这是变量的数据类型。 | Integer | 否 |
variable_group | JSON 对象 | 这是变量应该属于的组。 | {"id": 40000000047005} 或 {"name":"Group2"} | 是 |
value | 取决于变量的类型。 | 这是给变量的初值。 | 123 | 否 |
description | 文本 | 对变量的简短描述。 | A short description of the variable. | 否 |
备注:
- 变量数据类型在创建后不能更改。
- 只有当创建变量时才能创建变量组。
- 在创建变量时,如果指定的变量组已经存在,则只需将该变量添加到组中。
- 如果指定的变量组不存在,则创建一个新组,并将该变量添加到其中。
请求方法
POST
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
示例请求:
示例请求:
样本输入:
样本响应:
更新变量
目的
更新CRM中变量的详细信息。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variables
作用域
scope=ZohoCRM.settings.variables.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 UPDATE - 更新变量数据 |
请求方法
PUT
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables"
-X PUT
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
示例请求:
示例请求:
样本输入:
样本响应:
更新指定变量
目的
更新CRM中指定变量的详细信息。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variables/{variable_id (or) variable_api_name}
variable_id - 指定变量的唯一id。
作用域
scope=ZohoCRM.settings.variables.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 UPDATE - 更新变量数据 |
请求方法
PUT
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables/40000000047010"
(or)
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables/Variable444"
-X PUT
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
示例请求:
示例请求:
样本输入:
样本响应:
删除变量
目的
删除CRM中指定变量的详细信息。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variables/{variable_id}
variable_id - 指定变量的唯一id。
作用域
scope=ZohoCRM.settings.variables.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 DELETE - 删除变量数据 |
请求方法
DELETE
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables/40000000047010"
-X DELETE
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
示例请求:
示例请求:
样本响应:
删除多个变量
目的
同时删除CRM中多个变量的详细信息。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/variables?ids={variable_id1, variable_id2, variable_id3}
variable_id - 指定变量的唯一id。
作用域
scope=ZohoCRM.settings.variables.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问变量数据 DELETE - 删除变量数据 |
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
ids* | 整型 | 指定变量的惟一id。 |
请求方法
DELETE
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/variables?ids=40000000047007,40000000047009,40000000047010"
-X DELETE
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
示例请求:
示例请求:
样本响应:
订阅 API
此API用于为在Zoho CRM数据上执行的操作(创建、编辑和删除)的即时通知授予订阅。一旦用户订阅了任何模块的即时同步,每当对该模块的记录执行任何操作时,都会将其通知发送到用户提供的URL。
订阅通知
目的
请求订阅对模块或记录上执行的操作的即时通知。
请求 URL
https://www.zohoapis.com.cn/crm/v2/actions/watch
作用域
scope=ZohoCRM.notifications.{operation_type}
可能的操作类型 |
---|
ALL - 完全访问通知数据 CREATE - 创建即时通知的订阅 WRITE - 编写即时通知的订阅 |
输入JSON 密钥
密钥 | 值 | 目的 |
---|---|---|
token (可选) | 字符串(最多50个字符长度) | 通过返回通知URL主体中的给定值,确保通知是从Zoho CRM发送的。通过使用这个值,用户可以验证通知。 |
notify_url (必填) | 要通知的URL(POST 请求) | 无论何时触发任何操作,通知都将通过notify url发送。 |
channel_id (必填) | 字符串(长整型) | 给定的值在通知URL主体中被发回,以确保通知是针对指定通道的。 |
channel_expiry | 字符串(ISO日期时间) | 设置即时通知的到期时间。从订阅时间开始计算最多只能有一天。如果超过一天没有指定或设置,默认到期时间为一个小时。 |
events (必填) | JSON 数组 ["{module_api_name}.{operation}","{module_api_name}.{operation}"] 例如:["Leads.create","Sales_Orders.edit","Contacts.delete"]。可能的操作类型 - 创建,删除,编辑,全部 |
根据所选模块的指定操作进行订阅。 |
请求方法
POST
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/actions/watch"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@inputData.json"
示例请求:
示例请求:
示例请求:
示例请求:
在上面的请求中,@inputData.json 包含样本输入数据。
样本输入:
样本响应:用于新订阅
获取URL上的通知
在模块的任何订阅事件触发时,Zoho CRM将通过notify URL向用户发送通知。
通知的请求正文示例
获取订阅详情
用途
获取用户订阅的详细信息。
请求 URL
https://www.zohoapis.com.cn/crm/v2/actions/watch
作用域
scope=ZohoCRM.notifications.{operation_type}
可能的操作类型 |
---|
ALL - 对通知数据的完全访问 READ - 获取通知订阅详情 |
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
page (可选) | 整型 | 从各个页面获取记录列表。页的默认值是 1。 |
per_page (可选) | 整型 | 获取每页可用记录的列表。每个页面的默认值为 200。 |
channel_id (必填) | 整型 | 指定通知通道的惟一 ID |
module | 字符串 | 指定订阅通知的模块API名称。 |
备注:
- page 和 per_page 参数用于根据记录在CRM中的位置提取记录。让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200个以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/actions/watch?page=1&per_page=200"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:获取与指定频道相关的订阅
curl "https://www.zohoapis.com.cn/crm/v2/actions/watch?channel_id=1000000068001"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:对于与模块和频道相关的订阅
curl "https://www.zohoapis.com.cn/crm/v2/actions/watch?channel_id=1000000068001&module={module_api_name}"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
样本响应:获取与指定频道相关的订阅
样本响应:对于与模块和频道相关的订阅
更新订阅详情
用途
用来更新用户订阅的详细信息。所有提供的细节将被持久化,其余的细节 将被删除。
请求 URL
https://www.zohoapis.com.cn/crm/v2/actions/watch
作用域
scope=ZohoCRM.notifications.{operation_type}
可能的操作类型 |
---|
ALL - 对通知数据完全访问 WRITE - 编辑通知详情s UPDATE - 更新通知详情 |
输入 JSON 密钥
密钥 | 值 | 用途 |
---|---|---|
token | 字符串(最大为50字符长度) | 通过返回通知URL主体中的给定值,确保从Zoho CRM发送通知。通过使用该值,用户可以验证通知。 |
notify_url | 要通知的(POST 请求) | 当任何操作被触发时,通知将通过notify url发送。 |
channel_id | 字符串(长) | 给定的值在通知URL主体中被发回,以确保通知是针对指定通道的。 |
channel_expiry | 字符串(ISO 日期时间) | 设置即时通知的有效期。从订阅时间开始最大只有 1 天。如果超过一天没有指定或设置,默认的过期时间是 1小时。 |
events | JSONArray ["{module_api_name}.{operation}","{module_api_name}.{operation}"] 例如:["Leads.create","Sales_Orders.edit","Contacts.delete"]. 可能的操作类型 - create, delete, edit, all |
根据所选模块的指定操作进行订阅。 |
请求方法
PUT
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/actions/watch"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-X PUT
-d "@inputData.json"
在上面的请求中,@inputData.json 包含样本输入数据。
样本响应:
更新通知的具体信息
用途
只更新用户作出的指定订阅的指定细节。所有提供的细节将被持久化,其余的细节不会被删除。
请求 URL
https://www.zohoapis.com.cn/crm/v2/actions/watch
作用域
scope=ZohoCRM.notifications.{operation_type}
可能的操作类型 |
---|
ALL - 对通知数据的完全访问 WRITE - 编辑通知详情 UPDATE - 更新通知详情 |
输入 JSON 密钥
密钥 | 值 | 用途 |
---|---|---|
token | 字符串(最大为50字符长度) | 通过返回通知URL主体中的给定值,确保从Zoho CRM发送通知。通过使用该值,用户可以验证通知。 |
notify_url | 要通知的(POST 请求) | 当任何操作被触发时,通知将通过notify url发送。 |
channel_id (必填) | 字符串(长) | 给定的值在通知URL主体中被发回,以确保通知是针对指定通道的。 |
channel_expiry | 字符串(ISO 日期时间) | 设置即时通知的有效期。从订阅时间开始最大只有 1天。如果超过一天没有指定或设置,则默认过期时间为 1小时。 |
events | JSONArray ["{module_api_name}.{operation}","{module_api_name}.{operation}"] 例如: ["Leads.create","Sales_Orders.edit","Contacts.delete"]. 可能的操作类型 - create, delete, edit, all |
根据所选模块的指定操作进行订阅。 |
请求方法
PATCH
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/actions/watch"
-X PATCH
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@inputData.json"
样本请求:
样本请求:
样本请求:
样本请求:
在上面的请求中,@inputData.json 包含样本输入数据。
样本输入:
样本响应:
取消订阅通知
用途
停止用户配置的所有即时通知。
请求 URL
https://www.zohoapis.com.cn/crm/v2/actions/watch
作用域
scope=ZohoCRM.notifications.{operation_type}
可能的操作类型 |
---|
ALL - 对通知数据的完全访问 WRITE - 编辑通知订阅详情 DELETE - 删除通知订阅详情 |
请求方法
DELETE
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
channel_ids (必填) | 整型 | 指定要取消订阅的通知通道的惟一 ID,逗号分隔。 |
样本请求:
https://www.zohoapis.com.cn/crm/v2/actions/watch?channel_ids=1000000068003,1000000068001,1000000068002"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-X DELETE
样本请求:
样本请求:
样本请求:
样本响应:
取消订阅指定通知
用途
用来取消订阅指定的通知。
请求 URL
https://www.zohoapis.com.cn/crm/v2/actions/watch
作用域
scope=ZohoCRM.notifications.{operation_type}
可能的操作类型 |
---|
ALL - 对通知数据的完全访问 WRITE - 编辑通知订阅详情 UPDATE - 更新通知订阅详情 |
请求方法
PATCH
样本请求:
https://www.zohoapis.com.cn/crm/v2/actions/watch"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-X PATCH
-d "@inputData.json"
样本请求:
样本请求:
样本请求:
在上面的请求中,@inputData.json 包含样本输入数据。
样本输入:
备注:
- "_delete_events" 取消订阅指定通知时必须使用密钥。如果 "_delete_events": false 或 "_delete_events" 在输入中没有给出密钥,订阅将不会被取消。
- channel_id 和 events 密钥也是必须的。
样本响应:
记录级别共享 API
此API用于与用户共享记录、获取共享详细信息、汇总或撤销记录的共享权限。Zoho CRM提供了不同级别的数据共享,其中一个是记录级别的共享,用户可以与机构中的其他用户共享来自任何模块的单个记录。您可以与相关列表共享记录,也可以不使用它们。
获取记录的共享详情
用途
获取记录的共享细节以及提供的共享权限。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/actions/share
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,服务支持,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单和定制模块。 | ALL - 完全访问 READ - 查看记录的共享权限 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000135187/actions/share"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:对于新的订阅
机构 API
通常,CRM 帐户用于管理您的公司。组织 API 允许用户有访问权,来查看有关客户公司的信息。您可根据需求,将信息设为只读,或对其进行更改。
获取机构数据
用途
用来获取机构的数据
请求 URL
https://www.zohoapis.com.cn/crm/v2/org
作用域
scope=ZohoCRM.org.{operation_type}
可能的操作类型 |
---|
ALL - 对机构数据的完全访问 READ - 获取机构数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/org"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMRestClient client = ZCRMRestClient.getInstance();
APIResponse response = client.getOrganizationDetails();
ZCRMOrganization org = (ZCRMOrganization) response.getData();
样本请求:
try{
$restIns=ZCRMRestClient::getInstance();
$res=$restIns->getOrganizationDetails();
$orgIns=$res->getData();
echo $orgIns->getCompanyName();
echo $orgIns->getOrgId();
echo $orgIns->getCountryCode();
echo $orgIns->getCountry();
echo $orgIns->getCurrencyLocale();
echo $orgIns->getFax();
echo $orgIns->getAlias();
echo $orgIns->getDescription();
echo $orgIns->getStreet();
echo $orgIns->getCity();
echo $orgIns->getState();
echo $orgIns->getZgid();
echo $orgIns->getWebSite();
echo $orgIns->getPrimaryEmail();
echo $orgIns->getPrimaryZuid();
echo $orgIns->getIsoCode();
echo $orgIns->getPhone();
echo $orgIns->getMobile();
echo $orgIns->getEmployeeCount();
echo $orgIns->getCurrencySymbol();
echo $orgIns->getTimeZone();
echo $orgIns->getMcStatus();
echo $orgIns->isGappsEnabled();
echo $orgIns->isPaidAccount();
echo $orgIns->getPaidExpiry();
echo $orgIns->getPaidType();
echo $orgIns->getTrialType();
echo $orgIns->getTrialExpiry();
echo $orgIns->getZipCode();
}
catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getExceptionDetails();
echo $e->getMessage();
echo $e->getTraceAsString();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
org_hash = api_obj.load_org_data #它是机构ID与散列形式的机构数据的比较
样本请求:
def get_org_details(self):
try:
resp=ZCRMRestClient.get_instance().get_organization_details()
print resp.status_code
org_ins=resp.data
print org_ins.company_name
print org_ins.org_id
print org_ins.alias
print org_ins.primary_zuid
print org_ins.zgid
print org_ins.primary_email
print org_ins.website
print org_ins.mobile
print org_ins.phone
print org_ins.employee_count
print org_ins.description
print org_ins.time_zone
print org_ins.iso_code
print org_ins.currency_locale
print org_ins.currency_symbol
print org_ins.street
print org_ins.state
print org_ins.city
print org_ins.country
print org_ins.zip_code
print org_ins.country_code
print org_ins.fax
print org_ins.mc_status
print org_ins.is_gapps_enabled
print org_ins.paid_expiry
print org_ins.trial_type
print org_ins.trial_expiry
print org_ins.is_paid_account
print org_ins.paid_type
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
属性:
- "iso_code" : 用于表示当前组织的基础货币的字符串
- "mc_status" : 查看多币种是已启用还是已禁用。
上传机构Logo
每个机构都有一个独特的Logo或图像。您可以使用此API上传和更新机构Logo。
用途
用来上传机构的品牌标识或Logo
请求 URL
https://www.zohoapis.com.cn/crm/v2/org/photo
作用域
scope=ZohoCRM.org.{operation_type}
可能的操作类型 |
---|
ALL - 对机构数据的完全访问 CREATE - 上传机构Logo WRITE - 编辑机构数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/org/photo"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-F "file=@img1.png"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
记录 API
记录是一种实体,用来存储指定联系或公司的所有组合信息,这些信息是从各种来源中获取的。信息可能是从网络形式或从社交媒体服务或广告等来源获取的。记录 API 允许用户创建、更新、删除或搜索记录
获取记录列表
用途
从模块获取可用记录的列表
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注,审批,数据分析,搜索和活动。 | ALL - 对记录的完全访问 READ - 从模块获取记录 |
请求方法
GET
参数
参数名称 | 数据类型 | 描述 | 可能的值 |
---|---|---|---|
fields (可选) | 字符串 | 列出与字段相关的所有模块记录 | 多个字段API名称,逗号分隔。例如:Last_Name,Email |
sort_order (可选) | 字符串 | 按升序或降序对可用记录列表进行排序 | asc - 升序 desc - 降序 |
sort_by (可选) | 字符串 | 根据给定字段对可用记录列表进行排序 | 字段 API 名称 例如:Email |
converted (可选) | 字符串 | 获取已转换记录的列表 | true - 只获取转换后的记录 false - 只获取未转换的记录 both - 获取所有记录 |
approved (可选) | 字符串 | 获取已审批记录列表 | true - 只获取已审批的记录 false - 只获取未审批的记录 both - 获取所有记录 |
page (可选) | 整型 | 从各个页面获取记录列表。页的默认值是 1。 | 只允许正整数 |
per_page (可选) | 整型 | 获取每页可用记录的列表。每个页面的默认值为 200。 | 只允许正整数 |
cvid (可选) | 整型 | 根据自定义视图获取记录列表 | {custom_view_id} |
备注:
- sort_order应用于给定的 sort_by 字段。
- 如果 sort_by 字段未提供,那么将应用于系统定义的字段。
- page 和 per_page 参数用于根据记录在CRM中的位置提取记录。 让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200条以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。
请求头文件
头文件名 | 数据类型 | 描述 | 示例 |
---|---|---|---|
If-Modified-Since (可选) | DateTime(ISO 8601 格式) | 用来获取最近修改记录的列表 | 2019-07-25T15:26:49+05:30 |
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Products");
BulkAPIResponse response = module.getRecords(425476547854l, "Company",
CommonUtil.SortOrder.asc, 1, 4);// 使用cvID, sortField获取记录,
sortOrder, startIndex and endIndex.
List<ZCRMRecord> records = (List<ZCRMRecord>)response.getData();
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Contacts");
$bulkAPIResponse=$zcrmModuleIns->getRecords();
$recordsArray = $bulkAPIResponse->getData(); // $recordsArray - ZCRMRecord 实例的数组
样本请求:
Hash of record id vs record obj - Hash<String, ZCRMRecord>
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
records = record_obj.get_records(200)
records.each do |record_id, record_obj|
print “Record id: #{record_id}”
print “Record object class: #{record_obj.class}”
end
样本请求:
def get_records(self):
try:
module_ins=ZCRMModule.get_instance('Products') #模块 API 名称
resp=module_ins.get_records()
print resp.status_code
record_ins_arr=resp.data
for record_ins in record_ins_arr:
print record_ins.entity_id
print record_ins.owner.id
print record_ins.created_by.id
print record_ins.modified_by.id
print record_ins.created_time
print record_ins.modified_time
product_data=record_ins.field_data
for key in product_data:
print key+":"+str(product_data[key])
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.getRecords(<module String>,<page Long>,<perPage Long>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : module
样本请求:
resp = zoho.crm.getRecords("Leads",5,2,{"converted":"false"});
样本响应:
备注:
- 在检索多个记录时,不会检索子表单记录。只检索子表单中的记录计数
- 子表单 还可以使用Records API获取详细信息。请注意,在获取批量记录时,只显示子表单中的记录计数。要在子表单中获取记录细节,需要在模块中获取指定的记录信息。
示例属性:
- 单行示例:
"Single_Line_1": "This is single line",
- 多行示例:
"Multi_Line_1": "这是第一行,\n 现在是第二行",
- 邮箱示例:
"Email_1": "p.boyle@zylker.com",
- 电话示例:
"Phone_1": "9900000000",
- 选择列表示例:
"Picklist_1" : "In Progress",
- 多选列表示例:
"Multi-Select_Picklist" : [
"{Option_1}",
"{Option_2}",
"{Option_3}"
], - 日期示例:
"Date_1": "2017-08-16",
- 日期/时间示例:
"Date_Time": "2017-08-16T14:32:23+05:30",
- 数字示例:
"Number_1": 575,
- 货币示例:
"Currency_1": 250000,
- 小数示例:
"Decimal_1": 250000.50,
- 百分比示例:
"Percent_1": 25,
- 长整型示例:
"Long_Integer_1": "250000000000000",
- 复选框示例:
"Checkbox_1": false,
- URL示例:
"URL_1": "https://www.zoho.com/crm",
- 查找示例:
"Lookup" : {
"name" : "James"
"id" : "425248000000104001"
}, - 记录所有者示例:
"Owner": {
"name" : "Patricia"
"id": "425248000000104003"
}, - 布局示例:
"Layout": {
"name" : "Custom Layout 1"
"id": "425248000000404433"
}, - 自动编号示例:
"Auto_Number_1": "LEAD44N",
Where LEAD - Prefix, 44 - Assigment Number and N - Suffix.
插入记录
用途
将新实体添加到模块
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 CREATE - 在模块中创建记录 |
请求方法
POST
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 | 详细的密钥值 |
---|---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 | |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) | |
403 | NO_PERMISSION | 拒绝创建 '{modulename}' | 没有插入记录的权限 | |
400 | MANDATORY_NOT_FOUND | 未找到所需字段。 | 如果数据键不可用。 | { "api_name": "data" } |
400 | INVALID_DATA | 如果数据键的数据类型无效。 | { "expected_data_type": "jsonarray", "api_name": "data" }, |
|
202 | INVALID_DATA (在记录索引中) | 无效的数据 | 如果传递的记录不是一个 JSON 对象 | { "expected_data_type": "jsonobject", "index": 0 } |
201 | MANDATORY_NOT_FOUND | 未找到所需字段。 | 如果强制性字段不可用。 | { "api_name": "Last_Name" } |
202 | INVALID_DATA | 无效数据 | 如果数据类型不匹配。. | { "expected_data_type": "double", "api_name": "Decimal_1" } |
备注:
- 如果 字段值的长度 大于为该字段定义的最大长度,则抛出错误。
- 如果当字段值长度超过限制时在函数中使用API,那么该函数将从API接收错误响应。例如:如果一个“文本字段”的最大长度定义为10,那么API中给它的值不能是“12345678901”,因为它有11个字符。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@newlead.json"
-X POST
样本请求:
List<ZCRMRecord> records = new ArrayList<>();
ZCRMRecord record1 = new ZCRMRecord("Products"); //模块 API 名称
ZCRMUser owner = ZCRMUser.getInstance(12345678l);//用户 ID
record1.setOwner(owner);
record1.setFieldValue("Product_Name", "mass_create1");// 字段 API 名称及其值
ZCRMRecord record2 = new ZCRMRecord("Products"); //模块 API 名称
ZCRMUser owner = ZCRMUser.getInstance(5676875678l);// 用户 ID
record2.setOwner(owner);
record2.setFieldValue("Product_Name", "mass_create2");// 字段 API 名称及其值
records.add(record1);
records.add(record2);
ZCRMModule module = ZCRMModule.getInstance("Products"); //模块 API 名称
BulkAPIResponse response = module.createRecords(records);
List<ZCRMRecord> insertedRecords = (List<ZCRMRecord>) response.getData();
List<BulkAPIResponse.EntityResponse> entityResponses =
response.getEntityResponses();// 检查请求的状态
String rec1Status = entityResponses.get(0).getStatus();//检查 record1 的状态
String rec2Status = entityResponses.get(1).getStatus();//检查 record2 的状态
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Invoices");
$bulkAPIResponse=$zcrmModuleIns->createRecords($recordsArray); // $recordsArray - ZCRMRecord实例的数组,其中包含创建所需的数据。
$entityResponses = $bulkAPIResponse->getEntityResponses();
foreach($entityResponses as $entityResponse)
{
if("success"==$entityResponse->getStatus())
{
echo "Status:".$entityResponse->getStatus();
echo "Message:".$entityResponse->getMessage();
echo "Code:".$entityResponse->getCode();
$createdRecordInstance=$entityResponse->getData();
echo "EntityID:".$createdRecordInstance->getEntityId();
echo "moduleAPIName:".$createdRecordInstance->getModuleAPIName();
….
}
}
Sample Invoice record instance with filled data
$record=ZCRMRecord::getInstance("Invoices",null);
$record->setFieldValue("Subject","Iphone sale to John");
$record->setFieldValue("Account_Name","410405000001016021");
$productInstance=ZCRMRecord::getInstance("Products",410405000001108011);
$lineItem=ZCRMInventoryLineItem::getInstance($productInstance);
$taxInstance1=ZCRMTax::getInstance("Sales Tax");
$taxInstance1->setPercentage(2);
$taxInstance1->setValue(10);
$lineItem->addLineTax($taxInstance1);
$taxInstance1=ZCRMTax::getInstance("Vat");
$taxInstance1->setPercentage(12);
$taxInstance1->setValue(60);
$lineItem->addLineTax($taxInstance1);
$lineItem->setQuantity(100);
$lineItem->setDiscount(0.5);
$record->addLineItem($lineItem);
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
records = []
record1 = accounts_module.get_new_record
user_id = “1234567890”
record1.set_owner(user_id, api_obj.load_user_data)
record1.setfield_byname(“Account_Name”, “Account 1”)
record2 = accounts_module.get_new_record
records[records.length] = record1
record2.set_owner(user_id, api_obj.load_user_data)
record1.setfield_byname(“Account_Name”, “Account 2”)
records[records.length] = record2
bool, message, ids = upsert(records)
print “Ids for the newly created records are #{ids.inspect}”
样本请求:
def create_records(self):
try:
record_ins_list=list()
for i in range(0,2):
record=ZCRMRecord.get_instance('Invoices') #模块 API 名称
record.set_field_value('Subject', 'Invoice'+str(i))
record.set_field_value('Account_Name', 'IIIT')
user=ZCRMUser.get_instance(440872000000175001,'Python Automation User1')
record.set_field_value('Owner',user)
line_item=ZCRMInventoryLineItem.get_instance(ZCRMRecord.get_instance("Products",440872000000224005))
line_item.discount=10
line_item.list_price=8
line_item.description='Product Description'
line_item.quantity=100
line_item.tax_amount=2.5
taxIns=ZCRMTax.get_instance("Vat")
taxIns.percentage=5
line_item.line_tax.append(taxIns)
record.add_line_item(line_item)
record_ins_list.append(record)
resp=ZCRMModule.get_instance('Invoices').create_records(record_ins_list)
print resp.status_code
entity_responses=resp.bulk_entity_response
for entity_response in entity_responses:
print entity_response.details
print entity_response.status
print entity_response.message
print entity_response.code
print entity_response.data.entity_id
print entity_response.data.created_by.id
print entity_response.data.created_time
print entity_response.data.modified_by.id
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.bulkCreate(<module String>,<dataList List>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
必填: module,dataList
样本请求:创建价格表记录
resp = zoho.crm.bulkCreate("Price_Books", [{"Owner": {"id": "7000000031553"},"Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name oops1"},{"Owner": {"id": "7000000031553"},"Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name oops2"}]);
样本请求:插入线索
resp = zoho.crm.bulkCreate("Leads", [{"Last_Name":"Patricia Boyle"},{"Last_Name":"Deborah Grogan"}], {"trigger":["workflow","blueprint","approval"]});
样本请求: 在自定义模块("Students")中创建记录
resp=zoho.crm.bulkCreate("Students",[{"Name":"Patricia Boyle new","Owner":"7000000031553","Email":"p.boyle@zylker.com","Secondary_Email":"sdf@zylker.com","Single_Line":"Single_Line 22 new","Multi_Line_1":"Room for Negotiation","Currency_1":1.245,"Email_1":"adf@aps.com","Email_Opt_Out":true,"Decimal_1":2.34,"Phone_1":"9000000000","Percent_1":9,"Tag":{"tag"},"Pick_List_1":"new pick list","Long_Integer_1":"123456789012345690","Multi_Select_1":["Val 1","Val 2"],"Checkbox_1":true,"Date_1":"2018-01-31","website":"www.zoho.@","Date_Time_1":"2018-02-01T12:30:00+05:30","Lookup_1":{"id":"7000000032001"},"Number_1":1},{ "Name":"Deborah Grogan","Owner":"7000000031553","Email":"d.grogan@zylker.com","Secondary_Email":"dgrgn@zylker.com","Single_Line":"Single_Line 23 new","Multi_Line_1":"Negotiation succeeded","Currency_1":1.245,"Email_1":"adf@aps.com","Email_Opt_Out":true,"Decimal_1":2.34,"Phone_1":"9000000000","Percent_1":9,"Tag":{"tag"},"Pick_List_1":"new pick list","Long_Integer_1":"123456789012345690","Multi_Select_1":["Val 1","Val 2"],"Checkbox_1":true,"Date_1":"2018-01-31","website":"www.zylker.com","Date_Time_1":"2018-02-01T12:30:00+05:30","Lookup_1":{"id":"7000000032001"},"Number_1":1}]);
在上面的请求中,@newlead.json 包含样本输入数据。
备注:
- 基于唯一字段,检查每个插入记录API调用的副本。
- 每个API调用最多可以插入100条记录。
- 在输入中提供字段API名称以及要填充的相应值。
- trigger 输入可以是 workflow, approval 或 blueprint。如果没有提到触发器,则将执行与API相关的工作流、审批和蓝图。输入触发器值为 [] 将不执行工作流。
样本输入:
样本响应:
备注:
- 具有 子表单 详细信息的记录也可以使用Records API插入CRM。请查看下面的链接以了解关于在记录中添加子表单信息的更多内容。
示例属性:
- 单行示例:
"Single_Line_1": "这是一个单行",
- 多行示例:
"Multi_Line_1": "This is the first line \n Now for the second Line",
- 邮箱示例:
"Email_1": "p.boyle@zylker.com",
- 电话示例:
"Phone_1": "9900000000",
- 选择列表示例:
"Picklist_1" : "In Progress",
- 多选列表示例:
"Multi-Select_Picklist" : [
"{Option_1}",
"{Option_2}",
"{Option_3}"
], - 日期示例:
"Date_1": "2017-08-16",
- 日期/时间示例:
"Date_Time": "2017-08-16T14:32:23+05:30",
- 数字示例:
"Number_1": 575,
- 货币示例:
"Currency_1": 250000,
- 小数示例:
"Decimal_1": 250000.50,
- 百分比示例:
"Percent_1": 25,
- 长整型示例:
"Long_Integer_1": "250000000000000",
- 复选框示例:
"Checkbox_1": false,
- URL示例:
"URL_1": "https://www.zoho.com/crm",
- 查找示例:
"Lookup" : {
"id" : "425248000000104001"
}, - 记录所有者示例:
"Owner": {
"id": "425248000000104003"
}, - 布局示例:
"Layout": {
"id": "425248000000404433"
},
更新记录
用途
用来更新模块中的现有实体
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 UPDATE - 更新模块中的记录 |
请求方法
PUT
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
备注:
- 如果 字段值长度 大于为该字段定义的最大长度,则抛出错误。
- 如果当字段值长度超过限制时在函数中使用API,那么该函数将从API接收错误响应。例如:如果一个“文本字段”的最大长度定义为10,那么API中给它的值不能是“12345678901”,因为它有11个字符。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads"
-X PUT
-d "@updatelead.json"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
List<Long> entityIDs = new ArrayList<>();// 记录id列表
entityIDs.add(426000621092l);
entityIDs.add(426859000010l);
ZCRMModule module = ZCRMModule.getInstance("Products");//模块api名称
BulkAPIResponse response = module.updateRecords(entityIDs,"Product_Name","massUpdate");//字段api名称和要更新的值
List<ZCRMRecord> updatedRecords = (List<ZCRMRecord>) response.getData();
List<BulkAPIResponse.EntityResponse> entityResponses = response.getEntityResponses();// 检查请求的状态
String rec1Status = entityResponses.get(0).getStatus();//检查 record1 的状态
String rec2Status = entityResponses.get(1).getStatus();//检查 record2 的状态
样本请求:
$idList=array(410405000001076001,410405000001021027,410405000000497012);
$zcrmModuleIns = ZCRMModule::getInstance("Contacts");
$bulkAPIResponse=$zcrmModuleIns->updateRecords($idList,"Account_Name","NewAccount");
$entityResponses = $bulkAPIResponse->getEntityResponses();
foreach($entityResponses as $entityResponse)
{
if("success"==$entityResponse->getStatus())
{
echo "Status:".$entityResponse->getStatus();
echo "Message:".$entityResponse->getMessage();
echo "Code:".$entityResponse->getCode();
$recordIns=$entityResponse->getData();
echo "EntityID:".$recordIns->getEntityId();
echo "moduleAPIName:".$recordIns->getModuleAPIName();
….
}
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id1 = “1234567890”
account_id2 = “0987654321”
record1 = accounts_module.get_record(account_id1)
record2 = accounts_module.get_record(account_id2)
record1.set(“Account_Name”, “Updated account1 name”)
record2.set(“Account_Name”, “Updated account2 name”)
records = {}
records[record1.record_id] = record1
records[record2.record_id] = record2
success_ids, failed_ids = accounts_module.update_records(records)
样本请求:
def update_records(self):
try:
module_ins=ZCRMModule.get_instance('Invoices') #模块 API 名称
entityid_list=[440872000000280035,440872000000278029,440872000000278028]
bulk_resp=module_ins.update_records(entityid_list, 'Status', 'Created')
print bulk_resp.status_code
entity_responses=bulk_resp.bulk_entity_response
for entity_response in entity_responses:
print entity_response.details
print entity_response.status
print entity_response.message
print entity_response.code
print entity_response.data.entity_id
print entity_response.data.created_by.id
print entity_response.data.created_time
print entity_response.data.modified_by.id
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.bulkUpdate(<module String>,<dataList List>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : module,dataList
样本请求: 更新价格表记录
resp = zoho.crm.bulkUpdate("Price_Books", [{"Owner": {"id": "7000000031553"},"id":"7000000037030","Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name oops1 updated"},{"Owner": {"id": "7000000031553"},"Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential", "id":"7000000037031","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name oops2 updated"}]);
备注:
在上面的请求中, @updatelead.json 包含样本输入。
备注:
- 每个基于唯一字段的更新记录API调用都会检查副本。
- 每个API调用最多可以更新100条记录。
- 在输入中提供字段API名称以及要填充的相应值。
- 在trigger 中的输入可以是 workflow, approval 或 blueprint。如果没有提到触发器,则将执行与API相关的工作流、审批和蓝图。输入触发器值为[] 将不执行工作流。
样本响应:
备注:
- 通过记录 API 可以更新包含子表单 信息的记录明细。请查看下面的链接以了解关于更新记录中的子表单信息的更多内容。
示例属性:
- 单行示例:
"Single_Line_1": "This is single line",
- 多行示例:
"Multi_Line_1": "This is the first line \n Now for the second Line",
- 邮箱示例:
"Email_1": "p.boyle@zylker.com",
- 电话示例:
"Phone_1": "9900000000",
- 选择列表示例:
"Picklist_1" : "In Progress",
- 多选列表示例:
"Multi-Select_Picklist" : [
"{Option_1}",
"{Option_2}",
"{Option_3}"
], - 日期示例:
"Date_1": "2017-08-16",
- 日期/时间示例:
"Date_Time": "2017-08-16T14:32:23+05:30",
- 数字示例:
"Number_1": 575,
- 货币示例:
"Currency_1": 250000,
- 小数示例:
"Decimal_1": 250000.50,
- 百分比示例:
"Percent_1": 25,
- 长整型示例:
"Long_Integer_1": "250000000000000",
- 复选框示例:
"Checkbox_1": false,
- URL示例:
"URL_1": "https://www.zoho.com/crm",
- 查找示例:
"Lookup" : {
"id" : "425248000000104001"
}, - 记录所有者示例:
"Owner": {
"id": "425248000000104003"
}, - 布局示例:
"Layout": {
"id": "425248000000404433"
},
插入或更新 (upsert)
用途
如果该记录不存在(将根据重复检查插入或更新记录),则插入新记录。如果记录已经存在,那么它将被相应地更新。这是用来避免创建重复的记录。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/upsert
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,服务支持,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 CREATE - 在模块中创建记录 |
参数
参数名称 | 数据类型 | 描述 | 可能的值 |
---|---|---|---|
duplicate_check_fields (可选) | 字符串 | 根据用户定义的严格顺序、系统定义的字段和其他惟一字段指定的字段检查重复记录。 | 多个字段API名称,逗号分隔。例如:Last_Name,Email |
备注:
- 如果用户没有指定duplicate ate_check_fields,默认情况下将使用系统定义的duplicate check字段和惟一字段。见下文。
请求方法
POST
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) |
备注:
- 如果字段值长度大于为该字段定义的最大长度,则抛出错误。
- 如果当字段值长度超过限制时在函数中使用API,那么该函数将从API接收错误响应。例如:如果一个“文本字段”的最大长度定义为10,那么API中给它的值不能是“12345678901”,因为它有11个字符。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/upsert"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@upsertlead.json"
-X POST
样本请求:
List records = new ArrayList<>();
ZCRMRecord record1 = new ZCRMRecord("Leads"); // 模块 API 名称
record1.setFieldValue("Company", "Zylker");
record1.setFieldValue("First_name", "Daly");
record1.setFieldValue("Last_Name", "Paul");
record1.setFieldValue("Email", "p.daly@zylker.com");
record1.setFieldValue("State", "Texas");
ZCRMRecord record2 = new ZCRMRecord("Leads"); // 模块 API 名称
record2.setFieldValue("Company", "ekhrj");
record2.setFieldValue("First_name", "John");
record2.setFieldValue("Last_Name", "smith");
record2.setFieldValue("Email", "john.a@ekhrj.com");
record2.setFieldValue("State", "Texas");
records.add(record1);
records.add(record2);
ZCRMModule module = ZCRMModule.getInstance("Leads"); //模块 API 名称
BulkAPIResponse response = module.upsertRecords(records);
List<ZCRMRecord> upsertedRecords = (List<ZCRMRecord>) response.getData();
List<BulkAPIResponse.EntityResponse> entityResponses = response.getEntityResponses();// 检查请求的状态
String rec1Status = entityResponses.get(0).getStatus();//检查 record1 的状态
String rec2Status = entityResponses.get(1).getStatus();//检查 record2 的状态
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Contacts");
$bulkAPIResponse=$zcrmModuleIns->upsertRecords($recordsArray); // $recordsArray - 包含upsert所需数据的ZCRMRecord实例数组。
$entityResponses = $bulkAPIResponse->getEntityResponses();
foreach($entityResponses as $entityResponse)
{
if("success"==$entityResponse->getStatus())
{
echo "Status:".$entityResponse->getStatus();
echo "Message:".$entityResponse->getMessage();
echo "Code:".$entityResponse->getCode();
$upsertData=$entityResponse->getUpsertDetails();
echo "UPSERT_ACTION:".$upsertData[“action”];
echo "UPSERT_DUPLICATE_FIELD:".$upsertData[“duplicate_field”];
$createdRecordInstance=$entityResponse->getData();
echo "EntityID:".$createdRecordInstance->getEntityId();
echo "moduleAPIName:".$createdRecordInstance->getModuleAPIName();
….
}
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
new_record = accounts_module.get_new_record
account_id = “1234567890”
update_record = accounts_module.get_record(account_id)
new_record.set(“Account_Name”, “Account name”)
update_record.set(“Account_Name”, “Updated Account name”)
records = []
records[records.length] = new_record
records[records.length] = update_record
bool, message, s_ids = accounts_module.upsert(records)
样本请求:
def upsert_records(self):
try:
record_ins_list=list()
for i in range(0,2):
record=ZCRMRecord.get_instance('Invoices') #模块 API 名称
record.set_field_value('Subject', 'Invoice'+str(i))
record.set_field_value('Account_Name', 'IIIT')
user=ZCRMUser.get_instance(440872000000175001,'Python Automation User1')
record.set_field_value('Owner',user
line_item=ZCRMInventoryLineItem.get_instance(ZCRMRecord.get_instance("Products",440872000000224005))
line_item.discount=10
line_item.list_price=8
line_item.description='Product Description'
line_item.quantity=100
line_item.tax_amount=2.5
taxIns=ZCRMTax.get_instance("Vat")
taxIns.percentage=5
line_item.line_tax.append(taxIns)
record.add_line_item(line_item)
record_ins_list.append(record)
record=ZCRMRecord.get_instance('Invoices',440872000000248818)
record.set_field_value('Subject', 'Invoice1.1')
line_item=ZCRMInventoryLineItem.get_instance(ZCRMRecord.get_instance("Products",440872000000224005))
line_item.discount=10
line_item.list_price=8
line_item.description='Product Description'
line_item.quantity=100
line_item.tax_amount=2.5
taxIns=ZCRMTax.get_instance("Vat")
taxIns.percentage=5
line_item.line_tax.append(taxIns)
record.add_line_item(line_item)
record_ins_list.append(record)
resp=ZCRMModule.get_instance('Invoices').upsert_records(record_ins_list)
print resp.status_code
entity_responses=resp.bulk_entity_response
for entity_response in entity_responses:
print entity_response.details
print entity_response.status
print entity_response.message
print entity_response.code
print entity_response.data.entity_id
print entity_response.data.created_by.id
print entity_response.data.created_time
print entity_response.data.modified_by.id
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.upsert(<module String>,<dataMap Map>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : module,dataMap
样本请求:
resp = zoho.crm.upsert("Leads", {"Last_Name":"Patricia upsert UF2", "UF":"p.boyle@zylker.com", "Email":"d.grogan@zylker.com"}, {"duplicate_check_fields":["UF" , "Email"]});
备注:
在上面的请求中,@upsertlead.json包含样本输入数据。
样本输入:
备注:
- 每个API调用最多可以插入/更新100条记录。
- 在输入中提供字段API名称以及要填充的相应值。
- 在 trigger 输入中可以是 workflow, approval 或 blueprint。 如果没有提到触发器,则将执行与API相关的工作流、审批和蓝图。输入触发器的值为[] 将不执行工作流。
样本响应:
备注:
- 可以通过记录 API来更新包含子表单信息的记录明细。
系统定义的重复检查字段
- 系统定义的重复检查字段的格式如下:{module_name} - {field_API_name}
- Leads - Email, Accounts - Account_Name, Contacts - Email, Deals - Deal_Name, Campaigns - Campaign_Name, Cases - Subject, Solutions - Solution_Title, Products - Product_Name, Vendors - Vendor_Name, PriceBooks - Price_Book_Name, Quotes - Subject, SalesOrders - Subject, PurchaseOrders - Subject, Invoices - Subject, CustomModules - Name
示例属性:
- 单行示例:
"Single_Line_1": "This is single line",
- 多行示例:
"Multi_Line_1": "This is the first line \n Now for the second Line",
- 邮箱示例:
"Email_1": "p.boyle@zylker.com",
- 电话示例:
"Phone_1": "9900000000",
- 选择列表示例:
"Picklist_1" : "In Progress",
- 多选列表示例:
"Multi-Select_Picklist" : [
"{Option_1}",
"{Option_2}",
"{Option_3}"
], - 日期示例:
"Date_1": "2017-08-16",
- 日期/时间示例:
"Date_Time": "2017-08-16T14:32:23+05:30",
- 数字示例:
"Number_1": 575,
- 货币示例:
"Currency_1": 250000,
- 小数示例:
"Decimal_1": 250000.50,
- 百分比示例:
"Percent_1": 25,
- 长整型示例:
"Long_Integer_1": "250000000000000",
- 复选框示例:
"Checkbox_1": false,
- URL示例:
"URL_1": "https://www.zoho.com/crm",
- 查找示例:
"Lookup" : {
"id" : "425248000000104001"
}, - 记录所有者示例:
"Owner": {
"id": "425248000000104003"
}, - 布局示例:
"Layout": {
"id": "425248000000404433"
},
删除记录
用途
从模块中删除实体或记录。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}?ids={EntityID}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 DELETE - 删除模块中的记录 |
请求方法
DELETE
参数
参数名称 | 数据类型 | 描述 | 可能的值 |
---|---|---|---|
ids (必填) | 整型 | 指定记录的唯一 ID。 | 实体ID,由逗号分隔。例如:410405000002264040,410405000002264025 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads?ids=410405000002264040,410405000002264025"
-X DELETE
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
在上面的示例中,ID为“410405000002264040”和“410405000002264025”的线索记录将被删除。
样本请求:
样本请求:
样本请求:
样本请求:
def delete_records(self):
try:
entityid_list=[1386586000001856020,1386586000001856019]
resp=ZCRMModule.get_instance('Invoices').delete_records(entityid_list)
print resp.status_code
entity_responses=resp.bulk_entity_response
for entity_response in entity_responses:
print entity_response.details
print entity_response.status
print entity_response.message
print entity_response.code
print entity_response.data.entity_id
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
备注:
- 每个API调用最多可以删除100条记录。
- 默认情况下,将执行与此API相关的所有工作流。
- 所有与此API相关的子表单都将被删除。
样本响应:
获取删除的记录列表
用途
获取已删除记录的列表
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/deleted
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对记录的完全访问 READ - 获取模块中的记录 |
请求方法
GET
请求头文件
头文件名 | 数据类型 | 描述 | 示例 |
---|---|---|---|
If-Modified-Since (可选) | DateTime(ISO 8601 格式) | 获取最近修改记录的列表 | 2019-07-25T15:26:49+05:30 |
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
module (必填) | 字符串 | 指定模块 API 名称 |
type | 字符串 | All获取所有已删除记录的列表 Recycle从回收站获取已删除记录的列表 Permanent获取永久删除记录的列表 |
page (可选) | 整型 | 从各个页面获取记录列表。页的默认值是 1。 |
per_page (可选) | 整型 | 获取每页可用记录的列表。每个页面的默认值为 200。 |
备注:
page 和 per_page 参数用于根据记录在CRM中的位置提取记录。 让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200条以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 |
---|---|---|---|
400 | INVALID_DATA | 无效数据 | 给定的参数值类型无效。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/deleted?type=All"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Leads"); //模块 API 名称
BulkAPIResponse response = module.getAllDeletedRecords();
List<ZCRMRecord> deletedRecords = (List<ZCRMRecord>) response.getData();
List<ZCRMTrashRecord> recycleBinRecords = (List<ZCRMTrashRecord>) module.getRecycleBinRecords().getData();
List<ZCRMTrashRecord> permenantDeleteRecords = (List<ZCRMTrashRecord>) module.getPermanentlyDeletedRecords().getData();
样本请求:
获取所有已删除的记录
$response=ZCRMModule::getInstance($moduleAPIName)->getAllDeletedRecords(); // $moduleAPIName - 模块的 API 名称。
获取所有的回收站记录
$response=ZCRMModule::getInstance($moduleAPIName)->getRecycleBinRecords();
获取永久删除的所有记录
$response=ZCRMModule::getInstance($moduleAPIName)->getPermanentlyDeletedRecords();
$records=$response->getData();
try{
foreach ($records as $record){
echo $record->getEntityId();
echo $record->getDisplayName();
echo $record->getType();
$createdBy=$record->getCreatedBy();
$deletedBy=$record->getDeletedBy();
if($createdBy!=null)
{
echo $createdBy->getId();
}
if($deletedBy!=null)
{
echo $deletedBy->getId();
}
echo $record->getDeletedTime();
}
}
catch (ZCRMException $ex)
{
echo $ex->getMessage();
echo $ex->getExceptionCode();
echo $ex->getFile();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
all_deleted_records = accounts_module.get_deleted_records
permanent_deleted_records = accounts_module.get_deleted_records(“permanent”)
recycle_deleted_records = accounts_module.get_deleted_records(“recycle”)
样本请求:
def get_deleted_records(self,delete_type):
try:
module_ins=ZCRMModule.get_instance('Invoices')
if delete_type=='permanent':
resp=module_ins.get_permanently_deleted_records()
elif delete_type=='recycle':
resp=module_ins.get_recyclebin_records()
else: delete_type=='recycle':
resp=module_ins.get_all_deleted_records()
print resp.status_code
trash_record_ins_arr=resp.data
resp_info=resp.info
print resp_info.count
print resp_info.page
print resp_info.per_page
print resp_info.is_more_records
for record_ins in trash_record_ins_arr:
print record_ins.id
print record_ins.type
print record_ins.display_name
if record_ins.created_by is not None:
print record_ins.created_by.id
if record_ins.deleted_by is not None:
print record_ins.deleted_by.id
print record_ins.deleted_time
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
搜索记录
用途
检索与搜索条件匹配的记录
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/search
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注和活动。 | ALL - 对记录的完全访问 READ - 获取模块中的记录 |
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
criteria | 字符串 | 按照以下显示的标准执行搜索。(({apiname}:{starts_with|equals}:{value}) 和 ({apiname}:{starts_with|equals}:{value}))您可以使用equals和starts_with条件搜索最多10个条件(具有相同或不同的列),如上所示。 |
字符串 | {email} - 通过电子邮件执行模块搜索。将搜索并列出指定模块的所有电子邮件字段。 | |
phone | 字符串 | {Phone} - 通过电话号码执行模块搜索。将搜索并列出指定模块的所有电话字段。 |
word | 字符串 | {Word}- 按文字执行全局搜索。 |
page (可选) | 整型 | 从各个页面获取记录列表。页的默认值是 1. |
per_page (可选) | 整型 | 获取每页可用记录的列表。每个页面的默认值为 200. |
备注:
- 以上四个参数中只有一个在某个时间点有效。此外,如果同时给出两个参数,优先级将按照顺序给出,即电子邮件、电话和文字,并且只有一个参数可以工作。
- page 和 per_page 参数用于根据记录在CRM中的位置提取记录。让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200条以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Contacts/search?phone=888-555-2145"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
通过电话搜索:
ZCRMModule module = ZCRMModule.getInstance("Contacts"); // 模块 API 名称
BulkAPIResponse response = module.searchByPhone("123456789", 1, 10);// 获取带有页面和每个页面计数的搜索记录
List<ZCRMRecord> records = (List<ZCRMRecord>) response.getData(); //匹配的记录
样本请求:
按照邮件搜索:
ZCRMModule module = ZCRMModule.getInstance("Contacts"); // 模块 API 名称
BulkAPIResponse response = module.searchByEmail("bruce@wayne.com", 1, 10);// 获取带有页面和每个页面计数的搜索记录
List<ZCRMRecord> records = (List<ZCRMRecord>) response.getData(); //匹配的记录
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Products");
$bulkAPIResponse=$zcrmModuleIns->searchRecords("ip");
$records = $bulkAPIResponse->getData(); // $records - ZCRMRecord实例的数组。
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
records = accounts_module.search_records(“test”, “test@domain.com“)
records.each do |r_id, r_obj|
print “r_id”, “r_obj.class”
end
样本请求:
def search_records(self):
try:
module_ins=ZCRMModule.get_instance('Products') #模块 API 名称
resp=module_ins.search_records('Orange') #search key word
print resp.status_code
resp_info=resp.info
print resp_info.count
print resp_info.page
print resp_info.per_page
print resp_info.is_more_records
record_ins_arr=resp.data
for record_ins in record_ins_arr:
print record_ins.entity_id
print record_ins.owner.id
print record_ins.created_by.id
print record_ins.modified_by.id
print record_ins.created_time
print record_ins.modified_time
print record_ins.get_field_value('Product_Name')
print record_ins.get_field_value('Product_Code')
print record_ins.get_field_value('Vendor_Name')
print record_ins.get_field_value('Commission_Rate')
print record_ins.get_field_value('Qty_in_Demand')
print record_ins.get_field_value('Tax')
print record_ins.get_field_value('Unit_Price')
print record_ins.get_field_value('Reorder_Level')
print record_ins.get_field_value('Usage_Unit')
print record_ins.get_field_value('Qty_Ordered')
print record_ins.get_field_value('Qty_in_Stock')
print record_ins.get_field_value('Sales_Start_Date')
print record_ins.get_field_value('Sales_End_Date')
print record_ins.get_field_value('Taxable')
print record_ins.get_field_value('Support_Expiry_Date')
print record_ins.get_field_value('Manufacturer')
print record_ins.get_field_value('Description')
print record_ins.field_data
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.searchRecords(<module String>,<criteria String>,<page Long>,<perPage Long>,<connectionName String>,<userAccess Boolean>);
mandatory : module,criteria
样本请求:
resp = zoho.crm.searchRecords("Leads", "((Last_Name:equals:Hawkins) or (Last_Name:starts_with:Pat))");
样本响应:
按照邮件搜索
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/search?email=p.daly@zylker.com"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本响应:
单个记录 API
获取指定记录
用途
用来获取指定的记录
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注,审批和活动。 | ALL - 对记录的完全访问 READ - 获取模块中的记录 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000698006"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
在上述示例中,将检索ID为“410888000000698006”的线索记录
样本请求:
ZCRMModule module = ZCRMModule.getInstance("Products");//模块 API 名称
APIResponse response = module.getRecord(1234567890l);//记录 ID
ZCRMRecord record = (ZCRMRecord) response.getData();
样本请求:
$apiResponse=ZCRMModule::getInstance('Leads')->getRecord(410405000001519001); // 410405000001519001 - 线索 ID
$record=$apiResponse->getData();
echo $record->getEntityId();
echo $record->getModuleApiName();
echo $record->getLookupLabel();
echo $record->getCreatedBy()->getId();
echo $record->getModifiedBy()->getId();
echo $record->getOwner()->getId();
echo $record->getCreatedTime();
echo $record->getModifiedTime();
$map=$record->getData();
foreach ($map as $key=>$value)
{
if($value instanceof ZCRMRecord)
{
echo "\n".$value->getEntityId().":".$value->getModuleApiName().":".$value->getLookupLabel();
}
else
{
echo $key.":".$value;
}
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id = “1234567890”
record = accounts_module.get_record(account_id)
#record is a ZCRMRecord object
样本请求:
def get_record(self):
try:
#record=ZCRMRecord.get_instance('Leads',440872000000219003)#440872000000219003 is leadid
record=ZCRMRecord.get_instance('Invoices',1386586000000803061)
resp=record.get()
print resp.status_code
print resp.data.entity_id
print resp.data.created_by.id
print resp.data.modified_by.id
print resp.data.owner.id
print resp.data.created_by.name
print resp.data.created_time
print resp.data.modified_time
print resp.data.get_field_value('Email')
print resp.data.get_field_value('Last_Name')
#print resp.data.field_data
if resp.data.line_items is not None:
for line_item in resp.data.line_items:
print "::::::LINE ITEM DETAILS::::::"
print line_item.id
print line_item.product.lookup_label
print line_item.product.get_field_value('Product_Code')
print line_item.product.entity_id
print line_item.list_price
print line_item.quantity
print line_item.description
print line_item.total
print line_item.discount
print line_item.discount_percentage
print line_item.total_after_discount
print line_item.tax_amount
print line_item.net_total
print line_item.delete_flag
if line_item.line_tax is not None:
for tax in line_item.line_tax:
print ":::::: TAX DETAILS ::::::"
print tax.name
print tax.value
print tax.percentage
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.getRecordById(<module String>,<recordID Long>,<connectionName String>,<userAccess Boolean>);
mandatory : module,recordID
样本请求:
resp = zoho.crm.getRecordById("Price_Books", 410888000000673626);
样本响应:
备注:
- 子表单细节也可以在响应的JSON对象中获得。
- 子表单细节显示为您创建的子表单的api名称。例如,如果子表单名是 "Sub form1", 响应中的 API 名称是 "Sub_form1".
示例属性:
- 单行示例:
"Single_Line_1": "This is single line",
- 多行示例:
"Multi_Line_1": "This is the first line \n Now for the second Line",
- 邮箱示例:
"Email_1": "p.boyle@zylker.com",
- 电话示例:
"Phone_1": "9900000000",
- 选择列表示例:
"Picklist_1" : "In Progress",
- 多选列表示例:
"Multi-Select_Picklist" : [
"{Option_1}",
"{Option_2}",
"{Option_3}"
], - 日期示例:
"Date_1": "2017-08-16",
- 日期/时间示例:
"Date_Time": "2017-08-16T14:32:23+05:30",
- 数字示例:
"Number_1": 575,
- 货币示例:
"Currency_1": 250000,
- 小数示例:
"Decimal_1": 250000.50,
- 百分比示例:
"Percent_1": 25,
- 长整型示例:
"Long_Integer_1": "250000000000000",
- 复选框示例:
"Checkbox_1": false,
- URL示例:
"URL_1": "https://www.zoho.com.cn/crm",
- 查找示例:
"Lookup" : {
"name" : "James"
"id" : "425248000000104001"
}, - 记录所有者示例:
"Owner": {
"name" : "Patricia"
"id": "425248000000104003"
}, - 布局示例:
"Layout": {
"name" : "Custom Layout 1"
"id": "425248000000404433"
}, - 自动编号示例:
"Auto_Number_1": "LEAD44N",
Where LEAD - Prefix, 44 - Assigment Number and N - Suffix.
插入指定记录
用途
将一个新记录插入到模块中
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 CREATE - 在模块中创建记录 |
请求方法
POST
可能的错误
HTTP 状态 | 错误码 | 消息 | 原因 | 详细的密钥值 |
---|---|---|---|---|
400 | INVALID_MODULE | 给定的模块名看起来无效 | 无效的模块名、无选项卡权限或模块可能已从整齐有序的模块中删除 | |
400 | INVALID_MODULE | 给定的模块在 API 中不受支持 | 诸如文档和项目之类的模块在当前 API 中不受支持。(一旦这些模块受支持,则此错误将不会显示。) | |
403 | NO_PERMISSION | 拒绝创建“{modulename}”的权限 | 没有插入记录的权限 | |
400 | MANDATORY_NOT_FOUND | 未找到所需字段。 | 如果数据键不可用。 | { "api_name": "data" } |
400 | INVALID_DATA | 无效数据 | 如果数据键的数据类型无效。 | { "expected_data_type": "jsonarray", "api_name": "data" }, |
202 | INVALID_DATA (at the record index) | 无效数据 | 如果传递的记录不是一个 JSON 对象 | { "expected_data_type": "jsonobject", "index": 0 } |
201 | MANDATORY_NOT_FOUND | 未找到所需字段。 | 如果强制性字段不可用。 | { "api_name": "Last_Name" } |
202 | INVALID_DATA | 无效数据 | 如果数据类型不匹配。 | { "expected_data_type": "double", "api_name": "Decimal_1" } |
备注:
- 如果字段值长度大于为该字段定义的最大长度,将引发错误。
- 如果当字段值长度超过限制时在函数中使用API,那么该函数将从API接收错误响应。例如:如果一个“文本字段”的最大长度定义为10,那么API中给它的值不能是“12345678901”,因为它有11个字符。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@newlead.json"
-X POST
样本请求:
List<ZCRMRecord> records = new ArrayList<>();
ZCRMRecord record1 = new ZCRMRecord("Products"); //模块 API 名称
ZCRMUser owner = ZCRMUser.getInstance(12345678l);// 用户 ID
record1.setOwner(owner);
record1.setFieldValue("Product_Name", "mass_create1");// 字段 API 名称及其值
ZCRMRecord record2 = new ZCRMRecord("Products"); //模块 API 名称
ZCRMUser owner = ZCRMUser.getInstance(5676875678l);// 用户 ID
record2.setOwner(owner);
record2.setFieldValue("Product_Name", "mass_create2");// 字段 API 名称及其值
records.add(record1);
records.add(record2);
ZCRMModule module = ZCRMModule.getInstance("Products"); //模块 API 名称
BulkAPIResponse response = module.createRecords(records);
List<ZCRMRecord> insertedRecords = (List<ZCRMRecord>) response.getData();
List<BulkAPIResponse.EntityResponse> entityResponses =
response.getEntityResponses();// 检查请求的状态
String rec1Status = entityResponses.get(0).getStatus();//检查record1的状态
String rec2Status = entityResponses.get(1).getStatus();//检查record2的状态
样本请求:
$zcrmModuleIns = ZCRMModule::getInstance("Invoices");
$bulkAPIResponse=$zcrmModuleIns->createRecords($recordsArray); // $recordsArray - ZCRMRecord实例的数组,其中包含创建所需的数据。
$entityResponses = $bulkAPIResponse->getEntityResponses();
foreach($entityResponses as $entityResponse)
{
if("success"==$entityResponse->getStatus())
{
echo "Status:".$entityResponse->getStatus();
echo "Message:".$entityResponse->getMessage();
echo "Code:".$entityResponse->getCode();
$createdRecordInstance=$entityResponse->getData();
echo "EntityID:".$createdRecordInstance->getEntityId();
echo "moduleAPIName:".$createdRecordInstance->getModuleAPIName();
….
}
}
填充数据的发货单记录实例
$record=ZCRMRecord::getInstance("Invoices",null);
$record->setFieldValue("Subject","Iphone sale to John");
$record->setFieldValue("Account_Name","410405000001016021");
$productInstance=ZCRMRecord::getInstance("Products",410405000001108011);
$lineItem=ZCRMInventoryLineItem::getInstance($productInstance);
$taxInstance1=ZCRMTax::getInstance("Sales Tax");
$taxInstance1->setPercentage(2);
$taxInstance1->setValue(10);
$lineItem->addLineTax($taxInstance1);
$taxInstance1=ZCRMTax::getInstance("Vat");
$taxInstance1->setPercentage(12);
$taxInstance1->setValue(60);
$lineItem->addLineTax($taxInstance1);
$lineItem->setQuantity(100);
$lineItem->setDiscount(0.5);
$record->addLineItem($lineItem);
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
records = []
record1 = accounts_module.get_new_record
user_id = “1234567890”
record1.set_owner(user_id, api_obj.load_user_data)
record1.setfield_byname(“Account_Name”, “Account 1”)
record2 = accounts_module.get_new_record
records[records.length] = record1
record2.set_owner(user_id, api_obj.load_user_data)
record1.setfield_byname(“Account_Name”, “Account 2”)
records[records.length] = record2
bool, message, ids = upsert(records)
print “Ids for the newly created records are #{ids.inspect}”
样本请求:
def create_record(self):
try:
record=ZCRMRecord.get_instance('Invoices')
record.set_field_value('Subject', 'Inv4')
record.set_field_value('Account_Name', 'IIIT')
user=ZCRMUser.get_instance(1386586000000105001,'Python User1')
record.set_field_value('Owner',user)
line_item=ZCRMInventoryLineItem.get_instance(ZCRMRecord.get_instance("Products",1386586000000803073))
line_item.discount=10
line_item.list_price=8
line_item.description='Product Description'
line_item.quantity=100
line_item.tax_amount=2.5
taxIns=ZCRMTax.get_instance("Vat")
taxIns.percentage=5
line_item.line_tax.append(taxIns)
record.add_line_item(line_item)
resp=record.create()
print resp.status_code
print resp.code
print resp.details
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.create(<module String>,<dataMap Map>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : module,dataMap
样本请求: 插入一条线索
resp = zoho.crm.create("Leads", {"Last_Name":"Patricia Boyle"},{"trigger":["workflow","blueprint","approval"]});
样本请求: 插入一个价格表
resp = zoho.crm.create("Price_Books", {"Owner": {"id": 410888000000698436},"Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name"});
样本请求: 在自定义模块(“Students”)中插入一条记录
resp = zoho.crm.create("Students", {"Name" : "Sname"});
在上面的请求中,@newlead。json包含样本输入数据。
备注:
- 基于唯一字段,检查每个插入记录API调用的副本。
- 在输入中提供字段API名称以及要填充的相应值。
- 触发器 输入可以是 工作流,审批 或 蓝图。如果没有提到触发器,则将执行与API相关的工作流、审批和蓝图。输入触发器值为[]将不执行工作流。
样本响应:
备注:
- 具有 子表单 信息的记录也可以使用Records API插入CRM。请查看下面的链接以了解关于在记录中添加子表单信息的更多信息。
示例属性:
- 单行示例:
"Single_Line_1": "This is single line",
- 多行示例:
"Multi_Line_1": "This is the first line \n Now for the second Line",
- 邮箱示例:
"Email_1": "p.boyle@zylker.com",
- 电话示例:
"Phone_1": "9900000000",
- 选择列表示例:
"Picklist_1" : "In Progress",
- 多选列表示例:
"Multi-Select_Picklist" : [
"{Option_1}",
"{Option_2}",
"{Option_3}"
], - 日期示例:
"Date_1": "2017-08-16",
- 日期/时间示例:
"Date_Time": "2017-08-16T14:32:23+05:30",
- 数字示例:
"Number_1": 575,
- 货币示例:
"Currency_1": 250000,
- 小数示例:
"Decimal_1": 250000.50,
- 百分比示例:
"Percent_1": 25,
- 长整型示例:
"Long_Integer_1": "250000000000000",
- 复选框示例:
"Checkbox_1": false,
- URL示例:
"URL_1": "https://www.zoho.com.cn/crm",
- 查找示例:
"Lookup" : {
"id" : "425248000000104001"
}, - 记录所有者示例:
"Owner": {
"id": "425248000000104003"
}, - 布局示例:
"Layout": {
"id": "425248000000404433"
},
更新指定记录
用途
更新指定的实体或记录
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}
module_api_name - 模块的 API 名称。
record_id - 指定记录的惟一ID。.
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注和活动。 | ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 UPDATE - 更新模块中的记录 |
请求方法
PUT
备注:
- 如果字段值长度 大于为该字段定义的最大长度,将引发错误。
- 如果当字段值长度超过限制时在函数中使用API,那么该函数将从API接收错误响应。例如:如果一个“文本字段”的最大长度定义为10,那么API中给它的值不能是“12345678901”,因为它有11个字符。
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000698006"
-X PUT
-d "@updatelead.json"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
在上述示例中,ID 为“410888000000698006”的线索记录将被更新。
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Products",1234567l);// 模块 API 名称 及其记录 ID
record.setFieldValue("Product_Name","name");// 字段 API 名称和要更新的值
ZCRMRecord lookup = ZCRMRecord.getInstance("Vendors",123456789l);// 供货商模块 API 名称及其记录 ID
record.setFieldValue("Vendor_Name", lookup);
APIResponse response = record.update();
ZCRMRecord updatedRecord = (ZCRMRecord) response.getData();
String recStatus = response.getStatus(); // 检查记录状态
样本请求:
$zcrmRecordIns = ZCRMRecord::getInstance("Leads", 410405000001304021);
$zcrmRecordIns->setFieldValue("Product_Name", “iPhone 6s Plus”);
$apiResponse=$zcrmRecordIns->update();
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id = “1234567890”
record = accounts_module.get_record(account_id)
is_update_success = api_obj.update_record(record)[0]
样本请求:
def update_record(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001856002)#1386586000001856002 is leadid
record.set_field_value('Last_Name', 'Python')
record.set_field_value('Mobile', '9999999999')
record.set_field_value('Phone', '9999999998')
user=ZCRMUser.get_instance(1386586000000105001,'Python User1')
record.set_field_value('Email', 'support@zohocrm.com')
record.set_field_value('Owner',user)
resp=record.update()
print resp.status_code
print resp.code
print resp.details
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.update(<module String>,<recordID Long>,<dataMap Map>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : module,recordID,dataMap
样本请求: 更新价格表记录
resp = zoho.crm.update("Price_Books", "7000000037030", {"Owner": {"id": "7000000031553"},"Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name oops1 updated twice"});
备注:
- 每个基于唯一字段的更新记录API调用都会检查副本。
- 在输入中提供字段API名称以及要填充的相应值。
- 触发器 输入可以是 工作流,审批 或 蓝图。如果没有提到触发器,则将执行与API相关的工作流、审批和蓝图。输入触发器值[]将不执行工作流
样本响应:
备注:
- 可以通过记录 API 来更新包含子表单 信息的记录明细。请查看下面的链接以了解关于更新记录中的子表单信息的更多信息。
示例属性:
- 单行示例:
"Single_Line_1": "This is single line",
- 多行示例:
"Multi_Line_1": "This is the first line \n Now for the second Line",
- 邮箱示例:
"Email_1": "p.boyle@zylker.com",
- 电话示例:
"Phone_1": "9900000000",
- 选择列表示例:
"Picklist_1" : "In Progress",
- 多选列表示例:
"Multi-Select_Picklist" : [
"{Option_1}",
"{Option_2}",
"{Option_3}"
], - 日期示例:
"Date_1": "2017-08-16",
- 日期/时间示例:
"Date_Time": "2017-08-16T14:32:23+05:30",
- 数字示例:
"Number_1": 575,
- 货币示例:
"Currency_1": 250000,
- 小数示例:
"Decimal_1": 250000.50,
- 百分比示例:
"Percent_1": 25,
- 长整型示例:
"Long_Integer_1": "250000000000000",
- 复选框示例:
"Checkbox_1": false,
- URL示例:
"URL_1": "https://www.zoho.com/crm",
- 查找示例:
"Lookup" : {
"id" : "425248000000104001"
}, - 记录所有者示例:
"Owner": {
"id": "425248000000104003"
}, - 布局示例:
"Layout": {
"id": "425248000000404433"
},
删除指定记录
用途
删除指定的实体或记录
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}
module_api_name - 模块的 API 名称。
record_id - 指定记录的惟一 ID
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注和活动。 | ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 DELETE - 删除模块中的记录 |
请求方法
DELETE
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000698006"
-X DELETE
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
在上述示例中,ID 为“410888000000698006”的线索记录将被删除
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Products",12347986875l);//带有记录 ID 的模块 API 名称
APIResponse response = record.delete();
String recStatus = response.getStatus();
样本请求:
$zcrmRecordIns = ZCRMRecord::getInstance("Products", 410405000001042005); //记录 ID
$apiResponse=$zcrmRecordIns->delete();
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id = “1234567890”
ids = []
ids[ids.length] = account_id
is_deleted = api_obj.delete_records(ids)[0]
样本请求:
def delete_record(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001422011)#1386586000001422011 is leadid
resp=record.delete()
print resp.status_code
print resp.code
print resp.details
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
备注:
- 默认情况下,将执行与此API相关的所有工作流。
- 所有与此API相关的子表单都将被删除。
转换线索
用途
用来转换一条线索
请求 URL
https://www.zohoapis.com.cn/crm/v2/Leads/{record_id}/actions/convert
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.leads.{operation_type}
可能的操作类型 |
---|
ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 CREATE - 在模块中创建记录 |
请求方法
POST
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/1000000145990/actions/convert"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@convertlead.json"
-X POST
在上面的请求中,@convertlead.json包含样本输入。
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Leads", 3247354544l);//带有记录 ID 的模块 API 名称
HashMap<String,Long> map = record.convert();
//returns a map as {"Accounts":"42685937005","Deals":null,"Contacts":"42685937007"}
Long accountsId = map.get("Accounts");
Long dealsId = map.get("Deals");
Long contactsId = map.get("Contacts");
样本请求:
$record=ZCRMRecord::getInstance("Leads",410405000001518001); // 410405000001518001 - 线索 ID
$modIns=ZCRMModule::getInstance("Deals");
$record_deal=$modIns->getRecord(410405000001519001)->getData(); // 410405000001519001 - 商机 ID
$user_instance=ZCRMUser::getInstance(410405000001516001, null);
$responseMap=$record->convert($record_deal,$user_instance);
echo "Contact ID:".$responseMap['Contacts'];
if(isset($responseMap[“Accounts”]))
{
echo "Account ID:".$responseMap[“Accounts”];
}
if(isset($responseMap[“Deals”]))
{
echo "Deal ID:".$responseMap[“Deals”];
}
样本请求:
def convert_record(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001422007)#1386586000001422007 is leadid
potential_record=ZCRMRecord.get_instance('Deals')
potential_record.set_field_value('Deal_Name', 'SAI1')
potential_record.set_field_value('Closing_Date', '2017-10-10')
potential_record.set_field_value('Stage', 'Needs Analysis')
assign_to_user=ZCRMUser.get_instance(1386586000000105001, None)
resp=record.convert(potential_record, assign_to_user)
print resp
print resp[APIConstants.ACCOUNTS]
print resp[APIConstants.DEALS]
print resp[APIConstants.CONTACTS]
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.convertLead(<leadId Long>,<dataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : leadId,dataMap
样本请求:
resp = zoho.crm.convertLead("7000000037308", { "overwrite": true, "notify_lead_owner": false, "notify_new_entity_owner": true, "Accounts": "7000000037323", "Deals": { "Deal_Name": "Robert", "Closing_Date": "2016-03-30", "Stage": "Closed Won", "Amount": 56.6 } });
样本输入:
备注:
1. 在上面显示的输入中,assign_to 的值只能是 用户 ID。
2. 您可以将现有的联系人或客户关联到转换线索,即使该线索已转换或未转换为商机。要实现这一点,您必须在输入数据中发送客户 ID和联系人 ID。
3. 如果客户 ID和覆盖值都为true,那么将用公司名称替换客户名称,同时将其与现有客户关联。但是,该客户的数据将保持不变。
4. 如果覆盖值设置为false,则只会发生关联。但是,如果在没有客户 ID的情况下设置overview值,则此方法的工作方式将保持不变。
5. 如果在您的输入中给出了联系人 ID,那么转换线索将关联到现有联系人。
样本响应:
链接模块 API
链接模块是一种中间模块,它用来提供将两个不同模块的记录进行关联的桥梁。例如,如果线索记录和联系人记录要进行关联,则在链接模块中创建新记录,该模块包含有关将两个模块的记录相关联的信息。
因此,任意两个模块中记录之间的每一关联就会在链接模块中创建一条新记录。一旦删除了链接模块中的记录,则关联自然地就终止了。
链接模块 API 仅在 Zoho CRM 企业版和以上版本中提供。
当创建链接模块时要记住的几点:
- 模块 API 名可通过使用模块 API 而获得。
- 字段 API 名可通过使用字段元数据 API 而获得。
- 链接模块中的必填字段是模块中要关联的两个查找字段。
- 最多 100 个自定义字段可用于连接模块。
- 您可在 CRM UI 中选择链接模块的可见模式。
- 要从相关列表中获得记录,请在 API 调用的字段参数中输入 "{linking_module_api_name}.{field_api_name}",以获得记录。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.custom.{operation_type}
可能的操作类型 |
---|
ALL - 对记录的完全访问 WRITE - 编辑模块中的记录 READ - 获取模块中的记录 CREATE - 在模块中创建记录 UPDATE - 更新模块中的记录 DELETE - 删除模块中的记录 |
链接模块 API 支持
单个记录 API:
批量记录 API:
相关列表 API:
备注:
- API 调用中没有其他指定更改。
子表单 API
子表单是辅助表单或表,它使您能够将多个行项包含到主表单中。它们用于将多个项目关联到一个记录。从更技术的角度来看,子表单可以轻松地解决与CRM中的数据建立一对多关系的需求,在这种关系中,多个辅助项与单个主记录相关联。
子表单API只能在 企业版 及以上版本的Zoho CRM中可用。
需要注意的点:
- 父模块 API 名称可以使用模块API获取。
- 子表单的字段 API 名称 使用父模块的字段元数据API获取。
- 子表单中单个字段的字段 API 名称 是使用字段元数据API获取的,请求URL为 "fields?module={Sub_form_api_name}".
- 一个字表中最多允许 5 个聚合自定义字段。
作用域
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,解决方案,产品,供货商,定制模块,备注和活动。 | ALL - 对记录的完全访问 READ - 获取模块中的记录 WRITE - 编辑模块中的记录 CREATE - 在模块中创建记录 UPDATE - 更新模块中的记录 |
子表单 API 支持
单个记录 API:
批量记录 API:
备注:
- 更新子表单记录时,必须在输入中指定记录的“ID”(例如:线索 ID)。
- 更新子表单记录时,必须指定子表单记录的“ID”。
- 假设子表单中有3行(记录),如果用新记录更新它,则必须提到其他三个子表单记录的id。没有ID的记录将被删除。例如,如果子表单与记录1、3一起更新,那么它将删除记录2并创建一条新记录(假设Id为4),当前的子表单记录为1、3和4。
- 没有JSON对象的子表单记录的更新会删除记录中的子表单信息。例:" subform_1:[] "
- 每当删除一条记录时,父记录中的所有子表单细节也将被删除。
蓝图 API
Zoho CRM的蓝图是对线下业务流程的简单在线复制,它通过软件捕获您整个线下流程的每个细节。它促进了团队的自动化、验证和协作,从而使您的流程更加有效,并且没有漏洞。
获取蓝图数据
目的
用来获取该记录的下一个可用转换、每个转换可用的字段、每个字段的当前值及其验证(如果有的话)。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{id}/actions/blueprint
module_api_name - 模块的api名称。
id - 指定记录的唯一id。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
Possible module names | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,自定义模块,备注,审批,仪表板,搜索和活动。 | ALL - 完全访问记录 READ - 从模块获取记录 |
请求方法
GET
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000698006/actions/blueprint"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
示例请求:
ZCRMModule module = ZCRMModule.getInstance("Products");
BulkAPIResponse response = module.getRecords(425476547854l, "Company",
CommonUtil.SortOrder.asc, 1, 4);// 使用cvID, sortField获取记录
sortOrder, startIndex 和 endIndex.
List<ZCRMRecord> records = (List<ZCRMRecord>)response.getData();
示例请求:
$zcrmModuleIns = ZCRMModule::getInstance("Contacts");
$bulkAPIResponse=$zcrmModuleIns->getRecords();
$recordsArray = $bulkAPIResponse->getData(); // $recordsArray - ZCRMRecord实例数组
示例请求:
Hash of record id vs record obj - Hash<String, ZCRMRecord>
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
records = record_obj.get_records(200)
records.each do |record_id, record_obj|
print “Record id: #{record_id}”
print “Record object class: #{record_obj.class}”
end
示例请求:
def get_records(self):
try:
module_ins=ZCRMModule.get_instance('Products') #module API Name
resp=module_ins.get_records()
print resp.status_code
record_ins_arr=resp.data
for record_ins in record_ins_arr:
print record_ins.entity_id
print record_ins.owner.id
print record_ins.created_by.id
print record_ins.modified_by.id
print record_ins.created_time
print record_ins.modified_time
product_data=record_ins.field_data
for key in product_data:
print key+":"+str(product_data[key])
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.getRecords(<module String>,<page Long>,<perPage Long>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : module
示例请求:
resp = zoho.crm.getRecords("Leads",5,2,{"converted":"false"});
样本响应:
更新蓝图信息
目的
一次更新一个迁移。如果记录不处于迁移状态,将抛出一个错误,transition_id错误,field_value数据类型不匹配或字段验证失败。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{id}/actions/blueprint
module_api_name - 模块的api名称。
id - 指定记录的唯一id。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机、市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,自定义模块,备注。 | ALL - 完全访问记录 WRITE - 编辑模块中的记录 CREATE - 在模块中创建记录 |
请求方法
PUT
示例请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000698006/actions/blueprint"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@blueprint1.json"
-X POST
示例请求:
List<ZCRMRecord> records = new ArrayList<>();
ZCRMRecord record1 = new ZCRMRecord("Products"); //模块api名称
ZCRMUser owner = ZCRMUser.getInstance(12345678l);// 用户id
record1.setOwner(owner);
record1.setFieldValue("Product_Name", "mass_create1");// 字段api名称及其值
ZCRMRecord record2 = new ZCRMRecord("Products"); //模块api名称
ZCRMUser owner = ZCRMUser.getInstance(5676875678l);// 用户 id
record2.setOwner(owner);
record2.setFieldValue("Product_Name", "mass_create2");// 字段api名称及其值
records.add(record1);
records.add(record2);
ZCRMModule module = ZCRMModule.getInstance("Products"); //模块api名称
BulkAPIResponse response = module.createRecords(records);
List<ZCRMRecord> insertedRecords = (List<ZCRMRecord>) response.getData();
List<BulkAPIResponse.EntityResponse> entityResponses =
response.getEntityResponses();// 检查请求的状态
String rec1Status = entityResponses.get(0).getStatus();//检查record1的状态
String rec2Status = entityResponses.get(1).getStatus();//检查record2的状态
示例请求:
$zcrmModuleIns = ZCRMModule::getInstance("Invoices");
$bulkAPIResponse=$zcrmModuleIns->createRecords($recordsArray); // $recordsArray - 用创建所需的数据填充ZCRMRecord实例的数组。
$entityResponses = $bulkAPIResponse->getEntityResponses();
foreach($entityResponses as $entityResponse)
{
if("success"==$entityResponse->getStatus())
{
echo "Status:".$entityResponse->getStatus();
echo "Message:".$entityResponse->getMessage();
echo "Code:".$entityResponse->getCode();
$createdRecordInstance=$entityResponse->getData();
echo "EntityID:".$createdRecordInstance->getEntityId();
echo "moduleAPIName:".$createdRecordInstance->getModuleAPIName();
….
}
}
Sample Invoice record instance with filled data
$record=ZCRMRecord::getInstance("Invoices",null);
$record->setFieldValue("Subject","Iphone sale to John");
$record->setFieldValue("Account_Name","410405000001016021");
$productInstance=ZCRMRecord::getInstance("Products",410405000001108011);
$lineItem=ZCRMInventoryLineItem::getInstance($productInstance);
$taxInstance1=ZCRMTax::getInstance("Sales Tax");
$taxInstance1->setPercentage(2);
$taxInstance1->setValue(10);
$lineItem->addLineTax($taxInstance1);
$taxInstance1=ZCRMTax::getInstance("Vat");
$taxInstance1->setPercentage(12);
$taxInstance1->setValue(60);
$lineItem->addLineTax($taxInstance1);
$lineItem->setQuantity(100);
$lineItem->setDiscount(0.5);
$record->addLineItem($lineItem);
示例请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
records = []
record1 = accounts_module.get_new_record
user_id = “1234567890”
record1.set_owner(user_id, api_obj.load_user_data)
record1.setfield_byname(“Account_Name”, “Account 1”)
record2 = accounts_module.get_new_record
records[records.length] = record1
record2.set_owner(user_id, api_obj.load_user_data)
record1.setfield_byname(“Account_Name”, “Account 2”)
records[records.length] = record2
bool, message, ids = upsert(records)
print “Ids for the newly created records are #{ids.inspect}”
示例请求:
def create_records(self):
try:
record_ins_list=list()
for i in range(0,2):
record=ZCRMRecord.get_instance('Invoices') #module API Name
record.set_field_value('Subject', 'Invoice'+str(i))
record.set_field_value('Account_Name', 'IIIT')
user=ZCRMUser.get_instance(440872000000175001,'Python Automation User1')
record.set_field_value('Owner',user)
line_item=ZCRMInventoryLineItem.get_instance(ZCRMRecord.get_instance("Products",440872000000224005))
line_item.discount=10
line_item.list_price=8
line_item.description='Product Description'
line_item.quantity=100
line_item.tax_amount=2.5
taxIns=ZCRMTax.get_instance("Vat")
taxIns.percentage=5
line_item.line_tax.append(taxIns)
record.add_line_item(line_item)
record_ins_list.append(record)
resp=ZCRMModule.get_instance('Invoices').create_records(record_ins_list)
print resp.status_code
entity_responses=resp.bulk_entity_response
for entity_response in entity_responses:
print entity_response.details
print entity_response.status
print entity_response.message
print entity_response.code
print entity_response.data.entity_id
print entity_response.data.created_by.id
print entity_response.data.created_time
print entity_response.data.modified_by.id
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
示例请求语法:
zoho.crm.bulkCreate(<module String>,<dataList List>,<optionalDataMap Map>,<connectionName String>,<userAccess Boolean>);
mandatory : module,dataList
示例请求:创建价格表记录
resp = zoho.crm.bulkCreate("Price_Books", [{"Owner": {"id": "7000000031553"},"Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name oops1"},{"Owner": {"id": "7000000031553"},"Active": true,"Pricing_Details": [{"to_range": 5,"discount": 0,"from_range": 1},{"to_range": 11,"discount": 1,"from_range": 6},{"to_range": 17,"discount": 2,"from_range": 12},{"to_range": 23,"discount": 3,"from_range": 18},{"to_range": 29,"discount": 4,"from_range": 24}],"Pricing_Model": "Differential","Description": "Design your own layouts that align your business processes precisely. Assign them to profiles appropriately.","Price_Book_Name": "Price_Book_Name oops2"}]);
示例请求:插入线索
resp = zoho.crm.bulkCreate("Leads", [{"Last_Name":"Patricia Boyle"},{"Last_Name":"Deborah Grogan"}], {"trigger":["workflow","blueprint","approval"]});
示例请求:在自定义模块(“学生信息”)中创建记录
resp=zoho.crm.bulkCreate("Students",[{"Name":"Patricia Boyle new","Owner":"7000000031553","Email":"p.boyle@zylker.com","Secondary_Email":"sdf@zylker.com","Single_Line":"Single_Line 22 new","Multi_Line_1":"Room for Negotiation","Currency_1":1.245,"Email_1":"adf@aps.com","Email_Opt_Out":true,"Decimal_1":2.34,"Phone_1":"9000000000","Percent_1":9,"Tag":{"tag"},"Pick_List_1":"new pick list","Long_Integer_1":"123456789012345690","Multi_Select_1":["Val 1","Val 2"],"Checkbox_1":true,"Date_1":"2018-01-31","website":"www.zoho.@","Date_Time_1":"2018-02-01T12:30:00+05:30","Lookup_1":{"id":"7000000032001"},"Number_1":1},{ "Name":"Deborah Grogan","Owner":"7000000031553","Email":"d.grogan@zylker.com","Secondary_Email":"dgrgn@zylker.com","Single_Line":"Single_Line 23 new","Multi_Line_1":"Negotiation succeeded","Currency_1":1.245,"Email_1":"adf@aps.com","Email_Opt_Out":true,"Decimal_1":2.34,"Phone_1":"9000000000","Percent_1":9,"Tag":{"tag"},"Pick_List_1":"new pick list","Long_Integer_1":"123456789012345690","Multi_Select_1":["Val 1","Val 2"],"Checkbox_1":true,"Date_1":"2018-01-31","website":"www.zylker.com","Date_Time_1":"2018-02-01T12:30:00+05:30","Lookup_1":{"id":"7000000032001"},"Number_1":1}]);
在上面的请求中,@blueprint1.json 包含了样本输入数据。
样本输入:在迁移时为记录添加备注
样本输入:上传附件到蓝图
样本输入:在迁移期间处理父模块字段o
样本输入:更新检查表信息o
样本输入:更新相关列表信息
备注:
- 在相关列表示例中,键“Tasks”是与迁移中使用的记录相关的列表名称。
- 此API的相关列表支持依赖于记录的模块,该模块在蓝图的迁移中使用。
- 如果输入的字段数不满足要求,响应中的“消息”将是“部分保存的迁移”。
标签 API
标签是关键字,可以帮助您根据记录的特征对其进行分类。标记可以帮助您对数据进行排序,并在需要时方便地找到它。
获取标签
用途
获取和显示机构中的所有标签。
请求 URL
http://www.zohoapis.com/crm/v2/settings/tags?module={module_api_name}
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.tags.all
(或)
scope=ZohoCRM.settings.tags.read
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
module (必填) | 字符串 | 指定模块的API名称,如,lead, Accounts, Deals等。 |
my_tags (可选) | 字符串 | 显示当前用户创建的标签名称。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/tags?module=Contacts"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本响应:
属性:
- "allowed_count":表示可以在当前版本中创建的标签数量。
- "count":表示创建的标签总数。
获取指定标签的记录数
用途
用来获取指定标签记录的总数。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/tags/{tag_id}/actions/records_count?module={module_api_name}
tag_id - 指定标签的惟一ID。
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.tags.all
(或)
scope=ZohoCRM.settings.tags.read
请求方法
GET
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/tags/2000000039007/actions/records_count?module=Contacts"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
新建标签
用途
用来创建新的标签。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/tags?module={module_api_name}
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.tags.{operation_type}
可能的操作类型 |
---|
ALL - 完全数据访问 WRITE - 编辑标签数据 CREATE - 创建标签数据 |
请求方法
POST
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/tags?module=Contacts"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@createnewtag.json"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
合并标签
用途
合并标签,并将两个标签下的所有记录放入单个标签中。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/tags/{tag_id}/actions/merge
tag_id - 指定标签的惟一ID。
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.tags.{operation_type}
可能的操作类型 |
---|
ALL - 完全数据访问 WRITE - 编辑标签数据 CREATE - 创建标签数据 |
请求方法
POST
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/tags/2000000035058/actions/merge"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@mergetag.json"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
单个标签更新
用途
更新与单个记录或多个记录关联的标签。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/tags/{tag_id}?module={module_api_name}
tag_id - 指定标签的唯一 ID。
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.tags.{operation_type}
可能的操作类型 |
---|
ALL - 完全数据访问 WRITE - 编辑标签数据 UPDATE - 更新标签数据 |
请求方法
PUT
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/tags/2000000030444?module=Contacts"
-X PUT
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@singletagupdate.json"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
多个标签更新
用途
同时更新多个标签。
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/tags?module={module_api_name}
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.tags.{operation_type}
可能的操作类型 |
---|
ALL - 完全数据访问 WRITE - 编辑标签数据 UPDATE - 更新标签数据 |
请求方法
PUT
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
模块(必填) | 字符串 | 指定所需模块的 API 名称。例如,线索、联系人、客户、潜在客户等。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/tags?module=Contacts"
-X PUT
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@multipletagupdate.json"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
删除标签
用途
从模块中删除标签
请求 URL
https://www.zohoapis.com.cn/crm/v2/settings/tags/{tag_id}
tag_id - 指定标签的惟一ID。
作用域
scope=ZohoCRM.settings.all
(或)
scope=ZohoCRM.settings.tags.{operation_type}
可能的操作类型 |
---|
ALL - 完全数据访问 WRITE - 编辑标签数据 DELETE - 删除标签数据 |
请求方法
DELETE
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/settings/tags/2000000035058"
-X DELETE
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
向指定记录添加标签
用途
用来向指定记录添加标签
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/actions/add_tags?tag_names={tag1},{tag2}
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块。 | ALL - 完全数据访问 WRITE - 编辑标签数据 CREATE - 创建标签数据 |
请求方法
POST
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
tag_names (必填) | 字符串 | 指定要添加的标签名称。 |
over_write | 布尔值 | 指定是否要覆盖现有标签。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Contacts/2445013000000402006/actions/add_tags?tag_names=From Email,High Priority&over_write=true"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
向多个记录添加标签
用途
将标签同时添加到多个记录。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/actions/add_tags?ids={entity_id}&tag_names={tag1},{tag2}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,定制模块。 | ALL - 完全数据访问 WRITE - 编辑标签数据 CREATE - 创建标签数据 |
请求方法
POST
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
tag_names | 字符串 | 指定要添加的标签名称。 |
over_write | 布尔值 | 指定是否覆盖现有标签。 |
ids (必填) | 整型 | 指定记录的唯一标识符。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Contacts/actions/add_tags?ids=1234567890,123456789&tag_names=From Email,High Priority&over_write=true"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
从指定记录中移除标签
用途
删除附加到指定记录的标签
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/actions/remove_tags?tag_names={tag1},{tag2}
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,定制模块。 | ALL - 完全数据访问 WRITE - 编辑标签数据 DELETE - 删除标签数据 |
请求方法
POST
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
tag_names (必填) | 字符串 | 指定要从记录中删除的标签名称。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Contacts/2445013000000402006/actions/remove_tags?&tag_names=From Email,Low Priority"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
从多个记录中删除标签
用途
删除与多个记录关联的标签。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/actions/remove_tags?ids={entity_id}&tag_names={tag1},{tag2}
module_api_name - 模块的 API 名称。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,定制模块。 | ALL - 完全数据访问 WRITE - 编辑标签数据 DELETE - 删除标签数据 |
请求方法
POST
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
ids (必填) | 整型 | 指定记录的唯一标识符。 |
tag_names (必填) | 字符串 | 指定要从记录中删除的标签名称。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Contacts/actions/remove_tags?ids=1234567890,123456789&tag_names=From Email,In progress"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本请求:
样本请求:
样本请求:
样本响应:
解除链接
用途
用来删除模块之间的关联
请求 URL
https://www.zohoapis.com.cn/crm/v2/{moduel_api_name}/{record_id}/{related_list_apiname}/{related_record_id}
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
related_record_id - 指定相关记录的惟一ID。
related_list_apiname - 相关列表的API名称。要获取相关列表的API名称,请查看 相关列表元数据
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 | ALL - 对相关记录的完全访问 WRITE - 编辑相关记录 DELETE - 删除相关记录 |
请求方法
DELETE
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/100014990/Campaigns/100013559"
-X DELETE
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Leads", 123456l);//带有记录 ID 的模块 API 名称
ZCRMJunctionRecord relatedRecord = ZCRMJunctionRecord.getInstance("Campaigns", 987654l);
APIResponse response = record.deleteRelation(relatedRecord);
String recStatus = response.getStatus(); //检查删除关系的状态
样本请求:
try{
$parentRecord=ZCRMRecord::getInstance("Products", 410405000001446001);
$junctionRecord=ZCRMJunctionRecord::getInstance("Price_Books",
410405000001404743);
$responseIns=$parentRecord->removeRelation($junctionRecord);
echo "HTTP Code:".$responseIns->getHttpStatusCode();
echo "Message:".$responseIns->getMessage();
echo "Code:".$responseIns->getCode();
echo "Details:".$responseIns->getDetails();
}catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id = “1234567890”
record = accounts_module.get_record(account_id)
product_id = “0987654321”
bool = record.delink(“Products”, product_id)
样本请求:
def remove_relation(self):
try:
record=ZCRMRecord.get_instance('Leads',440872000000222019) #模块 API 名称, entityId
junction_record=ZCRMJunctionRecord.get_instance("Products", 440872000000224005) #模块 API 名称, entityId
resp=record.remove_relation(junction_record)
print resp.status_code
print resp.code
print resp.details
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
备注 API
备注用来提供关于联系人、客户、商机或任务的一些 额外附件信息。可以在大多数模块中看到备注部分。因此,通过备注 API,您可以创建、删除或更新备注。您可以在单个或多个备注上执行操作。
获取备注
用途
用来获取备注列表
请求 URL
https://www.zohoapis.com.cn/crm/v2/Notes
作用域
scope=ZohoCRM.modules.notes.{operation_type}
可能的操作类型 |
---|
ALL - 对备注的完全访问 READ - 获取备注数据 |
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
page (可选) | 整型 | 从各个页面获取记录列表。页的默认值是1. |
per_page (可选) | 整型 | 获取每页可用记录的列表。每个页面的默认值为200. |
备注:
page 和 per_page参数用于根据CRM中的位置获取记录。让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200条以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Notes"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
样本响应:
获取指定的备注数据
用途
获取模块指定记录的备注列表
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Notes
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,事件,通话,服务支持,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,定制模块。 | ALL - 对备注的完全访问 READ - 获取备注数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000698006/Notes"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
上述请求将检索ID为410888000000698006的线索记录的备注列表。
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Leads",123456l);//带有记录 ID 的模块 API 名称
BulkAPIResponse response = record.getRelatedListRecords("Notes");
List<ZCRMNote> notes = (List<ZCRMNote>) response.getData();//相关列表名称
样本请求:
try{
$record=ZCRMRecord::getInstance("Leads",410405000001111007);
$responseIns=$record->getNotes(null,null,1,50);
$records=$responseIns->getData();
foreach ($records as $note)
{
echo "\n";
echo $note->getId();
echo $note->getTitle();
echo $note->getContent();
$parentRecord=$note->getParentRecord();
echo $parentRecord->getEntityId();
echo $note->getParentName();
echo $note->getParentId();
$createdBy=$note->getCreatedBy();
echo $createdBy->getId();
echo $createdBy->getName();
$modifiedBy=$note->getModifiedBy();
echo $modifiedBy->getId();
echo $modifiedBy->getName();
$owner=$note->getOwner();
echo $owner->getId();
echo $owner->getName();
echo $note->getCreatedTime();
echo $note->getModifiedTime();
echo $note->isVoiceNote();
echo $note->getSize();
$attchments=$note->getAttachments();
if($attchments!=null)
{
foreach ($attchments as $attchmentIns)
{
echo "\nATTACHMENTS::\n";
echo $attchmentIns->getId();
echo $attchmentIns->getFileName();
echo $attchmentIns->getFileType();
echo $attchmentIns->getSize();
echo $attchmentIns->getParentModule();
$parentRecord=$attchmentIns->getParentRecord();
echo $parentRecord->getEntityId();
echo $attchmentIns->getParentName();
echo $attchmentIns->getParentId();
$createdBy=$attchmentIns->getCreatedBy();
echo $createdBy->getId();
echo $createdBy->getName();
$modifiedBy=$attchmentIns->getModifiedBy();
echo $modifiedBy->getId();
echo $modifiedBy->getName();
$owner=$attchmentIns->getOwner();
echo $owner->getId();
echo $owner->getName();
echo $attchmentIns->getCreatedTime();
echo $attchmentIns->getModifiedTime();
}
}
}
}catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id = “1234567890”
record = accounts_module.get_record(account_id)
notes = record.get_notes
样本请求:
def get_notes(self):
try:
record=ZCRMRecord.get_instance('Leads',440872000000222019) #模块 API 名称, entityId
resp=record.get_notes()
print resp.status_code
note_ins_arr=resp.data
for note_ins in note_ins_arr:
print note_ins.id
print note_ins.title
print note_ins.content
print note_ins.owner.id
print note_ins.created_by.id
print note_ins.modified_by.id
print note_ins.created_time
print note_ins.modified_time
print "\n\n"
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本响应:
创建备注
用途
用来添加新的备注
请求 URL
https://www.zohoapis.com.cn/crm/v2/Notes
作用域
scope=ZohoCRM.modules.notes.{operation_type}
可能的操作类型 |
---|
ALL - 对备注的完全访问 WRITE - 编辑备注数据 CREATE - 创建备注数据 |
请求方法
POST
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Notes"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@newnote.json"
-X POST
备注:
在上面的请求中, @newnote.json 包含了样本输入。
在输入中,指定备注模块的字段API名称以及相应的值。
样本响应:
创建指定备注
用途
向指定记录添加新备注
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Notes
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,活动,通话,服务支持,事件,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,定制模块。 | ALL - 完全数据访问 WRITE - 编辑备注数据 CREATE - 创建备注数据 |
请求方法
POST
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/1000000145990/Notes"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@newnote.json"
-X POST
在上面的请求中, @newnote.json 包含了样本输入。
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Products",23857634545l);//带有记录 ID 的模块 API 名称
ZCRMNote note = new ZCRMNote(record);
note.setContent("test msg");
note.setTitle("test class notes");
APIResponse response = record.addNote(note);
ZCRMNote createdNote = (ZCRMNote) response.getData();
String recStatus =response.getStatus();
样本请求:
try{
$record=ZCRMRecord::getInstance('Accounts',410405000000497012);
$noteIns=ZCRMNote::getInstance($record);
$noteIns->setTitle("Title_API1");
$noteIns->setContent("This is test content");
$responseIns=$record->addNote($noteIns);
$zcrmNote=$responseIns->getData();
echo "HTTP Status Code:".$responseIns->getHttpStatusCode();
echo "Status:".$responseIns->getStatus();
echo "Message:".$responseIns->getMessage();
echo "Code:".$responseIns->getCode();
echo "Details:".$responseIns->getDetails()['id'];
echo "Entity Id:".$zcrmNote->getId();
}
catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
def add_note(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001856002)
note_ins=ZCRMNote.get_instance(record, None)
note_ins.title="title2"
note_ins.content='content2...'
resp=record.add_note(note_ins)
print resp.status_code
print resp.code
print resp.data.id
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
备注:
在输入中,指定备注模块的字段API名称以及相应的值。
样本响应:
更新备注
用途
用来更新已有备注
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Notes/{note_id}
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
note_id - 指定备注的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户 ,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,定制模块。 | ALL - 对备注完全访问 WRITE - 编辑备注数据 UPDATE - 更新备注数据 |
请求方法
PUT
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/410888000000645234/Notes/410888000000643123"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-d "@updatenote.json"
-X PUT
在上面的请求中, @updatenote.json 包含样本输入。
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Products",23857634545l);//带有记录 ID 的模块 API 名称
ZCRMNote note = ZCRMNote.getInstance(record,374968745l);// notesID
note.setContent("update message");
APIResponse response = record.updateNote(note);
ZCRMNote updatedNote = (ZCRMNote) response.getData();
String recStatus =response.getStatus();
样本请求:
try{
$record=ZCRMRecord::getInstance('Accounts',410405000000497012); // 410405000000497012 - 客户 ID
$noteIns=ZCRMNote::getInstance($record,410405000000498056); // , 410405000000498056 - 备注 ID
$noteIns->setTitle("Title_API22..");
$noteIns->setContent("This is test content");
$responseIns=$record->updateNote($noteIns);
$zcrmNote=$responseIns->getData();
echo "HTTP Status Code:".$responseIns->getHttpStatusCode();
echo "Status:".$responseIns->getStatus();
echo "Message:".$responseIns->getMessage();
echo "Code:".$responseIns->getCode();
echo "Details:".$responseIns->getDetails()['id'];
echo "Entity Id:".$zcrmNote->getId();
}
catch (ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id = “1234567890”
record = accounts_module.get_record(account_id)
notes = record.get_notes
note_id = “0987654321”
note_obj = nil
notes.each do |n_id, n_obj|
if n_id == note_id then
note_obj = n_obj
end
end
note_obj.update_title(“Updated note title “)
note_obj.update_content(“Updated note content ”)
update_notes = {}
update_notes[note_id] = note_obj
note_ids = accounts_module.update_notes(update_notes)[1]
样本请求:
def update_note(self):
try:
record=ZCRMRecord.get_instance('Leads',440872000000222019) #模块 API 名称, entityId
note_ins=ZCRMNote.get_instance(record, 440872000000241025) #note ID
note_ins.title="title2 updated"
note_ins.content='content2 updated...'
resp=record.update_note(note_ins)
print resp.status_code
print resp.code
print resp.data.modified_by.id
print resp.data.modified_by.name
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
#在这里 440872000000222019 指的是线索 ID,而 440872000000241025 指的是备注 ID
备注:
在输入中,指定备注模块的字段API名称以及相应的值。
样本响应:
删除指定备注
用途
用来删除备注
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Notes/{note_id}
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
note_id - 指定备注的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价单,销售订单,采购订单,发货单,定制模块。 | ALL - 对备注的完全访问 WRITE - 编辑备注数据 DELETE - 删除备注数据 |
请求方法
DELETE
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000268053/Notes/2883756000000268003"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-X DELETE
样本请求:
def delete_note(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001856002)
note_ins=ZCRMNote.get_instance(record, 1386586000001859023)
resp=record.delete_note(note_ins)
print resp.status_code
print resp.code
print resp.details
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
样本请求:
样本请求:
样本请求:
批量删除备注
用途
批量删除备注
请求 URL
https://www.zohoapis.com.cn/crm/v2/Notes?ids={Entity_ID1, Entity_ID2, Entity_ID3,..}
Entity_ID - 备注的唯一 ID。
作用域
scope=ZohoCRM.modules.notes.{operation_type}
可能的操作类型 |
---|
ALL - 对备注的完全访问 WRITE - 编辑备注数据 DELETE - 删除备注数据 |
请求方法
POST
参数
参数名称 | 数据类型 | 描述 |
---|---|---|
ids (必填) | 数组 | 指定要删除备注的唯一ID。 |
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Notes?ids=2883756000000268003,2883756000000987654,2883756000000736435"
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-X DELETE
样本响应:
上传图片
用途
将图片上传至线索或联系人记录。需要在 API 请求中提供相关的线索或联系人记录 ID,这样才能将图片上传至指定的记录。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/photo
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索和联系人。 | ALL - 对图片的完全访问 WRITE - 编辑图片数据 CREATE - 创建图片数据 |
请求方法
POST
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/3000000038009/photo"
-X POST
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
-F "file=@img1.png"
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Contacts", 975824386248l);//带有记录 ID 的模块 API 名称
APIResponse response = record.uploadPhoto("ImagePath");
String requestStatus =response.getStatus();
样本请求:
try{
$record=ZCRMRecord::getInstance(“Leads”,”410405000001111007”);
$responseIns=$record->uploadPhoto($photoPath); // $photoPath - 上传的图片存储的绝对路径。
echo "HTTP Status Code:".$responseIns->getHttpStatusCode();
echo "Status:".$responseIns->getStatus();
echo "Message:".$responseIns->getMessage();
echo "Code:".$responseIns->getCode();
echo "Details:".$responseIns->getDetails()['id'];
}catch(ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
leads_module = api_obj.load_crm_module(“Leads”)
lead_id = “1234567890”
record = leads_module.get_record(lead_id)
image_path = “path/to/the/image”
is_upload_success = record.upload_photo(image_path)
样本请求:
def upload_photo(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001856002)
resp=record.upload_photo('/Users/Pictures/image.png')
print resp.status_code
print resp.code
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
下载图片
用途
下载与线索/联系人相关的图片。需要在 API 请求中提供记录 ID,以便下载其对应的图片。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/photo
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索和联系人。 | ALL - 对图片的完全访问 READ - 获取图片数据 |
请求方法
GET
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/3000000038009/photo"
-X GET
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
将会下载与线索记录 ID 3000000038009 相关的图片。
样本请求:
ZCRMRecord record = ZCRMRecord.getInstance("Contacts",123456l);//带有记录 ID 的模块 API 名称
FileAPIResponse response = record.downloadPhoto();
InputStream inputStream = response.getFileAsStream();
CommonUtil.saveStreamAsFile(inputStream, "/absolute/path/to/store/file", response.getFileName());
样本请求:
try{
$record=ZCRMRecord::getInstance(“Leads”,”410405000001111007”);
$fileResponseIns=$record->downloadPhoto();
echo "HTTP Status Code:".$fileResponseIns->getHttpStatusCode();
echo "File Name:".$fileResponseIns->getFileName();
$fp=fopen($filePath.$fileResponseIns->getFileName(),"w"); // $filePath - 下载的图片存储的绝对路径。
$stream=$fileResponseIns->getFileContent();
fputs($fp,$stream);
fclose($fp);
}catch(ZCRMException $e)
{
echo $e->getCode();
echo $e->getMessage();
echo $e->getExceptionCode();
}
样本请求:
zclient, api_obj = ZohoCRMClient.get_client_objects(conf_file_location)
leads_module = api_obj.load_crm_module(“Leads”)
lead_id = “1234567890”
record = leads_module.get_record(lead_id)
is_download_success = record.download_photo
样本请求:
def download_photo(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001856002)
resp=record.download_photo()
print resp.response_headers
if resp.status_code==200:
print resp.file_name
with open('/Users/Downloads/'+resp.file_name, 'wb') as f:
for chunk in resp.response:
f.write(chunk)
f.close()
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content
删除图片
用途
从线索或联系人记录中删除图片。您需要在 API 请求中提供线索或联系人的记录 ID,这样才能从指定的记录中删除相关的图片。
请求 URL
https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/photo
module_api_name - 模块的 API 名称。
record_id - 指定记录的唯一 ID。
作用域
scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}
可能的模块名称 | 可能的操作类型 |
---|---|
线索和联系人/ | ALL - 对图片的完全访问 WRITE - 编辑图片 DELETE - 删除图片 |
请求方法
DELETE
样本请求:
curl "https://www.zohoapis.com.cn/crm/v2/Leads/3000000038009/photo"
-X DELETE
-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"
样本请求:
def delete_photo(self):
try:
record=ZCRMRecord.get_instance('Leads',1386586000001856002)
resp=record.delete_photo()
print resp.status_code
print resp.code
print resp.details
print resp.message
print resp.status
except ZCRMException as ex:
print ex.status_code
print ex.error_message
print ex.error_code
print ex.error_details
print ex.error_content