@arbium/enterprise-agent-connect 0.2.0 → 0.2.1-dev.7b4e802

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 (68) hide show
  1. package/README.md +10 -3
  2. package/dist/connectors/adestra/connector.json +336 -0
  3. package/dist/connectors/adobe-admin-console/connector.json +212 -0
  4. package/dist/connectors/argo-cd/connector.json +210 -0
  5. package/dist/connectors/automox/connector.json +376 -0
  6. package/dist/connectors/churnzero/connector.json +238 -0
  7. package/dist/connectors/confluence/connector.json +168 -0
  8. package/dist/connectors/cvent/connector.json +287 -0
  9. package/dist/connectors/datadog/connector.json +188 -0
  10. package/dist/connectors/drata/connector.json +447 -0
  11. package/dist/connectors/druva/connector.json +258 -0
  12. package/dist/connectors/forsta-decipher/connector.json +164 -0
  13. package/dist/connectors/gitlab/connector.json +263 -0
  14. package/dist/connectors/grafana/connector.json +162 -0
  15. package/dist/connectors/http/index.d.ts +5 -1
  16. package/dist/connectors/http/index.js +62 -8
  17. package/dist/connectors/http/index.js.map +1 -1
  18. package/dist/connectors/http/openapi.d.ts +62 -0
  19. package/dist/connectors/http/openapi.js +342 -0
  20. package/dist/connectors/http/openapi.js.map +1 -0
  21. package/dist/connectors/intercom/connector.json +249 -0
  22. package/dist/connectors/lusha/connector.json +59 -0
  23. package/dist/connectors/lusha/index.d.ts +8 -0
  24. package/dist/connectors/lusha/index.js +7 -0
  25. package/dist/connectors/lusha/index.js.map +1 -0
  26. package/dist/connectors/lusha/tools.d.ts +2 -0
  27. package/dist/connectors/lusha/tools.js +113 -0
  28. package/dist/connectors/lusha/tools.js.map +1 -0
  29. package/dist/connectors/lusha/vendor.d.ts +4 -0
  30. package/dist/connectors/lusha/vendor.js +72 -0
  31. package/dist/connectors/lusha/vendor.js.map +1 -0
  32. package/dist/connectors/odata/index.js +12 -5
  33. package/dist/connectors/odata/index.js.map +1 -1
  34. package/dist/connectors/pagerduty/connector.json +247 -0
  35. package/dist/connectors/qualys/connector.json +271 -0
  36. package/dist/connectors/safebase/connector.json +221 -0
  37. package/dist/connectors/soap/index.js +4 -3
  38. package/dist/connectors/soap/index.js.map +1 -1
  39. package/dist/connectors/sonarqube/connector.json +165 -0
  40. package/dist/connectors/sprout-social/connector.json +158 -0
  41. package/dist/connectors/synthesia/connector.json +113 -0
  42. package/dist/connectors/wordpress/connector.json +203 -0
  43. package/dist/connectors/zephyr/connector.json +192 -0
  44. package/dist/packages/connector-kit/src/connector.d.ts +45 -7
  45. package/dist/packages/connector-kit/src/connector.js +113 -10
  46. package/dist/packages/connector-kit/src/connector.js.map +1 -1
  47. package/dist/packages/connector-kit/src/oauth.d.ts +2 -0
  48. package/dist/packages/connector-kit/src/oauth.js +12 -4
  49. package/dist/packages/connector-kit/src/oauth.js.map +1 -1
  50. package/dist/packages/server/migrations/0008_internal_apps.sql +16 -0
  51. package/dist/packages/server/migrations/rollback/to-legacy.sql +2 -0
  52. package/dist/packages/server/src/api.d.ts +2490 -277
  53. package/dist/packages/server/src/api.js +82 -1
  54. package/dist/packages/server/src/api.js.map +1 -1
  55. package/dist/packages/server/src/app.js +26 -1
  56. package/dist/packages/server/src/app.js.map +1 -1
  57. package/dist/packages/server/src/builtin.d.ts +3 -0
  58. package/dist/packages/server/src/builtin.js +32 -0
  59. package/dist/packages/server/src/builtin.js.map +1 -1
  60. package/dist/packages/server/src/index.js +27 -18
  61. package/dist/packages/server/src/index.js.map +1 -1
  62. package/dist/packages/server/src/service.d.ts +1113 -0
  63. package/dist/packages/server/src/service.js +257 -19
  64. package/dist/packages/server/src/service.js.map +1 -1
  65. package/dist/packages/server/src/store.d.ts +41 -1
  66. package/dist/packages/server/src/store.js +79 -0
  67. package/dist/packages/server/src/store.js.map +1 -1
  68. package/package.json +1 -1
@@ -0,0 +1,447 @@
1
+ {
2
+ "id": "drata",
3
+ "name": "Drata",
4
+ "description": "Let agents read your compliance program in Drata: controls, evidence, monitoring tests and what is failing, policies and vendor security reviews. For audit evidence packs and security review drafts.",
5
+ "logo": "/brand/registry/drata.svg",
6
+ "identity": "A Drata API key with read access only.",
7
+ "accountKey": "host",
8
+ "connectionKind": "guided",
9
+ "setup": [
10
+ {
11
+ "title": "Create a read-only API key",
12
+ "body": "Give the key read access only. Choose Custom and tick only the read permissions below. Drata shows the full key once, so copy it for the form below. You can also limit the key to your deployment's outbound IP addresses.",
13
+ "link": {
14
+ "label": "Drata: create an API key",
15
+ "href": "https://help.drata.com/en/articles/6695964"
16
+ },
17
+ "click": [
18
+ "In Drata, select your account at the bottom left, then Settings.",
19
+ "Select API Keys, then Create API Key.",
20
+ "Enter a name and an expiration date (12 months is the default).",
21
+ "Under Access, choose Custom and select: Workspaces: List Workspaces, Company Settings: Get Company Settings, Controls: List Controls, Controls: Get Control, Evidence Library: List Evidence, Monitoring: List Monitors, Monitoring: Get Monitor, Policies: List Policies.",
22
+ "Create the key and copy it."
23
+ ]
24
+ },
25
+ {
26
+ "title": "Let the key read vendor reviews",
27
+ "body": "Vendor security reviews need one more read permission on the key.",
28
+ "capabilities": ["read_vendor_reviews"],
29
+ "click": ["Under Access, also select Vendors: List Vendors."]
30
+ }
31
+ ],
32
+ "afterConnect": [],
33
+ "fields": [
34
+ {
35
+ "id": "api_host",
36
+ "label": "API address",
37
+ "help": "Where your Drata account is hosted: public-api.drata.com (US), public-api.eu.drata.com (EU) or public-api.apac.drata.com (Asia Pacific).",
38
+ "placeholder": "public-api.drata.com",
39
+ "secret": false
40
+ },
41
+ {
42
+ "id": "api_key",
43
+ "label": "API key",
44
+ "secret": true
45
+ }
46
+ ],
47
+ "capabilities": [
48
+ {
49
+ "id": "read",
50
+ "label": "Read compliance program",
51
+ "description": "List workspaces, controls and their evidence, monitoring tests and the resources failing them, and published policies.",
52
+ "required": true,
53
+ "note": "Reaches every workspace unless you keep an agent to chosen workspaces. Read-only.",
54
+ "scopes": [],
55
+ "permissions": [],
56
+ "tools": [
57
+ "drata_list_workspaces",
58
+ "drata_list_controls",
59
+ "drata_get_control",
60
+ "drata_list_evidence",
61
+ "drata_list_monitoring_tests",
62
+ "drata_list_test_failures",
63
+ "drata_list_policies"
64
+ ]
65
+ },
66
+ {
67
+ "id": "read_vendor_reviews",
68
+ "label": "Read vendor security reviews",
69
+ "description": "List security reviews across your vendors: status, decision, deadline and reviewer.",
70
+ "note": "Needs Drata's third-party risk management plan. Vendor reviews are not kept to workspaces.",
71
+ "scopes": [],
72
+ "permissions": [],
73
+ "tools": ["drata_list_vendor_reviews"]
74
+ }
75
+ ],
76
+ "limits": [
77
+ {
78
+ "id": "workspaces",
79
+ "label": "Workspaces",
80
+ "help": "Optional: only these Drata workspaces, by their numeric id (shown under Drata workspaces after connecting). Leave empty for every workspace.",
81
+ "kind": "list",
82
+ "required": false,
83
+ "pattern": "^\\d{1,20}$"
84
+ }
85
+ ],
86
+ "verify": {
87
+ "method": "GET",
88
+ "path": "/company",
89
+ "label": "Drata company",
90
+ "show": "name"
91
+ },
92
+ "discover": {
93
+ "method": "GET",
94
+ "path": "/workspaces",
95
+ "label": "Drata workspaces",
96
+ "show": "data[].id",
97
+ "name": "data[].name"
98
+ },
99
+ "revoke": "In Drata, go to Settings, then API Keys, and revoke the key. Agents lose access to Drata at once.",
100
+ "http": {
101
+ "baseUrl": "https://{api_host}/public/v2",
102
+ "allowedHosts": ["public-api.drata.com", "public-api.eu.drata.com", "public-api.apac.drata.com"],
103
+ "auth": { "type": "bearer", "token": "api_key" },
104
+ "tools": [
105
+ {
106
+ "name": "drata_list_workspaces",
107
+ "description": "List the Drata workspaces and the frameworks each covers.",
108
+ "method": "GET",
109
+ "path": "/workspaces",
110
+ "params": {
111
+ "expand": {
112
+ "type": "array",
113
+ "items": "string",
114
+ "enum": ["frameworks"],
115
+ "description": "Always frameworks, so each workspace lists its frameworks",
116
+ "in": "query",
117
+ "name": "expand[]",
118
+ "default": ["frameworks"]
119
+ },
120
+ "cursor": {
121
+ "type": "string",
122
+ "description": "The next value from the previous page; leave out for the first page",
123
+ "in": "query",
124
+ "required": false
125
+ }
126
+ },
127
+ "result": { "items": "data", "fields": ["id", "name", "description", "primary", "frameworks.name"] },
128
+ "paging": { "param": "cursor", "body": "pagination.cursor" }
129
+ },
130
+ {
131
+ "name": "drata_list_controls",
132
+ "description": "List a workspace's controls, optionally only those ready, with or without evidence, a policy or a passing test.",
133
+ "method": "GET",
134
+ "path": "/workspaces/{workspace_id}/controls",
135
+ "params": {
136
+ "workspace_id": {
137
+ "type": "integer",
138
+ "description": "The workspace id",
139
+ "in": "path",
140
+ "limit": "workspaces"
141
+ },
142
+ "is_ready": {
143
+ "type": "boolean",
144
+ "description": "Only controls that are (true) or are not (false) ready",
145
+ "in": "query",
146
+ "name": "isReady",
147
+ "required": false
148
+ },
149
+ "has_evidence": {
150
+ "type": "boolean",
151
+ "description": "Only controls with (true) or without (false) evidence",
152
+ "in": "query",
153
+ "name": "hasEvidence",
154
+ "required": false
155
+ },
156
+ "has_policy": {
157
+ "type": "boolean",
158
+ "description": "Only controls with (true) or without (false) a policy",
159
+ "in": "query",
160
+ "name": "hasPolicy",
161
+ "required": false
162
+ },
163
+ "has_passing_test": {
164
+ "type": "boolean",
165
+ "description": "Only controls with (true) or without (false) a passing test",
166
+ "in": "query",
167
+ "name": "hasPassingTest",
168
+ "required": false
169
+ },
170
+ "expand": {
171
+ "type": "array",
172
+ "items": "string",
173
+ "enum": ["owners", "frameworkTags", "testIds", "evidenceIds"],
174
+ "description": "What to add to each control; Drata leaves these out unless asked",
175
+ "in": "query",
176
+ "name": "expand[]",
177
+ "default": ["owners", "frameworkTags", "testIds", "evidenceIds"]
178
+ },
179
+ "size": {
180
+ "type": "integer",
181
+ "description": "How many per page, up to 500",
182
+ "in": "query",
183
+ "default": 50
184
+ },
185
+ "cursor": {
186
+ "type": "string",
187
+ "description": "The next value from the previous page; leave out for the first page",
188
+ "in": "query",
189
+ "required": false
190
+ }
191
+ },
192
+ "result": {
193
+ "items": "data",
194
+ "fields": ["id", "code", "name", "description", "frameworkTags", "owners", "testIds", "evidenceIds", "archivedAt", "updatedAt"]
195
+ },
196
+ "paging": { "param": "cursor", "body": "pagination.cursor" }
197
+ },
198
+ {
199
+ "name": "drata_get_control",
200
+ "description": "Read one control: its description, question, rationale, owners, framework requirements, tests and evidence.",
201
+ "method": "GET",
202
+ "path": "/workspaces/{workspace_id}/controls/{control_id}",
203
+ "params": {
204
+ "workspace_id": {
205
+ "type": "integer",
206
+ "description": "The workspace id",
207
+ "in": "path",
208
+ "limit": "workspaces"
209
+ },
210
+ "control_id": {
211
+ "type": "string",
212
+ "description": "The control's numeric id, or its code prefixed with code:, such as code:DCF-1",
213
+ "in": "path"
214
+ },
215
+ "expand": {
216
+ "type": "array",
217
+ "items": "string",
218
+ "enum": ["owners", "requirements", "frameworkTags", "testIds", "evidenceIds"],
219
+ "description": "What to add to the control; Drata leaves these out unless asked",
220
+ "in": "query",
221
+ "name": "expand[]",
222
+ "default": ["owners", "requirements", "frameworkTags", "testIds", "evidenceIds"]
223
+ }
224
+ }
225
+ },
226
+ {
227
+ "name": "drata_list_evidence",
228
+ "description": "List a workspace's evidence items: name, status, renewal date, owners, files and the controls they support. Filter by name or status.",
229
+ "method": "GET",
230
+ "path": "/workspaces/{workspace_id}/evidence",
231
+ "params": {
232
+ "workspace_id": {
233
+ "type": "integer",
234
+ "description": "The workspace id",
235
+ "in": "path",
236
+ "limit": "workspaces"
237
+ },
238
+ "name": {
239
+ "type": "string",
240
+ "description": "Only evidence whose name starts with this",
241
+ "in": "query",
242
+ "required": false
243
+ },
244
+ "statuses": {
245
+ "type": "array",
246
+ "items": "string",
247
+ "enum": ["NEEDS_ARTIFACT", "EXPIRED", "EXPIRING_SOON", "TEST_ERROR", "TEST_FAILED", "READY", "TEST_PASSED", "TEST_UNUSED", "TEST_DISABLED", "TEST_DELETED"],
248
+ "description": "Only evidence in these statuses",
249
+ "in": "query",
250
+ "name": "evidenceStatuses[]",
251
+ "required": false
252
+ },
253
+ "expand": {
254
+ "type": "array",
255
+ "items": "string",
256
+ "enum": ["owners", "artifacts", "controls"],
257
+ "description": "What to add to each item; Drata leaves these out unless asked",
258
+ "in": "query",
259
+ "name": "expand[]",
260
+ "default": ["owners", "artifacts", "controls"]
261
+ },
262
+ "size": {
263
+ "type": "integer",
264
+ "description": "How many per page, up to 500",
265
+ "in": "query",
266
+ "default": 50
267
+ },
268
+ "cursor": {
269
+ "type": "string",
270
+ "description": "The next value from the previous page; leave out for the first page",
271
+ "in": "query",
272
+ "required": false
273
+ }
274
+ },
275
+ "result": {
276
+ "items": "data",
277
+ "fields": ["id", "name", "description", "status", "renewalDate", "updatedAt", "owners", "artifacts", "controls"]
278
+ },
279
+ "paging": { "param": "cursor", "body": "pagination.cursor" }
280
+ },
281
+ {
282
+ "name": "drata_list_monitoring_tests",
283
+ "description": "List a workspace's monitoring tests and their latest result, such as only the failing ones.",
284
+ "method": "GET",
285
+ "path": "/workspaces/{workspace_id}/monitoring-tests",
286
+ "params": {
287
+ "workspace_id": {
288
+ "type": "integer",
289
+ "description": "The workspace id",
290
+ "in": "path",
291
+ "limit": "workspaces"
292
+ },
293
+ "result_status": {
294
+ "type": "string",
295
+ "enum": ["READY", "PASSED", "FAILED", "ERROR", "PREAUDIT"],
296
+ "description": "Only tests with this latest result",
297
+ "in": "query",
298
+ "name": "checkResultStatus",
299
+ "required": false
300
+ },
301
+ "expand": {
302
+ "type": "array",
303
+ "items": "string",
304
+ "enum": ["controls"],
305
+ "description": "Always controls, so each test lists the controls it covers",
306
+ "in": "query",
307
+ "name": "expand[]",
308
+ "default": ["controls"]
309
+ },
310
+ "size": {
311
+ "type": "integer",
312
+ "description": "How many per page, up to 500",
313
+ "in": "query",
314
+ "default": 50
315
+ },
316
+ "cursor": {
317
+ "type": "string",
318
+ "description": "The next value from the previous page; leave out for the first page",
319
+ "in": "query",
320
+ "required": false
321
+ }
322
+ },
323
+ "result": {
324
+ "items": "data",
325
+ "fields": ["testId", "name", "description", "checkResultStatus", "checkStatus", "lastPassedAt", "failedSince", "controls"]
326
+ },
327
+ "paging": { "param": "cursor", "body": "pagination.cursor" }
328
+ },
329
+ {
330
+ "name": "drata_list_test_failures",
331
+ "description": "List the resources failing one monitoring test: provider, account, resource and why it fails.",
332
+ "method": "GET",
333
+ "path": "/workspaces/{workspace_id}/monitoring-tests/{test_id}/failures",
334
+ "params": {
335
+ "workspace_id": {
336
+ "type": "integer",
337
+ "description": "The workspace id",
338
+ "in": "path",
339
+ "limit": "workspaces"
340
+ },
341
+ "test_id": {
342
+ "type": "integer",
343
+ "description": "The test's testId, from the list of monitoring tests",
344
+ "in": "path"
345
+ },
346
+ "size": {
347
+ "type": "integer",
348
+ "description": "How many per page, up to 500",
349
+ "in": "query",
350
+ "default": 50
351
+ },
352
+ "cursor": {
353
+ "type": "string",
354
+ "description": "The next value from the previous page; leave out for the first page",
355
+ "in": "query",
356
+ "required": false
357
+ }
358
+ },
359
+ "result": {
360
+ "items": "data",
361
+ "fields": ["status", "providerName", "accountName", "resourceName", "resourceType", "region", "cause"]
362
+ },
363
+ "paging": { "param": "cursor", "body": "pagination.cursor" }
364
+ },
365
+ {
366
+ "name": "drata_list_policies",
367
+ "description": "List published policies: name, status, version, owner and renewal date. Filter by name or status.",
368
+ "method": "GET",
369
+ "path": "/policies",
370
+ "params": {
371
+ "name": {
372
+ "type": "string",
373
+ "description": "Only policies whose name contains this",
374
+ "in": "query",
375
+ "required": false
376
+ },
377
+ "statuses": {
378
+ "type": "array",
379
+ "items": "string",
380
+ "enum": ["ACTIVE", "ARCHIVED", "REPLACED", "UNACCEPTABLE", "OUTDATED"],
381
+ "description": "Only policies in these statuses",
382
+ "in": "query",
383
+ "name": "statuses[]",
384
+ "required": false
385
+ },
386
+ "expand": {
387
+ "type": "array",
388
+ "items": "string",
389
+ "enum": ["owner"],
390
+ "description": "Always owner, so each policy names its owner",
391
+ "in": "query",
392
+ "name": "expand[]",
393
+ "default": ["owner"]
394
+ },
395
+ "cursor": {
396
+ "type": "string",
397
+ "description": "The next value from the previous page; leave out for the first page",
398
+ "in": "query",
399
+ "required": false
400
+ }
401
+ },
402
+ "result": {
403
+ "items": "data",
404
+ "fields": ["id", "name", "description", "status", "version", "renewalDate", "publishedAt", "approvedAt", "owner"]
405
+ },
406
+ "paging": { "param": "cursor", "body": "pagination.cursor" }
407
+ },
408
+ {
409
+ "name": "drata_list_vendor_reviews",
410
+ "description": "List security reviews across vendors, optionally only those in some statuses: title, vendor, status, decision, deadline and reviewer.",
411
+ "method": "GET",
412
+ "path": "/vendor-security-reviews",
413
+ "params": {
414
+ "statuses": {
415
+ "type": "array",
416
+ "items": "string",
417
+ "enum": ["NOT_YET_STARTED", "IN_PROGRESS", "COMPLETED", "NOT_REQUIRED"],
418
+ "description": "Only reviews in these statuses",
419
+ "in": "query",
420
+ "name": "status[]",
421
+ "required": false
422
+ },
423
+ "expand": {
424
+ "type": "array",
425
+ "items": "string",
426
+ "enum": ["vendor", "user"],
427
+ "description": "Always vendor and user, so each review names its vendor and reviewer",
428
+ "in": "query",
429
+ "name": "expand[]",
430
+ "default": ["vendor", "user"]
431
+ },
432
+ "cursor": {
433
+ "type": "string",
434
+ "description": "The next value from the previous page; leave out for the first page",
435
+ "in": "query",
436
+ "required": false
437
+ }
438
+ },
439
+ "result": {
440
+ "items": "data",
441
+ "fields": ["id", "title", "vendorId", "vendor", "status", "type", "decision", "requestedAt", "reviewDeadlineAt", "note", "user"]
442
+ },
443
+ "paging": { "param": "cursor", "body": "pagination.cursor" }
444
+ }
445
+ ]
446
+ }
447
+ }