@friggframework/core 2.0.0--canary.700.80ec1cc.0 → 2.0.0--canary.702.047d3c4.0

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 (130) hide show
  1. package/database/documentdb-utils.js +1 -6
  2. package/errors/index.js +0 -4
  3. package/generated/prisma-mongodb/edge.js +4 -52
  4. package/generated/prisma-mongodb/index-browser.js +1 -49
  5. package/generated/prisma-mongodb/index.d.ts +60 -3506
  6. package/generated/prisma-mongodb/index.js +4 -52
  7. package/generated/prisma-mongodb/package.json +1 -1
  8. package/generated/prisma-mongodb/schema.prisma +0 -65
  9. package/generated/prisma-mongodb/wasm.js +4 -52
  10. package/generated/prisma-postgresql/edge.js +4 -52
  11. package/generated/prisma-postgresql/index-browser.js +1 -49
  12. package/generated/prisma-postgresql/index.d.ts +94 -3824
  13. package/generated/prisma-postgresql/index.js +4 -52
  14. package/generated/prisma-postgresql/package.json +1 -1
  15. package/generated/prisma-postgresql/schema.prisma +0 -63
  16. package/generated/prisma-postgresql/wasm.js +4 -52
  17. package/handlers/WEBHOOKS.md +0 -29
  18. package/handlers/app-definition-loader.js +9 -2
  19. package/handlers/app-handler-helpers.js +2 -5
  20. package/handlers/integration-event-dispatcher.js +3 -7
  21. package/handlers/routers/integration-webhook-routers.js +38 -26
  22. package/index.js +0 -2
  23. package/integrations/integration-base.js +1 -162
  24. package/integrations/integration-router.js +1 -6
  25. package/integrations/repositories/integration-mapping-repository-documentdb.js +0 -50
  26. package/integrations/repositories/integration-mapping-repository-interface.js +0 -15
  27. package/integrations/repositories/integration-mapping-repository-mongo.js +0 -29
  28. package/integrations/repositories/integration-mapping-repository-postgres.js +0 -30
  29. package/integrations/repositories/integration-mapping-repository.js +0 -29
  30. package/integrations/repositories/integration-repository-documentdb.js +2 -6
  31. package/integrations/repositories/integration-repository-interface.js +0 -3
  32. package/integrations/repositories/integration-repository-mongo.js +5 -20
  33. package/integrations/repositories/integration-repository-postgres.js +1 -5
  34. package/integrations/repositories/process-repository-mongo.js +1 -1
  35. package/integrations/use-cases/create-integration.js +4 -14
  36. package/integrations/use-cases/delete-integration-for-user.js +4 -4
  37. package/integrations/use-cases/get-integration-for-user.js +2 -4
  38. package/integrations/use-cases/get-integration-instance.js +4 -4
  39. package/integrations/use-cases/get-integrations-for-user.js +4 -4
  40. package/integrations/use-cases/get-possible-integrations.js +2 -7
  41. package/integrations/use-cases/update-integration.js +4 -4
  42. package/package.json +6 -6
  43. package/prisma-mongodb/schema.prisma +0 -65
  44. package/prisma-postgresql/schema.prisma +0 -63
  45. package/queues/queuer-util.js +2 -9
  46. package/errors/mapping-already-exists-error.js +0 -14
  47. package/handlers/workers/integration-triggers.js +0 -25
  48. package/infrastructure/scheduler/recurrence.js +0 -204
  49. package/integrations/definitions/README.md +0 -278
  50. package/integrations/definitions/canonical.js +0 -11
  51. package/integrations/definitions/capabilities/AUDIT.md +0 -480
  52. package/integrations/definitions/capabilities/acmeerp.capabilities.json +0 -633
  53. package/integrations/definitions/capabilities/asana.capabilities.json +0 -279
  54. package/integrations/definitions/capabilities/calendly.capabilities.json +0 -385
  55. package/integrations/definitions/capabilities/docusign.capabilities.json +0 -314
  56. package/integrations/definitions/capabilities/fathom.capabilities.json +0 -238
  57. package/integrations/definitions/capabilities/github.capabilities.json +0 -585
  58. package/integrations/definitions/capabilities/hubspot.capabilities.json +0 -822
  59. package/integrations/definitions/capabilities/jira.capabilities.json +0 -391
  60. package/integrations/definitions/capabilities/klaviyo.capabilities.json +0 -503
  61. package/integrations/definitions/capabilities/linear.capabilities.json +0 -378
  62. package/integrations/definitions/capabilities/netsuite.capabilities.json +0 -535
  63. package/integrations/definitions/capabilities/notion.capabilities.json +0 -208
  64. package/integrations/definitions/capabilities/phone.capabilities.json +0 -511
  65. package/integrations/definitions/capabilities/pipedrive.capabilities.json +0 -430
  66. package/integrations/definitions/capabilities/quickbooks.capabilities.json +0 -635
  67. package/integrations/definitions/capabilities/salesforce.capabilities.json +0 -568
  68. package/integrations/definitions/capabilities/shopify.capabilities.json +0 -1128
  69. package/integrations/definitions/capabilities/slack.capabilities.json +0 -373
  70. package/integrations/definitions/capabilities/stripe.capabilities.json +0 -630
  71. package/integrations/definitions/capabilities/webflow.capabilities.json +0 -196
  72. package/integrations/definitions/capabilities/zendesk.capabilities.json +0 -422
  73. package/integrations/definitions/compile.js +0 -80
  74. package/integrations/definitions/config-form.js +0 -137
  75. package/integrations/definitions/examples/acme-erp-quickbooks.definition.json +0 -467
  76. package/integrations/definitions/examples/asana-slack.definition.json +0 -219
  77. package/integrations/definitions/examples/calendly-salesforce.definition.json +0 -459
  78. package/integrations/definitions/examples/docusign-salesforce.definition.json +0 -305
  79. package/integrations/definitions/examples/fathom-hubspot-notion.definition.json +0 -575
  80. package/integrations/definitions/examples/github-linear.definition.json +0 -322
  81. package/integrations/definitions/examples/hubspot-slack.definition.json +0 -427
  82. package/integrations/definitions/examples/klaviyo-hubspot.definition.json +0 -336
  83. package/integrations/definitions/examples/phone-hubspot.definition.json +0 -633
  84. package/integrations/definitions/examples/pipedrive-hubspot.definition.json +0 -136
  85. package/integrations/definitions/examples/pipedrive-phone.definition.json +0 -340
  86. package/integrations/definitions/examples/records/phone-hubspot.definition-version.json +0 -652
  87. package/integrations/definitions/examples/records/phone-hubspot.integration.json +0 -86
  88. package/integrations/definitions/examples/records/phone-hubspot.mappings.json +0 -39
  89. package/integrations/definitions/examples/records/phone-hubspot.workflow-run.json +0 -62
  90. package/integrations/definitions/examples/shopify-klaviyo.definition.json +0 -488
  91. package/integrations/definitions/examples/shopify-netsuite.definition.json +0 -622
  92. package/integrations/definitions/examples/stripe-quickbooks.definition.json +0 -476
  93. package/integrations/definitions/examples/webflow-hubspot-slack.definition.json +0 -262
  94. package/integrations/definitions/examples/zendesk-jira.definition.json +0 -604
  95. package/integrations/definitions/expressions.js +0 -229
  96. package/integrations/definitions/index.js +0 -45
  97. package/integrations/definitions/integration-runtime.js +0 -763
  98. package/integrations/definitions/interpreter.js +0 -104
  99. package/integrations/definitions/manifests.js +0 -177
  100. package/integrations/definitions/renderers/common.js +0 -67
  101. package/integrations/definitions/renderers/html.js +0 -129
  102. package/integrations/definitions/renderers/hubspot.js +0 -59
  103. package/integrations/definitions/renderers/preview.js +0 -154
  104. package/integrations/definitions/renderers/slack.js +0 -146
  105. package/integrations/definitions/repositories/definition-version-repository.js +0 -67
  106. package/integrations/definitions/repositories/workflow-run-repository.js +0 -80
  107. package/integrations/definitions/router.js +0 -170
  108. package/integrations/definitions/runtime.js +0 -268
  109. package/integrations/definitions/schema/capability-manifest.v0.1.schema.json +0 -549
  110. package/integrations/definitions/schema/installation.v0.1.schema.json +0 -130
  111. package/integrations/definitions/schema/integration-definition.v0.1.schema.json +0 -909
  112. package/integrations/definitions/schema/records.md +0 -105
  113. package/integrations/definitions/schema-check.js +0 -58
  114. package/integrations/definitions/scripts/check-manifests.js +0 -220
  115. package/integrations/definitions/scripts/validate.js +0 -66
  116. package/integrations/definitions/steps.js +0 -123
  117. package/integrations/definitions/sync-engine.js +0 -297
  118. package/integrations/definitions/tests/helpers-fake-crm.js +0 -49
  119. package/integrations/definitions/transforms.js +0 -91
  120. package/integrations/definitions/use-cases/definition-use-cases.js +0 -245
  121. package/integrations/definitions/validate.js +0 -436
  122. package/integrations/definitions/versioning.js +0 -176
  123. package/integrations/definitions/webhooks.js +0 -119
  124. package/integrations/integration-types.js +0 -64
  125. package/integrations/triggers.js +0 -244
  126. package/integrations/use-cases/run-trigger-tick.js +0 -155
  127. package/integrations/use-cases/run-trigger.js +0 -77
  128. package/prisma-postgresql/migrations/20261018000000_add_data_defined_integrations/migration.sql +0 -66
  129. package/prisma-postgresql/migrations/20261019000000_workflow_run_waits/migration.sql +0 -7
  130. package/prisma-postgresql/migrations/20261019120000_definition_workspace/migration.sql +0 -5
@@ -1,604 +0,0 @@
1
- {
2
- "$schema": "https://friggframework.org/schemas/integration-definition/v0.1.json",
3
- "schemaVersion": "0.1",
4
- "id": "zendesk-jira",
5
- "version": "2.0.0",
6
- "display": {
7
- "label": "Zendesk \u2194 Jira escalation",
8
- "description": "Escalate a ticket to a Jira issue from the ticket sidebar or with a tag, keep priority in step, and post Jira status changes back to the ticket as internal notes.",
9
- "category": "Support",
10
- "tags": [
11
- "helpdesk",
12
- "engineering",
13
- "escalation"
14
- ]
15
- },
16
- "modules": {
17
- "zendesk": {
18
- "module": "zendesk",
19
- "version": "^1.6"
20
- },
21
- "jira": {
22
- "module": "jira",
23
- "version": "^2.2"
24
- }
25
- },
26
- "settings": {
27
- "project": {
28
- "type": "option",
29
- "options": "jira.project",
30
- "label": "Jira project for escalations",
31
- "required": true
32
- },
33
- "issueType": {
34
- "type": "option",
35
- "options": "jira.issueType",
36
- "label": "Issue type",
37
- "required": true
38
- }
39
- },
40
- "syncs": [
41
- {
42
- "id": "escalations",
43
- "label": "Escalated tickets",
44
- "description": "Only tickets that have been escalated. The ticket's external_id holds the Jira key; summary and priority follow the ticket.",
45
- "source": "zendesk.ticket",
46
- "target": "jira.issue",
47
- "direction": "one_way",
48
- "identity": {
49
- "match": [
50
- {
51
- "source": "external_id",
52
- "target": "key",
53
- "key": "issueKey"
54
- }
55
- ],
56
- "onAmbiguous": "skip"
57
- },
58
- "mapping": [
59
- {
60
- "source": "subject",
61
- "target": "fields.summary",
62
- "transform": "trim"
63
- },
64
- {
65
- "source": "priority",
66
- "target": "fields.priority.name",
67
- "transform": "map_values",
68
- "options": {
69
- "values": {
70
- "urgent": "Highest",
71
- "high": "High",
72
- "normal": "Medium",
73
- "low": "Low"
74
- },
75
- "fallback": "Medium"
76
- }
77
- }
78
- ],
79
- "filter": "$.record.tags contains 'jira_escalated' || $.record.tags contains 'escalate_jira'",
80
- "backfill": {
81
- "trigger": "none"
82
- },
83
- "ongoing": {
84
- "mode": "webhook"
85
- },
86
- "default": "on"
87
- }
88
- ],
89
- "workflows": [
90
- {
91
- "id": "escalate-on-tag",
92
- "label": "Escalate when an agent adds the escalate_jira tag",
93
- "description": "Lets Zendesk triggers and macros escalate by tagging.",
94
- "purpose": "write",
95
- "default": "on",
96
- "trigger": {
97
- "type": "webhook",
98
- "module": "zendesk",
99
- "topic": "ticket.tagsChanged",
100
- "filter": "$.event.event.tags_added contains 'escalate_jira'"
101
- },
102
- "steps": [
103
- {
104
- "id": "existing",
105
- "use": "links.find",
106
- "with": {
107
- "sync": "escalations",
108
- "from": "zendesk",
109
- "id": "$.record.id"
110
- }
111
- },
112
- {
113
- "use": "stop",
114
- "when": "$.steps.existing != null",
115
- "with": {
116
- "reason": "Ticket is already escalated"
117
- }
118
- },
119
- {
120
- "id": "mapped",
121
- "use": "map",
122
- "with": {
123
- "sync": "escalations",
124
- "record": "$.record"
125
- }
126
- },
127
- {
128
- "id": "description",
129
- "use": "template",
130
- "with": {
131
- "id": "issue-description"
132
- }
133
- },
134
- {
135
- "id": "issue",
136
- "use": "jira.issue.create",
137
- "with": {
138
- "fields": {
139
- "project": {
140
- "key": "$.install.project"
141
- },
142
- "issuetype": {
143
- "id": "$.install.issueType"
144
- },
145
- "summary": "$.steps.mapped.fields.summary",
146
- "priority": {
147
- "name": "$.steps.mapped.fields.priority.name"
148
- },
149
- "description": "$.steps.description",
150
- "labels": [
151
- "zendesk",
152
- "zd-{{record.id}}"
153
- ]
154
- }
155
- }
156
- },
157
- {
158
- "use": "links.upsert",
159
- "with": {
160
- "sync": "escalations",
161
- "ids": {
162
- "zendesk": "$.record.id",
163
- "jira": "$.steps.issue.id"
164
- },
165
- "keys": {
166
- "issueKey": "$.steps.issue.key"
167
- }
168
- }
169
- },
170
- {
171
- "use": "jira.remoteLink.create",
172
- "with": {
173
- "issueIdOrKey": "$.steps.issue.key",
174
- "url": "https://{{install.accounts.zendesk.subdomain}}.zendesk.com/agent/tickets/{{record.id}}",
175
- "title": "Zendesk #{{record.id}}"
176
- }
177
- },
178
- {
179
- "use": "zendesk.ticket.update",
180
- "with": {
181
- "id": "$.record.id",
182
- "ticket": {
183
- "external_id": "$.steps.issue.key",
184
- "additional_tags": [
185
- "jira_escalated"
186
- ],
187
- "remove_tags": [
188
- "escalate_jira"
189
- ]
190
- }
191
- }
192
- },
193
- {
194
- "use": "zendesk.ticket.addComment",
195
- "with": {
196
- "id": "$.record.id",
197
- "public": false,
198
- "body": "Escalated to Jira {{steps.issue.key}}."
199
- }
200
- }
201
- ]
202
- },
203
- {
204
- "id": "escalate-from-sidebar",
205
- "label": "Escalate from the ticket sidebar",
206
- "purpose": "respond",
207
- "default": "on",
208
- "trigger": {
209
- "type": "userAction",
210
- "label": "Escalate to Jira",
211
- "from": "jira-panel"
212
- },
213
- "steps": [
214
- {
215
- "id": "existing",
216
- "use": "links.find",
217
- "with": {
218
- "sync": "escalations",
219
- "from": "zendesk",
220
- "id": "$.record.id"
221
- }
222
- },
223
- {
224
- "use": "stop",
225
- "when": "$.steps.existing != null",
226
- "with": {
227
- "reason": "Ticket is already escalated"
228
- }
229
- },
230
- {
231
- "id": "mapped",
232
- "use": "map",
233
- "with": {
234
- "sync": "escalations",
235
- "record": "$.record"
236
- }
237
- },
238
- {
239
- "id": "description",
240
- "use": "template",
241
- "with": {
242
- "id": "issue-description"
243
- }
244
- },
245
- {
246
- "id": "issue",
247
- "use": "jira.issue.create",
248
- "with": {
249
- "fields": {
250
- "project": {
251
- "key": "$.install.project"
252
- },
253
- "issuetype": {
254
- "id": "$.install.issueType"
255
- },
256
- "summary": "$.steps.mapped.fields.summary",
257
- "priority": {
258
- "name": "$.steps.mapped.fields.priority.name"
259
- },
260
- "description": "$.steps.description",
261
- "labels": [
262
- "zendesk",
263
- "zd-{{record.id}}"
264
- ]
265
- }
266
- }
267
- },
268
- {
269
- "use": "links.upsert",
270
- "with": {
271
- "sync": "escalations",
272
- "ids": {
273
- "zendesk": "$.record.id",
274
- "jira": "$.steps.issue.id"
275
- },
276
- "keys": {
277
- "issueKey": "$.steps.issue.key"
278
- }
279
- }
280
- },
281
- {
282
- "use": "jira.remoteLink.create",
283
- "with": {
284
- "issueIdOrKey": "$.steps.issue.key",
285
- "url": "https://{{install.accounts.zendesk.subdomain}}.zendesk.com/agent/tickets/{{record.id}}",
286
- "title": "Zendesk #{{record.id}}"
287
- }
288
- },
289
- {
290
- "use": "zendesk.ticket.update",
291
- "with": {
292
- "id": "$.record.id",
293
- "ticket": {
294
- "external_id": "$.steps.issue.key",
295
- "additional_tags": [
296
- "jira_escalated"
297
- ],
298
- "remove_tags": [
299
- "escalate_jira"
300
- ]
301
- }
302
- }
303
- },
304
- {
305
- "use": "zendesk.ticket.addComment",
306
- "with": {
307
- "id": "$.record.id",
308
- "public": false,
309
- "body": "Escalated to Jira {{steps.issue.key}}: {{event.input.reason}}"
310
- }
311
- }
312
- ]
313
- },
314
- {
315
- "id": "status-to-ticket",
316
- "label": "Jira status changes as internal notes",
317
- "purpose": "write",
318
- "default": "on",
319
- "settings": {
320
- "reopenOnDone": {
321
- "type": "boolean",
322
- "label": "Reopen the ticket when the issue is done",
323
- "default": true,
324
- "help": "So the agent can confirm the fix with the customer."
325
- }
326
- },
327
- "trigger": {
328
- "type": "webhook",
329
- "module": "jira",
330
- "topic": "issue.updated",
331
- "filter": "$.event.changelog.items[0].field == 'status'"
332
- },
333
- "steps": [
334
- {
335
- "id": "ticket",
336
- "use": "links.find",
337
- "with": {
338
- "sync": "escalations",
339
- "from": "jira",
340
- "id": "$.record.id"
341
- }
342
- },
343
- {
344
- "use": "stop",
345
- "when": "$.steps.ticket == null",
346
- "with": {
347
- "reason": "Issue was not escalated from Zendesk"
348
- }
349
- },
350
- {
351
- "id": "note",
352
- "use": "template",
353
- "with": {
354
- "id": "status-note"
355
- }
356
- },
357
- {
358
- "use": "zendesk.ticket.addComment",
359
- "with": {
360
- "id": "$.steps.ticket.zendesk",
361
- "body": "$.steps.note",
362
- "public": false
363
- }
364
- },
365
- {
366
- "use": "zendesk.ticket.update",
367
- "when": "$.settings.reopenOnDone == true && $.record.fields.status.statusCategory.key == 'done'",
368
- "with": {
369
- "id": "$.steps.ticket.zendesk",
370
- "ticket": {
371
- "status": "open"
372
- }
373
- }
374
- }
375
- ]
376
- },
377
- {
378
- "id": "refresh-jira-webhook",
379
- "label": "Keep the Jira webhook alive",
380
- "description": "Jira dynamic webhooks expire after 30 days; refresh weekly.",
381
- "purpose": "maintain",
382
- "default": "on",
383
- "trigger": {
384
- "type": "schedule",
385
- "cron": "17 4 * * 0",
386
- "timezone": "UTC"
387
- },
388
- "steps": [
389
- {
390
- "id": "jiraWebhookIds",
391
- "use": "foreach",
392
- "with": {
393
- "over": "$.install.runtime.installed.jiraHook.webhookRegistrationResult",
394
- "max": 10,
395
- "collect": "$.item.createdWebhookId"
396
- }
397
- },
398
- {
399
- "use": "jira.webhook.refresh",
400
- "with": {
401
- "webhookIds": "$.steps.jiraWebhookIds"
402
- }
403
- }
404
- ]
405
- }
406
- ],
407
- "queries": [
408
- {
409
- "id": "linked-issue",
410
- "description": "The Jira issue this ticket was escalated to, if any.",
411
- "steps": [
412
- {
413
- "id": "link",
414
- "use": "links.find",
415
- "with": {
416
- "sync": "escalations",
417
- "from": "zendesk",
418
- "id": "$.record.id"
419
- }
420
- },
421
- {
422
- "use": "stop",
423
- "when": "$.steps.link == null",
424
- "with": {
425
- "reason": "Not escalated"
426
- }
427
- },
428
- {
429
- "id": "issue",
430
- "use": "jira.issue.get",
431
- "with": {
432
- "issueIdOrKey": "$.steps.link.jira",
433
- "fields": [
434
- "summary",
435
- "status",
436
- "priority",
437
- "assignee",
438
- "updated"
439
- ]
440
- }
441
- }
442
- ],
443
- "returns": {
444
- "issue": "$.steps.issue",
445
- "site": "$.install.accounts.jira.site"
446
- }
447
- }
448
- ],
449
- "ui": [
450
- {
451
- "id": "jira-panel",
452
- "label": "Jira",
453
- "host": "zendesk",
454
- "placement": "ticket_sidebar",
455
- "objects": [
456
- "ticket"
457
- ],
458
- "data": {
459
- "query": "linked-issue"
460
- },
461
- "view": {
462
- "component": "Stack",
463
- "children": [
464
- {
465
- "component": "Heading",
466
- "props": {
467
- "text": "Jira escalation"
468
- }
469
- },
470
- {
471
- "component": "Stack",
472
- "when": "$.data.issue exists",
473
- "children": [
474
- {
475
- "component": "KeyValue",
476
- "props": {
477
- "items": [
478
- {
479
- "label": "Issue",
480
- "value": "{{data.issue.key}}"
481
- },
482
- {
483
- "label": "Priority",
484
- "value": "{{data.issue.fields.priority.name}}"
485
- },
486
- {
487
- "label": "Assignee",
488
- "value": "{{data.issue.fields.assignee.displayName | default: 'Unassigned'}}"
489
- },
490
- {
491
- "label": "Updated",
492
- "value": "{{data.issue.fields.updated | date}}"
493
- }
494
- ]
495
- }
496
- },
497
- {
498
- "component": "Badge",
499
- "props": {
500
- "text": "{{data.issue.fields.status.name}}",
501
- "tone": "{{data.issue.fields.status.statusCategory.key}}"
502
- }
503
- },
504
- {
505
- "component": "Button",
506
- "props": {
507
- "label": "Open in Jira",
508
- "action": {
509
- "type": "open_url",
510
- "url": "https://{{data.site}}/browse/{{data.issue.key}}"
511
- }
512
- }
513
- }
514
- ]
515
- },
516
- {
517
- "component": "Stack",
518
- "when": "!($.data.issue exists)",
519
- "children": [
520
- {
521
- "component": "Empty",
522
- "props": {
523
- "text": "Not escalated yet."
524
- }
525
- },
526
- {
527
- "component": "Button",
528
- "props": {
529
- "label": "Escalate to Jira",
530
- "style": "primary",
531
- "action": {
532
- "type": "userAction",
533
- "workflow": "escalate-from-sidebar",
534
- "input": {
535
- "reason": {
536
- "type": "text",
537
- "label": "What should engineering know?"
538
- }
539
- }
540
- }
541
- }
542
- }
543
- ]
544
- }
545
- ]
546
- }
547
- }
548
- ],
549
- "templates": {
550
- "issue-description": "Escalated from Zendesk ticket #{{record.id}} ({{record.priority}}, {{record.type | default: 'question'}}).\n\n{{record.description}}\n\nTicket: https://{{install.accounts.zendesk.subdomain}}.zendesk.com/agent/tickets/{{record.id}}",
551
- "status-note": "Jira {{record.key}} moved from \"{{event.changelog.items[0].fromString}}\" to \"{{event.changelog.items[0].toString}}\" (by {{event.user.displayName | default: 'Jira'}})."
552
- },
553
- "lifecycle": {
554
- "onInstall": [
555
- {
556
- "id": "zendeskHook",
557
- "use": "zendesk.webhook.create",
558
- "with": {
559
- "name": "Frigg: Jira escalation",
560
- "endpoint": "$.install.webhookUrls.zendesk",
561
- "subscriptions": [
562
- "zen:event-type:ticket.tags_changed",
563
- "zen:event-type:ticket.priority_changed"
564
- ]
565
- }
566
- },
567
- {
568
- "id": "jiraHook",
569
- "use": "jira.webhook.register",
570
- "with": {
571
- "url": "$.install.webhookUrls.jira",
572
- "events": [
573
- "jira:issue_updated"
574
- ],
575
- "jqlFilter": "labels = zendesk"
576
- }
577
- }
578
- ],
579
- "onUninstall": [
580
- {
581
- "use": "zendesk.webhook.delete",
582
- "with": {
583
- "id": "$.install.runtime.installed.zendeskHook.id"
584
- },
585
- "onError": "continue"
586
- },
587
- {
588
- "id": "jiraWebhookIds",
589
- "use": "foreach",
590
- "with": {
591
- "over": "$.install.runtime.installed.jiraHook.webhookRegistrationResult",
592
- "max": 10,
593
- "collect": "$.item.createdWebhookId"
594
- }
595
- },
596
- {
597
- "use": "jira.webhook.delete",
598
- "with": {
599
- "webhookIds": "$.steps.jiraWebhookIds"
600
- }
601
- }
602
- ]
603
- }
604
- }