REST API文档

  • API简介
  • OAuth2.0 &简介
  • OAuth 请求 & 第一步:注册您的应用程序
  • 第 2 步:授权请求
  • 第 3 步:生成访问令牌和刷新令牌
  • 第 4 步:刷新访问令牌
  • 第 5 步:撤消令牌
  • 多数据中心
  • API 限制
  • API 仪表盘
  • HTTP 状态码
  • HTTP 方法
  • 模块 API & 获取模块列表
  • 用户 API & 获取用户
  • 获取单个用户数据
  • 职位 API & 获取职位
  • 获取单个职位数据
  • 角色 API & 获取角色
  • 获取单个角色数据
  • 布局
  • 单个布局
  • 自定义视图
  • 单个自定义视图
  • 机构 API & 机构数据
  • 上传机构Logo
  • 订阅 API & 订阅通知
  • 获取订阅详情
  • 更新订阅详情
  • 更新通知的具体信息
  • 取消订阅通知
  • 取消订阅指定通知
  • 批量记录 API & 获取记录列表
  • 插入记录
  • 更新记录
  • 插入或更新记录(upsert)
  • 删除记录
  • 获取已删除的记录列表
  • 搜索记录
  • 单个记录 API & 获取指定记录
  • 插入指定记录
  • 更新指定记录
  • 删除指定记录
  • 转化线索
  • 子表单 API
  • 批量读取 API & 创建批量读取任务
  • 获取批量读取任务详情
  • 下载批量读取结果
  • 标签 API & 获取标签
  • 获取指定标签的记录数
  • 创建标签
  • 合并标签
  • 更新单个标签
  • 批量更新标签
  • 删除标签
  • 将标签添加到指定记录
  • 将标签添加到多个记录
  • 从指定记录中删除标签
  • 从多个记录中删除标签
  • 备注 API & 获取备注
  • 获取指定备注数据
  • 创建备注
  • 创建指定备注
  • 更新备注
  • 删除指定备注
  • 删除备注
  • 文件和附件 API & 获取附件列表
  • 上传附件
  • 下载附件
  • 删除附件
  • 上传图片
  • 下载图片
  • 删除图片
+
  • API 简介
    • OAuth2.0
      • 简介
        • OAuth 请求
          • 第 1 步:注册您的应用程序
          • 第 2 步:授权请求
          • 第 3 步:生成访问令牌和刷新令牌
          • 第 4 步:刷新访问令牌
          • 第 5 步:撤消令牌
      • 多数据中心
  • API 限制
  • GDPR 遵守
  • API 仪表盘
  • HTTP 状态码
  • HTTP 方法
    • 订阅 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访问和刷新令牌。

第 2 步:授权请求

要对您的应用程序进行身份验证,您需要将客户端应用程序的用户重定向至相应的授权端点。在成功登录后,Zoho CRM 将用授权代码调用您的重定向 URI。

现在使用以下参数对您自己进行授权:

参数 描述
作用域 指定您的应用程序可访问的数据。请参阅“作用域”以了解更多信息。
client_id 指定从所连接应用程序生成的使用者密钥。
redirect_uri 指定您在应用程序注册期间所注册的回调 URL。
response_type 指定 response_type 作为代码。
access_type 指定 access_type 为在线或离线。如果您要生成刷新令牌,请将值设为“offline”。

要对您的应用程序授权:

  • 一旦您有客户端 ID,则在浏览器中输入授权 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"。该页面的 URL 将如下所示:

    {redirect_uri}?code={grant_token}&location=us&accounts-server=https%3A%2F%2Faccounts.zoho.com.cn

  • 您将会重定向至在注册应用程序期间指定的 "redirect_uri"。
  • 记下 "code={grant_token}" 参数。
    这是一种短生命周期的令牌(仅生效 1 分钟),将用来生成访问令牌和刷新 令牌。

注:

以上授权 URL 具有用户的作用域。您可以根据需要更改作用域。

第 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 Java PHP Python
复制样本请求

样本请求:

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 Java PHP Python
复制样本代码

样本请求:

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 Java PHP Python
复制样本代码

样本请求:

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 Python
复制样本代码

样本请求:

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 Python
复制样本代码

样本请求:

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 Python
复制样本代码

样本请求:

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 Python
复制样本代码

样本请求:

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 对象的信息。

显示查询属性

属性 数据类型 必填 描述
module 字符串 指定要读取的模块的API名称。例如:线索,联系人。示例 - "module" : "线索”。
fields 数组 指定要获取的字段的API名称。例如:First_Name, Last_Name, Email。示例 - "fields" : ["First_Name", "Last_Name", "Email”]。
page 整型 从各个页面获取记录列表。页的默认值是 1。每页包含200,000条记录。如果没有指定页面,那么将获取匹配条件的前20万条记录。
criteria 显示属性 JSON 对象 根据指定条件和对上述记录应执行的操作对记录进行限定。例如:一个模块或字段的API名称,用于添加两个或多个条件的比较器,记录/模块/字段所属的组,等等。

显示条件属性

属性 数据类型 必填 描述
api_name 字符串 是,如果 group 和 group_operator 没有指定。 要比较的字段API名称。例如:First_Name, Last_Name.
value 字符串或数组 是,如果 group 和 group_operator 没有指定。 只允许正整数
group_operator 字符串 是,如果api_name,comparator 和 value 没有指定。 逻辑运算符。支持的值 - and, or
group 数组(标准JSON对象) 是,如果 api_name, comparator 和 value 没有指定。 标准对象数组。
comparator 显示详细信息 字符串 是的,如果 group 和 group_operator 没有指定。 指定任何类型的比较器。例如:equal, greater_than。有关更多细节,请参阅下表。

显示比较详情

数据类型 比较 限制
数字(整型/
小数/长整型/
货币/百分比)
equal, not_equal, in, not_in, less_than, less_equal, greater_than, greater_equal 任意数字值或${EMPTY}为空值 不超过19位的长整数,小数 和 货币字段允许小数值。在启用多货币的帐户中,只支持本币值。
文本(邮箱,电话,URL,选择列表,多选列表,等) equal, not_equal, in, not_in, contains, not_contains, starts_with, ends_with. 任意文本值或${EMPTY}为空值 不能超过 255 个字符。
日期 equal, not_equal, in, not_in, between, not_between. 任意日期值或${EMPTY}为空值  
日期时间 equal, not_equal, in, not_in, between, not_between. 日期时间值,支持“直到秒”或${EMPTY}为空值 不支持毫秒。
布尔型 equal 真/假。  
查找 equal, not_equal, in, not_in 查找的长整数值值或${EMPTY}为空值。. 查找名称不支持。
文本区域(多行)     不支持。

请求方法

POST

Curl
复制样本代码

样本请求:

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属性

属性 数据类型 必填 描述
url 字符串(URL) 一个应该允许HTTP Post方法的有效URL。批量读取任务的详细信息将在任务成功完成或任务失败时发布到此URL。
method 字符串 指定回调url的HTTP方法。只支持HTTP POST方法,即允许的值“POST”。
query 显示属性 JSON对象 有关查询JSON对象的信息,请参阅下表。

显示查询属性

属性 数据类型 必填 描述
module 字符串 指定要读取的模块API名称。例如:Leads, Contacts。示例 - "module" : "Leads”。
fields 数组 制定要获取的字段API名称。例如:First_Name, Last_Name, Email。示例 - "fields" : ["First_Name", "Last_Name", "Email”]。
page 整型 page的默认值是1。页面值“1”表示匹配查询的前200,000条记录将被导出。如果您想获取范围在200,001到400000之间的记录,那么您应该将page值设置为“2”。
criteria 显示属性 JSON对象 筛选要导出的记录。例如:一个模块或字段的API名称,用于添加两个或多个条件的比较器,记录/模块/字段所属的组,等等。

显示条件属性

属性 数据类型 必填 描述
api_name 字符串 是,如果group & group_operator没有指定。 要比较的字段API名称。例如:First_Name, Last_Name。
value 字符串或数组 是,如果group & group_operator未指定。 Positive Integer values only
group_operator 字符串 是,如果api_name, comparator & value未指定。 逻辑运算符。支持的值 - and, or
group 数组(标准JSON对象) 是,如果api_name, comparator & value未指定。 标准对象数组。
comparator 显示属性 字符串 是,如果group & group_operator未指定。 指定任意类型的比较器。例如:equal, greater_than。有关更多细节,请参考下面给出的表格。

显示比较器信息

数据类型 比较器 限制
数字(整型
小数/长整型/
货币/百分比)
equal, not_equal, in, not_in, less_than, less_equal, greater_than, greater_equal 任意数字值或空值${EMPTY}。 对于长整型不超过19位,对于小数& 货币字段允许十进制值。在启用多货币的帐户中,只支持本币值。
文本(邮箱,电话,URL,选择列表,多选,等) equal, not_equal, in, not_in, contains, not_contains, starts_with, ends_with 任意文本值或空值${EMPTY} 不能超过255个字符。
日期 equal, not_equal, in, not_in, between, not_between 任意ISO 8601格式的日期值或空值${EMPTY}。  
日期时间 equal, not_equal, in, not_in, between, not_between 任意ISO 8601格式的日期时间值或空值${EMPTY}。 不支持毫秒。
布尔型 equal 真/假。  
查找 equal, not_equal, in, not_in 查找长整型值或空值${EMPTY}。 不支持查找名称。
文本区域(多行)     不支持。

响应结构

属性 数据类型 描述
status 字符串 指定API调用的状态。示例 - "status": "success"
message 字符串 指定任务的预定义注释。在发生错误时非常有用。示例 - "message": "Added successfully."
details 显示属性 JSON 对象 有关“details”JSON对象的信息,请参阅下表。

参数属性细节

属性 数据类型 描述
operation 字符串 指定API完成的操作类型。示例 - "operation" : "read”
created_by JSON 对象 指定发起批量读取任务的用户ID和名称。 示例 - "created_by": { "id": "1000000031045", "name": "Chakra" },
created_time ISO8601 指定批量读取任务的创建时间。
state 字符串 指定批量读取任务的当前状态。 例如:"state": "ADDED" 或 "IN PROGRESS" 或 "COMPLETED"。
id 字符串 指定批量读取任务的唯一标识符。这个属性非常重要,因为它必须用于检查任务状态和下载结果。例如 - "id": "1000010760002"

请求方法

POST

Curl
复制示例请求

示例请求:

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 对象的信息。

显示查询属性

属性 数据类型 必填 描述
module 字符串 指定要读取的模块API名称。例如:线索,联系人。示例 - "module" : "线索"。
fields 数组 指定要获取的字段API名称。例如:First_Name, Last_Name, Email。示例 - "fields" : ["First_Name", "Last_Name", "Email”]。
page 整型 从各个页面获取记录列表。页的默认值是 1。每页包含200,000条记录。如果没有指定页面,那么将获取匹配条件的前20万条记录。
criteria 显示属性 JSON 对象 根据指定条件和对上述记录应执行的操作对记录进行限定。例如:一个模块或字段的API名称,用于添加两个或多个条件的比较器,记录/模块/字段所属的组,等等。

显示条件属性

属性 数据类型 必填 描述
api_name 字符串 是的,如果 group 和 group_operator 没有指定。 要比较的字段API名称。例如:First_Name, Last_Name。
value 字符串或数组 是的,如果 group 和 group_operator 没有指定。 只支持正整数
group_operator 字符串 是的,如果 api_name,comparator 和 value 没有指定。 逻辑运算符。支持的值 - and, or
group 数组(标准JSON对象) 是的,如果 api_name,comparator 和 value 没有指定。 标准对象数组
comparator 显示详细信息 字符串 是的,如果 group 和 group_operator 没有指定。 指定任何类型的比较器。例如:equal, greater_than。有关更多细节,请参阅下表。

显示比较详情

数据类型 比较 限制
数字(整型/
小数/长整型/
货币/百分比)
equal, not_equal, in, not_in, less_than, less_equal, greater_than, greater_equal 任何数字值或${EMPTY}为空值。 不超过19位的大整数,小数 和 货币字段允许小数值。在启用多货币的帐户中,只支持本币值。
文本(邮箱,电话,URL,选择列表,多选列表,等) equal, not_equal, in, not_in, contains, not_contains, starts_with, ends_with. 任意文本值或 ${EMPTY} 为空值 不能超过 255 个字符。
日期 equal, not_equal, in, not_in, between, not_between. 任意日期值或 ${EMPTY} 为空值。  
日期时间 equal, not_equal, in, not_in, between, not_between. 日期时间值,支持“直到秒”或 ${EMPTY} 为空值。 不支持毫秒。
布尔型 equal 真/假。  
查找 equal, not_equal, in, not_in 查找的大数值或${EMPTY}为空值。 查找名称不支持。
文本区域(多行)     不支持。

请求方法

GET

Curl
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/bulk/v2/read/1000000031045"

-X GET

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本响应

读取任务已添加的样本响应

复制样本响应

读取任务进行中的样本响应

复制样本响应

读取任务已完成的样本响应

备注:


  • 此API支持PollingCallback选项。
  • 此API支持除备注、附件、邮件以及相关和交叉模块之外的所有模块。
  • 此API端点不支持SortingGroup 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 对象的信息。

显示查询属性

属性 数据类型 必填 描述
module 字符串 指定要读取的模块的API名称。例如:Leads, Contacts。示例 - "module" : "Leads”。
fields 数组 指定要获取的字段的API名称。例如:First_Name, Last_Name, Email. Sample - "fields" : ["First_Name", "Last_Name", "Email”].
page 整型 从各个页面获取记录列表。页的默认值是 1。每页包含200,000条记录。如果没有指定页面,那么将获取匹配条件的前20万条记录。
criteria 显示属性 JSON 对象 根据指定条件和对上述记录应执行的操作对记录进行限定。例如:一个模块或字段的API名称,用于添加两个或多个条件的比较器,记录/模块/字段所属的组,等等。

显示条件属性

属性 数据类型 必填 描述
api_name 字符串 是的,如果 group 和 group_operator 没有指定。 要比较的字段API名称。例如:First_Name, Last_Name。
value 字符串或数组 是的,如果 group 和 group_operator 没有指定。 Positive Integer values only
group_operator 字符串 是的,如果 api_name,comparator 和 value 没有指定。 逻辑运算符。支持的值 - and, or
group 数组(标准JSON对象) 是的,如果 api_name,comparator 和 value 没有指定。 Array of criteria objects.
comparator 显示详细信息 字符串 是的,如果 group 和 group_operator 没有指定。 指定任何类型的比较器。例如:equal, greater_than。有关更多细节,请参阅下表。

显示比较详情

数据类型 比较 限制
数字(整型/
小数/长整型/
货币/百分比)
equal, not_equal, in, not_in, less_than, less_equal, greater_than, greater_equal 任意数字值或 ${EMPTY} 为空值。 不超过19位的大整数,小数和货币字段允许小数值。在启用多货币的账户中,只支持本币值。
文本(邮箱,电话,URL,选择列表,多选列表,等) equal, not_equal, in, not_in, contains, not_contains, starts_with, ends_with. 任意文本值或 ${EMPTY}为空值 不能超过 255 个字符。
日期 equal, not_equal, in, not_in, between, not_between. 任意日期值或 ${EMPTY}为空值。  
日期时间 equal, not_equal, in, not_in, between, not_between. 日期时间值,支持“直到秒”或 ${EMPTY}为空值。 不支持毫秒级。
布尔型 equal 真/假。  
查找 equal, not_equal, in, not_in 查找的大整数值或 ${EMPTY}为空值。 查找名称不支持。
文本区域(多行)     不支持。

请求方法

GET

Curl
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/bulk/v2/read/1000000031045/result"

-X GET

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

备注:

  • 响应包含一个压缩文件,{job_id}.zip,其中包含结果CSV文件。

布局

用途

获取与指定模块相关联的布局。

请求 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 Java PHP Python
复制样本代码

样本请求:

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 中不受支持。(一旦这些模块受支持,则此错误将不会显示。)
Curl Java PHP Python
复制样本代码

样本请求:

"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 Java PHP Python
复制样本代码

样本请求:

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 中不受支持。(一旦这些模块受支持,则此错误将不会显示。)
Curl Java PHP Python
复制样本代码

样本请求:

"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
复制示例请求

示例请求:

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名称是必需的。否则将抛出错误。
Curl
复制示例请求

示例请求:使用变量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

Curl
复制示例请求

示例请求:使用变量组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
复制示例请求

示例请求:

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
复制示例请求

示例请求:

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
复制示例请求

示例请求:

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
复制示例请求

示例请求:

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
复制示例请求

示例请求:

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
复制示例请求

示例请求:

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名称。

备注:

  • pageper_page 参数用于根据记录在CRM中的位置提取记录。让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200个以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。
Curl
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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,逗号分隔。
Curl
复制样本代码

样本请求:

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

Curl
复制样本代码

样本请求:

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_idevents 密钥也是必须的。
复制样本响应

样本响应:

记录级别共享 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
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000135187/actions/share"

-X GET

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本响应

样本响应:对于新的订阅

获取记录的共享摘要

用途

用来获取记录的共享摘要。

请求 URL

https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/actions/share?view=summary

module_api_name - 模块的 API 名称。

record_id - 指定记录的唯一 ID。

可能的模块名称 可能的操作类型
线索,客户,联系人,商机,市场活动,服务支持,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单和定制模块。 ALL - 完全访问
READ - 查看记录的共享权限

请求方法

GET

参数

参数名称 数据类型 描述
view - 在UI中显示与摘要类似的共享记录详细信息。可以是 "manage" 或 "summary"。
sharedTo (可选) 整型 输入共享记录的用户ID。共享用户使用它来了解与他共享记录的人。
Curl
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000135187/actions/share?view=summary"

-X GET

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

复制样本代码

样本响应:查看共享记录的用户:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000135187/actions/share?view=summary&sharedTo=100000000000032641"

-X GET

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本响应

样本响应:

复制样本响应

样本响应:查看共享记录的用户:

获取共享用户详情

用途

获取记录的共享详细信息、共享的用户信息以及可以共享记录的用户列表。

请求 URL

https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/actions/share?view=manage

module_api_name - 模块的 API 名称。

record_id - 指定记录的唯一 ID。

可能的模块名称 可能的操作类型
线索,客户,联系人,商机,市场活动,服务支持,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单和定制模块。 ALL - 完全访问
READ - 查看记录的共享权限

请求方法

GET

参数

参数名称 数据类型 描述
view - 还可以显示可以共享记录的用户列表。可以是 "manage" 或 "summary"。
Curl
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000135187/actions/share?view=manage"

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

-X GET

复制样本响应

样本响应:

撤销共享权限

用途

撤销记录的共享权限。

请求 URL

https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/actions/share

module_api_name - 模块的 API 名称。

record_id - 指定记录的唯一 ID。

可能的模块名称 可能的操作类型
线索,客户,联系人,商机,市场活动,服务支持,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单和定制模块。 ALL - 完全访问
DELETE - 撤销某个记录的共享权限

请求方法

DELETE

Curl
复制样本代码

样本请求:

https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000135187/actions/share"

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

-X DELETE

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本响应

样本响应:

机构 API

通常,CRM 帐户用于管理您的公司。组织 API 允许用户有访问权,来查看有关客户公司的信息。您可根据需求,将信息设为只读,或对其进行更改。

获取机构数据

用途

用来获取机构的数据

请求 URL

https://www.zohoapis.com.cn/crm/v2/org

作用域

scope=ZohoCRM.org.{operation_type}

可能的操作类型
ALL - 对机构数据的完全访问
READ - 获取机构数据

请求方法

GET

Curl Java PHP Python
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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 字段未提供,那么将应用于系统定义的字段。
  • pageper_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 Java PHP Python Functions
复制样本代码

样本请求:

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 Java PHP Python Functions
复制样本代码

样本请求:

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, approvalblueprint。如果没有提到触发器,则将执行与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 Java PHP Python Functions
复制样本代码

样本请求:

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, approvalblueprint。如果没有提到触发器,则将执行与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 Java PHP Python Functions
复制样本代码

样本请求:

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, approvalblueprint。 如果没有提到触发器,则将执行与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 Python
复制样本代码

样本请求:

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

备注:

pageper_page 参数用于根据记录在CRM中的位置提取记录。 让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200条以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。

可能的错误

HTTP 状态 错误码 消息 原因
400 INVALID_DATA 无效数据 给定的参数值类型无效。
Curl Java PHP Python
复制样本代码

样本请求:

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 字符串 {email} - 通过电子邮件执行模块搜索。将搜索并列出指定模块的所有电子邮件字段。
phone 字符串 {Phone} - 通过电话号码执行模块搜索。将搜索并列出指定模块的所有电话字段。
word 字符串 {Word}- 按文字执行全局搜索。
page (可选) 整型 从各个页面获取记录列表。页的默认值是 1.
per_page (可选) 整型 获取每页可用记录的列表。每个页面的默认值为 200.

备注:

  • 以上四个参数中只有一个在某个时间点有效。此外,如果同时给出两个参数,优先级将按照顺序给出,即电子邮件、电话和文字,并且只有一个参数可以工作。
  • pageper_page 参数用于根据记录在CRM中的位置提取记录。让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200条以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。
Curl Java PHP Python Functions
复制样本代码

样本请求:

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 Java PHP Python Functions
复制样本代码

样本请求:

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 Java PHP Python Functions
复制样本代码

样本请求:

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 Java PHP Python Functions
复制样本代码

样本请求:

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 Java PHP Python
复制样本代码

样本请求:

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 Java PHP Python Functions
复制样本代码

样本请求:

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

子表单是辅助表单或表,它使您能够将多个行项包含到主表单中。它们用于将多个项目关联到一个记录。从更技术的角度来看,子表单可以轻松地解决与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
复制示例请求

示例请求:

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
复制示例请求

示例请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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"

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本响应

样本响应:

备注 API

备注用来提供关于联系人、客户、商机或任务的一些 额外附件信息。可以在大多数模块中看到备注部分。因此,通过备注 API,您可以创建、删除或更新备注。您可以在单个或多个备注上执行操作。

获取备注

用途

用来获取备注列表

请求 URL

https://www.zohoapis.com.cn/crm/v2/Notes

作用域

scope=ZohoCRM.modules.notes.{operation_type}

可能的操作类型
ALL - 对备注的完全访问
READ - 获取备注数据

参数

参数名称 数据类型 描述
page (可选) 整型 从各个页面获取记录列表。页的默认值是1.
per_page (可选) 整型 获取每页可用记录的列表。每个页面的默认值为200.

备注:

pageper_page参数用于根据CRM中的位置获取记录。让我们假设用户必须获取400条记录。API调用可以获得的记录的最大数量是200。因此,对于第200条以上的记录,它们不能被获取。通过使用page(1、2、3和4)和per_page(100)参数,用户可以使用4个API调用获取所有400条记录。

请求方法

GET

Curl
复制样本代码

样本请求:

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 Java PHP Python
复制样本代码

样本请求:

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
复制样本代码

样本请求:

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 Java PHP Python
复制样本代码

样本请求:

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 Java PHP Python
复制样本代码

样本请求:

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 Python
复制样本代码

样本请求:

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
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Notes?ids=2883756000000268003,2883756000000987654,2883756000000736435"

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

-X DELETE

复制样本响应

样本响应:

文件和附件 API

附件提供了关于联系人或公司的更多信息,这些信息通常无法显示。您可能还需要发送图像、文本文件或视频 或任何其他类型的文件给联系人。文件和附件API允许用户获取附件列表,上传或下载照片或文件。

获取附件列表

用途

获取附件列表

请求 URL

https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Attachments

module_api_name - 模块的 API 名称。

record_id - 指定记录的唯一 ID。

作用域

scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}

可能的模块名称 可能的操作类型
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 ALL - 对附件的完全访问
READ - 获取附件数据

请求方法

GET

Curl Java PHP Python
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/1000000231009/Attachments"

-X GET

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

复制样本代码

样本请求:

ZCRMRecord record = ZCRMRecord.getInstance("Products",23857634545l);//带有记录 ID 的模块 API 名称

BulkAPIResponse response = record.getAllAttachmentsDetails();

List<ZCRMAttachment> list = ((List<ZCRMAttachment>) response.getData());

复制样本代码

样本请求:

try{
$record=ZCRMRecord::getInstance("Leads",410405000001111007);
$responseIns=$record->getAttachments(1,50);
$records=$responseIns->getData();
foreach ($records as $attchmentIns)
{
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->getMessage();
echo $e->getExceptionCode();
echo $e->getCode();
}

复制样本代码

样本请求:

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)
attachments = record.get_attachments
#this is a Hash containing entries with attachment_id vs corresponding ZCRMAttachment object

复制样本代码

样本请求:

def get_attachments(self):

  try:

    record=ZCRMRecord.get_instance('Leads',440872000000222019) #模块 API 名称, entityId

    resp=record.get_attachments()

    print resp.status_code

    attachment_ins_arr=resp.data

    for attachment_ins in attachment_ins_arr:

      print attachment_ins.id

      print attachment_ins.file_name

      print attachment_ins.file_type

      print attachment_ins.size

      print attachment_ins.owner.id

      print attachment_ins.created_by.id

      print attachment_ins.modified_by.id

      print attachment_ins.created_time

      print attachment_ins.modified_time

      print attachment_ins.parent_module

      print attachment_ins.attachment_type

      print attachment_ins.parent_name

      print attachment_ins.parent_id

      print attachment_ins.parent_record.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

复制样本响应

样本响应:

上传附件

用途

将文件附加到记录上(作为 MULTIPART)。在API请求中指定模块名称 和相关的 记录 ID 以将附件上传到您的记录中。

请求 URL

https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Attachments

module_api_name - 模块的 API 名称。

record_id - 指定记录的唯一 ID。

作用域

scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}

可能的模块名称 可能的操作类型
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 ALL - 附件的完全访问
WRITE - 编辑附件数据
CREATE - 创建附件数据

请求方法

POST

Curl Java PHP Python
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/1000000231009/Attachments"

-X POST

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

-F "file=@attachment1.txt"

复制样本代码

样本请求 - 上传一个“链接”作为附件:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/1386586000003152001/Attachments"

-X POST

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

-F "attachmentUrl=https://www.zohocorp.com"

复制样本代码

样本请求:

ZCRMRecord record = ZCRMRecord.getInstance("Products",23857634545l);//带有记录 ID 的模块 API 名称

APIResponse response = record.uploadAttachment("FilePath");

ZCRMAttachment uploadAttachment = (ZCRMAttachment) response.getData();

String requestStatus =response.getStatus();

复制样本代码

样本请求:

try{
$record=ZCRMRecord::getInstance(“Leads”,”410405000001111007”);
$responseIns=$record->uploadAttachment($filePath); // $filePath - 上传附件的绝对路径
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)
accounts_module = api_obj.load_crm_module(“Accounts”)
account_id = “1234567890”
record = accounts_module.get_record(account_id)
file_path = “path/to/the/file/“
bool, attachment_id = record.upload_attachments(file_path)

复制样本代码

样本请求:

def upload_attachment(self):
    try:
        record=ZCRMRecord.get_instance('Leads',1386586000001856002)
        resp=record.upload_attachment('/Users/Downloads/sequel-pro-1.1.dmg')
        print resp.data.id
 nbsp;   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记录 ID 来下载需要的附件。

请求 URL

https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Attachments/{attachment_id}

module_api_name - 模块的 API 名称。

record_id - 指定记录的唯一 ID。

attachment_id - 指定附件的唯一 ID。

作用域

scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_name}.{operation_type}

可能的模块名称 可能的操作类型
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 ALL - 对附件的完全访问
READ - 获取附件数据

请求方法

GET

Curl Java PHP Python
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/100023009/Attachments/100013547"

-X GET

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

所需的文件将被下载。

复制样本代码

样本请求:

ZCRMRecord record = ZCRMRecord.getInstance("Products",12345l); //带有记录 ID 的模块 API 名称
FileAPIResponse response = record.downloadAttachment(456789l); //附件 ID
InputStream inputStream = response.getFileAsStream();
CommonUtil.saveStreamAsFile(inputStream, "/absolute/path/to/store/file",response.getFileName());

复制样本代码

样本请求:

try{
$record=ZCRMRecord::getInstance(“Accounts”,410405000001519001);
$fileResponseIns=$record->downloadAttachment(410405000001519501); // 410405000001519501 - 附件 ID。
$fp=fopen($filePath.$fileResponseIns->getFileName(),"w"); // $filePath - 下载的文件存储的绝对路径。
echo "HTTP Status Code:".$fileResponseIns->getHttpStatusCode();
echo "File Name:".$fileResponseIns->getFileName();
$stream=$fileResponseIns->getFileContent();
fputs($fp,$stream);
fclose($fp);
}catch (ZCRMException $e)
{
echo $e->getMessage();
echo $e->getExceptionCode();
echo $e->getCode();
}

复制样本代码

样本请求:

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)
attachment_id = “1234567890”
bool, file_name = accounts_module.download_attachment(attachment_id)

复制样本代码

样本请求:

def download_attachment(self):
    try:
        record=ZCRMRecord.get_instance('Leads',1386586000001856002)
        resp=record.download_attachment(1386586000001856008)
        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

删除附件

用途

删除附加在记录上的文件

请求 URL

https://www.zohoapis.com.cn/crm/v2/{module_api_name}/{record_id}/Attachments/{attachment_id}

module_api_name - 模块的 API 名称。

record_id - 指定记录的唯一 ID。

attachment_id - 指定附件的唯一 ID。

作用域

scope=ZohoCRM.modules.all
(或)
scope=ZohoCRM.modules.{module_api_name}.{operation_type}

可能的模块名称 可能的操作类型
线索,客户,联系人,商机,市场活动,任务,服务支持,事件,通话,解决方案,产品,供货商,价格表,报价,销售订单,采购订单,发货单,定制模块,备注。 ALL - 对附件的完全访问
DELETE - 删除附件数据

请求方法

DELETE

Curl Python
复制样本代码

样本请求:

curl "https://www.zohoapis.com.cn/crm/v2/Leads/2883756000000261075/Attachments/2883756000000261017"

-X DELETE

-H "Authorization: Zoho-oauthtoken d92d401c803988c5cb849d0b4215f52"

复制样本代码

样本请求:

def delete_attachment(self):
    try:
        record=ZCRMRecord.get_instance('Leads',1386586000001856002)
        resp=record.delete_attachment(1386586000001858011)
        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 请求中提供相关的线索或联系人记录 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 Java PHP Python
复制样本代码

样本请求:

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 Java PHP Python
复制样本代码

样本请求:

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 Python
复制样本代码

样本请求:

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

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本代码

样本请求:

复制样本响应

样本响应: