@revenexx/studio-integrations 3.0.2 → 3.1.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.
- package/CHANGELOG.md +20 -0
- package/dist/module.json +1 -1
- package/dist/runtime/components/Integrations/CredentialCreateDialog.vue +3 -2
- package/dist/runtime/components/Integrations/CredentialDetailDialog.vue +14 -5
- package/dist/runtime/components/Integrations/NodeInspector.vue +1 -1
- package/dist/runtime/components/Integrations/TemplateFlowPreview.vue +1 -1
- package/dist/runtime/components/Integrations/TemplateInstallStep.vue +28 -10
- package/dist/runtime/composables/useIntegrationsAudit.d.ts +7 -2
- package/dist/runtime/composables/useIntegrationsCredentials.d.ts +18 -3
- package/dist/runtime/composables/useIntegrationsCredentials.js +11 -6
- package/dist/runtime/composables/useIntegrationsRuns.d.ts +1 -1
- package/dist/runtime/composables/useIntegrationsRuns.js +8 -4
- package/dist/runtime/composables/useIntegrationsSchedules.js +6 -3
- package/dist/runtime/composables/useIntegrationsSecrets.d.ts +6 -5
- package/dist/runtime/composables/useIntegrationsSecrets.js +3 -2
- package/dist/runtime/composables/useIntegrationsTemplates.d.ts +1 -1
- package/dist/runtime/composables/useIntegrationsTemplates.js +5 -6
- package/dist/runtime/composables/useIntegrationsWorkflows.js +4 -4
- package/dist/runtime/composables/useNodeRetirement.js +5 -5
- package/dist/runtime/i18n/messages/de.json +18 -4
- package/dist/runtime/i18n/messages/en.json +18 -4
- package/dist/runtime/pages/integrations/audit.vue +43 -9
- package/dist/runtime/pages/integrations/credentials.vue +3 -2
- package/dist/runtime/pages/integrations/runs.vue +3 -1
- package/dist/runtime/pages/integrations/secrets.vue +3 -1
- package/dist/runtime/pages/integrations/templates/[slug].vue +1 -1
- package/dist/runtime/types/integrations.d.ts +9 -6
- package/dist/runtime/utils/apiEnvelope.d.ts +15 -5
- package/dist/runtime/utils/apiEnvelope.js +11 -8
- package/dist/runtime/utils/credentialTest.d.ts +17 -0
- package/dist/runtime/utils/credentialTest.js +14 -0
- package/dist/runtime/utils/runEnvelope.d.ts +22 -24
- package/dist/runtime/utils/runEnvelope.js +2 -4
- package/package.json +1 -1
- package/dist/runtime/data/integrationWorkflowSamples.d.ts +0 -18
- package/dist/runtime/data/integrationWorkflowSamples.js +0 -318
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
export const SAMPLE_WORKFLOWS = [
|
|
2
|
-
// -----------------------------------------------------------------------
|
|
3
|
-
// 1) Manual REST call — mirrors manual-rest-call.json
|
|
4
|
-
// -----------------------------------------------------------------------
|
|
5
|
-
{
|
|
6
|
-
id: 1,
|
|
7
|
-
name: "Manual REST GET",
|
|
8
|
-
description: "User-triggered call to a REST endpoint configured via workflow variables.",
|
|
9
|
-
blob_definition_version: "v0-draft",
|
|
10
|
-
active: true,
|
|
11
|
-
revision: 4,
|
|
12
|
-
created_at: "2026-04-12T08:00:00Z",
|
|
13
|
-
updated_at: "2026-05-08T02:14:11Z",
|
|
14
|
-
blob: {
|
|
15
|
-
nodeManifestVersion: "v0-draft",
|
|
16
|
-
name: { en: "Manual REST GET", de: "Manueller REST-Abruf" },
|
|
17
|
-
description: {
|
|
18
|
-
en: "User-triggered call to a REST endpoint configured via workflow variables.",
|
|
19
|
-
de: "Benutzerausgel\xF6ster Aufruf eines REST-Endpunkts, konfiguriert \xFCber Workflow-Variablen."
|
|
20
|
-
},
|
|
21
|
-
variables: {
|
|
22
|
-
endpoint: {
|
|
23
|
-
type: "string",
|
|
24
|
-
default: "https://api.example.com/health",
|
|
25
|
-
description: { en: "Target URL", de: "Ziel-URL" }
|
|
26
|
-
},
|
|
27
|
-
timeoutSeconds: { type: "number", default: 30 }
|
|
28
|
-
},
|
|
29
|
-
triggers: [
|
|
30
|
-
{
|
|
31
|
-
id: "manual-1",
|
|
32
|
-
type: "manual",
|
|
33
|
-
name: { en: "Run now", de: "Jetzt ausf\xFChren" },
|
|
34
|
-
config: {}
|
|
35
|
-
}
|
|
36
|
-
],
|
|
37
|
-
nodes: [
|
|
38
|
-
{
|
|
39
|
-
id: "fetch",
|
|
40
|
-
nodeSlug: "rest-get",
|
|
41
|
-
nodeVersion: "1.0.0",
|
|
42
|
-
config: {
|
|
43
|
-
url: "${{ vars.endpoint }}",
|
|
44
|
-
timeout: "${{ vars.timeoutSeconds }}"
|
|
45
|
-
},
|
|
46
|
-
position: { x: 220, y: 100 },
|
|
47
|
-
retry: { maxAttempts: 3, backoffSeconds: 2, strategy: "exponential" }
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
edges: [
|
|
51
|
-
{ id: "e1", from: { nodeId: "manual-1", output: "default" }, to: { nodeId: "fetch" } }
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
// -----------------------------------------------------------------------
|
|
56
|
-
// 2) Webhook receiver with error routing — mirrors webhook-with-error-routing.json
|
|
57
|
-
// -----------------------------------------------------------------------
|
|
58
|
-
{
|
|
59
|
-
id: 2,
|
|
60
|
-
name: "Webhook order receiver",
|
|
61
|
-
description: "Receives Stripe order webhooks, validates the payload, and forwards to the fulfillment API. Errors flow into a notification node via the reserved error output.",
|
|
62
|
-
blob_definition_version: "v0-draft",
|
|
63
|
-
active: true,
|
|
64
|
-
revision: 3,
|
|
65
|
-
created_at: "2026-04-22T11:30:00Z",
|
|
66
|
-
updated_at: "2026-05-09T15:02:33Z",
|
|
67
|
-
blob: {
|
|
68
|
-
nodeManifestVersion: "v0-draft",
|
|
69
|
-
name: "Webhook order receiver",
|
|
70
|
-
description: "Receives Stripe order webhooks, validates the payload, and forwards to the fulfillment API. Errors flow into a notification node via the reserved error output.",
|
|
71
|
-
triggers: [
|
|
72
|
-
{
|
|
73
|
-
id: "stripe-hook",
|
|
74
|
-
type: "webhook",
|
|
75
|
-
name: "Stripe order created",
|
|
76
|
-
config: {
|
|
77
|
-
path: "/webhooks/stripe/orders",
|
|
78
|
-
method: "POST",
|
|
79
|
-
secretRef: "STRIPE_WEBHOOK_SECRET"
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
],
|
|
83
|
-
nodes: [
|
|
84
|
-
{
|
|
85
|
-
id: "validate",
|
|
86
|
-
nodeSlug: "control-if",
|
|
87
|
-
nodeVersion: "1.0.0",
|
|
88
|
-
config: { condition: "${{ trigger.payload.type }}" },
|
|
89
|
-
position: { x: 260, y: 80 }
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
id: "forward",
|
|
93
|
-
nodeSlug: "rest-get",
|
|
94
|
-
nodeVersion: "1.0.0",
|
|
95
|
-
config: {
|
|
96
|
-
url: "https://fulfillment.internal/orders",
|
|
97
|
-
"bearer-token": "FULFILLMENT_API_TOKEN"
|
|
98
|
-
},
|
|
99
|
-
position: { x: 520, y: 0 },
|
|
100
|
-
retry: { maxAttempts: 4, backoffSeconds: 5, strategy: "linear" }
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
id: "notify-failure",
|
|
104
|
-
nodeSlug: "rest-get",
|
|
105
|
-
nodeVersion: "1.0.0",
|
|
106
|
-
config: { url: "https://alerts.internal/notify" },
|
|
107
|
-
position: { x: 760, y: 200 }
|
|
108
|
-
}
|
|
109
|
-
],
|
|
110
|
-
edges: [
|
|
111
|
-
{ id: "e1", from: { nodeId: "stripe-hook", output: "default" }, to: { nodeId: "validate" } },
|
|
112
|
-
{ id: "e2", from: { nodeId: "validate", output: "true" }, to: { nodeId: "forward" } },
|
|
113
|
-
{ id: "e3", from: { nodeId: "forward", output: "error" }, to: { nodeId: "notify-failure" } }
|
|
114
|
-
]
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
-
// -----------------------------------------------------------------------
|
|
118
|
-
// 3) Scheduled ETL with branching — mirrors scheduled-with-branching.json
|
|
119
|
-
// -----------------------------------------------------------------------
|
|
120
|
-
{
|
|
121
|
-
id: 3,
|
|
122
|
-
name: "Daily ETL with branching",
|
|
123
|
-
description: "Pulls orders from upstream, branches per status with control-switch.",
|
|
124
|
-
blob_definition_version: "v0-draft",
|
|
125
|
-
active: true,
|
|
126
|
-
revision: 7,
|
|
127
|
-
created_at: "2026-04-12T08:00:00Z",
|
|
128
|
-
updated_at: "2026-05-08T02:14:11Z",
|
|
129
|
-
blob: {
|
|
130
|
-
nodeManifestVersion: "v0-draft",
|
|
131
|
-
name: "Daily ETL with branching",
|
|
132
|
-
triggers: [
|
|
133
|
-
{
|
|
134
|
-
id: "nightly",
|
|
135
|
-
type: "schedule",
|
|
136
|
-
config: { cron: "0 3 * * *", timezone: "Europe/Berlin" }
|
|
137
|
-
}
|
|
138
|
-
],
|
|
139
|
-
variables: {
|
|
140
|
-
source: { type: "string", default: "primary" }
|
|
141
|
-
},
|
|
142
|
-
nodes: [
|
|
143
|
-
{
|
|
144
|
-
id: "fetch",
|
|
145
|
-
nodeSlug: "rest-get",
|
|
146
|
-
nodeVersion: "1.0.0",
|
|
147
|
-
config: { url: "https://api.example.com/orders?source=${{ vars.source }}" },
|
|
148
|
-
position: { x: 220, y: 80 },
|
|
149
|
-
retry: { maxAttempts: 5, backoffSeconds: 1, strategy: "exponential" }
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
id: "route",
|
|
153
|
-
nodeSlug: "control-switch",
|
|
154
|
-
nodeVersion: "1.0.0",
|
|
155
|
-
config: {
|
|
156
|
-
expression: "${{ nodes.fetch.outputs.success }}",
|
|
157
|
-
cases: ["paid", "pending", "failed"]
|
|
158
|
-
},
|
|
159
|
-
position: { x: 480, y: 80 }
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
id: "ship",
|
|
163
|
-
nodeSlug: "rest-get",
|
|
164
|
-
nodeVersion: "1.0.0",
|
|
165
|
-
config: { url: "https://api.example.com/ship" },
|
|
166
|
-
position: { x: 760, y: 0 }
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
id: "alert",
|
|
170
|
-
nodeSlug: "rest-get",
|
|
171
|
-
nodeVersion: "1.0.0",
|
|
172
|
-
config: { url: "https://api.example.com/alert" },
|
|
173
|
-
position: { x: 760, y: 200 }
|
|
174
|
-
}
|
|
175
|
-
],
|
|
176
|
-
edges: [
|
|
177
|
-
{ id: "e1", from: { nodeId: "nightly", output: "default" }, to: { nodeId: "fetch" } },
|
|
178
|
-
{ id: "e2", from: { nodeId: "fetch", output: "success" }, to: { nodeId: "route" } },
|
|
179
|
-
{ id: "e3", from: { nodeId: "route", output: "paid" }, to: { nodeId: "ship" } },
|
|
180
|
-
{ id: "e4", from: { nodeId: "fetch", output: "error" }, to: { nodeId: "alert" } }
|
|
181
|
-
]
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
// -----------------------------------------------------------------------
|
|
185
|
-
// 4) Empty draft — exists to demonstrate the "Draft" status group
|
|
186
|
-
// -----------------------------------------------------------------------
|
|
187
|
-
{
|
|
188
|
-
id: 4,
|
|
189
|
-
name: "Empty draft",
|
|
190
|
-
description: "No nodes yet. Drag from the palette to start.",
|
|
191
|
-
blob_definition_version: "v0-draft",
|
|
192
|
-
active: false,
|
|
193
|
-
revision: 0,
|
|
194
|
-
created_at: "2026-05-10T16:00:00Z",
|
|
195
|
-
updated_at: "2026-05-10T16:00:00Z",
|
|
196
|
-
blob: {
|
|
197
|
-
nodeManifestVersion: "v0-draft",
|
|
198
|
-
name: "Empty draft",
|
|
199
|
-
triggers: [
|
|
200
|
-
{ id: "trg-1", type: "manual", config: {} }
|
|
201
|
-
],
|
|
202
|
-
nodes: [],
|
|
203
|
-
edges: []
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
];
|
|
207
|
-
export const SAMPLE_SECRETS = [
|
|
208
|
-
{ key: "STRIPE_WEBHOOK_SECRET", created_at: "2026-04-01T08:00:00Z", updated_at: "2026-04-01T08:00:00Z" },
|
|
209
|
-
{ key: "FULFILLMENT_API_TOKEN", created_at: "2026-04-15T11:30:00Z", updated_at: "2026-04-15T11:30:00Z" },
|
|
210
|
-
{ key: "ERP_API_KEY", created_at: "2026-03-12T09:14:00Z", updated_at: "2026-05-01T14:00:00Z" },
|
|
211
|
-
{ key: "SLACK_WEBHOOK_URL", created_at: "2026-02-04T16:00:00Z", updated_at: "2026-02-04T16:00:00Z" },
|
|
212
|
-
{ key: "HUBSPOT_ACCESS_TOKEN", created_at: "2026-04-22T12:00:00Z", updated_at: "2026-04-22T12:00:00Z" }
|
|
213
|
-
];
|
|
214
|
-
export const CONNECTION_TEMPLATES = [
|
|
215
|
-
{
|
|
216
|
-
vendor: "shopify",
|
|
217
|
-
name: "Shopify",
|
|
218
|
-
category: "shop",
|
|
219
|
-
icon: "ShoppingBag",
|
|
220
|
-
description: "Ingest orders, customers and products from a Shopify store.",
|
|
221
|
-
requiredSecrets: [
|
|
222
|
-
{ key: "SHOPIFY_ACCESS_TOKEN", label: "Admin API token", sensitive: true },
|
|
223
|
-
{ key: "SHOPIFY_WEBHOOK_SECRET", label: "Webhook signing secret", sensitive: true }
|
|
224
|
-
]
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
vendor: "sap-business-one",
|
|
228
|
-
name: "SAP Business One",
|
|
229
|
-
category: "erp",
|
|
230
|
-
icon: "Server",
|
|
231
|
-
description: "Sync products, prices and orders with SAP Business One.",
|
|
232
|
-
requiredSecrets: [
|
|
233
|
-
{ key: "SAP_B1_USER", label: "Service account", sensitive: false },
|
|
234
|
-
{ key: "SAP_B1_PASSWORD", label: "Service password", sensitive: true }
|
|
235
|
-
]
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
vendor: "hubspot",
|
|
239
|
-
name: "HubSpot",
|
|
240
|
-
category: "crm",
|
|
241
|
-
icon: "Contact",
|
|
242
|
-
description: "Two-way sync for contacts and deals.",
|
|
243
|
-
requiredSecrets: [{ key: "HUBSPOT_ACCESS_TOKEN", label: "Private app token", sensitive: true }]
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
vendor: "akeneo",
|
|
247
|
-
name: "Akeneo PIM",
|
|
248
|
-
category: "pim",
|
|
249
|
-
icon: "Layers",
|
|
250
|
-
description: "Pull product data and enrichment from Akeneo.",
|
|
251
|
-
requiredSecrets: [
|
|
252
|
-
{ key: "AKENEO_CLIENT_ID", label: "Client ID", sensitive: false },
|
|
253
|
-
{ key: "AKENEO_CLIENT_SECRET", label: "Client secret", sensitive: true }
|
|
254
|
-
]
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
vendor: "slack",
|
|
258
|
-
name: "Slack",
|
|
259
|
-
category: "other",
|
|
260
|
-
icon: "MessageSquare",
|
|
261
|
-
description: "Post notifications and alerts to Slack channels.",
|
|
262
|
-
requiredSecrets: [{ key: "SLACK_WEBHOOK_URL", label: "Incoming webhook URL", sensitive: true }]
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
vendor: "stripe",
|
|
266
|
-
name: "Stripe",
|
|
267
|
-
category: "other",
|
|
268
|
-
icon: "CreditCard",
|
|
269
|
-
description: "Receive payment events from Stripe.",
|
|
270
|
-
requiredSecrets: [{ key: "STRIPE_WEBHOOK_SECRET", label: "Webhook signing secret", sensitive: true }]
|
|
271
|
-
}
|
|
272
|
-
];
|
|
273
|
-
export const SAMPLE_CONNECTIONS = [
|
|
274
|
-
{
|
|
275
|
-
id: "conn-stripe-1",
|
|
276
|
-
vendor: "stripe",
|
|
277
|
-
name: "Stripe \xB7 live",
|
|
278
|
-
status: "connected",
|
|
279
|
-
lastVerifiedAt: "2026-05-10T07:14:11Z",
|
|
280
|
-
secretRefs: ["STRIPE_WEBHOOK_SECRET"],
|
|
281
|
-
config: {},
|
|
282
|
-
createdAt: "2026-04-15T11:30:00Z",
|
|
283
|
-
updatedAt: "2026-05-09T15:02:33Z"
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
id: "conn-sap-1",
|
|
287
|
-
vendor: "sap-business-one",
|
|
288
|
-
name: "SAP Business One \xB7 production",
|
|
289
|
-
status: "misconfigured",
|
|
290
|
-
lastVerifiedAt: "2026-05-04T10:00:00Z",
|
|
291
|
-
secretRefs: [],
|
|
292
|
-
config: { host: "sap.acme.test" },
|
|
293
|
-
createdAt: "2026-04-22T11:00:00Z",
|
|
294
|
-
updatedAt: "2026-05-04T10:00:00Z"
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
id: "conn-hubspot-1",
|
|
298
|
-
vendor: "hubspot",
|
|
299
|
-
name: "HubSpot \xB7 Sales",
|
|
300
|
-
status: "connected",
|
|
301
|
-
lastVerifiedAt: "2026-05-10T08:00:00Z",
|
|
302
|
-
secretRefs: ["HUBSPOT_ACCESS_TOKEN"],
|
|
303
|
-
config: { portalId: "23456789" },
|
|
304
|
-
createdAt: "2026-04-22T12:00:00Z",
|
|
305
|
-
updatedAt: "2026-04-22T12:00:00Z"
|
|
306
|
-
},
|
|
307
|
-
{
|
|
308
|
-
id: "conn-slack-1",
|
|
309
|
-
vendor: "slack",
|
|
310
|
-
name: "Slack \xB7 #ops",
|
|
311
|
-
status: "connected",
|
|
312
|
-
lastVerifiedAt: "2026-05-10T09:00:00Z",
|
|
313
|
-
secretRefs: ["SLACK_WEBHOOK_URL"],
|
|
314
|
-
config: { channel: "#ops" },
|
|
315
|
-
createdAt: "2026-02-04T16:00:00Z",
|
|
316
|
-
updatedAt: "2026-02-04T16:00:00Z"
|
|
317
|
-
}
|
|
318
|
-
];
|