使用 python 的 Connectwise REST API 实现

Sha*_*lal 0 python-2.7

在我的应用程序中,我将使用 connectwise API,但我不知道如何调用它们的 API,例如

How to connect
How to pass header (json data)
How to authentication (I have company id , public and private key)
How to make call and take response
Run Code Online (Sandbox Code Playgroud)

我是 Python 人 提前致谢

Dan*_*nty 6

这个问题非常广泛,如果您还没有熟悉诸如Requests 模块之类的东西,您将需要熟悉它。

此外,ConnectWise 在他们的开发者站点上有很多文档,并且注册是免费且简单的。

然而,在过去的几周里,我自己经历了这段旅程,学到了很多东西,所以我会和你分享。

验证

身份验证是通过创建 API 用户来完成的。在 CW Manage 中,您可以创建具有 API 许可类别的成员用户。

在 ConnectWise 管理中:

  1. 转到系统 => 成员
  2. 转到 API 成员选项卡。
  3. 创建一个新的 API 成员,使 API 可以访问您需要的区域,例如公司/地区级别。请注意用户名 amd,您不能指定密码。完成所有必填字段(所有者 ID、系统默认值、组、审批者等)。
  4. 当您让这个用户进入 API 密钥选项卡。输入新密钥集的描述,然后保存。执行此操作时,您将看到一次(且仅一次)公钥和私钥。记下它们。

授权头

在 Python 中:

>>> import base64
>>> base64.b64encode("a+b:c")
Run Code Online (Sandbox Code Playgroud)

...其中 a 是您的 ConnectWise 公司名称(您在登录框中输入的内容),b 是您的公钥,c 是您的私钥。这将返回一些你用来访问系统的东西。复制它。

提出您的第一个请求

现在在 Python 中创建一个新文件并将其放入其中(这又快又脏,但它应该能让你开始):

import requests

cwToken = ""
# This is the ConnectWise access code generated earlier

cwUrl = "https://api-eu.myconnectwise.net/v4_6_release/apis/3.0/" 
# check the URL matches your region, look at your CW Manage login box if not

cwHeaders = {"Authorization":"Basic " + cwToken,
             "clientID":"<insertyoursecretClientIDhere>",
             "Content-Type":"application/json"}
# this is your authorisation payload

try:
    r = requests.get(cwUrl + "company/companies?pageSize=1000&conditions=type/id==1", headers=cwHeaders)
    # request has been made
    r.raise_for_status()
except:
    print(r.text)
    raise

companies = r.json()
Run Code Online (Sandbox Code Playgroud)

公司对象现在包含您的前 1,000 个客户的列表(类型为 ID 1 -- 客户)。我已经包含了一个条件字符串示例,因为我花了一段时间才弄清楚它是什么以及如何使用它。但是,如果您不希望服务器为您进行过滤,则只需将其取下即可。

然后你就可以修改上面的内容,或者把它变成一个模块(这就是我所做的)然后进行快速和便携的调用,比如

cw.getCompanies()
Run Code Online (Sandbox Code Playgroud)

这将简单地返回一个包含所有公司的 JSON 对象。

走得更远

研究文档!!它足够全面,可以帮助您入门。并且论坛由工作人员积极监控(尽管他们主要帮助 C# 查询而不是脚本)。