@itentialopensource/adapter-microsoft_graph 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. package/.eslintignore +6 -0
  2. package/.eslintrc.js +18 -0
  3. package/.gitlab/.gitkeep +0 -0
  4. package/.gitlab/issue_templates/.gitkeep +0 -0
  5. package/.gitlab/issue_templates/Default.md +17 -0
  6. package/.gitlab/issue_templates/bugReportTemplate.md +42 -0
  7. package/.gitlab/issue_templates/featureRequestTemplate.md +14 -0
  8. package/.jshintrc +0 -0
  9. package/AUTH.md +39 -0
  10. package/BROKER.md +199 -0
  11. package/CALLS.md +170 -0
  12. package/CHANGELOG.md +9 -0
  13. package/CODE_OF_CONDUCT.md +43 -0
  14. package/CONTRIBUTING.md +172 -0
  15. package/ENHANCE.md +69 -0
  16. package/LICENSE +201 -0
  17. package/PROPERTIES.md +641 -0
  18. package/README.md +337 -0
  19. package/SUMMARY.md +9 -0
  20. package/SYSTEMINFO.md +11 -0
  21. package/TROUBLESHOOT.md +47 -0
  22. package/adapter.js +18798 -0
  23. package/adapterBase.js +1787 -0
  24. package/entities/.generic/action.json +214 -0
  25. package/entities/.generic/schema.json +28 -0
  26. package/entities/.system/action.json +50 -0
  27. package/entities/.system/mockdatafiles/getToken-default.json +3 -0
  28. package/entities/.system/mockdatafiles/healthcheck-default.json +3 -0
  29. package/entities/.system/schema.json +19 -0
  30. package/entities/.system/schemaTokenReq.json +53 -0
  31. package/entities/.system/schemaTokenResp.json +53 -0
  32. package/entities/Applications/action.json +127 -0
  33. package/entities/Applications/schema.json +35 -0
  34. package/entities/AzureADDevice/action.json +106 -0
  35. package/entities/AzureADDevice/schema.json +45 -0
  36. package/entities/Batch/action.json +24 -0
  37. package/entities/Batch/schema.json +19 -0
  38. package/entities/CaseCreation/action.json +249 -0
  39. package/entities/CaseCreation/schema.json +30 -0
  40. package/entities/Catalog/action.json +25 -0
  41. package/entities/Catalog/schema.json +19 -0
  42. package/entities/ConnectionSetup/action.json +148 -0
  43. package/entities/ConnectionSetup/schema.json +25 -0
  44. package/entities/ContentSync/action.json +65 -0
  45. package/entities/ContentSync/schema.json +21 -0
  46. package/entities/CreateDSR/action.json +45 -0
  47. package/entities/CreateDSR/schema.json +20 -0
  48. package/entities/Deployment/action.json +106 -0
  49. package/entities/Deployment/schema.json +34 -0
  50. package/entities/DeploymentAudience/action.json +66 -0
  51. package/entities/DeploymentAudience/schema.json +32 -0
  52. package/entities/Events/action.json +108 -0
  53. package/entities/Events/schema.json +34 -0
  54. package/entities/Files/action.json +108 -0
  55. package/entities/Files/schema.json +23 -0
  56. package/entities/Groups/action.json +25 -0
  57. package/entities/Groups/schema.json +19 -0
  58. package/entities/IdentitySync/action.json +105 -0
  59. package/entities/IdentitySync/schema.json +23 -0
  60. package/entities/Insights/action.json +46 -0
  61. package/entities/Insights/schema.json +20 -0
  62. package/entities/LabelManagement/action.json +106 -0
  63. package/entities/LabelManagement/schema.json +23 -0
  64. package/entities/Mail/action.json +212 -0
  65. package/entities/Mail/schema.json +72 -0
  66. package/entities/Memberships/action.json +167 -0
  67. package/entities/Memberships/schema.json +70 -0
  68. package/entities/Misc/action.json +66 -0
  69. package/entities/Misc/schema.json +21 -0
  70. package/entities/Notebooks/action.json +107 -0
  71. package/entities/Notebooks/schema.json +34 -0
  72. package/entities/OpenExtensions/action.json +65 -0
  73. package/entities/OpenExtensions/schema.json +54 -0
  74. package/entities/People/action.json +46 -0
  75. package/entities/People/schema.json +31 -0
  76. package/entities/SchemaExtensions/action.json +65 -0
  77. package/entities/SchemaExtensions/schema.json +32 -0
  78. package/entities/Search/action.json +24 -0
  79. package/entities/Search/schema.json +19 -0
  80. package/entities/Security/action.json +151 -0
  81. package/entities/Security/schema.json +58 -0
  82. package/entities/SharePoint/action.json +214 -0
  83. package/entities/SharePoint/schema.json +39 -0
  84. package/entities/Subscriptions/action.json +65 -0
  85. package/entities/Subscriptions/schema.json +32 -0
  86. package/entities/TasksPlanner/action.json +272 -0
  87. package/entities/TasksPlanner/schema.json +86 -0
  88. package/entities/TasksTodo/action.json +187 -0
  89. package/entities/TasksTodo/schema.json +49 -0
  90. package/entities/Teams/action.json +519 -0
  91. package/entities/Teams/schema.json +120 -0
  92. package/entities/TrackDSRStatus/action.json +108 -0
  93. package/entities/TrackDSRStatus/schema.json +23 -0
  94. package/entities/TriggerEventForExistingLabel/action.json +108 -0
  95. package/entities/TriggerEventForExistingLabel/schema.json +23 -0
  96. package/entities/Users/action.json +213 -0
  97. package/entities/Users/schema.json +50 -0
  98. package/entities/WorkflowAutomation/action.json +249 -0
  99. package/entities/WorkflowAutomation/schema.json +30 -0
  100. package/error.json +190 -0
  101. package/package.json +87 -0
  102. package/pronghorn.json +8654 -0
  103. package/propertiesDecorators.json +14 -0
  104. package/propertiesSchema.json +1248 -0
  105. package/refs?service=git-upload-pack +0 -0
  106. package/report/creationReport.json +1715 -0
  107. package/report/graph.json +14709 -0
  108. package/sampleProperties.json +195 -0
  109. package/test/integration/adapterTestBasicGet.js +83 -0
  110. package/test/integration/adapterTestConnectivity.js +93 -0
  111. package/test/integration/adapterTestIntegration.js +6059 -0
  112. package/test/unit/adapterBaseTestUnit.js +949 -0
  113. package/test/unit/adapterTestUnit.js +7492 -0
  114. package/utils/adapterInfo.js +206 -0
  115. package/utils/addAuth.js +94 -0
  116. package/utils/artifactize.js +146 -0
  117. package/utils/basicGet.js +50 -0
  118. package/utils/checkMigrate.js +63 -0
  119. package/utils/entitiesToDB.js +178 -0
  120. package/utils/findPath.js +74 -0
  121. package/utils/methodDocumentor.js +225 -0
  122. package/utils/modify.js +154 -0
  123. package/utils/packModificationScript.js +35 -0
  124. package/utils/patches2bundledDeps.js +90 -0
  125. package/utils/pre-commit.sh +32 -0
  126. package/utils/removeHooks.js +20 -0
  127. package/utils/setup.js +33 -0
  128. package/utils/tbScript.js +246 -0
  129. package/utils/tbUtils.js +490 -0
  130. package/utils/testRunner.js +298 -0
  131. package/utils/troubleshootingAdapter.js +195 -0
  132. package/workflows/README.md +3 -0
@@ -0,0 +1,1248 @@
1
+ {
2
+ "$id": "adapter-microsoft_graph",
3
+ "type": "object",
4
+ "$schema": "http://json-schema.org/draft-07/schema#",
5
+ "properties": {
6
+ "host": {
7
+ "type": "string",
8
+ "description": "hostname of the server",
9
+ "default": "",
10
+ "examples": [
11
+ "systemx.customer.com"
12
+ ]
13
+ },
14
+ "port": {
15
+ "type": "integer",
16
+ "description": "port on which to connect to the server",
17
+ "default": 443,
18
+ "minimum": 1,
19
+ "maximum": 65535
20
+ },
21
+ "base_path": {
22
+ "type": "string",
23
+ "description": "a base path that is consistent across api calls",
24
+ "default": "",
25
+ "examples": [
26
+ "/system/api"
27
+ ]
28
+ },
29
+ "version": {
30
+ "type": "string",
31
+ "description": "api version this adapter integrates with",
32
+ "default": "",
33
+ "examples": [
34
+ "v1",
35
+ "v2.6",
36
+ "4.5.1"
37
+ ]
38
+ },
39
+ "cache_location": {
40
+ "type": "string",
41
+ "description": "Where cache of information should be located redis or local memory",
42
+ "default": "none",
43
+ "enum": [
44
+ "redis",
45
+ "local",
46
+ "none"
47
+ ]
48
+ },
49
+ "encode_pathvars": {
50
+ "type": "boolean",
51
+ "description": "When true the path variables are encoded in the url",
52
+ "default": true
53
+ },
54
+ "encode_queryvars": {
55
+ "type": "boolean",
56
+ "description": "When true the query parameters are encoded in the url",
57
+ "default": true
58
+ },
59
+ "save_metric": {
60
+ "type": [
61
+ "boolean",
62
+ "string"
63
+ ],
64
+ "description": "When true the metrics collected by the adapter will be stored in mongo or on the filesystem",
65
+ "default": false
66
+ },
67
+ "stub": {
68
+ "type": "boolean",
69
+ "description": "When true will not connect to the remote server, but will use a static object for all responses",
70
+ "default": false
71
+ },
72
+ "protocol": {
73
+ "type": "string",
74
+ "description": "the protocol to use to connect to server",
75
+ "default": "http",
76
+ "enum": [
77
+ "http",
78
+ "https"
79
+ ]
80
+ },
81
+ "authentication": {
82
+ "$ref": "#/definitions/authentication"
83
+ },
84
+ "healthcheck": {
85
+ "$ref": "#/definitions/healthcheck"
86
+ },
87
+ "throttle": {
88
+ "$ref": "#/definitions/throttle"
89
+ },
90
+ "request": {
91
+ "$ref": "#/definitions/request"
92
+ },
93
+ "proxy": {
94
+ "$ref": "#/definitions/proxy"
95
+ },
96
+ "ssl": {
97
+ "$ref": "#/definitions/ssl"
98
+ },
99
+ "mongo": {
100
+ "$ref": "#/definitions/mongo"
101
+ },
102
+ "devicebroker": {
103
+ "$ref": "#/definitions/devicebroker"
104
+ }
105
+ },
106
+ "required": [
107
+ "host",
108
+ "port",
109
+ "authentication",
110
+ "healthcheck"
111
+ ],
112
+ "definitions": {
113
+ "authentication": {
114
+ "type": "object",
115
+ "properties": {
116
+ "auth_method": {
117
+ "type": "string",
118
+ "description": "The authentication method for requests",
119
+ "default": "basic user_password",
120
+ "enum": [
121
+ "basic user_password",
122
+ "static_token",
123
+ "jwt_token",
124
+ "request_token",
125
+ "no_authentication"
126
+ ]
127
+ },
128
+ "username": {
129
+ "type": "string",
130
+ "description": "The username used for requests",
131
+ "default": "",
132
+ "examples": [
133
+ "username"
134
+ ]
135
+ },
136
+ "password": {
137
+ "type": "string",
138
+ "description": "The password used for requests. If it was retrieved through the encrypt password call, use the exact return including the {code} or {crypt}",
139
+ "default": "",
140
+ "examples": [
141
+ "password",
142
+ "{code}password",
143
+ "{crypt}password"
144
+ ]
145
+ },
146
+ "token": {
147
+ "type": "string",
148
+ "description": "The token used for requests",
149
+ "default": "",
150
+ "examples": [
151
+ "sdadafdsf_dummytoken_adfkdhfkajd"
152
+ ]
153
+ },
154
+ "token_user_field": {
155
+ "type": "string",
156
+ "description": "The field to send the user credential when getting a token",
157
+ "default": "username",
158
+ "examples": [
159
+ "username"
160
+ ]
161
+ },
162
+ "token_password_field": {
163
+ "type": "string",
164
+ "description": "The field to send the password credential when getting a token",
165
+ "default": "password",
166
+ "examples": [
167
+ "password"
168
+ ]
169
+ },
170
+ "token_result_field": {
171
+ "type": "string",
172
+ "description": "The field to pull the result from when getting a token",
173
+ "default": "token",
174
+ "examples": [
175
+ "token"
176
+ ]
177
+ },
178
+ "token_URI_path": {
179
+ "type": "string",
180
+ "description": "The path used to retrieve a token",
181
+ "default": "",
182
+ "examples": [
183
+ "/api/version/authenticate"
184
+ ]
185
+ },
186
+ "invalid_token_error": {
187
+ "type": "integer",
188
+ "description": "http error status number which defines an invalid token",
189
+ "default": 401,
190
+ "minimum": 0,
191
+ "maximum": 1000
192
+ },
193
+ "token_timeout": {
194
+ "type": "integer",
195
+ "description": "How long a token is valid (in milliseconds), -1 (always get token), 0 use expiration returned with token",
196
+ "default": -1,
197
+ "minimum": -1,
198
+ "maximum": 3600000
199
+ },
200
+ "token_cache": {
201
+ "type": "string",
202
+ "description": "Whether tokens should be stored in redis or local memory",
203
+ "default": "local",
204
+ "enum": [
205
+ "redis",
206
+ "local"
207
+ ]
208
+ },
209
+ "auth_field": {
210
+ "type": [
211
+ "string",
212
+ "array"
213
+ ],
214
+ "description": "The field in which to pass the token",
215
+ "default": "header.headers.X-AUTH-TOKEN",
216
+ "examples": [
217
+ "header.headers.X-AUTH-TOKEN",
218
+ "header.headers.Authorization",
219
+ "header.auth",
220
+ "body.token",
221
+ "url"
222
+ ]
223
+ },
224
+ "auth_field_format": {
225
+ "type": [
226
+ "string",
227
+ "array"
228
+ ],
229
+ "description": "The format used to pass the authentication -- variables {token}, {username}, {password} will be replaced with the proper values. {b64}...{/b64} will base64 encode everything between the start and end tag.",
230
+ "default": "{token}",
231
+ "examples": [
232
+ "{token}",
233
+ "Token {token}",
234
+ "{username}:{password}",
235
+ "Basic {b64}{username}:{password}{/b64}",
236
+ "token={token}"
237
+ ]
238
+ },
239
+ "auth_logging": {
240
+ "type": "boolean",
241
+ "description": "This property turns on logging of Authentication Information and should only be true when debugging authentication and connectivity",
242
+ "default": false
243
+ },
244
+ "client_id": {
245
+ "type": "string",
246
+ "description": "The client id for OAuth requests - can also use username depending on schema",
247
+ "default": ""
248
+ },
249
+ "client_secret": {
250
+ "type": "string",
251
+ "description": "The client secret for OAuth requests - can also use password depending on schema",
252
+ "default": ""
253
+ },
254
+ "grant_type": {
255
+ "type": "string",
256
+ "description": "The grant type for OAuth requests - can also provide in schema",
257
+ "default": ""
258
+ }
259
+ },
260
+ "required": [
261
+ "auth_method"
262
+ ],
263
+ "allOf": [
264
+ {
265
+ "if": {
266
+ "properties": {
267
+ "auth_method": {
268
+ "enum": [
269
+ "basic user_password"
270
+ ]
271
+ }
272
+ }
273
+ },
274
+ "then": {
275
+ "required": [
276
+ "username",
277
+ "password",
278
+ "auth_field",
279
+ "auth_field_format"
280
+ ]
281
+ }
282
+ },
283
+ {
284
+ "if": {
285
+ "properties": {
286
+ "auth_method": {
287
+ "enum": [
288
+ "request_token"
289
+ ]
290
+ }
291
+ }
292
+ },
293
+ "then": {
294
+ "required": [
295
+ "username",
296
+ "password",
297
+ "auth_field",
298
+ "auth_field_format"
299
+ ]
300
+ }
301
+ },
302
+ {
303
+ "if": {
304
+ "properties": {
305
+ "auth_method": {
306
+ "enum": [
307
+ "static_token"
308
+ ]
309
+ }
310
+ }
311
+ },
312
+ "then": {
313
+ "required": [
314
+ "token",
315
+ "auth_field",
316
+ "auth_field_format"
317
+ ]
318
+ }
319
+ }
320
+ ]
321
+ },
322
+ "healthcheck": {
323
+ "type": "object",
324
+ "properties": {
325
+ "type": {
326
+ "type": "string",
327
+ "description": "The type of healthcheck to run",
328
+ "default": "intermittent",
329
+ "enum": [
330
+ "none",
331
+ "startup",
332
+ "intermittent"
333
+ ]
334
+ },
335
+ "frequency": {
336
+ "type": "integer",
337
+ "description": "How often the healthcheck should run (in milliseconds).",
338
+ "default": 300000,
339
+ "minimum": 60000,
340
+ "maximum": 3600000
341
+ },
342
+ "protocol": {
343
+ "type": "string",
344
+ "description": "The protocol used to check the health of the system",
345
+ "default": "REST",
346
+ "enum": [
347
+ "REST"
348
+ ]
349
+ },
350
+ "URI_Path": {
351
+ "type": "string",
352
+ "description": "The path used to check the health of the system",
353
+ "default": "",
354
+ "examples": [
355
+ "/api/version/ping"
356
+ ]
357
+ },
358
+ "query_object": {
359
+ "type": "object",
360
+ "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter"
361
+ }
362
+ },
363
+ "required": [
364
+ "type"
365
+ ],
366
+ "allOf": [
367
+ {
368
+ "if": {
369
+ "properties": {
370
+ "type": {
371
+ "enum": [
372
+ "intermittent"
373
+ ]
374
+ }
375
+ }
376
+ },
377
+ "then": {
378
+ "required": [
379
+ "frequency"
380
+ ]
381
+ }
382
+ }
383
+ ]
384
+ },
385
+ "throttle": {
386
+ "type": "object",
387
+ "properties": {
388
+ "throttle_enabled": {
389
+ "type": "boolean",
390
+ "description": "Whether to use throttling",
391
+ "default": false
392
+ },
393
+ "number_pronghorns": {
394
+ "type": "integer",
395
+ "description": "whether the throttling is being done in a single Pronghorn instance or whether requests are being throttled across multiple pronghorns",
396
+ "default": 1,
397
+ "minimum": 1,
398
+ "maximum": 20
399
+ },
400
+ "sync_async": {
401
+ "type": "string",
402
+ "description": "should the queue handle request synchronously or asynchronously",
403
+ "default": "sync",
404
+ "examples": [
405
+ "async",
406
+ "sync"
407
+ ]
408
+ },
409
+ "max_in_queue": {
410
+ "type": "integer",
411
+ "description": "the maximum number of requests that Pronghorn should allow into the queue before rejecting requests",
412
+ "default": 1000,
413
+ "minimum": 1,
414
+ "maximum": 5000
415
+ },
416
+ "concurrent_max": {
417
+ "type": "integer",
418
+ "description": "defines the number of request that Pronghorn can send microsoft_graph at one time",
419
+ "default": 1,
420
+ "minimum": 0,
421
+ "maximum": 1000
422
+ },
423
+ "expire_timeout": {
424
+ "type": "integer",
425
+ "description": "After the request has completed, Pronghorn will wait the additional expire timeout time (in milliseconds) prior to sending in the next request.",
426
+ "default": 0,
427
+ "minimum": 0,
428
+ "maximum": 60000
429
+ },
430
+ "avg_runtime": {
431
+ "type": "integer",
432
+ "description": "an approximate average of how long it takes microsoft_graph to handle each request",
433
+ "default": 200,
434
+ "minimum": 50,
435
+ "maximum": 60000
436
+ },
437
+ "priorities": {
438
+ "type": "array",
439
+ "description": "define your priorities here",
440
+ "items": {
441
+ "type": "object",
442
+ "properties": {
443
+ "value": {
444
+ "type": "number",
445
+ "description": "Defines a priority - this number is what is passed in on a priority request"
446
+ },
447
+ "percent": {
448
+ "type": "number",
449
+ "description": "this is the percent of the queue that comes before the priority request (0 is front of queue, 100 is last in queue)"
450
+ }
451
+ }
452
+ }
453
+ }
454
+ },
455
+ "required": [
456
+ "throttle_enabled"
457
+ ],
458
+ "allOf": [
459
+ {
460
+ "if": {
461
+ "properties": {
462
+ "throttle_enabled": {
463
+ "enum": [
464
+ true
465
+ ]
466
+ }
467
+ }
468
+ },
469
+ "then": {
470
+ "required": [
471
+ "number_pronghorns",
472
+ "sync_async",
473
+ "max_in_queue",
474
+ "concurrent_max",
475
+ "expire_timeout",
476
+ "avg_runtime"
477
+ ]
478
+ }
479
+ }
480
+ ]
481
+ },
482
+ "request": {
483
+ "type": "object",
484
+ "properties": {
485
+ "number_redirects": {
486
+ "type": "integer",
487
+ "description": "how many redirects before it gives up on the request",
488
+ "default": 0,
489
+ "minimum": 0,
490
+ "maximum": 20
491
+ },
492
+ "number_retries": {
493
+ "type": "integer",
494
+ "description": "how many attempt to make before it gives up on the request",
495
+ "default": 3,
496
+ "minimum": 0,
497
+ "maximum": 20
498
+ },
499
+ "limit_retry_error": {
500
+ "type": [
501
+ "integer",
502
+ "array"
503
+ ],
504
+ "description": "http error status number which defines that no capacity was available and thus after waiting a short interval the adapter can retry the request. Supports an array of numbers or strings including a range provided as '###-###'",
505
+ "default": 0
506
+ },
507
+ "failover_codes": {
508
+ "type": "array",
509
+ "description": "An array of codes where it is ok to try another method",
510
+ "items": {
511
+ "type": "integer"
512
+ }
513
+ },
514
+ "attempt_timeout": {
515
+ "type": "integer",
516
+ "description": "how long Pronghorn should wait before aborting the attempt",
517
+ "default": 5000,
518
+ "minimum": 1000,
519
+ "maximum": 3600000
520
+ },
521
+ "global_request": {
522
+ "type": "object",
523
+ "description": "Global Request data that is overriden by the request object",
524
+ "properties": {
525
+ "payload": {
526
+ "type": "object",
527
+ "description": "payload fields that will be appended to the provided payload (excluding GET calls)"
528
+ },
529
+ "uriOptions": {
530
+ "type": "object",
531
+ "description": "options that will be appended to all GET calls"
532
+ },
533
+ "addlHeaders": {
534
+ "type": "object",
535
+ "description": "headers that will be appended to the headers for the call"
536
+ },
537
+ "authData": {
538
+ "type": "object",
539
+ "description": "authentication data that will be appended to the payload for authentication calls"
540
+ }
541
+ }
542
+ },
543
+ "healthcheck_on_timeout": {
544
+ "type": "boolean",
545
+ "description": "Should the system run a healthcheck on timeout",
546
+ "default": false
547
+ },
548
+ "return_raw": {
549
+ "type": "boolean",
550
+ "description": "Will include the raw response with the data that is returned",
551
+ "default": false
552
+ },
553
+ "archiving": {
554
+ "type": "boolean",
555
+ "description": "Archives each request/response and corresponding metrics",
556
+ "default": false
557
+ },
558
+ "return_request": {
559
+ "type": "boolean",
560
+ "description": "This property turns on returning the response information - need to be carefull in case credentials are in the path",
561
+ "default": false
562
+ }
563
+ },
564
+ "required": [
565
+ "number_retries",
566
+ "limit_retry_error",
567
+ "attempt_timeout",
568
+ "healthcheck_on_timeout"
569
+ ]
570
+ },
571
+ "proxy": {
572
+ "type": "object",
573
+ "properties": {
574
+ "enabled": {
575
+ "type": "boolean",
576
+ "description": "Whether or not there is a proxy for the Server",
577
+ "default": false
578
+ },
579
+ "host": {
580
+ "type": "string",
581
+ "description": "hostname of the proxy for the server",
582
+ "default": "",
583
+ "examples": [
584
+ "proxy.customer.com"
585
+ ]
586
+ },
587
+ "port": {
588
+ "type": "integer",
589
+ "description": "port on which to connect to the proxy for the server",
590
+ "default": 443,
591
+ "minimum": 1,
592
+ "maximum": 65535
593
+ },
594
+ "protocol": {
595
+ "type": "string",
596
+ "description": "the protocol to use to connect to the proxy",
597
+ "default": "http",
598
+ "enum": [
599
+ "http",
600
+ "https",
601
+ "socks4",
602
+ "socks5",
603
+ "tls"
604
+ ]
605
+ },
606
+ "username": {
607
+ "type": "string",
608
+ "description": "username for proxy authentication",
609
+ "default": ""
610
+ },
611
+ "password": {
612
+ "type": "string",
613
+ "description": "password for proxy authentication",
614
+ "default": ""
615
+ }
616
+ },
617
+ "required": [
618
+ "enabled"
619
+ ],
620
+ "allOf": [
621
+ {
622
+ "if": {
623
+ "properties": {
624
+ "enabled": {
625
+ "enum": [
626
+ true
627
+ ]
628
+ }
629
+ }
630
+ },
631
+ "then": {
632
+ "required": [
633
+ "host",
634
+ "port"
635
+ ]
636
+ }
637
+ }
638
+ ]
639
+ },
640
+ "ssl": {
641
+ "type": "object",
642
+ "properties": {
643
+ "ecdhCurve": {
644
+ "type": "string",
645
+ "description": "Do we need to set the autoCurve on this request",
646
+ "default": "",
647
+ "examples": [
648
+ "auto"
649
+ ]
650
+ },
651
+ "enabled": {
652
+ "type": "boolean",
653
+ "description": "Whether or not ssl is enabled on Server",
654
+ "default": false
655
+ },
656
+ "accept_invalid_cert": {
657
+ "type": "boolean",
658
+ "description": "Whether the adapter should accept invalid certificates",
659
+ "default": false
660
+ },
661
+ "ca_file": {
662
+ "type": "string",
663
+ "description": "The fully qualified path name to the CA file used for SSL",
664
+ "default": "",
665
+ "examples": [
666
+ "security/ca.pem"
667
+ ]
668
+ },
669
+ "key_file": {
670
+ "type": "string",
671
+ "description": "The fully qualified path name to the key file used for SSL",
672
+ "default": "",
673
+ "examples": [
674
+ "security/key.pem"
675
+ ]
676
+ },
677
+ "cert_file": {
678
+ "type": "string",
679
+ "description": "The fully qualified path name to the Cert file used for SSL",
680
+ "default": "",
681
+ "examples": [
682
+ "security/cert.pem"
683
+ ]
684
+ },
685
+ "secure_protocol": {
686
+ "type": "string",
687
+ "description": "What protocol to set on the ssl request",
688
+ "default": "",
689
+ "examples": [
690
+ "SSLv2_method",
691
+ "SSLv3_method"
692
+ ]
693
+ },
694
+ "ciphers": {
695
+ "type": "string",
696
+ "description": "Hyphen separated list of acceptable ciphers",
697
+ "default": "",
698
+ "examples": [
699
+ "DHE-RSA-AES256-SHA"
700
+ ]
701
+ }
702
+ },
703
+ "required": [
704
+ "enabled"
705
+ ],
706
+ "allOf": [
707
+ {
708
+ "if": {
709
+ "properties": {
710
+ "enabled": {
711
+ "enum": [
712
+ true
713
+ ]
714
+ }
715
+ }
716
+ },
717
+ "then": {
718
+ "required": [
719
+ "accept_invalid_cert",
720
+ "ciphers"
721
+ ]
722
+ }
723
+ },
724
+ {
725
+ "if": {
726
+ "allOf": [
727
+ {
728
+ "properties": {
729
+ "enabled": {
730
+ "enum": [
731
+ true
732
+ ]
733
+ }
734
+ }
735
+ },
736
+ {
737
+ "properties": {
738
+ "accept_invalid_cert": {
739
+ "enum": [
740
+ false
741
+ ]
742
+ }
743
+ }
744
+ }
745
+ ]
746
+ },
747
+ "then": {
748
+ "required": [
749
+ "ca_file"
750
+ ]
751
+ }
752
+ }
753
+ ]
754
+ },
755
+ "mongo": {
756
+ "type": "object",
757
+ "properties": {
758
+ "host": {
759
+ "type": "string",
760
+ "description": "host where mongo database can be found",
761
+ "default": "",
762
+ "examples": [
763
+ "localhost"
764
+ ]
765
+ },
766
+ "port": {
767
+ "type": "integer",
768
+ "description": "port on which to connect to the mongo database",
769
+ "default": 443,
770
+ "minimum": 0,
771
+ "maximum": 65535
772
+ },
773
+ "database": {
774
+ "type": "string",
775
+ "description": "The name of the database to store adapter information in",
776
+ "default": "",
777
+ "examples": [
778
+ "adapter-xyz"
779
+ ]
780
+ },
781
+ "username": {
782
+ "type": "string",
783
+ "description": "The user to connect to the database with",
784
+ "default": "",
785
+ "examples": [
786
+ "username"
787
+ ]
788
+ },
789
+ "password": {
790
+ "type": "string",
791
+ "description": "The password to connect to the database with",
792
+ "default": "",
793
+ "examples": [
794
+ "password"
795
+ ]
796
+ },
797
+ "replSet": {
798
+ "type": "string",
799
+ "description": "The replica set for the database",
800
+ "default": "",
801
+ "examples": [
802
+ "my_repolica_set"
803
+ ]
804
+ },
805
+ "db_ssl": {
806
+ "type": "object",
807
+ "description": "SSL for mongo database connection",
808
+ "properties": {
809
+ "enabled": {
810
+ "type": "boolean",
811
+ "description": "Whether or not ssl is enabled on Database Server",
812
+ "default": false
813
+ },
814
+ "accept_invalid_cert": {
815
+ "type": "boolean",
816
+ "description": "Whether the adapter should accept invalid certificates",
817
+ "default": false
818
+ },
819
+ "ca_file": {
820
+ "type": "string",
821
+ "description": "The fully qualified path name to the CA file used for Database SSL",
822
+ "default": "",
823
+ "examples": [
824
+ "security/ca.pem"
825
+ ]
826
+ },
827
+ "key_file": {
828
+ "type": "string",
829
+ "description": "The fully qualified path name to the key file used for Database SSL",
830
+ "default": "",
831
+ "examples": [
832
+ "security/key.pem"
833
+ ]
834
+ },
835
+ "cert_file": {
836
+ "type": "string",
837
+ "description": "The fully qualified path name to the Cert file used for Database SSL",
838
+ "default": "",
839
+ "examples": [
840
+ "security/cert.pem"
841
+ ]
842
+ }
843
+ }
844
+ }
845
+ }
846
+ },
847
+ "devicebroker": {
848
+ "type": "object",
849
+ "properties": {
850
+ "getDevice": {
851
+ "type": "array",
852
+ "description": "Broker call(s) to getDevice",
853
+ "items": {
854
+ "properties": {
855
+ "path": {
856
+ "type": "string",
857
+ "description": "The fully qualified path of the call to getDevice (e.g. /rest/api/device/{deviceid})",
858
+ "default": ""
859
+ },
860
+ "method": {
861
+ "type": "string",
862
+ "description": "The method of the call to getDevice",
863
+ "default": "GET"
864
+ },
865
+ "query": {
866
+ "type": "object",
867
+ "description": "The json object with query parameters of the call to getDevice",
868
+ "additionalProperties": {
869
+ "type": "string"
870
+ }
871
+ },
872
+ "body": {
873
+ "type": "object",
874
+ "description": "The json object with body of the call to getDevice",
875
+ "additionalProperties": {
876
+ "type": "string"
877
+ }
878
+ },
879
+ "headers": {
880
+ "type": "object",
881
+ "description": "The json object with headers of the call to getDevice",
882
+ "additionalProperties": {
883
+ "type": "string"
884
+ }
885
+ },
886
+ "handleFailure": {
887
+ "type": "string",
888
+ "enum": ["ignore", "fail"],
889
+ "description": "return failure or ignore failure",
890
+ "default": "ignore"
891
+ },
892
+ "requestFields": {
893
+ "type": "object",
894
+ "description": "The json object with response fields of the call to getDevice",
895
+ "additionalProperties": {
896
+ "type": "string"
897
+ },
898
+ "properties": {}
899
+ },
900
+ "responseDatakey": {
901
+ "type": "string",
902
+ "description": "place in the response where the data is - supports jsonquery",
903
+ "default": ""
904
+ },
905
+ "responseFields": {
906
+ "type": "object",
907
+ "description": "The json object with response fields of the call to getDevice",
908
+ "additionalProperties": {
909
+ "type": "string"
910
+ },
911
+ "properties": {
912
+ "name": {
913
+ "type": "string",
914
+ "description": "The field in response to getDevice that contains the name of the device",
915
+ "default": "name"
916
+ },
917
+ "ostype": {
918
+ "type": "string",
919
+ "description": "The field in response to getDevice that contains the ostype of the device",
920
+ "default": "ostype"
921
+ },
922
+ "ostypePrefix": {
923
+ "type": "string",
924
+ "description": "Any prefix that should be added to the ostype of the device (e.g. aws-)",
925
+ "default": ""
926
+ },
927
+ "port": {
928
+ "type": "string",
929
+ "description": "The field in response to getDevice that contains the port of the device",
930
+ "default": ""
931
+ },
932
+ "ipaddress": {
933
+ "type": "string",
934
+ "description": "The field in response to getDevice that contains the ip address of the device",
935
+ "default": ""
936
+ }
937
+ }
938
+ }
939
+ }
940
+ }
941
+ },
942
+ "getDevicesFiltered": {
943
+ "type": "array",
944
+ "description": "Broker call(s) to getDevicesFiltered",
945
+ "items": {
946
+ "properties": {
947
+ "path": {
948
+ "type": "string",
949
+ "description": "The fully qualified path of the call to getDevicesFiltered (e.g. /rest/api/device/{deviceid})",
950
+ "default": ""
951
+ },
952
+ "method": {
953
+ "type": "string",
954
+ "description": "The method of the call to getDevicesFiltered",
955
+ "default": "GET"
956
+ },
957
+ "query": {
958
+ "type": "object",
959
+ "description": "The json object with query parameters of the call to getDevicesFiltered",
960
+ "additionalProperties": {
961
+ "type": "string"
962
+ }
963
+ },
964
+ "body": {
965
+ "type": "object",
966
+ "description": "The json object with body of the call to getDevicesFiltered",
967
+ "additionalProperties": {
968
+ "type": "string"
969
+ }
970
+ },
971
+ "headers": {
972
+ "type": "object",
973
+ "description": "The json object with headers of the call to getDevicesFiltered",
974
+ "additionalProperties": {
975
+ "type": "string"
976
+ }
977
+ },
978
+ "handleFailure": {
979
+ "type": "string",
980
+ "enum": ["ignore", "fail"],
981
+ "description": "return failure or ignore failure",
982
+ "default": "ignore"
983
+ },
984
+ "requestFields": {
985
+ "type": "object",
986
+ "description": "The json object with response fields of the call to getDevice",
987
+ "additionalProperties": {
988
+ "type": "string"
989
+ },
990
+ "properties": {}
991
+ },
992
+ "responseDatakey": {
993
+ "type": "string",
994
+ "description": "place in the response where the data is - supports jsonquery",
995
+ "default": ""
996
+ },
997
+ "responseFields": {
998
+ "type": "object",
999
+ "description": "The json object with response fields of the call to getDevicesFiltered",
1000
+ "additionalProperties": {
1001
+ "type": "string"
1002
+ },
1003
+ "properties": {
1004
+ "name": {
1005
+ "type": "string",
1006
+ "description": "The field in response to getDevicesFiltered that contains the name of the device",
1007
+ "default": "name"
1008
+ },
1009
+ "ostype": {
1010
+ "type": "string",
1011
+ "description": "The field in response to getDevicesFiltered that contains the ostype of the device",
1012
+ "default": "ostype"
1013
+ },
1014
+ "ostypePrefix": {
1015
+ "type": "string",
1016
+ "description": "Any prefix that should be added to the ostype of the device (e.g. aws-)",
1017
+ "default": ""
1018
+ },
1019
+ "port": {
1020
+ "type": "string",
1021
+ "description": "The field in response to getDevicesFiltered that contains the port of the device",
1022
+ "default": ""
1023
+ },
1024
+ "ipaddress": {
1025
+ "type": "string",
1026
+ "description": "The field in response to getDevicesFiltered that contains the ip address of the device",
1027
+ "default": ""
1028
+ }
1029
+ }
1030
+ }
1031
+ }
1032
+ }
1033
+ },
1034
+ "isAlive": {
1035
+ "type": "array",
1036
+ "description": "Broker call(s) to determine if the device isAlive",
1037
+ "items": {
1038
+ "properties": {
1039
+ "path": {
1040
+ "type": "string",
1041
+ "description": "The fully qualified path of the call to isAlive (e.g. /rest/api/device/{deviceid})",
1042
+ "default": ""
1043
+ },
1044
+ "method": {
1045
+ "type": "string",
1046
+ "description": "The method of the call to isAlive",
1047
+ "default": "GET"
1048
+ },
1049
+ "query": {
1050
+ "type": "object",
1051
+ "description": "The json object with query parameters of the call to isAlive",
1052
+ "additionalProperties": {
1053
+ "type": "string"
1054
+ }
1055
+ },
1056
+ "body": {
1057
+ "type": "object",
1058
+ "description": "The json object with body of the call to isAlive",
1059
+ "additionalProperties": {
1060
+ "type": "string"
1061
+ }
1062
+ },
1063
+ "headers": {
1064
+ "type": "object",
1065
+ "description": "The json object with headers of the call to isAlive",
1066
+ "additionalProperties": {
1067
+ "type": "string"
1068
+ }
1069
+ },
1070
+ "handleFailure": {
1071
+ "type": "string",
1072
+ "enum": ["ignore", "fail"],
1073
+ "description": "return failure or ignore isAlive",
1074
+ "default": "ignore"
1075
+ },
1076
+ "requestFields": {
1077
+ "type": "object",
1078
+ "description": "The json object with response fields of the call to getDevice",
1079
+ "additionalProperties": {
1080
+ "type": "string"
1081
+ },
1082
+ "properties": {}
1083
+ },
1084
+ "responseDatakey": {
1085
+ "type": "string",
1086
+ "description": "place in the response where the data is - supports jsonquery",
1087
+ "default": ""
1088
+ },
1089
+ "responseFields": {
1090
+ "type": "object",
1091
+ "description": "The json object with response fields of the call to isAlive",
1092
+ "additionalProperties": {
1093
+ "type": "string"
1094
+ },
1095
+ "properties": {
1096
+ "status": {
1097
+ "type": "string",
1098
+ "description": "The field in response to isAlive that contains the status of the device",
1099
+ "default": "name"
1100
+ },
1101
+ "statusValue": {
1102
+ "type": "string",
1103
+ "description": "The expected value in the status field",
1104
+ "default": "true"
1105
+ }
1106
+ }
1107
+ }
1108
+ }
1109
+ }
1110
+ },
1111
+ "getConfig": {
1112
+ "type": "array",
1113
+ "description": "Broker call(s) to getConfig",
1114
+ "items": {
1115
+ "properties": {
1116
+ "path": {
1117
+ "type": "string",
1118
+ "description": "The fully qualified path of the call to getConfig (e.g. /rest/api/device/{deviceid})",
1119
+ "default": ""
1120
+ },
1121
+ "method": {
1122
+ "type": "string",
1123
+ "description": "The method of the call to getConfig",
1124
+ "default": "GET"
1125
+ },
1126
+ "query": {
1127
+ "type": "object",
1128
+ "description": "The json object with query parameters of the call to getConfig",
1129
+ "additionalProperties": {
1130
+ "type": "string"
1131
+ }
1132
+ },
1133
+ "body": {
1134
+ "type": "object",
1135
+ "description": "The json object with body of the call to getConfig",
1136
+ "additionalProperties": {
1137
+ "type": "string"
1138
+ }
1139
+ },
1140
+ "headers": {
1141
+ "type": "object",
1142
+ "description": "The json object with headers of the call to getConfig",
1143
+ "additionalProperties": {
1144
+ "type": "string"
1145
+ }
1146
+ },
1147
+ "handleFailure": {
1148
+ "type": "string",
1149
+ "enum": ["ignore", "fail"],
1150
+ "description": "return failure or ignore getConfig",
1151
+ "default": "ignore"
1152
+ },
1153
+ "requestFields": {
1154
+ "type": "object",
1155
+ "description": "The json object with response fields of the call to getDevice",
1156
+ "additionalProperties": {
1157
+ "type": "string"
1158
+ },
1159
+ "properties": {}
1160
+ },
1161
+ "responseDatakey": {
1162
+ "type": "string",
1163
+ "description": "place in the response where the data is - supports jsonquery",
1164
+ "default": ""
1165
+ },
1166
+ "responseFields": {
1167
+ "type": "object",
1168
+ "description": "The json object with response fields of the call to getConfig",
1169
+ "additionalProperties": {
1170
+ "type": "string"
1171
+ },
1172
+ "properties": {
1173
+ }
1174
+ }
1175
+ }
1176
+ }
1177
+ },
1178
+ "getCount": {
1179
+ "type": "array",
1180
+ "description": "Broker call(s) to getCount",
1181
+ "items": {
1182
+ "properties": {
1183
+ "path": {
1184
+ "type": "string",
1185
+ "description": "The fully qualified path of the call to getCount (e.g. /rest/api/device/{deviceid})",
1186
+ "default": ""
1187
+ },
1188
+ "method": {
1189
+ "type": "string",
1190
+ "description": "The method of the call to getCount",
1191
+ "default": "GET"
1192
+ },
1193
+ "query": {
1194
+ "type": "object",
1195
+ "description": "The json object with query parameters of the call to getCount",
1196
+ "additionalProperties": {
1197
+ "type": "string"
1198
+ }
1199
+ },
1200
+ "body": {
1201
+ "type": "object",
1202
+ "description": "The json object with body of the call to getCount",
1203
+ "additionalProperties": {
1204
+ "type": "string"
1205
+ }
1206
+ },
1207
+ "headers": {
1208
+ "type": "object",
1209
+ "description": "The json object with headers of the call to getCount",
1210
+ "additionalProperties": {
1211
+ "type": "string"
1212
+ }
1213
+ },
1214
+ "handleFailure": {
1215
+ "type": "string",
1216
+ "enum": ["ignore", "fail"],
1217
+ "description": "return failure or ignore getCount",
1218
+ "default": "ignore"
1219
+ },
1220
+ "requestFields": {
1221
+ "type": "object",
1222
+ "description": "The json object with response fields of the call to getDevice",
1223
+ "additionalProperties": {
1224
+ "type": "string"
1225
+ },
1226
+ "properties": {}
1227
+ },
1228
+ "responseDatakey": {
1229
+ "type": "string",
1230
+ "description": "place in the response where the data is - supports jsonquery",
1231
+ "default": ""
1232
+ },
1233
+ "responseFields": {
1234
+ "type": "object",
1235
+ "description": "The json object with response fields of the call to getConfig",
1236
+ "additionalProperties": {
1237
+ "type": "string"
1238
+ },
1239
+ "properties": {
1240
+ }
1241
+ }
1242
+ }
1243
+ }
1244
+ }
1245
+ }
1246
+ }
1247
+ }
1248
+ }