connectwise-rest 0.24.0 → 1.0.1

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 (283) hide show
  1. package/.eslintrc +23 -59
  2. package/.gitattributes +1 -0
  3. package/.mocharc.json +5 -0
  4. package/.prettierrc +7 -0
  5. package/README.md +293 -230
  6. package/api-extractor.json +364 -0
  7. package/dist/Automate/AVTemplatePoliciesAPI.d.ts +36 -0
  8. package/dist/Automate/AVTemplatePoliciesAPI.d.ts.map +1 -0
  9. package/dist/Automate/AVTemplatePoliciesAPI.js +92 -0
  10. package/dist/Automate/AVTemplatePoliciesAPI.js.map +1 -0
  11. package/dist/Automate/ClientsAPI.d.ts +44 -0
  12. package/dist/Automate/ClientsAPI.d.ts.map +1 -0
  13. package/dist/Automate/ClientsAPI.js +119 -0
  14. package/dist/Automate/ClientsAPI.js.map +1 -0
  15. package/dist/Automate/CommandsAPI.d.ts +20 -0
  16. package/dist/Automate/CommandsAPI.d.ts.map +1 -0
  17. package/dist/Automate/CommandsAPI.js +36 -0
  18. package/dist/Automate/CommandsAPI.js.map +1 -0
  19. package/dist/Automate/ComputersAPI.d.ts +131 -0
  20. package/dist/Automate/ComputersAPI.d.ts.map +1 -0
  21. package/dist/Automate/ComputersAPI.js +358 -0
  22. package/dist/Automate/ComputersAPI.js.map +1 -0
  23. package/dist/Automate/ContactsAPI.d.ts +24 -0
  24. package/dist/Automate/ContactsAPI.d.ts.map +1 -0
  25. package/dist/Automate/ContactsAPI.js +50 -0
  26. package/dist/Automate/ContactsAPI.js.map +1 -0
  27. package/dist/Automate/DataViewsAPI.d.ts +22 -0
  28. package/dist/Automate/DataViewsAPI.d.ts.map +1 -0
  29. package/dist/Automate/DataViewsAPI.js +36 -0
  30. package/dist/Automate/DataViewsAPI.js.map +1 -0
  31. package/dist/Automate/DrivesAPI.d.ts +25 -0
  32. package/dist/Automate/DrivesAPI.d.ts.map +1 -0
  33. package/dist/Automate/DrivesAPI.js +57 -0
  34. package/dist/Automate/DrivesAPI.js.map +1 -0
  35. package/dist/Automate/EventLogsAPI.d.ts +19 -0
  36. package/dist/Automate/EventLogsAPI.d.ts.map +1 -0
  37. package/dist/Automate/EventLogsAPI.js +29 -0
  38. package/dist/Automate/EventLogsAPI.js.map +1 -0
  39. package/dist/Automate/LocationsAPI.d.ts +57 -0
  40. package/dist/Automate/LocationsAPI.d.ts.map +1 -0
  41. package/dist/Automate/LocationsAPI.js +138 -0
  42. package/dist/Automate/LocationsAPI.js.map +1 -0
  43. package/dist/Automate/MaintenanceWindowDefinitionsAPI.d.ts +19 -0
  44. package/dist/Automate/MaintenanceWindowDefinitionsAPI.d.ts.map +1 -0
  45. package/dist/Automate/MaintenanceWindowDefinitionsAPI.js +29 -0
  46. package/dist/Automate/MaintenanceWindowDefinitionsAPI.js.map +1 -0
  47. package/dist/Automate/MonitorsAPI.d.ts +29 -0
  48. package/dist/Automate/MonitorsAPI.d.ts.map +1 -0
  49. package/dist/Automate/MonitorsAPI.js +85 -0
  50. package/dist/Automate/MonitorsAPI.js.map +1 -0
  51. package/dist/Automate/NetworkDevicesAPI.d.ts +23 -0
  52. package/dist/Automate/NetworkDevicesAPI.d.ts.map +1 -0
  53. package/dist/Automate/NetworkDevicesAPI.js +43 -0
  54. package/dist/Automate/NetworkDevicesAPI.js.map +1 -0
  55. package/dist/Automate/PatchingAPI.d.ts +33 -0
  56. package/dist/Automate/PatchingAPI.d.ts.map +1 -0
  57. package/dist/Automate/PatchingAPI.js +99 -0
  58. package/dist/Automate/PatchingAPI.js.map +1 -0
  59. package/dist/Automate/RemoteAgentAPI.d.ts +24 -0
  60. package/dist/Automate/RemoteAgentAPI.d.ts.map +1 -0
  61. package/dist/Automate/RemoteAgentAPI.js +50 -0
  62. package/dist/Automate/RemoteAgentAPI.js.map +1 -0
  63. package/dist/Automate/ScriptingAPI.d.ts +41 -0
  64. package/dist/Automate/ScriptingAPI.d.ts.map +1 -0
  65. package/dist/Automate/ScriptingAPI.js +109 -0
  66. package/dist/Automate/ScriptingAPI.js.map +1 -0
  67. package/dist/Automate/SearchesAPI.d.ts +23 -0
  68. package/dist/Automate/SearchesAPI.d.ts.map +1 -0
  69. package/dist/Automate/SearchesAPI.js +43 -0
  70. package/dist/Automate/SearchesAPI.js.map +1 -0
  71. package/dist/Automate/SystemAPI.d.ts +97 -0
  72. package/dist/Automate/SystemAPI.d.ts.map +1 -0
  73. package/dist/Automate/SystemAPI.js +273 -0
  74. package/dist/Automate/SystemAPI.js.map +1 -0
  75. package/dist/Automate/TicketsAPI.d.ts +14 -0
  76. package/dist/Automate/TicketsAPI.d.ts.map +1 -0
  77. package/dist/Automate/TicketsAPI.js +29 -0
  78. package/dist/Automate/TicketsAPI.js.map +1 -0
  79. package/dist/Automate/UserProfilesAPI.d.ts +19 -0
  80. package/dist/Automate/UserProfilesAPI.d.ts.map +1 -0
  81. package/dist/Automate/UserProfilesAPI.js +28 -0
  82. package/dist/Automate/UserProfilesAPI.js.map +1 -0
  83. package/dist/Automate.d.ts +43 -0
  84. package/dist/Automate.d.ts.map +1 -0
  85. package/dist/Automate.js +164 -0
  86. package/dist/Automate.js.map +1 -0
  87. package/dist/AutomateAPI.d.ts +129 -0
  88. package/dist/AutomateAPI.d.ts.map +1 -0
  89. package/dist/AutomateAPI.js +175 -0
  90. package/dist/AutomateAPI.js.map +1 -0
  91. package/dist/AutomateTypes.d.ts +10437 -0
  92. package/dist/AutomateTypes.d.ts.map +1 -0
  93. package/dist/AutomateTypes.js +3 -0
  94. package/dist/AutomateTypes.js.map +1 -0
  95. package/dist/BaseAPI.d.ts +26 -0
  96. package/dist/BaseAPI.d.ts.map +1 -0
  97. package/dist/BaseAPI.js +116 -0
  98. package/dist/BaseAPI.js.map +1 -0
  99. package/dist/Manage/CompanyAPI.d.ts +662 -0
  100. package/dist/Manage/CompanyAPI.d.ts.map +1 -0
  101. package/dist/Manage/CompanyAPI.js +3299 -0
  102. package/dist/Manage/CompanyAPI.js.map +1 -0
  103. package/dist/Manage/ConfigurationsAPI.d.ts +32 -0
  104. package/dist/Manage/ConfigurationsAPI.d.ts.map +1 -0
  105. package/dist/Manage/ConfigurationsAPI.js +78 -0
  106. package/dist/Manage/ConfigurationsAPI.js.map +1 -0
  107. package/dist/Manage/ExpenseAPI.d.ts +85 -0
  108. package/dist/Manage/ExpenseAPI.d.ts.map +1 -0
  109. package/dist/Manage/ExpenseAPI.js +311 -0
  110. package/dist/Manage/ExpenseAPI.js.map +1 -0
  111. package/dist/Manage/FinanceAPI.d.ts +538 -0
  112. package/dist/Manage/FinanceAPI.d.ts.map +1 -0
  113. package/dist/Manage/FinanceAPI.js +2592 -0
  114. package/dist/Manage/FinanceAPI.js.map +1 -0
  115. package/dist/Manage/MarketingAPI.d.ts +142 -0
  116. package/dist/Manage/MarketingAPI.d.ts.map +1 -0
  117. package/dist/Manage/MarketingAPI.js +634 -0
  118. package/dist/Manage/MarketingAPI.js.map +1 -0
  119. package/dist/Manage/ProcurementAPI.d.ts +435 -0
  120. package/dist/Manage/ProcurementAPI.d.ts.map +1 -0
  121. package/dist/Manage/ProcurementAPI.js +2103 -0
  122. package/dist/Manage/ProcurementAPI.js.map +1 -0
  123. package/dist/Manage/ProjectAPI.d.ts +215 -0
  124. package/dist/Manage/ProjectAPI.d.ts.map +1 -0
  125. package/dist/Manage/ProjectAPI.js +945 -0
  126. package/dist/Manage/ProjectAPI.js.map +1 -0
  127. package/dist/Manage/SalesAPI.d.ts +299 -0
  128. package/dist/Manage/SalesAPI.d.ts.map +1 -0
  129. package/dist/Manage/SalesAPI.js +1397 -0
  130. package/dist/Manage/SalesAPI.js.map +1 -0
  131. package/dist/Manage/ScheduleAPI.d.ts +132 -0
  132. package/dist/Manage/ScheduleAPI.d.ts.map +1 -0
  133. package/dist/Manage/ScheduleAPI.js +580 -0
  134. package/dist/Manage/ScheduleAPI.js.map +1 -0
  135. package/dist/Manage/ServiceAPI.d.ts +493 -0
  136. package/dist/Manage/ServiceAPI.d.ts.map +1 -0
  137. package/dist/Manage/ServiceAPI.js +2339 -0
  138. package/dist/Manage/ServiceAPI.js.map +1 -0
  139. package/dist/Manage/SystemAPI.d.ts +954 -0
  140. package/dist/Manage/SystemAPI.d.ts.map +1 -0
  141. package/dist/Manage/SystemAPI.js +4536 -0
  142. package/dist/Manage/SystemAPI.js.map +1 -0
  143. package/dist/Manage/TimeAPI.d.ts +186 -0
  144. package/dist/Manage/TimeAPI.d.ts.map +1 -0
  145. package/dist/Manage/TimeAPI.js +840 -0
  146. package/dist/Manage/TimeAPI.js.map +1 -0
  147. package/dist/Manage.d.ts +39 -0
  148. package/dist/Manage.d.ts.map +1 -0
  149. package/dist/Manage.js +137 -0
  150. package/dist/Manage.js.map +1 -0
  151. package/dist/ManageAPI.d.ts +135 -0
  152. package/dist/ManageAPI.d.ts.map +1 -0
  153. package/dist/ManageAPI.js +115 -0
  154. package/dist/ManageAPI.js.map +1 -0
  155. package/dist/ManageTypes.d.ts +91320 -0
  156. package/dist/ManageTypes.d.ts.map +1 -0
  157. package/dist/ManageTypes.js +7 -0
  158. package/dist/ManageTypes.js.map +1 -0
  159. package/dist/connectwise-rest.d.ts +108638 -0
  160. package/dist/index.d.ts +12 -0
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +36 -0
  163. package/dist/index.js.map +1 -0
  164. package/dist/tsdoc-metadata.json +11 -0
  165. package/dist/types.d.ts +48 -0
  166. package/dist/types.d.ts.map +1 -0
  167. package/dist/types.js +21 -0
  168. package/dist/types.js.map +1 -0
  169. package/dist/utils/Callback.d.ts +70 -0
  170. package/dist/utils/Callback.d.ts.map +1 -0
  171. package/dist/utils/Callback.js +109 -0
  172. package/dist/utils/Callback.js.map +1 -0
  173. package/dist/utils/Series.d.ts +42 -0
  174. package/dist/utils/Series.d.ts.map +1 -0
  175. package/dist/utils/Series.js +68 -0
  176. package/dist/utils/Series.js.map +1 -0
  177. package/dist/utils/index.d.ts +7 -0
  178. package/dist/utils/index.d.ts.map +1 -0
  179. package/dist/utils/index.js +11 -0
  180. package/dist/utils/index.js.map +1 -0
  181. package/package.json +51 -21
  182. package/src/Automate/AVTemplatePoliciesAPI.ts +124 -0
  183. package/src/Automate/ClientsAPI.ts +172 -0
  184. package/src/Automate/CommandsAPI.ts +39 -0
  185. package/src/Automate/ComputersAPI.ts +588 -0
  186. package/src/Automate/ContactsAPI.ts +63 -0
  187. package/src/Automate/DataViewsAPI.ts +43 -0
  188. package/src/Automate/DrivesAPI.ts +81 -0
  189. package/src/Automate/EventLogsAPI.ts +31 -0
  190. package/src/Automate/LocationsAPI.ts +222 -0
  191. package/src/Automate/MaintenanceWindowDefinitionsAPI.ts +34 -0
  192. package/src/Automate/MonitorsAPI.ts +101 -0
  193. package/src/Automate/NetworkDevicesAPI.ts +51 -0
  194. package/src/Automate/PatchingAPI.ts +116 -0
  195. package/src/Automate/RemoteAgentAPI.ts +65 -0
  196. package/src/Automate/ScriptingAPI.ts +147 -0
  197. package/src/Automate/SearchesAPI.ts +49 -0
  198. package/src/Automate/SystemAPI.ts +412 -0
  199. package/src/Automate/TicketsAPI.ts +29 -0
  200. package/src/Automate/UserProfilesAPI.ts +31 -0
  201. package/src/Automate.ts +204 -0
  202. package/src/AutomateAPI.ts +178 -0
  203. package/src/AutomateTypes.ts +10492 -0
  204. package/src/BaseAPI.ts +180 -0
  205. package/src/Manage/CompanyAPI.ts +4941 -0
  206. package/src/Manage/ConfigurationsAPI.ts +116 -0
  207. package/src/Manage/ExpenseAPI.ts +413 -0
  208. package/src/Manage/FinanceAPI.ts +3930 -0
  209. package/src/Manage/MarketingAPI.ts +958 -0
  210. package/src/Manage/ProcurementAPI.ts +3107 -0
  211. package/src/Manage/ProjectAPI.ts +1437 -0
  212. package/src/Manage/SalesAPI.ts +1968 -0
  213. package/src/Manage/ScheduleAPI.ts +773 -0
  214. package/src/Manage/ServiceAPI.ts +3476 -0
  215. package/src/Manage/SystemAPI.ts +6415 -0
  216. package/src/Manage/TimeAPI.ts +1151 -0
  217. package/src/Manage.ts +161 -0
  218. package/src/ManageAPI.ts +170 -0
  219. package/src/ManageTypes.ts +91318 -0
  220. package/src/index.ts +13 -0
  221. package/src/types.ts +68 -0
  222. package/src/utils/Callback.ts +148 -0
  223. package/src/utils/Series.ts +89 -0
  224. package/src/utils/index.ts +7 -0
  225. package/swagger-errors.md +25 -0
  226. package/test/.env.example +12 -4
  227. package/test/test-utils.ts +27 -0
  228. package/test/test.ts +349 -0
  229. package/tsconfig.json +29 -0
  230. package/.travis.yml +0 -9
  231. package/doc.md +0 -5984
  232. package/docs/jsdoc.json +0 -15
  233. package/index.js +0 -10
  234. package/src/CompanyAPI/Companies.js +0 -149
  235. package/src/CompanyAPI/CompanyCompanyTypeAssociations.js +0 -111
  236. package/src/CompanyAPI/CompanySites.js +0 -70
  237. package/src/CompanyAPI/CompanyTeams.js +0 -108
  238. package/src/CompanyAPI/CompanyTypeInfos.js +0 -58
  239. package/src/CompanyAPI/CompanyTypes.js +0 -52
  240. package/src/CompanyAPI/Configurations.js +0 -152
  241. package/src/CompanyAPI/ContactContactTypeAssociations.js +0 -55
  242. package/src/CompanyAPI/ContactRelationships.js +0 -36
  243. package/src/CompanyAPI/Contacts.js +0 -199
  244. package/src/CompanyAPI/index.js +0 -53
  245. package/src/ConnectWise.js +0 -339
  246. package/src/ConnectWiseRest.js +0 -515
  247. package/src/FinanceAPI/Additions.js +0 -127
  248. package/src/FinanceAPI/Adjustments.js +0 -109
  249. package/src/FinanceAPI/AgreementSites.js +0 -108
  250. package/src/FinanceAPI/Agreements.js +0 -220
  251. package/src/FinanceAPI/BoardDefaults.js +0 -109
  252. package/src/FinanceAPI/WorkRoles.js +0 -113
  253. package/src/FinanceAPI/WorkTypeExclusions.js +0 -78
  254. package/src/FinanceAPI/WorkTypes.js +0 -124
  255. package/src/FinanceAPI/index.js +0 -50
  256. package/src/ProcurementAPI/CatalogItems.js +0 -94
  257. package/src/ProcurementAPI/index.js +0 -22
  258. package/src/ProjectAPI/Projects.js +0 -142
  259. package/src/ProjectAPI/index.js +0 -28
  260. package/src/SalesAPI/Activities.js +0 -149
  261. package/src/SalesAPI/index.js +0 -14
  262. package/src/ScheduleAPI/ScheduleEntries.js +0 -109
  263. package/src/ScheduleAPI/ScheduleTypes.js +0 -101
  264. package/src/ScheduleAPI/index.js +0 -30
  265. package/src/ServiceDeskAPI/BoardItems.js +0 -134
  266. package/src/ServiceDeskAPI/BoardSubTypes.js +0 -112
  267. package/src/ServiceDeskAPI/BoardTeams.js +0 -108
  268. package/src/ServiceDeskAPI/BoardTypes.js +0 -139
  269. package/src/ServiceDeskAPI/Boards.js +0 -100
  270. package/src/ServiceDeskAPI/Priorities.js +0 -47
  271. package/src/ServiceDeskAPI/ServiceNotes.js +0 -172
  272. package/src/ServiceDeskAPI/Statuses.js +0 -116
  273. package/src/ServiceDeskAPI/Tickets.js +0 -588
  274. package/src/ServiceDeskAPI/index.js +0 -53
  275. package/src/SystemAPI/Members.js +0 -139
  276. package/src/SystemAPI/Reports.js +0 -116
  277. package/src/SystemAPI/index.js +0 -32
  278. package/src/TimeAPI/TimeEntries.js +0 -121
  279. package/src/TimeAPI/index.js +0 -27
  280. package/src/utils/Callback.js +0 -125
  281. package/src/utils/Series.js +0 -64
  282. package/src/utils/index.js +0 -21
  283. package/test/test.js +0 -114
package/.eslintrc CHANGED
@@ -1,59 +1,23 @@
1
- {
2
- "env": {
3
- "browser": false,
4
- "node": true,
5
- "es6": true
6
- },
7
- "extends": ["plugin:promise/recommended"],
8
- "plugins": ["promise"],
9
- "rules": {
10
- "promise/avoid-new": "off",
11
- "promise/no-nesting": "off",
12
- "space-before-function-paren": 0,
13
- "object-curly-spacing": 0,
14
- "arrow-body-style": 0,
15
- "linebreak-style": 0,
16
- "consistent-return": "off",
17
- "prefer-template": "warn",
18
- "global-require": "off",
19
- "no-case-declarations": "off",
20
- "no-underscore-dangle": "off",
21
- "no-var": "error",
22
- "prefer-const": "error",
23
- "one-var": ["error", "never"],
24
- "template-curly-spacing": ["error", "never"],
25
- "no-shadow": [
26
- "error", {
27
- "allow": [
28
- "then", "catch", "done"
29
- ]
30
- }
31
- ],
32
- "max-len": [
33
- "error", {
34
- "code": 140,
35
- "ignoreComments": true
36
- }
37
- ],
38
- // use ide formatting
39
- "indent": [
40
- 2, 2, {
41
- "SwitchCase": 1
42
- }
43
- ],
44
- "quotes": [
45
- 2, "single"
46
- ],
47
- "new-cap": 0,
48
- "no-prototype-builtins": 0,
49
- "no-restricted-syntax": [
50
- "error", "WithStatement"
51
- ],
52
- "no-use-before-define": [
53
- "error", {
54
- "functions": false,
55
- "classes": true
56
- }
57
- ]
58
- }
59
- }
1
+ {
2
+ "parser": "@typescript-eslint/parser",
3
+ "parserOptions": {
4
+ "ecmaVersion": "latest"
5
+ },
6
+ "plugins": ["@typescript-eslint", "prettier"],
7
+ "env": {
8
+ "node": true,
9
+ "mocha": true,
10
+ "es6": true
11
+ },
12
+ "extends": [
13
+ "plugin:@typescript-eslint/eslint-recommended",
14
+ "plugin:@typescript-eslint/recommended",
15
+ "plugin:prettier/recommended"
16
+ ],
17
+ "ignorePatterns": [
18
+ "dist",
19
+ "src/AutomateTypes.js",
20
+ "src/ManageTypes.js"
21
+ ],
22
+ "rules": {}
23
+ }
package/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ *.json linguist-language=JSON-with-Comments
package/.mocharc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "timeout": 10000,
3
+ "ui": "bdd",
4
+ "extension": ["ts", "js"]
5
+ }
package/.prettierrc ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "semi": false,
3
+ "trailingComma": "all",
4
+ "singleQuote": true,
5
+ "printWidth": 100,
6
+ "tabWidth": 2
7
+ }
package/README.md CHANGED
@@ -1,230 +1,293 @@
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) ![Node.js CI](https://github.com/covenanttechnologysolutions/connectwise-rest/actions/workflows/node.js.yml/badge.svg?branch=master)
4
+
5
+ A Node.JS TypeScript module for interacting with the ConnectWise Manage and Automate REST APIs.
6
+ This module provides bindings for ease of development against the ConnectWise REST APIs as well as pagination, automatic retries and logging.
7
+
8
+ ### ⚠️Breaking Changes ⚠️
9
+
10
+ Version 1.0 has been completely re-written and is automatically generated, some function names have changed as well as removal of subsections from version 0.x. Pagination API has been changed for easier usage. VSCode, JetBrains, etc editors will automatically pick up the new type definitions.
11
+
12
+ ## Table of Contents
13
+
14
+ - [Requirements](#requirements)
15
+ - [Manage](#manage)
16
+ - [Automate](#automate)
17
+ - [Documentation](#documentation)
18
+ - [Usage](#usage)
19
+ - [Manage Usage](#manage-usage)
20
+ - [Automate Usage](#automate-usage)
21
+ - [Pagination](#pagination)
22
+ - [APIs Without Typings](#apis-without-typings)
23
+ - [Cloud-Hosted ConnectWise Manage](#cloud-hosted-connectwise-manage)
24
+ - [Examples](#examples)
25
+ - [Sample Project](#sample-project)
26
+ - [Code Examples](#code-examples)
27
+ - [Manage Conditions Example](#manage-conditions-example)
28
+ - [Manage Callbacks](#manage-callbacks)
29
+
30
+ ## Requirements
31
+
32
+ ### Manage
33
+
34
+ - ConnectWise Manage 2018.1+, though these functions are written for ConnectWise Manage 2021.1 APIs.
35
+ - 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.
36
+
37
+ ### Automate
38
+
39
+ - ConnectWise Automate 2020+
40
+ - ConnectWise Automate integrator login, your own generated token, or user account with 2FA.
41
+
42
+ ## Documentation
43
+
44
+ See the full documentation [here](https://covenanttechnologysolutions.github.io/connectwise-rest/index.html)
45
+
46
+ ## Usage
47
+
48
+ ### Manage Usage
49
+
50
+ ```javascript
51
+ // ESM
52
+ import { AutomateAPI } from 'connectwise-rest';
53
+ // CommonJS
54
+ const { AutomateAPI } = require('connectwise-rest');
55
+
56
+ const cwm = new ManageAPI({
57
+ companyId: 'company',
58
+ companyUrl: 'your.connectwise.com',
59
+ publicKey: '<public key>',
60
+ privateKey: '<private key>',
61
+ clientId: '<your client id>',
62
+ entryPoint: 'v4_6_release', // optional, defaults to 'v4_6_release'
63
+ apiVersion: '3.0.0', // optional, defaults to '3.0.0'
64
+ timeout: 20000, // optional, request connection timeout in ms, defaults to 20000
65
+ retry: false, // optional, defaults to false
66
+ retryOptions: { // optional, override retry behavior, defaults as shown
67
+ retries: 4, // maximum number of retries
68
+ minTimeout: 50, // number of ms to wait between retries
69
+ maxTimeout: 20000, // maximum number of ms between retries
70
+ randomize: true, // randomize delay between retries on timeouts
71
+ },
72
+ debug: false, // optional, enable debug logging
73
+ logger: (level, text, meta) => { } // optional, pass in logging function
74
+ });
75
+
76
+ cwm.ServiceDeskAPI.Tickets.getTicketById(1234)
77
+ .then((ticket) => {
78
+ //do something with results
79
+ })
80
+ .catch((error) => {
81
+ //handle errors
82
+ });
83
+ ```
84
+
85
+
86
+ ### Automate Usage
87
+
88
+ ```javascript
89
+ // ESM
90
+ import { AutomateAPI } from 'connectwise-rest';
91
+ // CommonJS
92
+ const { AutomateAPI } = require('connectwise-rest');
93
+
94
+ const cwa = new ManageAPI({
95
+ companyId: 'company',
96
+ serverUrl: 'your.connectwise.com',
97
+ clientId: '<your client id>',
98
+ // One of the following: integrator username and password or username, password and two-factor code
99
+ // integrator username/password:
100
+ username: '<username>',
101
+ password: '<private key>',
102
+
103
+ // also pass in two factor passcode if not using an integrator account
104
+ twoFactorPasscode: '<2fa code>',
105
+
106
+ timeout: 20000, // optional, request connection timeout in ms, defaults to 20000
107
+ retry: false, // optional, defaults to false
108
+ retryOptions: { // optional, override retry behavior, defaults as shown
109
+ retries: 4, // maximum number of retries
110
+ minTimeout: 50, // number of ms to wait between retries
111
+ maxTimeout: 20000, // maximum number of ms between retries
112
+ randomize: true, // randomize delay between retries on timeouts
113
+ },
114
+ debug: false, // optional, enable debug logging
115
+ logger: (level, text, meta) => { } // optional, pass in logging function
116
+ });
117
+
118
+ cwa.ComputersAPI.getComputerList()
119
+ .then((computers) => {
120
+ //do something with results
121
+ })
122
+ .catch((error) => {
123
+ //handle errors
124
+ });
125
+ ```
126
+
127
+ ### Pagination
128
+
129
+ Use the pagination function to automatically fetch all records in order that match the request.
130
+
131
+ Note: the last argument to the pagination function must be an object, or an error will be thrown.
132
+
133
+ ```javascript
134
+ const cwa = new ManageAPI()
135
+ const cwm = new AutomateAPI()
136
+
137
+ // use the instantiated ManageAPI or AutomateAPI
138
+ cwm.paginate(
139
+ cwm.ServiceAPI.getServiceTickets, // pass in the api function to be paginated
140
+ {startPage: 10, pageSize: 500}, // pagination options, defaults to startPage 1, pageSize 1000
141
+ {} // additional arguments to the api function as needed
142
+ )
143
+ .then(results => { ... })
144
+ .catch(error => { ... })
145
+
146
+ ```
147
+
148
+ ### APIs Without Typings
149
+
150
+ You can also manually access the API without typings:
151
+
152
+ ```javascript
153
+
154
+ const { Manage, Automate } = require('connectwise-rest');
155
+
156
+ const cwm = new Manage(CWMOptions);
157
+ const cwa = new Automate(CWAOptions);
158
+
159
+ // use cwa.request or cwm.request
160
+ cwm.request({
161
+ path: '/path/to/api',
162
+ method: 'POST',
163
+ params: {
164
+ 'queryParam1': 'val1',
165
+ 'queryParam2': 'val2'
166
+ },
167
+ data: {
168
+ 'dataValue': 'val1',
169
+ })
170
+ .then((result) => {
171
+ //do something with results
172
+ })
173
+ .catch((error) => {
174
+ //handle errors
175
+ });
176
+ ```
177
+
178
+ ### Cloud-Hosted ConnectWise Manage
179
+
180
+ To access cloud-hosted ConnectWise, use the `companyUrl` of `api-na.myconnectwise.net` and override the default `entryPoint`.
181
+
182
+ | Region | URL |
183
+ | --- |--------------------------------|
184
+ | North America | api-na.myconnectwise.net |
185
+ | Europe | api-eu.myconnectwise.net |
186
+ | Australia | api-aus.myconnectwise.net |
187
+ | Demo | api-staging.connectwisedev.com |
188
+
189
+ ```javascript
190
+ options = {
191
+ companyId: 'company',
192
+ companyUrl: 'api-na.myconnectwise.net',
193
+ entryPoint: 'v2022.1', // change to the current hosted version
194
+ publicKey: '<public key>',
195
+ privateKey: '<private key>'
196
+ }
197
+ ```
198
+
199
+ ## Examples
200
+
201
+ ### Sample Project
202
+
203
+ See [the sample project here](https://github.com/k-grube/cw-micro). This is a simple node.js express based API.
204
+
205
+ ### Code Examples
206
+
207
+ Get ticket 1234 and print ticket number, summary and status.
208
+
209
+ ```javascript
210
+
211
+ cwm.ServiceAPI.getServiceTicketsById(1234)
212
+ .then((ticket) => { console.log(ticket.id, ticket.summary, ticket.status.name); })
213
+ .catch((err) => { console.log(err); });
214
+ ```
215
+
216
+ Create new ticket on service board, then print the returned ticket number, or any errors
217
+
218
+ ```javascript
219
+ cwm.ServiceAPI.postServiceTickets({
220
+ summary: "This is the summary",
221
+ board: {
222
+ name: "Service Board"
223
+ },
224
+ company: {
225
+ identifier: "ABC" //company ID
226
+ },
227
+ initialDescription: "ticket description",
228
+ recordType: "ServiceTicket"
229
+ //can also pass in any other Ticket object settings as needed
230
+ })
231
+ .then((ticket) => { console.log(ticket.id); })
232
+ .catch((err) => { console.log(err); });
233
+
234
+ ```
235
+
236
+ Change the status of a ticket
237
+
238
+ ```javascript
239
+ cwa.ServiceAPI.patchServiceTicketsById(1234, [{
240
+ op: 'replace',
241
+ path: 'status',
242
+ value: {id: 123} //id of the status to change to, find with boards.getBoards and status.getStatuses
243
+ }, {
244
+ //second or more operations
245
+ }])
246
+ .then((res) => {
247
+ //do something with returned ticket
248
+ })
249
+ .catch((err) => {
250
+ //do something with errors
251
+ });
252
+
253
+ ```
254
+
255
+ ### Manage Conditions Example
256
+
257
+ Valid example conditions string:
258
+
259
+ ```javascript
260
+
261
+ const conditions = '(contact/name like "Fred%" and closedFlag = false) and dateEntered > [2015-12-23T05:53:27Z] or summary contains "test" AND summary != "Some Summary"'
262
+
263
+ ```
264
+
265
+ Error message returned from server when invalid conditions are passed in:
266
+ > 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.
267
+
268
+
269
+ ### Manage Callbacks
270
+
271
+ This library includes an express style callback middleware that will parse and verify the payload signature.
272
+
273
+ ```javascript
274
+ const {utils} = require('connectwise-rest')
275
+ const CWCallback = utils.Callback;
276
+
277
+ router.post('/your/callback', CWCallback.middleware((err, req, res, verified, payload) => {
278
+ if (err) {
279
+ //handle error, parsing, malformed object, etc
280
+ res.status(500).end();
281
+ } else if (!verified) {
282
+ // send 403 on verification failure,
283
+ // or handle some other way
284
+ res.status(403).end();
285
+ } else {
286
+ res.status(200).end()
287
+ }
288
+ const {action, id} = req.query;
289
+ // do something with the payload
290
+ }));
291
+
292
+ ```
293
+