使用python进行Connectwise REST API实现

时间:2017-01-24 15:00:48

标签: 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

我是Python人 提前致谢

2 个答案:

答案 0 :(得分:2)

这个问题非常广泛,如果你还没有,你需要熟悉Requests module等内容。

另外,ConnectWise在their developer site有很多文档,注册也是免费的。

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

验证

通过创建API用户完成身份验证。在CW管理中,您可以使用API​​许可证类创建成员用户。

在ConnectWise管理中:

  1. 转到系统=>成员
  2. 转到API成员标签。
  3. 创建一个新的API成员,使API可以访问您需要的区域,例如公司/地区级别。注意用户名,amd表示您无法指定密码。填写所有必填字段(所有者ID,系统默认值,组,批准者等)。
  4. 制作此用户后,请转到API密钥选项卡。输入新密钥集的描述,然后保存。执行此操作时,您将看到公钥和私钥一次(仅一次)。记下来。
  5. 授权标题

    在Python中:

    >>> import base64
    >>> base64.b64encode("a+b:c")
    

    ...其中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,
                 "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()
    

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

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

    cw.getCompanies()
    

    只会返回一个JSON对象,所有公司都在。

    更进一步

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

答案 1 :(得分:2)

自从Daniel的回复非常有帮助以来,这只是2020年的更新,但缺少了Connectwise在2019年所做的更改,该更改现在需要使用ClientID进行身份验证。

在此处输入一个客户ID(滚动到底部,尽管读取所有ID既快捷又有用): https://developer.connectwise.com/ClientID#What_is_a_clientId.3F

Daniel的代码应如下所示:

cwHeaders = {"Authorization":"Basic " + cwToken,
             "clientID":"<insertyoursecretClientIDhere>",
             "Content-Type":"application/json"}