connectwise-rest 0.23.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/.eslintrc +19 -52
  2. package/.gitattributes +1 -0
  3. package/.github/workflows/codeql-analysis.yml +70 -0
  4. package/.github/workflows/node.js.yml +42 -0
  5. package/.mocharc.json +5 -0
  6. package/.prettierrc +7 -0
  7. package/.travis.yml +4 -2
  8. package/README.md +243 -230
  9. package/api-extractor.json +364 -0
  10. package/dist/Automate/AVTemplatePoliciesAPI.d.ts +27 -0
  11. package/dist/Automate/AVTemplatePoliciesAPI.d.ts.map +1 -0
  12. package/dist/Automate/AVTemplatePoliciesAPI.js +87 -0
  13. package/dist/Automate/AVTemplatePoliciesAPI.js.map +1 -0
  14. package/dist/Automate/ClientsAPI.d.ts +34 -0
  15. package/dist/Automate/ClientsAPI.d.ts.map +1 -0
  16. package/dist/Automate/ClientsAPI.js +114 -0
  17. package/dist/Automate/ClientsAPI.js.map +1 -0
  18. package/dist/Automate/CommandsAPI.d.ts +15 -0
  19. package/dist/Automate/CommandsAPI.d.ts.map +1 -0
  20. package/dist/Automate/CommandsAPI.js +31 -0
  21. package/dist/Automate/CommandsAPI.js.map +1 -0
  22. package/dist/Automate/ComputersAPI.d.ts +94 -0
  23. package/dist/Automate/ComputersAPI.d.ts.map +1 -0
  24. package/dist/Automate/ComputersAPI.js +353 -0
  25. package/dist/Automate/ComputersAPI.js.map +1 -0
  26. package/dist/Automate/ContactsAPI.d.ts +18 -0
  27. package/dist/Automate/ContactsAPI.d.ts.map +1 -0
  28. package/dist/Automate/ContactsAPI.js +45 -0
  29. package/dist/Automate/ContactsAPI.js.map +1 -0
  30. package/dist/Automate/DataViewsAPI.d.ts +16 -0
  31. package/dist/Automate/DataViewsAPI.d.ts.map +1 -0
  32. package/dist/Automate/DataViewsAPI.js +31 -0
  33. package/dist/Automate/DataViewsAPI.js.map +1 -0
  34. package/dist/Automate/DrivesAPI.d.ts +19 -0
  35. package/dist/Automate/DrivesAPI.d.ts.map +1 -0
  36. package/dist/Automate/DrivesAPI.js +52 -0
  37. package/dist/Automate/DrivesAPI.js.map +1 -0
  38. package/dist/Automate/EventLogsAPI.d.ts +14 -0
  39. package/dist/Automate/EventLogsAPI.d.ts.map +1 -0
  40. package/dist/Automate/EventLogsAPI.js +24 -0
  41. package/dist/Automate/EventLogsAPI.js.map +1 -0
  42. package/dist/Automate/LocationsAPI.d.ts +42 -0
  43. package/dist/Automate/LocationsAPI.d.ts.map +1 -0
  44. package/dist/Automate/LocationsAPI.js +133 -0
  45. package/dist/Automate/LocationsAPI.js.map +1 -0
  46. package/dist/Automate/MaintenanceWindowDefinitionsAPI.d.ts +14 -0
  47. package/dist/Automate/MaintenanceWindowDefinitionsAPI.d.ts.map +1 -0
  48. package/dist/Automate/MaintenanceWindowDefinitionsAPI.js +24 -0
  49. package/dist/Automate/MaintenanceWindowDefinitionsAPI.js.map +1 -0
  50. package/dist/Automate/MonitorsAPI.d.ts +23 -0
  51. package/dist/Automate/MonitorsAPI.d.ts.map +1 -0
  52. package/dist/Automate/MonitorsAPI.js +80 -0
  53. package/dist/Automate/MonitorsAPI.js.map +1 -0
  54. package/dist/Automate/NetworkDevicesAPI.d.ts +17 -0
  55. package/dist/Automate/NetworkDevicesAPI.d.ts.map +1 -0
  56. package/dist/Automate/NetworkDevicesAPI.js +38 -0
  57. package/dist/Automate/NetworkDevicesAPI.js.map +1 -0
  58. package/dist/Automate/PatchingAPI.d.ts +27 -0
  59. package/dist/Automate/PatchingAPI.d.ts.map +1 -0
  60. package/dist/Automate/PatchingAPI.js +94 -0
  61. package/dist/Automate/PatchingAPI.js.map +1 -0
  62. package/dist/Automate/RemoteAgentAPI.d.ts +18 -0
  63. package/dist/Automate/RemoteAgentAPI.d.ts.map +1 -0
  64. package/dist/Automate/RemoteAgentAPI.js +45 -0
  65. package/dist/Automate/RemoteAgentAPI.js.map +1 -0
  66. package/dist/Automate/ScriptingAPI.d.ts +32 -0
  67. package/dist/Automate/ScriptingAPI.d.ts.map +1 -0
  68. package/dist/Automate/ScriptingAPI.js +104 -0
  69. package/dist/Automate/ScriptingAPI.js.map +1 -0
  70. package/dist/Automate/SearchesAPI.d.ts +17 -0
  71. package/dist/Automate/SearchesAPI.d.ts.map +1 -0
  72. package/dist/Automate/SearchesAPI.js +38 -0
  73. package/dist/Automate/SearchesAPI.js.map +1 -0
  74. package/dist/Automate/SystemAPI.d.ts +72 -0
  75. package/dist/Automate/SystemAPI.d.ts.map +1 -0
  76. package/dist/Automate/SystemAPI.js +268 -0
  77. package/dist/Automate/SystemAPI.js.map +1 -0
  78. package/dist/Automate/TicketsAPI.d.ts +10 -0
  79. package/dist/Automate/TicketsAPI.d.ts.map +1 -0
  80. package/dist/Automate/TicketsAPI.js +24 -0
  81. package/dist/Automate/TicketsAPI.js.map +1 -0
  82. package/dist/Automate/UserProfilesAPI.d.ts +14 -0
  83. package/dist/Automate/UserProfilesAPI.d.ts.map +1 -0
  84. package/dist/Automate/UserProfilesAPI.js +23 -0
  85. package/dist/Automate/UserProfilesAPI.js.map +1 -0
  86. package/dist/Automate.d.ts +48 -0
  87. package/dist/Automate.d.ts.map +1 -0
  88. package/dist/Automate.js +167 -0
  89. package/dist/Automate.js.map +1 -0
  90. package/dist/AutomateAPI.d.ts +96 -0
  91. package/dist/AutomateAPI.d.ts.map +1 -0
  92. package/dist/AutomateAPI.js +168 -0
  93. package/dist/AutomateAPI.js.map +1 -0
  94. package/dist/AutomateTypes.d.ts +10437 -0
  95. package/dist/AutomateTypes.d.ts.map +1 -0
  96. package/dist/AutomateTypes.js +3 -0
  97. package/dist/AutomateTypes.js.map +1 -0
  98. package/dist/BaseAPI.d.ts +13 -0
  99. package/dist/BaseAPI.d.ts.map +1 -0
  100. package/dist/BaseAPI.js +53 -0
  101. package/dist/BaseAPI.js.map +1 -0
  102. package/dist/Manage/CompanyAPI.d.ts +573 -0
  103. package/dist/Manage/CompanyAPI.d.ts.map +1 -0
  104. package/dist/Manage/CompanyAPI.js +3294 -0
  105. package/dist/Manage/CompanyAPI.js.map +1 -0
  106. package/dist/Manage/ConfigurationsAPI.d.ts +24 -0
  107. package/dist/Manage/ConfigurationsAPI.d.ts.map +1 -0
  108. package/dist/Manage/ConfigurationsAPI.js +73 -0
  109. package/dist/Manage/ConfigurationsAPI.js.map +1 -0
  110. package/dist/Manage/ExpenseAPI.d.ts +68 -0
  111. package/dist/Manage/ExpenseAPI.d.ts.map +1 -0
  112. package/dist/Manage/ExpenseAPI.js +306 -0
  113. package/dist/Manage/ExpenseAPI.js.map +1 -0
  114. package/dist/Manage/FinanceAPI.d.ts +460 -0
  115. package/dist/Manage/FinanceAPI.d.ts.map +1 -0
  116. package/dist/Manage/FinanceAPI.js +2587 -0
  117. package/dist/Manage/FinanceAPI.js.map +1 -0
  118. package/dist/Manage/MarketingAPI.d.ts +120 -0
  119. package/dist/Manage/MarketingAPI.d.ts.map +1 -0
  120. package/dist/Manage/MarketingAPI.js +629 -0
  121. package/dist/Manage/MarketingAPI.js.map +1 -0
  122. package/dist/Manage/ProcurementAPI.d.ts +373 -0
  123. package/dist/Manage/ProcurementAPI.d.ts.map +1 -0
  124. package/dist/Manage/ProcurementAPI.js +2098 -0
  125. package/dist/Manage/ProcurementAPI.js.map +1 -0
  126. package/dist/Manage/ProjectAPI.d.ts +179 -0
  127. package/dist/Manage/ProjectAPI.d.ts.map +1 -0
  128. package/dist/Manage/ProjectAPI.js +940 -0
  129. package/dist/Manage/ProjectAPI.js.map +1 -0
  130. package/dist/Manage/SalesAPI.d.ts +254 -0
  131. package/dist/Manage/SalesAPI.d.ts.map +1 -0
  132. package/dist/Manage/SalesAPI.js +1392 -0
  133. package/dist/Manage/SalesAPI.js.map +1 -0
  134. package/dist/Manage/ScheduleAPI.d.ts +111 -0
  135. package/dist/Manage/ScheduleAPI.d.ts.map +1 -0
  136. package/dist/Manage/ScheduleAPI.js +575 -0
  137. package/dist/Manage/ScheduleAPI.js.map +1 -0
  138. package/dist/Manage/ServiceAPI.d.ts +419 -0
  139. package/dist/Manage/ServiceAPI.d.ts.map +1 -0
  140. package/dist/Manage/ServiceAPI.js +2334 -0
  141. package/dist/Manage/ServiceAPI.js.map +1 -0
  142. package/dist/Manage/SystemAPI.d.ts +809 -0
  143. package/dist/Manage/SystemAPI.d.ts.map +1 -0
  144. package/dist/Manage/SystemAPI.js +4531 -0
  145. package/dist/Manage/SystemAPI.js.map +1 -0
  146. package/dist/Manage/TimeAPI.d.ts +157 -0
  147. package/dist/Manage/TimeAPI.d.ts.map +1 -0
  148. package/dist/Manage/TimeAPI.js +835 -0
  149. package/dist/Manage/TimeAPI.js.map +1 -0
  150. package/dist/Manage.d.ts +34 -0
  151. package/dist/Manage.d.ts.map +1 -0
  152. package/dist/Manage.js +127 -0
  153. package/dist/Manage.js.map +1 -0
  154. package/dist/ManageAPI.d.ts +99 -0
  155. package/dist/ManageAPI.d.ts.map +1 -0
  156. package/dist/ManageAPI.js +112 -0
  157. package/dist/ManageAPI.js.map +1 -0
  158. package/dist/ManageTypes.d.ts +91320 -0
  159. package/dist/ManageTypes.d.ts.map +1 -0
  160. package/dist/ManageTypes.js +7 -0
  161. package/dist/ManageTypes.js.map +1 -0
  162. package/dist/index.d.ts +9 -0
  163. package/dist/index.d.ts.map +1 -0
  164. package/dist/index.js +38 -0
  165. package/dist/index.js.map +1 -0
  166. package/dist/types.d.ts +46 -0
  167. package/dist/types.d.ts.map +1 -0
  168. package/dist/types.js +21 -0
  169. package/dist/types.js.map +1 -0
  170. package/dist/utils/Callback.d.ts +67 -0
  171. package/dist/utils/Callback.d.ts.map +1 -0
  172. package/dist/utils/Callback.js +109 -0
  173. package/dist/utils/Callback.js.map +1 -0
  174. package/dist/utils/Series.d.ts +36 -0
  175. package/dist/utils/Series.d.ts.map +1 -0
  176. package/dist/utils/Series.js +64 -0
  177. package/dist/utils/Series.js.map +1 -0
  178. package/dist/utils/index.d.ts +7 -0
  179. package/dist/utils/index.d.ts.map +1 -0
  180. package/dist/utils/index.js +11 -0
  181. package/dist/utils/index.js.map +1 -0
  182. package/generator/automate-generator.js +75 -0
  183. package/generator/automate-json.js +61 -0
  184. package/generator/automate-types.js +15 -0
  185. package/generator/generator.d.ts +67 -0
  186. package/generator/generator.js +255 -0
  187. package/generator/manage-generator.js +71 -0
  188. package/generator/manage-types.js +14 -0
  189. package/package.json +48 -21
  190. package/src/Automate/AVTemplatePoliciesAPI.ts +114 -0
  191. package/src/Automate/ClientsAPI.ts +161 -0
  192. package/src/Automate/CommandsAPI.ts +33 -0
  193. package/src/Automate/ComputersAPI.ts +550 -0
  194. package/src/Automate/ContactsAPI.ts +56 -0
  195. package/src/Automate/DataViewsAPI.ts +36 -0
  196. package/src/Automate/DrivesAPI.ts +74 -0
  197. package/src/Automate/EventLogsAPI.ts +25 -0
  198. package/src/Automate/LocationsAPI.ts +206 -0
  199. package/src/Automate/MaintenanceWindowDefinitionsAPI.ts +28 -0
  200. package/src/Automate/MonitorsAPI.ts +94 -0
  201. package/src/Automate/NetworkDevicesAPI.ts +44 -0
  202. package/src/Automate/PatchingAPI.ts +109 -0
  203. package/src/Automate/RemoteAgentAPI.ts +58 -0
  204. package/src/Automate/ScriptingAPI.ts +137 -0
  205. package/src/Automate/SearchesAPI.ts +42 -0
  206. package/src/Automate/SystemAPI.ts +386 -0
  207. package/src/Automate/TicketsAPI.ts +24 -0
  208. package/src/Automate/UserProfilesAPI.ts +25 -0
  209. package/src/Automate.ts +216 -0
  210. package/src/AutomateAPI.ts +144 -0
  211. package/src/AutomateTypes.ts +10492 -0
  212. package/src/BaseAPI.ts +83 -0
  213. package/src/Manage/CompanyAPI.ts +4851 -0
  214. package/src/Manage/ConfigurationsAPI.ts +107 -0
  215. package/src/Manage/ExpenseAPI.ts +395 -0
  216. package/src/Manage/FinanceAPI.ts +3851 -0
  217. package/src/Manage/MarketingAPI.ts +935 -0
  218. package/src/Manage/ProcurementAPI.ts +3044 -0
  219. package/src/Manage/ProjectAPI.ts +1400 -0
  220. package/src/Manage/SalesAPI.ts +1922 -0
  221. package/src/Manage/ScheduleAPI.ts +751 -0
  222. package/src/Manage/ServiceAPI.ts +3401 -0
  223. package/src/Manage/SystemAPI.ts +6269 -0
  224. package/src/Manage/TimeAPI.ts +1121 -0
  225. package/src/Manage.ts +152 -0
  226. package/src/ManageAPI.ts +133 -0
  227. package/src/ManageTypes.ts +91318 -0
  228. package/src/index.ts +18 -0
  229. package/src/types.ts +66 -0
  230. package/src/utils/Callback.ts +145 -0
  231. package/src/utils/Series.ts +83 -0
  232. package/src/utils/index.ts +7 -0
  233. package/swagger-errors.md +30 -0
  234. package/test/.env.example +12 -4
  235. package/test/test-utils.ts +27 -0
  236. package/test/test.ts +320 -0
  237. package/tsconfig.json +29 -0
  238. package/doc.md +0 -5984
  239. package/docs/jsdoc.json +0 -15
  240. package/index.js +0 -10
  241. package/src/CompanyAPI/Companies.js +0 -149
  242. package/src/CompanyAPI/CompanyCompanyTypeAssociations.js +0 -111
  243. package/src/CompanyAPI/CompanySites.js +0 -70
  244. package/src/CompanyAPI/CompanyTeams.js +0 -108
  245. package/src/CompanyAPI/CompanyTypeInfos.js +0 -58
  246. package/src/CompanyAPI/CompanyTypes.js +0 -52
  247. package/src/CompanyAPI/Configurations.js +0 -152
  248. package/src/CompanyAPI/ContactContactTypeAssociations.js +0 -55
  249. package/src/CompanyAPI/ContactRelationships.js +0 -36
  250. package/src/CompanyAPI/Contacts.js +0 -199
  251. package/src/CompanyAPI/index.js +0 -53
  252. package/src/ConnectWise.js +0 -339
  253. package/src/ConnectWiseRest.js +0 -512
  254. package/src/FinanceAPI/Additions.js +0 -127
  255. package/src/FinanceAPI/Adjustments.js +0 -109
  256. package/src/FinanceAPI/AgreementSites.js +0 -108
  257. package/src/FinanceAPI/Agreements.js +0 -220
  258. package/src/FinanceAPI/BoardDefaults.js +0 -109
  259. package/src/FinanceAPI/WorkRoles.js +0 -113
  260. package/src/FinanceAPI/WorkTypeExclusions.js +0 -78
  261. package/src/FinanceAPI/WorkTypes.js +0 -124
  262. package/src/FinanceAPI/index.js +0 -50
  263. package/src/ProjectAPI/Projects.js +0 -142
  264. package/src/ProjectAPI/index.js +0 -28
  265. package/src/SalesAPI/Activities.js +0 -149
  266. package/src/SalesAPI/index.js +0 -14
  267. package/src/ScheduleAPI/ScheduleEntries.js +0 -109
  268. package/src/ScheduleAPI/ScheduleTypes.js +0 -101
  269. package/src/ScheduleAPI/index.js +0 -30
  270. package/src/ServiceDeskAPI/BoardItems.js +0 -134
  271. package/src/ServiceDeskAPI/BoardSubTypes.js +0 -112
  272. package/src/ServiceDeskAPI/BoardTeams.js +0 -108
  273. package/src/ServiceDeskAPI/BoardTypes.js +0 -139
  274. package/src/ServiceDeskAPI/Boards.js +0 -100
  275. package/src/ServiceDeskAPI/Priorities.js +0 -47
  276. package/src/ServiceDeskAPI/ServiceNotes.js +0 -172
  277. package/src/ServiceDeskAPI/Statuses.js +0 -116
  278. package/src/ServiceDeskAPI/Tickets.js +0 -588
  279. package/src/ServiceDeskAPI/index.js +0 -53
  280. package/src/SystemAPI/Members.js +0 -139
  281. package/src/SystemAPI/Reports.js +0 -116
  282. package/src/SystemAPI/index.js +0 -32
  283. package/src/TimeAPI/TimeEntries.js +0 -121
  284. package/src/TimeAPI/index.js +0 -27
  285. package/src/utils/Callback.js +0 -125
  286. package/src/utils/Series.js +0 -64
  287. package/src/utils/index.js +0 -21
  288. package/test/test.js +0 -114
package/README.md CHANGED
@@ -1,230 +1,243 @@
1
- # connectwise-rest
2
-
3
- [![npm version](https://img.shields.io/npm/v/connectwise-rest.svg)](https://www.npmjs.com/package/connectwise-rest) [![npm downloads](https://img.shields.io/npm/dt/connectwise-rest.svg)](https://www.npmjs.com/package/connectwise-rest) [![travis build](https://api.travis-ci.org/covenanttechnologysolutions/connectwise-rest.svg?branch=master)](https://travis-ci.org/covenanttechnologysolutions/connectwise-rest)
4
-
5
- A nodejs module for interacting with the ConnectWise REST API. This module is currently under construction. This module provides bindings for ease of development against the ConnectWise REST API.
6
-
7
- ## Requirements
8
-
9
- - ConnectWise 2018.1+, though these functions are written for ConnectWise 2016.1 APIs (API3.0 v1.0.0).
10
- - ConnectWise API keys (available on ConnectWise 2015.3+), or API Only Member keys (only available on ConnectWise 2015.6+). See the [documentation](https://developer.connectwise.com/Authentication) for more details.
11
-
12
- ## Documentation
13
-
14
- See the documentation [here](https://github.com/covenanttechnologysolutions/connectwise-rest/blob/master/doc.md)
15
-
16
- ## Usage
17
-
18
- Create a new API key, or API Only Member, then instantiate the module.
19
-
20
- ```javascript
21
-
22
- const ConnectWiseRest = require('connectwise-rest');
23
-
24
- const cw = new ConnectWiseRest({
25
- companyId: 'company',
26
- companyUrl: 'your.connectwise.com',
27
- publicKey: '<public key>',
28
- privateKey: '<private key>',
29
- clientId: '<your client id>',
30
- entryPoint: 'v4_6_release', // optional, defaults to 'v4_6_release'
31
- apiVersion: '3.0.0', // optional, defaults to '3.0.0'
32
- timeout: 20000, // optional, request connection timeout in ms, defaults to 20000
33
- retry: false, // optional, defaults to false
34
- retryOptions: { // optional, override retry behavior, defaults as shown
35
- retries: 4, // maximum number of retries
36
- minTimeout: 50, // number of ms to wait between retries
37
- maxTimeout: 20000, // maximum number of ms between retries
38
- randomize: true, // randomize timeouts
39
- },
40
- debug: false, // optional, enable debug logging
41
- logger: (level, text, meta) => { } // optional, pass in logging function
42
- });
43
-
44
- cw.ServiceDeskAPI.Tickets.getTicketById(1234)
45
- .then((ticket) => {
46
- //do something with results
47
- })
48
- .catch((error) => {
49
- //handle errors
50
- });
51
- ```
52
-
53
- Or if you only require access to one API component:
54
-
55
- ```javascript
56
-
57
- const ConnectWiseRest = require('connectwise-rest');
58
-
59
- const tickets = new ConnectWiseRest(options).ServiceDeskAPI.Tickets;
60
-
61
- tickets.getTicketById(1234)
62
- .then(function (result){
63
- //do something with results
64
- })
65
- .catch(function (error){
66
- //handle errors
67
- });
68
- ```
69
-
70
- You can also manually access the API:
71
-
72
- ```javascript
73
-
74
- const ConnectWiseRest = require('connectwise-rest');
75
-
76
- const api = new ConnectWiseRest(options).API.api;
77
-
78
- api('/path/to/api', 'POST', {
79
- 'param1': 'val1',
80
- 'param2': 'val2'
81
- })
82
- .then((result) => {
83
- //do something with results
84
- })
85
- .catch((error) => {
86
- //handle errors
87
- });
88
- ```
89
-
90
- ### Cloud-Hosted ConnectWise Manage
91
-
92
- To access cloud-hosted ConnectWise, use the `companyUrl` of `api-na.myconnectwise.net` and override the default `entryPoint`.
93
-
94
- | Region | |
95
- | --- | --- |
96
- | North America | api-na.myconnectwise.net |
97
- | Europe | api-eu.myconnectwise.net |
98
- | Australia | api-aus.myconnectwise.net |
99
- | Demo | api-staging.connectwisedev.com |
100
-
101
- ```javascript
102
- options = {
103
- companyId: 'company',
104
- companyUrl: 'api-na.myconnectwise.net',
105
- entryPoint: 'v2019_3', // change to the current hosted version
106
- publicKey: '<public key>',
107
- privateKey: '<private key>'
108
- }
109
- ```
110
-
111
- ## Implemented APIs
112
-
113
- | Module | API | Status |
114
- | ---------------- | ------------------- | ----------------------------- |
115
- | Company API | Companies | Complete |
116
- | Company API | CompanyTeams | Complete |
117
- | Company API | Configurations | Complete |
118
- | Company API | Contacts | Complete |
119
- | Finance API | Additions | Complete |
120
- | Finance API | Adjustments | Complete |
121
- | Finance API | Agreements | Complete |
122
- | Finance API | AgreementSites | Complete |
123
- | Finance API | BoardDefaults | Complete |
124
- | Finance API | WorkRoles | Complete |
125
- | Finance API | WorkTypeExclusions | Complete |
126
- | Finance API | WorkTypes | Complete |
127
- | Project API | Projects | Complete |
128
- | ScheduleAPI | ScheduleEntries | Complete |
129
- | ScheduleAPI | ScheduleTypes | Complete |
130
- | Service Desk API | Boards | Complete |
131
- | Service Desk API | BoardTeams | Complete |
132
- | Service Desk API | Priorities | Complete |
133
- | Service Desk API | ServiceNotes | Complete |
134
- | Service Desk API | Statuses | Complete |
135
- | Service Desk API | Tickets | Complete |
136
- | System API | Members | Complete |
137
- | System API | Reports | Complete |
138
- | Time API | TimeEntries | Complete |
139
-
140
-
141
- ## Examples
142
-
143
- ### Code Examples
144
-
145
- Get ticket 1234 and print ticket number, summary and status.
146
-
147
- ```javascript
148
-
149
- tickets.getTicketById(1234)
150
- .then((ticket) => { console.log(ticket.id, ticket.summary, ticket.status.name); })
151
- .catch((err) => { console.log(err); });
152
- ```
153
-
154
- Create new ticket on service board, then print the returned ticket number, or any errors
155
-
156
- ```javascript
157
-
158
- tickets.createTicket({
159
- summary: "This is the summary",
160
- board: {
161
- name: "Service Board"
162
- },
163
- company: {
164
- identifier: "ABC" //company ID
165
- },
166
- initialDescription: "ticket description",
167
- recordType: "ServiceTicket"
168
- //can also pass in any other Ticket object settings as needed
169
- })
170
- .then((ticket) => { console.log(ticket.id); })
171
- .catch((err) => { console.log(err); });
172
-
173
- ```
174
-
175
- Change the status of a ticket
176
-
177
- ```javascript
178
-
179
- updateTicket(1234, [{
180
- op: 'replace',
181
- path: 'status',
182
- value: {id: 123} //id of the status to change to, find with boards.getBoards and status.getStatuses
183
- }, {
184
- //second or more operations
185
- }])
186
- .then((res) => { //do something with returned ticket });
187
- .catch((err) => { //do something with errors });
188
-
189
- ```
190
-
191
- ### Conditions
192
-
193
- Valid example conditions string:
194
-
195
- ```javascript
196
-
197
- const conditions = '(contact/name like "Fred%" and closedFlag = false) and dateEntered > [2015-12-23T05:53:27Z] or summary contains "test" AND summary != "Some Summary"'
198
-
199
- ```
200
-
201
- Error message returned from server when invalid conditions are passed in:
202
- > Expected a boolean value, not a numeric. String values should be enclosed with double or single quotes; DateTime values should be enclosed in square brackets; numbers should consist of only digits, and optionally a decimal point and a negation sign; boolean values should be indicated with the keywords true or false; null values should be indicated by the keyword null.
203
-
204
-
205
- ### Callbacks
206
-
207
- This library includes an express style callback middleware that will parse and verify the payload signature.
208
-
209
- ```javascript
210
-
211
- const CWCallback = cw.utils.Callback;
212
-
213
- router.post('/your/callback', CWCallback.middleware((err, req, res, verified, payload) => {
214
- if (err) {
215
- //handle error, parsing, malformed object, etc
216
- res.status(500).end();
217
- } else if (!verified) {
218
- // send 403 on verification failure,
219
- // or handle some other way
220
- res.status(403).end();
221
- } else {
222
- res.status(200).end()
223
- }
224
- const {action, id} = req.query;
225
- // do something with the payload
226
- }));
227
-
228
- ```
229
-
230
- See also using [verifyCallback](https://github.com/covenanttechnologysolutions/connectwise-rest/blob/master/doc.md#verifyCallback) manually.
1
+ # connectwise-rest
2
+
3
+ [![npm version](https://img.shields.io/npm/v/connectwise-rest.svg)](https://www.npmjs.com/package/connectwise-rest) [![npm downloads](https://img.shields.io/npm/dt/connectwise-rest.svg)](https://www.npmjs.com/package/connectwise-rest) [![travis build](https://api.travis-ci.org/covenanttechnologysolutions/connectwise-rest.svg?branch=master)](https://travis-ci.org/covenanttechnologysolutions/connectwise-rest)
4
+
5
+ A Node.JS TypeScript module for interacting with the ConnectWise Manage and Automate REST APIs. This module provides bindings for ease of development against the ConnectWise REST APIs.
6
+
7
+ ## Requirements
8
+
9
+ ### Manage
10
+
11
+ - ConnectWise Manage 2018.1+, though these functions are written for ConnectWise Manage 2021.1 APIs.
12
+ - ConnectWise Manage API keys (available on ConnectWise 2015.3+), or API Only Member keys (only available on ConnectWise 2015.6+). See the [documentation](https://developer.connectwise.com/Authentication) for more details.
13
+ ### Automate
14
+
15
+ - ConnectWise Automate 2020+
16
+ - ConnectWise Automate integrator login, your own generated token, or user account with 2FA.
17
+
18
+ ## Documentation
19
+
20
+ See the full documentation [here](https://covenanttechnologysolutions.github.io/connectwise-rest/index.html)
21
+
22
+ ## Usage
23
+
24
+ ### Manage
25
+
26
+ ```javascript
27
+ // ESM
28
+ import { AutomateAPI } from 'connectwise-rest';
29
+ // CommonJS
30
+ const { AutomateAPI } = require('connectwise-rest');
31
+
32
+ const cwm = new ManageAPI({
33
+ companyId: 'company',
34
+ companyUrl: 'your.connectwise.com',
35
+ publicKey: '<public key>',
36
+ privateKey: '<private key>',
37
+ clientId: '<your client id>',
38
+ entryPoint: 'v4_6_release', // optional, defaults to 'v4_6_release'
39
+ apiVersion: '3.0.0', // optional, defaults to '3.0.0'
40
+ timeout: 20000, // optional, request connection timeout in ms, defaults to 20000
41
+ retry: false, // optional, defaults to false
42
+ retryOptions: { // optional, override retry behavior, defaults as shown
43
+ retries: 4, // maximum number of retries
44
+ minTimeout: 50, // number of ms to wait between retries
45
+ maxTimeout: 20000, // maximum number of ms between retries
46
+ randomize: true, // randomize timeouts
47
+ },
48
+ debug: false, // optional, enable debug logging
49
+ logger: (level, text, meta) => { } // optional, pass in logging function
50
+ });
51
+
52
+ cwm.ServiceDeskAPI.Tickets.getTicketById(1234)
53
+ .then((ticket) => {
54
+ //do something with results
55
+ })
56
+ .catch((error) => {
57
+ //handle errors
58
+ });
59
+ ```
60
+
61
+
62
+ ### Automate
63
+
64
+ ```javascript
65
+ // ESM
66
+ import { AutomateAPI } from 'connectwise-rest';
67
+ // CommonJS
68
+ const { AutomateAPI } = require('connectwise-rest');
69
+
70
+ const cwa = new ManageAPI({
71
+ companyId: 'company',
72
+ serverUrl: 'your.connectwise.com',
73
+ clientId: '<your client id>',
74
+ // One of the following: token, integrator username and password or username, password and two-factor code
75
+ token: '<bearer token>',
76
+
77
+ // or integrator username/password:
78
+ username: '<username>',
79
+ password: '<private key>',
80
+ twoFactorPasscode: '<2fa code>',
81
+
82
+ timeout: 20000, // optional, request connection timeout in ms, defaults to 20000
83
+ retry: false, // optional, defaults to false
84
+ retryOptions: { // optional, override retry behavior, defaults as shown
85
+ retries: 4, // maximum number of retries
86
+ minTimeout: 50, // number of ms to wait between retries
87
+ maxTimeout: 20000, // maximum number of ms between retries
88
+ randomize: true, // randomize timeouts
89
+ },
90
+ debug: false, // optional, enable debug logging
91
+ logger: (level, text, meta) => { } // optional, pass in logging function
92
+ });
93
+
94
+ cwa.ComputersAPI.getComputerList()
95
+ .then((computers) => {
96
+ //do something with results
97
+ })
98
+ .catch((error) => {
99
+ //handle errors
100
+ });
101
+ ```
102
+
103
+ ### APIs Without Typings
104
+
105
+ You can also manually access the API without typings:
106
+
107
+ ```javascript
108
+
109
+ const { Manage, Automate } = require('connectwise-rest');
110
+
111
+ const cwm = new Manage(CWMOptions);
112
+ const cwa = new Automate(CWAOptions);
113
+
114
+ // use cwa.request or cwm.request
115
+ cwm.request({
116
+ path: '/path/to/api',
117
+ method: 'POST',
118
+ params: {
119
+ 'queryParam1': 'val1',
120
+ 'queryParam2': 'val2'
121
+ },
122
+ data: {
123
+ 'dataValue': 'val1',
124
+ })
125
+ .then((result) => {
126
+ //do something with results
127
+ })
128
+ .catch((error) => {
129
+ //handle errors
130
+ });
131
+ ```
132
+
133
+ ### Cloud-Hosted ConnectWise Manage
134
+
135
+ To access cloud-hosted ConnectWise, use the `companyUrl` of `api-na.myconnectwise.net` and override the default `entryPoint`.
136
+
137
+ | Region | URL |
138
+ | --- |--------------------------------|
139
+ | North America | api-na.myconnectwise.net |
140
+ | Europe | api-eu.myconnectwise.net |
141
+ | Australia | api-aus.myconnectwise.net |
142
+ | Demo | api-staging.connectwisedev.com |
143
+
144
+ ```javascript
145
+ options = {
146
+ companyId: 'company',
147
+ companyUrl: 'api-na.myconnectwise.net',
148
+ entryPoint: 'v2022.1', // change to the current hosted version
149
+ publicKey: '<public key>',
150
+ privateKey: '<private key>'
151
+ }
152
+ ```
153
+
154
+ ## Examples
155
+
156
+ ### Code Examples
157
+
158
+ Get ticket 1234 and print ticket number, summary and status.
159
+
160
+ ```javascript
161
+
162
+ cwm.ServiceAPI.getServiceTicketsById(1234)
163
+ .then((ticket) => { console.log(ticket.id, ticket.summary, ticket.status.name); })
164
+ .catch((err) => { console.log(err); });
165
+ ```
166
+
167
+ Create new ticket on service board, then print the returned ticket number, or any errors
168
+
169
+ ```javascript
170
+ cwm.ServiceAPI.postServiceTickets({
171
+ summary: "This is the summary",
172
+ board: {
173
+ name: "Service Board"
174
+ },
175
+ company: {
176
+ identifier: "ABC" //company ID
177
+ },
178
+ initialDescription: "ticket description",
179
+ recordType: "ServiceTicket"
180
+ //can also pass in any other Ticket object settings as needed
181
+ })
182
+ .then((ticket) => { console.log(ticket.id); })
183
+ .catch((err) => { console.log(err); });
184
+
185
+ ```
186
+
187
+ Change the status of a ticket
188
+
189
+ ```javascript
190
+ cwa.ServiceAPI.patchServiceTicketsById(1234, [{
191
+ op: 'replace',
192
+ path: 'status',
193
+ value: {id: 123} //id of the status to change to, find with boards.getBoards and status.getStatuses
194
+ }, {
195
+ //second or more operations
196
+ }])
197
+ .then((res) => {
198
+ //do something with returned ticket
199
+ })
200
+ .catch((err) => {
201
+ //do something with errors
202
+ });
203
+
204
+ ```
205
+
206
+ ### Manage Conditions Example
207
+
208
+ Valid example conditions string:
209
+
210
+ ```javascript
211
+
212
+ const conditions = '(contact/name like "Fred%" and closedFlag = false) and dateEntered > [2015-12-23T05:53:27Z] or summary contains "test" AND summary != "Some Summary"'
213
+
214
+ ```
215
+
216
+ Error message returned from server when invalid conditions are passed in:
217
+ > Expected a boolean value, not a numeric. String values should be enclosed with double or single quotes; DateTime values should be enclosed in square brackets; numbers should consist of only digits, and optionally a decimal point and a negation sign; boolean values should be indicated with the keywords true or false; null values should be indicated by the keyword null.
218
+
219
+
220
+ ### Callbacks
221
+
222
+ This library includes an express style callback middleware that will parse and verify the payload signature.
223
+
224
+ ```javascript
225
+ const {utils} = require('connectwise-rest')
226
+ const CWCallback = utils.Callback;
227
+
228
+ router.post('/your/callback', CWCallback.middleware((err, req, res, verified, payload) => {
229
+ if (err) {
230
+ //handle error, parsing, malformed object, etc
231
+ res.status(500).end();
232
+ } else if (!verified) {
233
+ // send 403 on verification failure,
234
+ // or handle some other way
235
+ res.status(403).end();
236
+ } else {
237
+ res.status(200).end()
238
+ }
239
+ const {action, id} = req.query;
240
+ // do something with the payload
241
+ }));
242
+
243
+ ```