@pagerduty/backstage-plugin-backend 0.9.7 → 0.9.8
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/config.d.ts +1 -1
- package/dist/apis/pagerduty.cjs.js +72 -72
- package/dist/apis/pagerduty.cjs.js.map +1 -1
- package/dist/auth/auth.cjs.js +3 -3
- package/dist/auth/auth.cjs.js.map +1 -1
- package/dist/db/PagerDutyBackendDatabase.cjs.js.map +1 -1
- package/dist/service/router.cjs.js +20 -20
- package/dist/service/router.cjs.js.map +1 -1
- package/package.json +3 -3
package/config.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var fetch = require('node-fetch');
|
|
4
4
|
var auth = require('../auth/auth.cjs.js');
|
|
5
|
-
var
|
|
5
|
+
var backstagePluginCommon = require('@pagerduty/backstage-plugin-common');
|
|
6
6
|
var luxon = require('luxon');
|
|
7
7
|
|
|
8
8
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
@@ -83,24 +83,24 @@ async function addServiceRelationsToService(serviceRelations, account) {
|
|
|
83
83
|
throw new Error(`Failed to retrieve service dependencies: ${error}`);
|
|
84
84
|
}
|
|
85
85
|
if (response.status >= 500) {
|
|
86
|
-
throw new
|
|
86
|
+
throw new backstagePluginCommon.HttpError(`Failed to add service dependencies. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
87
87
|
}
|
|
88
88
|
switch (response.status) {
|
|
89
89
|
case 400:
|
|
90
|
-
throw new
|
|
90
|
+
throw new backstagePluginCommon.HttpError("Failed to add service dependencies. Caller provided invalid arguments. Please review the response for error details. Retrying with the same arguments will not work.", 400);
|
|
91
91
|
case 401:
|
|
92
|
-
throw new
|
|
92
|
+
throw new backstagePluginCommon.HttpError("Failed to add service dependencies. Caller did not supply credentials or did not provide the correct credentials. If you are using an API key, it may be invalid or your Authorization header may be malformed.", 401);
|
|
93
93
|
case 403:
|
|
94
|
-
throw new
|
|
94
|
+
throw new backstagePluginCommon.HttpError("Failed to add service dependencies. Caller is not authorized to view the requested resource. While your authentication is valid, the authenticated user or token does not have permission to perform this action.", 403);
|
|
95
95
|
case 404:
|
|
96
|
-
throw new
|
|
96
|
+
throw new backstagePluginCommon.HttpError("Failed to add service dependencies. The requested resource was not found.", 404);
|
|
97
97
|
}
|
|
98
98
|
let result;
|
|
99
99
|
try {
|
|
100
100
|
result = await response.json();
|
|
101
101
|
return result.relationships;
|
|
102
102
|
} catch (error) {
|
|
103
|
-
throw new
|
|
103
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse service dependency information: ${error}`, 500);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
async function removeServiceRelationsFromService(serviceRelations, account) {
|
|
@@ -124,24 +124,24 @@ async function removeServiceRelationsFromService(serviceRelations, account) {
|
|
|
124
124
|
throw new Error(`Failed to retrieve service dependencies: ${error}`);
|
|
125
125
|
}
|
|
126
126
|
if (response.status >= 500) {
|
|
127
|
-
throw new
|
|
127
|
+
throw new backstagePluginCommon.HttpError(`Failed to remove service dependencies. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
128
128
|
}
|
|
129
129
|
switch (response.status) {
|
|
130
130
|
case 400:
|
|
131
|
-
throw new
|
|
131
|
+
throw new backstagePluginCommon.HttpError("Failed to remove service dependencies. Caller provided invalid arguments. Please review the response for error details. Retrying with the same arguments will not work.", 400);
|
|
132
132
|
case 401:
|
|
133
|
-
throw new
|
|
133
|
+
throw new backstagePluginCommon.HttpError("Failed to remove service dependencies. Caller did not supply credentials or did not provide the correct credentials. If you are using an API key, it may be invalid or your Authorization header may be malformed.", 401);
|
|
134
134
|
case 403:
|
|
135
|
-
throw new
|
|
135
|
+
throw new backstagePluginCommon.HttpError("Failed to remove service dependencies. Caller is not authorized to view the requested resource. While your authentication is valid, the authenticated user or token does not have permission to perform this action.", 403);
|
|
136
136
|
case 404:
|
|
137
|
-
throw new
|
|
137
|
+
throw new backstagePluginCommon.HttpError("Failed to remove service dependencies. The requested resource was not found.", 404);
|
|
138
138
|
}
|
|
139
139
|
let result;
|
|
140
140
|
try {
|
|
141
141
|
result = await response.json();
|
|
142
142
|
return result.relationships;
|
|
143
143
|
} catch (error) {
|
|
144
|
-
throw new
|
|
144
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse service dependency information: ${error}`, 500);
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
async function getServiceRelationshipsById(serviceId, account) {
|
|
@@ -162,24 +162,24 @@ async function getServiceRelationshipsById(serviceId, account) {
|
|
|
162
162
|
throw new Error(`Failed to retrieve service dependencies: ${error}`);
|
|
163
163
|
}
|
|
164
164
|
if (response.status >= 500) {
|
|
165
|
-
throw new
|
|
165
|
+
throw new backstagePluginCommon.HttpError(`Failed to list service dependencies. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
166
166
|
}
|
|
167
167
|
switch (response.status) {
|
|
168
168
|
case 400:
|
|
169
|
-
throw new
|
|
169
|
+
throw new backstagePluginCommon.HttpError("Failed to list service dependencies. Caller provided invalid arguments. Please review the response for error details. Retrying with the same arguments will not work.", 400);
|
|
170
170
|
case 401:
|
|
171
|
-
throw new
|
|
171
|
+
throw new backstagePluginCommon.HttpError("Failed to list service dependencies. Caller did not supply credentials or did not provide the correct credentials. If you are using an API key, it may be invalid or your Authorization header may be malformed.", 401);
|
|
172
172
|
case 403:
|
|
173
|
-
throw new
|
|
173
|
+
throw new backstagePluginCommon.HttpError("Failed to list service dependencies. Caller is not authorized to view the requested resource. While your authentication is valid, the authenticated user or token does not have permission to perform this action.", 403);
|
|
174
174
|
case 404:
|
|
175
|
-
throw new
|
|
175
|
+
throw new backstagePluginCommon.HttpError("Failed to list service dependencies. The requested resource was not found.", 404);
|
|
176
176
|
}
|
|
177
177
|
let result;
|
|
178
178
|
try {
|
|
179
179
|
result = await response.json();
|
|
180
180
|
return result.relationships;
|
|
181
181
|
} catch (error) {
|
|
182
|
-
throw new
|
|
182
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse service dependency information: ${error}`, 500);
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
async function getEscalationPolicies(offset, limit, account) {
|
|
@@ -201,24 +201,24 @@ async function getEscalationPolicies(offset, limit, account) {
|
|
|
201
201
|
throw new Error(`Failed to retrieve escalation policies: ${error}`);
|
|
202
202
|
}
|
|
203
203
|
if (response.status >= 500) {
|
|
204
|
-
throw new
|
|
204
|
+
throw new backstagePluginCommon.HttpError(`Failed to list escalation policies. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
205
205
|
}
|
|
206
206
|
switch (response.status) {
|
|
207
207
|
case 400:
|
|
208
|
-
throw new
|
|
208
|
+
throw new backstagePluginCommon.HttpError("Failed to list escalation policies. Caller provided invalid arguments.", 400);
|
|
209
209
|
case 401:
|
|
210
|
-
throw new
|
|
210
|
+
throw new backstagePluginCommon.HttpError("Failed to list escalation policies. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
211
211
|
case 403:
|
|
212
|
-
throw new
|
|
212
|
+
throw new backstagePluginCommon.HttpError("Failed to list escalation policies. Caller is not authorized to view the requested resource.", 403);
|
|
213
213
|
case 429:
|
|
214
|
-
throw new
|
|
214
|
+
throw new backstagePluginCommon.HttpError("Failed to list escalation policies. Rate limit exceeded.", 429);
|
|
215
215
|
}
|
|
216
216
|
let result;
|
|
217
217
|
try {
|
|
218
218
|
result = await response.json();
|
|
219
219
|
return [result.more ?? false, result.escalation_policies];
|
|
220
220
|
} catch (error) {
|
|
221
|
-
throw new
|
|
221
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse escalation policy information: ${error}`, 500);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
async function getAllEscalationPolicies() {
|
|
@@ -244,10 +244,10 @@ async function getAllEscalationPolicies() {
|
|
|
244
244
|
}
|
|
245
245
|
} while (moreResults === true);
|
|
246
246
|
} catch (error) {
|
|
247
|
-
if (error instanceof
|
|
247
|
+
if (error instanceof backstagePluginCommon.HttpError) {
|
|
248
248
|
throw error;
|
|
249
249
|
} else {
|
|
250
|
-
throw new
|
|
250
|
+
throw new backstagePluginCommon.HttpError(`${error}`, 500);
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
})
|
|
@@ -273,17 +273,17 @@ async function getOncallUsers(escalationPolicy, account) {
|
|
|
273
273
|
throw new Error(`Failed to retrieve oncalls: ${error}`);
|
|
274
274
|
}
|
|
275
275
|
if (response.status >= 500) {
|
|
276
|
-
throw new
|
|
276
|
+
throw new backstagePluginCommon.HttpError(`Failed to list oncalls. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
277
277
|
}
|
|
278
278
|
switch (response.status) {
|
|
279
279
|
case 400:
|
|
280
|
-
throw new
|
|
280
|
+
throw new backstagePluginCommon.HttpError("Failed to list oncalls. Caller provided invalid arguments.", 400);
|
|
281
281
|
case 401:
|
|
282
|
-
throw new
|
|
282
|
+
throw new backstagePluginCommon.HttpError("Failed to list oncalls. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
283
283
|
case 403:
|
|
284
|
-
throw new
|
|
284
|
+
throw new backstagePluginCommon.HttpError("Failed to list oncalls. Caller is not authorized to view the requested resource.", 403);
|
|
285
285
|
case 429:
|
|
286
|
-
throw new
|
|
286
|
+
throw new backstagePluginCommon.HttpError("Failed to list oncalls. Rate limit exceeded.", 429);
|
|
287
287
|
}
|
|
288
288
|
let result;
|
|
289
289
|
let usersItem;
|
|
@@ -309,7 +309,7 @@ async function getOncallUsers(escalationPolicy, account) {
|
|
|
309
309
|
}
|
|
310
310
|
return [];
|
|
311
311
|
} catch (error) {
|
|
312
|
-
throw new
|
|
312
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse oncall information: ${error}`, 500);
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
315
|
async function getServiceById(serviceId, account) {
|
|
@@ -332,24 +332,24 @@ async function getServiceById(serviceId, account) {
|
|
|
332
332
|
throw new Error(`Failed to retrieve service: ${error}`);
|
|
333
333
|
}
|
|
334
334
|
if (response.status >= 500) {
|
|
335
|
-
throw new
|
|
335
|
+
throw new backstagePluginCommon.HttpError(`Failed to get service. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
336
336
|
}
|
|
337
337
|
switch (response.status) {
|
|
338
338
|
case 400:
|
|
339
|
-
throw new
|
|
339
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. Caller provided invalid arguments.", 400);
|
|
340
340
|
case 401:
|
|
341
|
-
throw new
|
|
341
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
342
342
|
case 403:
|
|
343
|
-
throw new
|
|
343
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. Caller is not authorized to view the requested resource.", 403);
|
|
344
344
|
case 404:
|
|
345
|
-
throw new
|
|
345
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. The requested resource was not found.", 404);
|
|
346
346
|
}
|
|
347
347
|
let result;
|
|
348
348
|
try {
|
|
349
349
|
result = await response.json();
|
|
350
350
|
return result.service;
|
|
351
351
|
} catch (error) {
|
|
352
|
-
throw new
|
|
352
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse service information: ${error}`, 500);
|
|
353
353
|
}
|
|
354
354
|
}
|
|
355
355
|
async function getServiceByIntegrationKey(integrationKey, account) {
|
|
@@ -372,26 +372,26 @@ async function getServiceByIntegrationKey(integrationKey, account) {
|
|
|
372
372
|
throw new Error(`Failed to retrieve service: ${error}`);
|
|
373
373
|
}
|
|
374
374
|
if (response.status >= 500) {
|
|
375
|
-
throw new
|
|
375
|
+
throw new backstagePluginCommon.HttpError(`Failed to get service. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
376
376
|
}
|
|
377
377
|
switch (response.status) {
|
|
378
378
|
case 400:
|
|
379
|
-
throw new
|
|
379
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. Caller provided invalid arguments.", 400);
|
|
380
380
|
case 401:
|
|
381
|
-
throw new
|
|
381
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
382
382
|
case 403:
|
|
383
|
-
throw new
|
|
383
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. Caller is not authorized to view the requested resource.", 403);
|
|
384
384
|
case 404:
|
|
385
|
-
throw new
|
|
385
|
+
throw new backstagePluginCommon.HttpError("Failed to get service. The requested resource was not found.", 404);
|
|
386
386
|
}
|
|
387
387
|
let result;
|
|
388
388
|
try {
|
|
389
389
|
result = await response.json();
|
|
390
390
|
} catch (error) {
|
|
391
|
-
throw new
|
|
391
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse service information: ${error}`, 500);
|
|
392
392
|
}
|
|
393
393
|
if (result.services.length === 0) {
|
|
394
|
-
throw new
|
|
394
|
+
throw new backstagePluginCommon.HttpError(`Failed to get service. The requested resource was not found.`, 404);
|
|
395
395
|
}
|
|
396
396
|
return result.services[0];
|
|
397
397
|
}
|
|
@@ -420,15 +420,15 @@ async function getAllServices() {
|
|
|
420
420
|
const paginatedUrl = `${baseUrl}?${params}&offset=${offset}&limit=${limit}`;
|
|
421
421
|
response = await fetchWithRetries(paginatedUrl, options);
|
|
422
422
|
if (response.status >= 500) {
|
|
423
|
-
throw new
|
|
423
|
+
throw new backstagePluginCommon.HttpError(`Failed to get services. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
424
424
|
}
|
|
425
425
|
switch (response.status) {
|
|
426
426
|
case 400:
|
|
427
|
-
throw new
|
|
427
|
+
throw new backstagePluginCommon.HttpError("Failed to get services. Caller provided invalid arguments.", 400);
|
|
428
428
|
case 401:
|
|
429
|
-
throw new
|
|
429
|
+
throw new backstagePluginCommon.HttpError("Failed to get services. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
430
430
|
case 403:
|
|
431
|
-
throw new
|
|
431
|
+
throw new backstagePluginCommon.HttpError("Failed to get services. Caller is not authorized to view the requested resource.", 403);
|
|
432
432
|
default:
|
|
433
433
|
break;
|
|
434
434
|
}
|
|
@@ -465,24 +465,24 @@ async function getChangeEvents(serviceId, account) {
|
|
|
465
465
|
throw new Error(`Failed to retrieve change events for service: ${error}`);
|
|
466
466
|
}
|
|
467
467
|
if (response.status >= 500) {
|
|
468
|
-
throw new
|
|
468
|
+
throw new backstagePluginCommon.HttpError(`Failed to get change events for service. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
469
469
|
}
|
|
470
470
|
switch (response.status) {
|
|
471
471
|
case 400:
|
|
472
|
-
throw new
|
|
472
|
+
throw new backstagePluginCommon.HttpError("Failed to get change events for service. Caller provided invalid arguments.", 400);
|
|
473
473
|
case 401:
|
|
474
|
-
throw new
|
|
474
|
+
throw new backstagePluginCommon.HttpError("Failed to get change events for service. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
475
475
|
case 403:
|
|
476
|
-
throw new
|
|
476
|
+
throw new backstagePluginCommon.HttpError("Failed to get change events for service. Caller is not authorized to view the requested resource.", 403);
|
|
477
477
|
case 404:
|
|
478
|
-
throw new
|
|
478
|
+
throw new backstagePluginCommon.HttpError("Failed to get change events for service. The requested resource was not found.", 404);
|
|
479
479
|
}
|
|
480
480
|
let result;
|
|
481
481
|
try {
|
|
482
482
|
result = await response.json();
|
|
483
483
|
return result.change_events;
|
|
484
484
|
} catch (error) {
|
|
485
|
-
throw new
|
|
485
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse change events information: ${error}`, 500);
|
|
486
486
|
}
|
|
487
487
|
}
|
|
488
488
|
async function getIncidents(serviceId, account) {
|
|
@@ -504,26 +504,26 @@ async function getIncidents(serviceId, account) {
|
|
|
504
504
|
throw new Error(`Failed to retrieve incidents for service: ${error}`);
|
|
505
505
|
}
|
|
506
506
|
if (response.status >= 500) {
|
|
507
|
-
throw new
|
|
507
|
+
throw new backstagePluginCommon.HttpError(`Failed to get incidents for service. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
508
508
|
}
|
|
509
509
|
switch (response.status) {
|
|
510
510
|
case 400:
|
|
511
|
-
throw new
|
|
511
|
+
throw new backstagePluginCommon.HttpError("Failed to get incidents for service. Caller provided invalid arguments.", 400);
|
|
512
512
|
case 401:
|
|
513
|
-
throw new
|
|
513
|
+
throw new backstagePluginCommon.HttpError("Failed to get incidents for service. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
514
514
|
case 402:
|
|
515
|
-
throw new
|
|
515
|
+
throw new backstagePluginCommon.HttpError("Failed to get incidents for service. Account does not have the abilities to perform the action. Please review the response for the required abilities.", 402);
|
|
516
516
|
case 403:
|
|
517
|
-
throw new
|
|
517
|
+
throw new backstagePluginCommon.HttpError("Failed to get incidents for service. Caller is not authorized to view the requested resource.", 403);
|
|
518
518
|
case 429:
|
|
519
|
-
throw new
|
|
519
|
+
throw new backstagePluginCommon.HttpError("Failed to get incidents for service. Too many requests have been made, the rate limit has been reached.", 429);
|
|
520
520
|
}
|
|
521
521
|
let result;
|
|
522
522
|
try {
|
|
523
523
|
result = await response.json();
|
|
524
524
|
return result.incidents;
|
|
525
525
|
} catch (error) {
|
|
526
|
-
throw new
|
|
526
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse incidents information: ${error}`, 500);
|
|
527
527
|
}
|
|
528
528
|
}
|
|
529
529
|
async function getServiceStandards(serviceId, account) {
|
|
@@ -544,21 +544,21 @@ async function getServiceStandards(serviceId, account) {
|
|
|
544
544
|
throw new Error(`Failed to retrieve service standards for service: ${error}`);
|
|
545
545
|
}
|
|
546
546
|
if (response.status >= 500) {
|
|
547
|
-
throw new
|
|
547
|
+
throw new backstagePluginCommon.HttpError(`Failed to get service standards for service. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
548
548
|
}
|
|
549
549
|
switch (response.status) {
|
|
550
550
|
case 401:
|
|
551
|
-
throw new
|
|
551
|
+
throw new backstagePluginCommon.HttpError("Failed to get service standards for service. Caller did not supply credentials or did not provide the correct credentials.", 401);
|
|
552
552
|
case 403:
|
|
553
|
-
throw new
|
|
553
|
+
throw new backstagePluginCommon.HttpError("Failed to get service standards for service. Caller is not authorized to view the requested resource.", 403);
|
|
554
554
|
case 429:
|
|
555
|
-
throw new
|
|
555
|
+
throw new backstagePluginCommon.HttpError("Failed to get service standards for service. Too many requests have been made, the rate limit has been reached.", 429);
|
|
556
556
|
}
|
|
557
557
|
try {
|
|
558
558
|
const result = await response.json();
|
|
559
559
|
return result;
|
|
560
560
|
} catch (error) {
|
|
561
|
-
throw new
|
|
561
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse service standards information: ${error}`, 500);
|
|
562
562
|
}
|
|
563
563
|
}
|
|
564
564
|
async function getServiceMetrics(serviceId, account) {
|
|
@@ -591,19 +591,19 @@ async function getServiceMetrics(serviceId, account) {
|
|
|
591
591
|
throw new Error(`Failed to retrieve service metrics for service: ${error}`);
|
|
592
592
|
}
|
|
593
593
|
if (response.status >= 500) {
|
|
594
|
-
throw new
|
|
594
|
+
throw new backstagePluginCommon.HttpError(`Failed to get service metrics for service. PagerDuty API returned a server error. Retrying with the same arguments will not work.`, response.status);
|
|
595
595
|
}
|
|
596
596
|
switch (response.status) {
|
|
597
597
|
case 400:
|
|
598
|
-
throw new
|
|
598
|
+
throw new backstagePluginCommon.HttpError("Failed to get service metrics for service. Caller provided invalid arguments. Please review the response for error details. Retrying with the same arguments will not work.", 400);
|
|
599
599
|
case 429:
|
|
600
|
-
throw new
|
|
600
|
+
throw new backstagePluginCommon.HttpError("Failed to get service metrics for service. Too many requests have been made, the rate limit has been reached.", 429);
|
|
601
601
|
}
|
|
602
602
|
try {
|
|
603
603
|
const result = await response.json();
|
|
604
604
|
return result.data;
|
|
605
605
|
} catch (error) {
|
|
606
|
-
throw new
|
|
606
|
+
throw new backstagePluginCommon.HttpError(`Failed to parse service metrics information: ${error}`, 500);
|
|
607
607
|
}
|
|
608
608
|
}
|
|
609
609
|
async function createServiceIntegration({ serviceId, vendorId, account }) {
|