@arbium/enterprise-agent-connect 0.1.2-dev.d2aa5ca → 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.
- package/README.md +19 -7
- package/dist/connectors/adestra/connector.json +336 -0
- package/dist/connectors/adobe-admin-console/connector.json +212 -0
- package/dist/connectors/argo-cd/connector.json +210 -0
- package/dist/connectors/automox/connector.json +376 -0
- package/dist/connectors/churnzero/connector.json +238 -0
- package/dist/connectors/confluence/connector.json +168 -0
- package/dist/connectors/cvent/connector.json +287 -0
- package/dist/connectors/datadog/connector.json +188 -0
- package/dist/connectors/drata/connector.json +447 -0
- package/dist/connectors/druva/connector.json +258 -0
- package/dist/connectors/dynamics-365/connector.json +16 -1
- package/dist/connectors/dynamics-365/index.d.ts +1 -4
- package/dist/connectors/dynamics-365/index.js.map +1 -1
- package/dist/connectors/entra/index.d.ts +1 -1
- package/dist/connectors/forsta-decipher/connector.json +164 -0
- package/dist/connectors/gitlab/connector.json +263 -0
- package/dist/connectors/gong/vendor.d.ts +1 -1
- package/dist/connectors/gong/vendor.js +24 -32
- package/dist/connectors/gong/vendor.js.map +1 -1
- package/dist/connectors/grafana/connector.json +162 -0
- package/dist/connectors/http/index.d.ts +7 -7
- package/dist/connectors/http/index.js +66 -9
- package/dist/connectors/http/index.js.map +1 -1
- package/dist/connectors/http/openapi.d.ts +62 -0
- package/dist/connectors/http/openapi.js +342 -0
- package/dist/connectors/http/openapi.js.map +1 -0
- package/dist/connectors/intercom/connector.json +249 -0
- package/dist/connectors/intune/index.d.ts +1 -1
- package/dist/connectors/jamf/vendor.js +5 -1
- package/dist/connectors/jamf/vendor.js.map +1 -1
- package/dist/connectors/jira/connector.json +3 -3
- package/dist/connectors/jira/vendor.d.ts +1 -1
- package/dist/connectors/jira/vendor.js +8 -2
- package/dist/connectors/jira/vendor.js.map +1 -1
- package/dist/connectors/lusha/connector.json +59 -0
- package/dist/connectors/lusha/index.d.ts +8 -0
- package/dist/connectors/lusha/index.js +7 -0
- package/dist/connectors/lusha/index.js.map +1 -0
- package/dist/connectors/lusha/tools.d.ts +2 -0
- package/dist/connectors/lusha/tools.js +113 -0
- package/dist/connectors/lusha/tools.js.map +1 -0
- package/dist/connectors/lusha/vendor.d.ts +4 -0
- package/dist/connectors/lusha/vendor.js +72 -0
- package/dist/connectors/lusha/vendor.js.map +1 -0
- package/dist/connectors/microsoft/client.d.ts +11 -3
- package/dist/connectors/microsoft/client.js +62 -8
- package/dist/connectors/microsoft/client.js.map +1 -1
- package/dist/connectors/netsuite/connector.json +4 -2
- package/dist/connectors/netsuite/vendor.d.ts +1 -1
- package/dist/connectors/netsuite/vendor.js +5 -6
- package/dist/connectors/netsuite/vendor.js.map +1 -1
- package/dist/connectors/odata/index.d.ts +1 -4
- package/dist/connectors/odata/index.js +12 -5
- package/dist/connectors/odata/index.js.map +1 -1
- package/dist/connectors/okta/connector.json +3 -2
- package/dist/connectors/okta/vendor.d.ts +1 -1
- package/dist/connectors/okta/vendor.js +7 -6
- package/dist/connectors/okta/vendor.js.map +1 -1
- package/dist/connectors/outlook-calendar/index.d.ts +1 -1
- package/dist/connectors/outlook-mail/index.d.ts +1 -1
- package/dist/connectors/pagerduty/connector.json +247 -0
- package/dist/connectors/qualys/connector.json +271 -0
- package/dist/connectors/safebase/connector.json +221 -0
- package/dist/connectors/salesforce/vendor.d.ts +1 -1
- package/dist/connectors/salesforce/vendor.js +9 -3
- package/dist/connectors/salesforce/vendor.js.map +1 -1
- package/dist/connectors/sap-s4hana/connector.json +1 -0
- package/dist/connectors/servicenow/vendor.d.ts +0 -1
- package/dist/connectors/servicenow/vendor.js +7 -10
- package/dist/connectors/servicenow/vendor.js.map +1 -1
- package/dist/connectors/sharepoint-files/connector.json +34 -3
- package/dist/connectors/sharepoint-files/documents.d.ts +7 -0
- package/dist/connectors/sharepoint-files/documents.js +212 -0
- package/dist/connectors/sharepoint-files/documents.js.map +1 -0
- package/dist/connectors/sharepoint-files/docx-worker.d.ts +7 -0
- package/dist/connectors/sharepoint-files/docx-worker.js +41 -0
- package/dist/connectors/sharepoint-files/docx-worker.js.map +1 -0
- package/dist/connectors/sharepoint-files/docx.d.ts +96 -0
- package/dist/connectors/sharepoint-files/docx.js +823 -0
- package/dist/connectors/sharepoint-files/docx.js.map +1 -0
- package/dist/connectors/sharepoint-files/index.d.ts +1 -4
- package/dist/connectors/sharepoint-files/index.js +2 -1
- package/dist/connectors/sharepoint-files/index.js.map +1 -1
- package/dist/connectors/sharepoint-files/ooxml.d.ts +19 -0
- package/dist/connectors/sharepoint-files/ooxml.js +179 -0
- package/dist/connectors/sharepoint-files/ooxml.js.map +1 -0
- package/dist/connectors/sharepoint-files/paging.d.ts +15 -0
- package/dist/connectors/sharepoint-files/paging.js +87 -0
- package/dist/connectors/sharepoint-files/paging.js.map +1 -0
- package/dist/connectors/sharepoint-files/parse-host.mjs +78 -0
- package/dist/connectors/sharepoint-files/pdf-worker.mjs +108 -0
- package/dist/connectors/sharepoint-files/pdf.d.ts +16 -0
- package/dist/connectors/sharepoint-files/pdf.js +19 -0
- package/dist/connectors/sharepoint-files/pdf.js.map +1 -0
- package/dist/connectors/sharepoint-files/sandbox.d.ts +19 -0
- package/dist/connectors/sharepoint-files/sandbox.js +176 -0
- package/dist/connectors/sharepoint-files/sandbox.js.map +1 -0
- package/dist/connectors/sharepoint-files/tools.d.ts +6 -0
- package/dist/connectors/sharepoint-files/tools.js +79 -4
- package/dist/connectors/sharepoint-files/tools.js.map +1 -1
- package/dist/connectors/slack/vendor.d.ts +1 -1
- package/dist/connectors/slack/vendor.js +32 -38
- package/dist/connectors/slack/vendor.js.map +1 -1
- package/dist/connectors/soap/index.d.ts +1 -4
- package/dist/connectors/soap/index.js +4 -3
- package/dist/connectors/soap/index.js.map +1 -1
- package/dist/connectors/sonarqube/connector.json +165 -0
- package/dist/connectors/sprout-social/connector.json +158 -0
- package/dist/connectors/sql/index.d.ts +1 -4
- package/dist/connectors/sql/index.js +2 -0
- package/dist/connectors/sql/index.js.map +1 -1
- package/dist/connectors/synthesia/connector.json +113 -0
- package/dist/connectors/teams/index.d.ts +1 -1
- package/dist/connectors/teams/tools.d.ts +6 -1
- package/dist/connectors/teams/tools.js +3 -2
- package/dist/connectors/teams/tools.js.map +1 -1
- package/dist/connectors/wordpress/connector.json +203 -0
- package/dist/connectors/workday/connector.json +6 -4
- package/dist/connectors/workday/vendor.d.ts +1 -1
- package/dist/connectors/workday/vendor.js +8 -4
- package/dist/connectors/workday/vendor.js.map +1 -1
- package/dist/connectors/zephyr/connector.json +192 -0
- package/dist/packages/connector-kit/src/common.d.ts +4 -5
- package/dist/packages/connector-kit/src/common.js +4 -1
- package/dist/packages/connector-kit/src/common.js.map +1 -1
- package/dist/packages/connector-kit/src/connector.d.ts +82 -34
- package/dist/packages/connector-kit/src/connector.js +163 -21
- package/dist/packages/connector-kit/src/connector.js.map +1 -1
- package/dist/packages/connector-kit/src/fetch.d.ts +6 -0
- package/dist/packages/connector-kit/src/fetch.js +44 -0
- package/dist/packages/connector-kit/src/fetch.js.map +1 -0
- package/dist/packages/connector-kit/src/index.d.ts +3 -3
- package/dist/packages/connector-kit/src/index.js +1 -0
- package/dist/packages/connector-kit/src/index.js.map +1 -1
- package/dist/packages/connector-kit/src/oauth.d.ts +3 -1
- package/dist/packages/connector-kit/src/oauth.js +16 -6
- package/dist/packages/connector-kit/src/oauth.js.map +1 -1
- package/dist/packages/connector-kit/src/types.d.ts +4 -1
- package/dist/packages/connector-kit/src/types.js.map +1 -1
- package/dist/packages/server/migrations/0008_internal_apps.sql +16 -0
- package/dist/packages/server/migrations/rollback/to-legacy.sql +2 -0
- package/dist/packages/server/src/api.d.ts +2486 -257
- package/dist/packages/server/src/api.js +84 -1
- package/dist/packages/server/src/api.js.map +1 -1
- package/dist/packages/server/src/app.js +26 -1
- package/dist/packages/server/src/app.js.map +1 -1
- package/dist/packages/server/src/builtin.d.ts +7 -3
- package/dist/packages/server/src/builtin.js +32 -0
- package/dist/packages/server/src/builtin.js.map +1 -1
- package/dist/packages/server/src/events/runtime.js +17 -10
- package/dist/packages/server/src/events/runtime.js.map +1 -1
- package/dist/packages/server/src/events/store.d.ts +2 -2
- package/dist/packages/server/src/index.d.ts +3 -3
- package/dist/packages/server/src/index.js +32 -22
- package/dist/packages/server/src/index.js.map +1 -1
- package/dist/packages/server/src/service.d.ts +1134 -14
- package/dist/packages/server/src/service.js +266 -21
- package/dist/packages/server/src/service.js.map +1 -1
- package/dist/packages/server/src/store.d.ts +43 -4
- package/dist/packages/server/src/store.js +79 -0
- package/dist/packages/server/src/store.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "druva",
|
|
3
|
+
"name": "Druva",
|
|
4
|
+
"description": "Let agents read which laptops and desktops Druva backs up, when each last backed up and who owns it. For checking that every device is protected.",
|
|
5
|
+
"logo": "/brand/registry/druva.svg",
|
|
6
|
+
"identity": "Druva API credentials (a client ID and secret key), restricted to an inSync role that can only view. For Druva's commercial cloud.",
|
|
7
|
+
"accountKey": "host",
|
|
8
|
+
"connectionKind": "guided",
|
|
9
|
+
"setup": [
|
|
10
|
+
{
|
|
11
|
+
"title": "Create API credentials",
|
|
12
|
+
"body": "You need a Druva Cloud Administrator for this. Unrestricted credentials can use every Druva API, including changes and deletes, so restrict them to an inSync custom role that can only view users, devices and backups. Copy both values when Druva shows them; to see the secret again you must generate a new one.",
|
|
13
|
+
"link": {
|
|
14
|
+
"label": "Druva: create and manage API credentials",
|
|
15
|
+
"href": "https://help.druva.com/en/articles/8580838-create-and-manage-api-credentials"
|
|
16
|
+
},
|
|
17
|
+
"click": [
|
|
18
|
+
"In the Druva Cloud Platform Console, open Global Navigation, then Integration Center.",
|
|
19
|
+
"Select API Credentials in the left panel, then New Credentials.",
|
|
20
|
+
"Enter a name, such as AI agents, and optionally restrict the networks it may be used from.",
|
|
21
|
+
"Select Save, then copy the Client ID and Secret Key from Credential Details.",
|
|
22
|
+
"Select the new credentials, then Edit.",
|
|
23
|
+
"Under authorization restrictions, choose Product Administrator, then for inSync a custom role that can only view users, devices and backups, and select Save."
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"afterConnect": [],
|
|
28
|
+
"fields": [
|
|
29
|
+
{
|
|
30
|
+
"id": "client_id",
|
|
31
|
+
"label": "Client ID",
|
|
32
|
+
"secret": false
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "secret_key",
|
|
36
|
+
"label": "Secret Key",
|
|
37
|
+
"secret": true
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"capabilities": [
|
|
41
|
+
{
|
|
42
|
+
"id": "read",
|
|
43
|
+
"label": "Read devices and backups",
|
|
44
|
+
"description": "List backed-up devices by user, name, serial number, operating system or last connection, read one device, list each device's last successful backup, and look up users by name or email.",
|
|
45
|
+
"required": true,
|
|
46
|
+
"note": "Reaches every device and user in Druva Endpoints. Read-only.",
|
|
47
|
+
"scopes": [],
|
|
48
|
+
"permissions": [],
|
|
49
|
+
"tools": ["druva_list_devices", "druva_get_device", "druva_list_last_backups", "druva_list_users"]
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"limits": [],
|
|
53
|
+
"verify": {
|
|
54
|
+
"method": "GET",
|
|
55
|
+
"path": "/usermanagement/v1/users",
|
|
56
|
+
"label": "Druva users",
|
|
57
|
+
"show": "totalSize"
|
|
58
|
+
},
|
|
59
|
+
"revoke": "In the Druva Cloud Platform Console, go to Integration Center, then API Credentials, and delete the credentials. Agents lose access to Druva at once.",
|
|
60
|
+
"http": {
|
|
61
|
+
"baseUrl": "https://apis.druva.com/insync",
|
|
62
|
+
"auth": {
|
|
63
|
+
"type": "oauth2",
|
|
64
|
+
"tokenUrl": "https://apis.druva.com/token",
|
|
65
|
+
"clientId": "client_id",
|
|
66
|
+
"clientSecret": "secret_key",
|
|
67
|
+
"clientAuth": "basic",
|
|
68
|
+
"scope": "read"
|
|
69
|
+
},
|
|
70
|
+
"tools": [
|
|
71
|
+
{
|
|
72
|
+
"name": "druva_list_devices",
|
|
73
|
+
"description": "List the devices Druva backs up, filtered by owner, name, serial number, operating system, status or when they last connected.",
|
|
74
|
+
"method": "GET",
|
|
75
|
+
"path": "/endpoints/v2/devices",
|
|
76
|
+
"params": {
|
|
77
|
+
"user_id": {
|
|
78
|
+
"type": "integer",
|
|
79
|
+
"description": "Only this user's devices (the userID from the list of users)",
|
|
80
|
+
"in": "query",
|
|
81
|
+
"name": "userID",
|
|
82
|
+
"required": false
|
|
83
|
+
},
|
|
84
|
+
"name_prefix": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "Only devices whose name starts with this",
|
|
87
|
+
"in": "query",
|
|
88
|
+
"name": "searchPrefixDeviceName",
|
|
89
|
+
"required": false
|
|
90
|
+
},
|
|
91
|
+
"serial_number": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"description": "Only the device with this hardware serial number",
|
|
94
|
+
"in": "query",
|
|
95
|
+
"name": "serialNumber",
|
|
96
|
+
"required": false
|
|
97
|
+
},
|
|
98
|
+
"platform": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"enum": ["win32", "linux2", "darwin", "android", "ios"],
|
|
101
|
+
"description": "Only devices on this platform",
|
|
102
|
+
"in": "query",
|
|
103
|
+
"name": "platformOS",
|
|
104
|
+
"required": false
|
|
105
|
+
},
|
|
106
|
+
"status": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"enum": ["enabled", "disabled"],
|
|
109
|
+
"description": "Only enabled or disabled devices",
|
|
110
|
+
"in": "query",
|
|
111
|
+
"name": "deviceStatus",
|
|
112
|
+
"required": false
|
|
113
|
+
},
|
|
114
|
+
"last_connected_before": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"description": "Only devices last connected before this time, as YYYY-MM-DDTHH:MM:SSZ",
|
|
117
|
+
"in": "query",
|
|
118
|
+
"name": "maxLastConnected",
|
|
119
|
+
"required": false
|
|
120
|
+
},
|
|
121
|
+
"page_token": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"description": "The next value from the previous page; leave out for the first page",
|
|
124
|
+
"in": "query",
|
|
125
|
+
"name": "pageToken",
|
|
126
|
+
"required": false
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"result": {
|
|
130
|
+
"items": "devices",
|
|
131
|
+
"fields": [
|
|
132
|
+
"deviceID",
|
|
133
|
+
"deviceName",
|
|
134
|
+
"userID",
|
|
135
|
+
"serialNumber",
|
|
136
|
+
"platformOS",
|
|
137
|
+
"deviceOS",
|
|
138
|
+
"deviceOSVersion",
|
|
139
|
+
"deviceStatus",
|
|
140
|
+
"deviceMarkedInactive",
|
|
141
|
+
"lastConnected",
|
|
142
|
+
"clientVersion",
|
|
143
|
+
"upgradeState",
|
|
144
|
+
"totalBackupData"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"paging": { "param": "page_token", "body": "nextPageToken" }
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "druva_get_device",
|
|
151
|
+
"description": "Read one device: owner, operating system, serial number, status, last connection, backup client version and total data backed up.",
|
|
152
|
+
"method": "GET",
|
|
153
|
+
"path": "/endpoints/v2/devices/{device_id}",
|
|
154
|
+
"params": {
|
|
155
|
+
"device_id": {
|
|
156
|
+
"type": "integer",
|
|
157
|
+
"description": "The deviceID",
|
|
158
|
+
"in": "path"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"name": "druva_list_last_backups",
|
|
164
|
+
"description": "List each device's last successful backup: when it started and ended, files backed up and files missed. Filter by device, user or when the backup ended.",
|
|
165
|
+
"method": "GET",
|
|
166
|
+
"path": "/endpoints/v1/backups",
|
|
167
|
+
"params": {
|
|
168
|
+
"last_successful": {
|
|
169
|
+
"type": "boolean",
|
|
170
|
+
"enum": [true],
|
|
171
|
+
"description": "Always true: the last successful backup",
|
|
172
|
+
"in": "query",
|
|
173
|
+
"name": "lastSuccessful",
|
|
174
|
+
"default": true
|
|
175
|
+
},
|
|
176
|
+
"device_id": {
|
|
177
|
+
"type": "integer",
|
|
178
|
+
"description": "Only this device",
|
|
179
|
+
"in": "query",
|
|
180
|
+
"name": "deviceID",
|
|
181
|
+
"required": false
|
|
182
|
+
},
|
|
183
|
+
"user_id": {
|
|
184
|
+
"type": "integer",
|
|
185
|
+
"description": "Only this user's devices",
|
|
186
|
+
"in": "query",
|
|
187
|
+
"name": "userID",
|
|
188
|
+
"required": false
|
|
189
|
+
},
|
|
190
|
+
"ended_before": {
|
|
191
|
+
"type": "string",
|
|
192
|
+
"description": "Only backups that ended before this time, as YYYY-MM-DDTHH:MM:SSZ, to find devices not backed up lately",
|
|
193
|
+
"in": "query",
|
|
194
|
+
"name": "maxBackupEndTime",
|
|
195
|
+
"required": false
|
|
196
|
+
},
|
|
197
|
+
"page_token": {
|
|
198
|
+
"type": "string",
|
|
199
|
+
"description": "The next value from the previous page; leave out for the first page",
|
|
200
|
+
"in": "query",
|
|
201
|
+
"name": "pageToken",
|
|
202
|
+
"required": false
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"result": {
|
|
206
|
+
"items": "backups",
|
|
207
|
+
"fields": ["deviceID", "backupStatus", "startTime", "endTime", "filesBackedUp", "filesMissed", "bytesTransferred"]
|
|
208
|
+
},
|
|
209
|
+
"paging": { "param": "page_token", "body": "nextPageToken" }
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "druva_list_users",
|
|
213
|
+
"description": "Find Druva users by email, email prefix or name prefix, with their status (active or preserved).",
|
|
214
|
+
"method": "GET",
|
|
215
|
+
"path": "/usermanagement/v1/users",
|
|
216
|
+
"params": {
|
|
217
|
+
"email": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"description": "The user's exact email address",
|
|
220
|
+
"in": "query",
|
|
221
|
+
"name": "emailID",
|
|
222
|
+
"required": false
|
|
223
|
+
},
|
|
224
|
+
"email_prefix": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"description": "Only users whose email starts with this",
|
|
227
|
+
"in": "query",
|
|
228
|
+
"name": "searchPrefixEmailID",
|
|
229
|
+
"required": false
|
|
230
|
+
},
|
|
231
|
+
"name_prefix": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"description": "Only users whose name starts with this",
|
|
234
|
+
"in": "query",
|
|
235
|
+
"name": "searchPrefixUserName",
|
|
236
|
+
"required": false
|
|
237
|
+
},
|
|
238
|
+
"status": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"enum": ["active", "preserved"],
|
|
241
|
+
"description": "Only users in this status",
|
|
242
|
+
"in": "query",
|
|
243
|
+
"required": false
|
|
244
|
+
},
|
|
245
|
+
"page_token": {
|
|
246
|
+
"type": "string",
|
|
247
|
+
"description": "The next value from the previous page; leave out for the first page",
|
|
248
|
+
"in": "query",
|
|
249
|
+
"name": "pageToken",
|
|
250
|
+
"required": false
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
"result": { "items": "users", "fields": ["userID", "userName", "emailID", "status", "profileID", "addedOn"] },
|
|
254
|
+
"paging": { "param": "page_token", "body": "nextPageToken" }
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -22,7 +22,22 @@
|
|
|
22
22
|
"Select Settings, then Users + permissions, then Security roles, and select New role.",
|
|
23
23
|
"Name it {brand.microsoft.appName} agents, keep the root business unit and select Save.",
|
|
24
24
|
"For each privilege above, find its table (Account, Contact, Opportunity, Case, Activity, Note, User) and set that privilege's access level. Leave everything else at None and select Save."
|
|
25
|
-
]
|
|
25
|
+
],
|
|
26
|
+
"copy": [
|
|
27
|
+
"# Needs the Azure CLI, signed in as a Dynamics 365 system administrator. Replace the address with your environment URL.",
|
|
28
|
+
"$environment = 'https://your-org.crm.dynamics.com'",
|
|
29
|
+
"$api = \"$environment/api/data/v9.2\"",
|
|
30
|
+
"$headers = @{ Authorization = \"Bearer $(az account get-access-token --resource $environment --query accessToken -o tsv)\"; 'Content-Type' = 'application/json' }",
|
|
31
|
+
"$root = (Invoke-RestMethod -Headers $headers \"$api/businessunits?`$filter=_parentbusinessunitid_value eq null&`$select=businessunitid\").value[0].businessunitid",
|
|
32
|
+
"$role = Invoke-RestMethod -Method Post -Headers ($headers + @{ Prefer = 'return=representation' }) \"$api/roles\" -Body (@{ name = '{brand.microsoft.appName} agents'; 'businessunitid@odata.bind' = \"/businessunits($root)\" } | ConvertTo-Json)",
|
|
33
|
+
"# Global is Organization access; use Local to keep agents to the business unit.",
|
|
34
|
+
"$names = @(",
|
|
35
|
+
" '{scope}'",
|
|
36
|
+
")",
|
|
37
|
+
"$privileges = foreach ($name in $names) { @{ PrivilegeId = (Invoke-RestMethod -Headers $headers \"$api/privileges?`$filter=name eq '$name'&`$select=privilegeid\").value[0].privilegeid; Depth = 'Global'; BusinessUnitId = $root } }",
|
|
38
|
+
"Invoke-RestMethod -Method Post -Headers $headers \"$api/roles($($role.roleid))/Microsoft.Dynamics.CRM.AddPrivilegesRole\" -Body (@{ Privileges = @($privileges) } | ConvertTo-Json -Depth 4)"
|
|
39
|
+
],
|
|
40
|
+
"shell": "powershell"
|
|
26
41
|
},
|
|
27
42
|
{
|
|
28
43
|
"title": "Add the app as an application user",
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
2
|
id: string;
|
|
3
|
-
create: ({ microsoft }: {
|
|
4
|
-
microsoft: import("../microsoft/client.js").MicrosoftClient;
|
|
5
|
-
connector: import("../../packages/connector-kit/src/connector.js").Connector;
|
|
6
|
-
}) => {
|
|
3
|
+
create: ({ microsoft }: import("../microsoft/client.js").BuiltinContext) => {
|
|
7
4
|
vendor: import("../../packages/connector-kit/src/types.js").Vendor;
|
|
8
5
|
toolset: import("../../packages/connector-kit/src/common.js").Toolset;
|
|
9
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/dynamics-365/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAe;IACb,EAAE,EAAE,cAAc;IAClB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;QACjC,OAAO,EAAE,aAAa;KACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/dynamics-365/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAe;IACb,EAAE,EAAE,cAAc;IAClB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;QACjC,OAAO,EAAE,aAAa;KACvB,CAAC;CACqB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("
|
|
1
|
+
declare const _default: import("../microsoft/client.js").BuiltinModule;
|
|
2
2
|
export default _default;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "forsta-decipher",
|
|
3
|
+
"name": "Forsta Surveys (Decipher)",
|
|
4
|
+
"description": "Let agents keep track of your Forsta (Decipher) surveys: find surveys and their field status, read completes and drop-outs, quotas, the questionnaire's datamap and field warnings, and your company's usage for a period. Read-only.",
|
|
5
|
+
"logo": "/brand/registry/forsta-decipher.svg",
|
|
6
|
+
"identity": "A Decipher API key of a Research Hub user. It reaches the surveys that user can, with any limits set on the key, so create it under a user made for agents.",
|
|
7
|
+
"accountKey": "host",
|
|
8
|
+
"connectionKind": "guided",
|
|
9
|
+
"setup": [
|
|
10
|
+
{
|
|
11
|
+
"title": "Create an API key",
|
|
12
|
+
"body": "Create the key as a user who has access only to the projects agents should see. You can also limit the key to certain calls, networks and an expiry date. Keys work over https only.",
|
|
13
|
+
"link": {
|
|
14
|
+
"label": "Decipher API: authentication and authorization",
|
|
15
|
+
"href": "https://docs.developer.focusvision.com/docs/decipher/api"
|
|
16
|
+
},
|
|
17
|
+
"click": [
|
|
18
|
+
"In the Research Hub, open the User Links menu and select API access.",
|
|
19
|
+
"Select Create API key, set any restrictions you want, and copy the key."
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"title": "Find your server address",
|
|
24
|
+
"body": "Use the host name you sign in to the Research Hub at, such as yourcompany.decipherinc.com. The command below checks the key and address and changes nothing.",
|
|
25
|
+
"click": ["Copy the host name from your browser's address bar while signed in to the Research Hub."],
|
|
26
|
+
"copy": ["curl -s -H \"x-apikey: $DECIPHER_KEY\" \"https://$DECIPHER_HOST/api/v1/hello?name=agents\""],
|
|
27
|
+
"shell": "bash"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"afterConnect": [],
|
|
31
|
+
"fields": [
|
|
32
|
+
{
|
|
33
|
+
"id": "host",
|
|
34
|
+
"label": "Server address",
|
|
35
|
+
"help": "The host name of your Research Hub, without https:// or a path.",
|
|
36
|
+
"placeholder": "yourcompany.decipherinc.com",
|
|
37
|
+
"secret": false
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "api_key",
|
|
41
|
+
"label": "API key",
|
|
42
|
+
"secret": true
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"capabilities": [
|
|
46
|
+
{
|
|
47
|
+
"id": "read_surveys",
|
|
48
|
+
"label": "Read surveys",
|
|
49
|
+
"description": "Find surveys with their state and completes, and read one survey's completes and drop-outs, quotas, datamap (its questions and answer codes) and field warnings.",
|
|
50
|
+
"required": true,
|
|
51
|
+
"note": "Reaches every survey the key's user can. Read-only.",
|
|
52
|
+
"scopes": [],
|
|
53
|
+
"permissions": [],
|
|
54
|
+
"tools": [
|
|
55
|
+
"decipher_list_surveys",
|
|
56
|
+
"decipher_get_survey",
|
|
57
|
+
"decipher_get_completions",
|
|
58
|
+
"decipher_get_quotas",
|
|
59
|
+
"decipher_get_datamap",
|
|
60
|
+
"decipher_get_warnings"
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "read_usage",
|
|
65
|
+
"label": "Read usage",
|
|
66
|
+
"description": "Read your company's usage for a date range, the completes your bill is based on, by project and device type.",
|
|
67
|
+
"scopes": [],
|
|
68
|
+
"permissions": [],
|
|
69
|
+
"tools": ["decipher_get_usage"]
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"limits": [],
|
|
73
|
+
"verify": {
|
|
74
|
+
"method": "GET",
|
|
75
|
+
"path": "/hello?name=agents",
|
|
76
|
+
"label": "Decipher answers",
|
|
77
|
+
"show": "hello"
|
|
78
|
+
},
|
|
79
|
+
"revoke": "In the Research Hub, open the User Links menu, select API access and delete the key. Agents lose access to Decipher at once.",
|
|
80
|
+
"http": {
|
|
81
|
+
"baseUrl": "https://{host}/api/v1",
|
|
82
|
+
"auth": { "type": "header", "header": "x-apikey", "value": "api_key" },
|
|
83
|
+
"tools": [
|
|
84
|
+
{
|
|
85
|
+
"name": "decipher_list_surveys",
|
|
86
|
+
"description": "Find surveys as in the Research Hub, by text, #tag or user:email. Each has its path (selfserve/<directory>/<project>), state, launch date and completes so far.",
|
|
87
|
+
"method": "GET",
|
|
88
|
+
"path": "/rh/companies/all/surveys",
|
|
89
|
+
"params": {
|
|
90
|
+
"query": { "type": "string", "description": "A Research Hub search, e.g. brand tracker, #wave3 or user:ann@example.com", "in": "query", "required": false }
|
|
91
|
+
},
|
|
92
|
+
"result": {
|
|
93
|
+
"fields": ["path", "title", "owner", "state", "tags", "directory", "dateLaunched", "startTime", "finishTime", "total", "qualified", "today", "clickthrough", "medianQtime", "questions"]
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "decipher_get_survey",
|
|
98
|
+
"description": "Read one survey's Research Hub record. Surveys are named by the two parts after selfserve/ in their path.",
|
|
99
|
+
"method": "GET",
|
|
100
|
+
"path": "/rh/surveys/selfserve/{directory}/{project}",
|
|
101
|
+
"params": {
|
|
102
|
+
"directory": { "type": "string", "description": "The part after selfserve/ in the survey's path, e.g. 53b", "in": "path" },
|
|
103
|
+
"project": { "type": "string", "description": "The last part of the survey's path, e.g. 180401", "in": "path" }
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "decipher_get_completions",
|
|
108
|
+
"description": "Read a survey's field summary: clickthroughs, partials, terminates, over-quotas and qualified completes, optionally split, e.g. by list.",
|
|
109
|
+
"method": "GET",
|
|
110
|
+
"path": "/surveys/selfserve/{directory}/{project}/summary/completions",
|
|
111
|
+
"params": {
|
|
112
|
+
"directory": { "type": "string", "description": "The part after selfserve/ in the survey's path", "in": "path" },
|
|
113
|
+
"project": { "type": "string", "description": "The last part of the survey's path", "in": "path" },
|
|
114
|
+
"split": { "type": "string", "description": "Split the counts by this, e.g. list", "in": "query", "required": false }
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "decipher_get_quotas",
|
|
119
|
+
"description": "Read a survey's quotas: each cell's limit, completes, pending and over-quota counts.",
|
|
120
|
+
"method": "GET",
|
|
121
|
+
"path": "/surveys/selfserve/{directory}/{project}/quota",
|
|
122
|
+
"params": {
|
|
123
|
+
"directory": { "type": "string", "description": "The part after selfserve/ in the survey's path", "in": "path" },
|
|
124
|
+
"project": { "type": "string", "description": "The last part of the survey's path", "in": "path" }
|
|
125
|
+
},
|
|
126
|
+
"result": { "fields": ["markers", "sheets", "defines", "stopped"] }
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"name": "decipher_get_datamap",
|
|
130
|
+
"description": "Read a survey's datamap: its questions, variables and answer codes, for checking the questionnaire and the data.",
|
|
131
|
+
"method": "GET",
|
|
132
|
+
"path": "/surveys/selfserve/{directory}/{project}/datamap",
|
|
133
|
+
"params": {
|
|
134
|
+
"directory": { "type": "string", "description": "The part after selfserve/ in the survey's path", "in": "path" },
|
|
135
|
+
"project": { "type": "string", "description": "The last part of the survey's path", "in": "path" },
|
|
136
|
+
"format": { "type": "string", "description": "Always JSON", "in": "query", "enum": ["json"], "default": "json" }
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "decipher_get_warnings",
|
|
141
|
+
"description": "Read a survey's field warnings for a period: participants blocked, missing images or scripts, errors and quota misses.",
|
|
142
|
+
"method": "GET",
|
|
143
|
+
"path": "/surveys/selfserve/{directory}/{project}/warnings",
|
|
144
|
+
"params": {
|
|
145
|
+
"directory": { "type": "string", "description": "The part after selfserve/ in the survey's path", "in": "path" },
|
|
146
|
+
"project": { "type": "string", "description": "The last part of the survey's path", "in": "path" },
|
|
147
|
+
"start": { "type": "string", "description": "From this date, YYYY-MM-DD", "in": "query", "required": false },
|
|
148
|
+
"end": { "type": "string", "description": "Up to this date, YYYY-MM-DD", "in": "query", "required": false }
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "decipher_get_usage",
|
|
153
|
+
"description": "Read your company's usage between two dates: completes by project and by device type. Yesterday's data is ready a day or two later.",
|
|
154
|
+
"method": "GET",
|
|
155
|
+
"path": "/rh/usage",
|
|
156
|
+
"params": {
|
|
157
|
+
"start": { "type": "string", "description": "Start date, YYYY-MM-DD", "in": "query" },
|
|
158
|
+
"end": { "type": "string", "description": "End date, YYYY-MM-DD", "in": "query" },
|
|
159
|
+
"company": { "type": "integer", "description": "Only this company's usage", "in": "query", "required": false }
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
}
|