@epilot/sdk 2.0.0-beta.2 → 2.0.0-beta.4

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 (196) hide show
  1. package/README.md +1 -0
  2. package/definitions/access-token-runtime.json +1 -0
  3. package/definitions/access-token.json +663 -0
  4. package/definitions/address-runtime.json +1 -0
  5. package/definitions/address-suggestions-runtime.json +1 -0
  6. package/definitions/address-suggestions.json +582 -0
  7. package/definitions/address.json +578 -0
  8. package/definitions/ai-agents-runtime.json +1 -0
  9. package/definitions/ai-agents.json +1711 -0
  10. package/definitions/app-runtime.json +1 -0
  11. package/definitions/app.json +4443 -0
  12. package/definitions/audit-logs-runtime.json +1 -0
  13. package/definitions/audit-logs.json +305 -0
  14. package/definitions/automation-runtime.json +1 -0
  15. package/definitions/automation.json +4850 -0
  16. package/definitions/billing-runtime.json +1 -0
  17. package/definitions/billing.json +837 -0
  18. package/definitions/blueprint-manifest-runtime.json +1 -0
  19. package/definitions/blueprint-manifest.json +3376 -0
  20. package/definitions/consent-runtime.json +1 -0
  21. package/definitions/consent.json +344 -0
  22. package/definitions/customer-portal-runtime.json +1 -0
  23. package/definitions/customer-portal.json +15000 -0
  24. package/definitions/dashboard-runtime.json +1 -0
  25. package/definitions/dashboard.json +484 -0
  26. package/definitions/data-management-runtime.json +1 -0
  27. package/definitions/data-management.json +962 -0
  28. package/definitions/deduplication-runtime.json +1 -0
  29. package/definitions/deduplication.json +183 -0
  30. package/definitions/design-runtime.json +1 -0
  31. package/definitions/design.json +1423 -0
  32. package/definitions/document-runtime.json +1 -0
  33. package/definitions/document.json +758 -0
  34. package/definitions/email-settings-runtime.json +1 -0
  35. package/definitions/email-settings.json +2627 -0
  36. package/definitions/email-template-runtime.json +1 -0
  37. package/definitions/email-template.json +1419 -0
  38. package/definitions/entity-mapping-runtime.json +1 -0
  39. package/definitions/entity-mapping.json +1642 -0
  40. package/definitions/entity-runtime.json +1 -0
  41. package/definitions/entity.json +10074 -0
  42. package/definitions/environments-runtime.json +1 -0
  43. package/definitions/environments.json +363 -0
  44. package/definitions/erp-integration-runtime.json +1 -0
  45. package/definitions/erp-integration.json +5845 -0
  46. package/definitions/event-catalog-runtime.json +1 -0
  47. package/definitions/event-catalog.json +1051 -0
  48. package/definitions/file-runtime.json +1 -0
  49. package/definitions/file.json +2842 -0
  50. package/definitions/iban-runtime.json +1 -0
  51. package/definitions/iban.json +132 -0
  52. package/definitions/journey-runtime.json +1 -0
  53. package/definitions/journey.json +2341 -0
  54. package/definitions/kanban-runtime.json +1 -0
  55. package/definitions/kanban.json +929 -0
  56. package/definitions/message-runtime.json +1 -0
  57. package/definitions/message.json +2660 -0
  58. package/definitions/metering-runtime.json +1 -0
  59. package/definitions/metering.json +2321 -0
  60. package/definitions/notes-runtime.json +1 -0
  61. package/definitions/notes.json +1531 -0
  62. package/definitions/notification-runtime.json +1 -0
  63. package/definitions/notification.json +1425 -0
  64. package/definitions/organization-runtime.json +1 -0
  65. package/definitions/organization.json +629 -0
  66. package/definitions/partner-directory-runtime.json +1 -0
  67. package/definitions/partner-directory.json +1718 -0
  68. package/definitions/permissions-runtime.json +1 -0
  69. package/definitions/permissions.json +1480 -0
  70. package/definitions/pricing-runtime.json +1 -0
  71. package/definitions/pricing-tier-runtime.json +1 -0
  72. package/definitions/pricing-tier.json +105 -0
  73. package/definitions/pricing.json +9884 -0
  74. package/definitions/purpose-runtime.json +1 -0
  75. package/definitions/purpose.json +524 -0
  76. package/definitions/sandbox-runtime.json +1 -0
  77. package/definitions/sandbox.json +453 -0
  78. package/definitions/submission-runtime.json +1 -0
  79. package/definitions/submission.json +313 -0
  80. package/definitions/targeting-runtime.json +1 -0
  81. package/definitions/targeting.json +1474 -0
  82. package/definitions/template-variables-runtime.json +1 -0
  83. package/definitions/template-variables.json +1408 -0
  84. package/definitions/user-runtime.json +1 -0
  85. package/definitions/user.json +2408 -0
  86. package/definitions/validation-rules-runtime.json +1 -0
  87. package/definitions/validation-rules.json +1491 -0
  88. package/definitions/webhooks-runtime.json +1 -0
  89. package/definitions/webhooks.json +1525 -0
  90. package/definitions/workflow-definition-runtime.json +1 -0
  91. package/definitions/workflow-definition.json +3417 -0
  92. package/definitions/workflow-runtime.json +1 -0
  93. package/definitions/workflow.json +4106 -0
  94. package/dist/apis/access-token.cjs +13 -84
  95. package/dist/apis/access-token.js +11 -82
  96. package/dist/apis/address-suggestions.cjs +13 -127
  97. package/dist/apis/address-suggestions.js +11 -125
  98. package/dist/apis/address.cjs +13 -79
  99. package/dist/apis/address.js +11 -77
  100. package/dist/apis/ai-agents.cjs +13 -210
  101. package/dist/apis/ai-agents.js +11 -208
  102. package/dist/apis/app.cjs +13 -568
  103. package/dist/apis/app.js +11 -566
  104. package/dist/apis/audit-logs.cjs +13 -50
  105. package/dist/apis/audit-logs.js +11 -48
  106. package/dist/apis/automation.cjs +13 -277
  107. package/dist/apis/automation.js +11 -275
  108. package/dist/apis/billing.cjs +13 -170
  109. package/dist/apis/billing.js +11 -168
  110. package/dist/apis/blueprint-manifest.cjs +13 -499
  111. package/dist/apis/blueprint-manifest.js +11 -497
  112. package/dist/apis/consent.cjs +13 -79
  113. package/dist/apis/consent.js +11 -77
  114. package/dist/apis/customer-portal.cjs +13 -2247
  115. package/dist/apis/customer-portal.js +11 -2245
  116. package/dist/apis/dashboard.cjs +41 -0
  117. package/dist/apis/dashboard.d.cts +18 -0
  118. package/dist/apis/dashboard.d.ts +18 -0
  119. package/dist/apis/dashboard.js +41 -0
  120. package/dist/apis/data-management.cjs +13 -235
  121. package/dist/apis/data-management.js +11 -233
  122. package/dist/apis/deduplication.cjs +13 -37
  123. package/dist/apis/deduplication.js +11 -35
  124. package/dist/apis/design.cjs +13 -214
  125. package/dist/apis/design.js +11 -212
  126. package/dist/apis/document.cjs +13 -73
  127. package/dist/apis/document.js +11 -71
  128. package/dist/apis/email-settings.cjs +13 -528
  129. package/dist/apis/email-settings.js +11 -526
  130. package/dist/apis/email-template.cjs +13 -117
  131. package/dist/apis/email-template.js +11 -115
  132. package/dist/apis/entity-mapping.cjs +13 -210
  133. package/dist/apis/entity-mapping.js +11 -208
  134. package/dist/apis/entity.cjs +13 -1595
  135. package/dist/apis/entity.js +11 -1593
  136. package/dist/apis/environments.cjs +13 -66
  137. package/dist/apis/environments.js +11 -64
  138. package/dist/apis/erp-integration.cjs +13 -581
  139. package/dist/apis/erp-integration.js +11 -579
  140. package/dist/apis/event-catalog.cjs +13 -125
  141. package/dist/apis/event-catalog.js +11 -123
  142. package/dist/apis/file.cjs +13 -568
  143. package/dist/apis/file.js +11 -566
  144. package/dist/apis/iban.cjs +13 -38
  145. package/dist/apis/iban.js +11 -36
  146. package/dist/apis/journey.cjs +13 -265
  147. package/dist/apis/journey.js +11 -263
  148. package/dist/apis/kanban.cjs +13 -159
  149. package/dist/apis/kanban.js +11 -157
  150. package/dist/apis/message.cjs +13 -668
  151. package/dist/apis/message.js +11 -666
  152. package/dist/apis/metering.cjs +13 -394
  153. package/dist/apis/metering.js +11 -392
  154. package/dist/apis/notes.cjs +13 -214
  155. package/dist/apis/notes.js +11 -212
  156. package/dist/apis/notification.cjs +13 -232
  157. package/dist/apis/notification.js +11 -230
  158. package/dist/apis/organization.cjs +13 -113
  159. package/dist/apis/organization.js +11 -111
  160. package/dist/apis/partner-directory.cjs +13 -277
  161. package/dist/apis/partner-directory.js +11 -275
  162. package/dist/apis/permissions.cjs +13 -173
  163. package/dist/apis/permissions.js +11 -171
  164. package/dist/apis/pricing-tier.cjs +14 -32
  165. package/dist/apis/pricing-tier.js +11 -29
  166. package/dist/apis/pricing.cjs +13 -434
  167. package/dist/apis/pricing.js +11 -432
  168. package/dist/apis/purpose.cjs +13 -175
  169. package/dist/apis/purpose.js +11 -173
  170. package/dist/apis/sandbox.cjs +13 -95
  171. package/dist/apis/sandbox.js +11 -93
  172. package/dist/apis/submission.cjs +13 -50
  173. package/dist/apis/submission.js +11 -48
  174. package/dist/apis/targeting.cjs +13 -270
  175. package/dist/apis/targeting.js +11 -268
  176. package/dist/apis/template-variables.cjs +13 -154
  177. package/dist/apis/template-variables.js +11 -152
  178. package/dist/apis/user.cjs +13 -483
  179. package/dist/apis/user.js +11 -481
  180. package/dist/apis/validation-rules.cjs +13 -115
  181. package/dist/apis/validation-rules.js +11 -113
  182. package/dist/apis/webhooks.cjs +13 -247
  183. package/dist/apis/webhooks.js +11 -245
  184. package/dist/apis/workflow-definition.cjs +13 -337
  185. package/dist/apis/workflow-definition.js +11 -335
  186. package/dist/apis/workflow.cjs +13 -397
  187. package/dist/apis/workflow.js +11 -395
  188. package/dist/{chunk-D7ICL3AM.cjs → chunk-5LXNSDG2.cjs} +51 -2
  189. package/dist/{chunk-DGCGLG7G.js → chunk-QMQNMCOC.js} +49 -0
  190. package/dist/dashboard.d-AE3RQ6zo.d.cts +440 -0
  191. package/dist/dashboard.d-AE3RQ6zo.d.ts +440 -0
  192. package/dist/index.cjs +60 -53
  193. package/dist/index.d.cts +70 -68
  194. package/dist/index.d.ts +70 -68
  195. package/dist/index.js +57 -50
  196. package/package.json +55 -3
@@ -0,0 +1,1425 @@
1
+ {
2
+ "openapi": "3.0.3",
3
+ "info": {
4
+ "title": "Notification API",
5
+ "version": "1.7.0",
6
+ "description": "Notification API for epilot 360"
7
+ },
8
+ "security": [
9
+ {
10
+ "EpilotAuth": []
11
+ },
12
+ {
13
+ "EpilotOrg": []
14
+ }
15
+ ],
16
+ "tags": [
17
+ {
18
+ "name": "Notification",
19
+ "description": "Notification"
20
+ },
21
+ {
22
+ "name": "Template",
23
+ "description": "Notification Template"
24
+ }
25
+ ],
26
+ "paths": {
27
+ "/v2/notification/notifications": {
28
+ "get": {
29
+ "operationId": "getNotificationsV2",
30
+ "summary": "getNotificationsV2",
31
+ "description": "Get notifications items. These items may eventually contain entities within their payload, which can be hydrated by the client if desired by calling the Entity API directly.",
32
+ "tags": [
33
+ "Notification"
34
+ ],
35
+ "parameters": [
36
+ {
37
+ "in": "query",
38
+ "name": "cursor",
39
+ "schema": {
40
+ "type": "string"
41
+ },
42
+ "required": false,
43
+ "description": "Base64 encoded cursor to be used for pagination"
44
+ },
45
+ {
46
+ "in": "query",
47
+ "name": "after_id",
48
+ "schema": {
49
+ "type": "integer"
50
+ }
51
+ },
52
+ {
53
+ "in": "query",
54
+ "name": "limit",
55
+ "schema": {
56
+ "type": "integer"
57
+ },
58
+ "description": "The numbers of items to return"
59
+ }
60
+ ],
61
+ "responses": {
62
+ "200": {
63
+ "description": "Success",
64
+ "content": {
65
+ "application/json": {
66
+ "schema": {
67
+ "type": "object",
68
+ "properties": {
69
+ "cursor": {
70
+ "type": "string",
71
+ "example": "eyJjcmVhd",
72
+ "description": "Base64 encoded cursor to be used for pagination"
73
+ },
74
+ "total": {
75
+ "type": "integer",
76
+ "example": 1
77
+ },
78
+ "total_unread": {
79
+ "type": "integer",
80
+ "example": 1
81
+ },
82
+ "results": {
83
+ "type": "array",
84
+ "items": {
85
+ "$ref": "#/components/schemas/NotificationItem"
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ },
96
+ "/v1/notification/notifications": {
97
+ "post": {
98
+ "operationId": "createNotification",
99
+ "summary": "createNotification",
100
+ "description": "Create a message that can be displayed in the notification panel.",
101
+ "tags": [
102
+ "Notification"
103
+ ],
104
+ "requestBody": {
105
+ "content": {
106
+ "application/json": {
107
+ "schema": {
108
+ "$ref": "#/components/schemas/Notification"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "responses": {
114
+ "202": {
115
+ "description": "Success"
116
+ }
117
+ }
118
+ },
119
+ "get": {
120
+ "operationId": "getNotifications",
121
+ "summary": "getNotifications",
122
+ "description": "Get notifications",
123
+ "tags": [
124
+ "Notification"
125
+ ],
126
+ "parameters": [
127
+ {
128
+ "in": "query",
129
+ "name": "after_id",
130
+ "schema": {
131
+ "type": "integer"
132
+ }
133
+ },
134
+ {
135
+ "in": "query",
136
+ "name": "limit",
137
+ "schema": {
138
+ "type": "integer"
139
+ },
140
+ "description": "The numbers of items to return"
141
+ },
142
+ {
143
+ "in": "query",
144
+ "name": "no_hydrate",
145
+ "schema": {
146
+ "type": "boolean"
147
+ },
148
+ "description": "When true, the payload will not be hydrated with the entity data. This is useful when the client does not need the entity data and wants to save on API calls (performance gain). When false, the payload will be hydrated with the entity data. This is useful when the client needs the entity data to display the notification (e.g. to show the name of the contact in the notification message), but can have a significative performance impact.\n\nThis endpoint will eventually be deprecated in favor of GET /v2/notification/notifications which no longer hydrates the payload by default.\n"
149
+ }
150
+ ],
151
+ "responses": {
152
+ "200": {
153
+ "description": "Success",
154
+ "content": {
155
+ "application/json": {
156
+ "schema": {
157
+ "type": "object",
158
+ "properties": {
159
+ "total": {
160
+ "type": "integer",
161
+ "example": 1
162
+ },
163
+ "total_unread": {
164
+ "type": "integer",
165
+ "example": 1
166
+ },
167
+ "results": {
168
+ "type": "array",
169
+ "items": {
170
+ "$ref": "#/components/schemas/NotificationItem"
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+ }
179
+ }
180
+ },
181
+ "/v1/notification/notifications/{id}": {
182
+ "get": {
183
+ "operationId": "getNotification",
184
+ "summary": "getNotification",
185
+ "description": "Get the details of a single notification.",
186
+ "tags": [
187
+ "Notification"
188
+ ],
189
+ "parameters": [
190
+ {
191
+ "in": "path",
192
+ "name": "id",
193
+ "description": "Notification Id",
194
+ "required": true,
195
+ "schema": {
196
+ "type": "number"
197
+ }
198
+ }
199
+ ],
200
+ "responses": {
201
+ "200": {
202
+ "description": "Success",
203
+ "content": {
204
+ "application/json": {
205
+ "schema": {
206
+ "$ref": "#/components/schemas/NotificationItem"
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+ },
214
+ "/v1/notification/notifications/mark": {
215
+ "put": {
216
+ "operationId": "markAllAsRead",
217
+ "summary": "markAllAsRead",
218
+ "description": "Mark all as read",
219
+ "tags": [
220
+ "Notification"
221
+ ],
222
+ "responses": {
223
+ "204": {
224
+ "description": "ok"
225
+ }
226
+ }
227
+ }
228
+ },
229
+ "/v1/notification/notifications/{id}/mark": {
230
+ "put": {
231
+ "operationId": "markAsRead",
232
+ "summary": "markAsRead",
233
+ "description": "Mark as read",
234
+ "parameters": [
235
+ {
236
+ "in": "path",
237
+ "name": "id",
238
+ "schema": {
239
+ "type": "integer"
240
+ },
241
+ "required": true,
242
+ "description": "Numeric ID of the notification to mark as read"
243
+ }
244
+ ],
245
+ "tags": [
246
+ "Notification"
247
+ ],
248
+ "responses": {
249
+ "204": {
250
+ "description": "Success"
251
+ }
252
+ }
253
+ }
254
+ },
255
+ "/v1/notification/unreads": {
256
+ "get": {
257
+ "operationId": "getTotalUnread",
258
+ "summary": "getTotalUnread",
259
+ "description": "Get total unread",
260
+ "tags": [
261
+ "Notification"
262
+ ],
263
+ "responses": {
264
+ "200": {
265
+ "description": "Success",
266
+ "content": {
267
+ "text/plain": {
268
+ "schema": {
269
+ "type": "number",
270
+ "example": 999
271
+ }
272
+ }
273
+ }
274
+ }
275
+ }
276
+ }
277
+ },
278
+ "/v1/notification/templates": {
279
+ "get": {
280
+ "operationId": "listNotificationTemplates",
281
+ "summary": "listNotificationTemplates",
282
+ "description": "List notification templates with optional filtering and pagination",
283
+ "tags": [
284
+ "Template"
285
+ ],
286
+ "parameters": [
287
+ {
288
+ "name": "q",
289
+ "in": "query",
290
+ "required": false,
291
+ "description": "Lucene query string for filtering",
292
+ "schema": {
293
+ "type": "string"
294
+ }
295
+ },
296
+ {
297
+ "name": "from",
298
+ "in": "query",
299
+ "required": false,
300
+ "description": "Pagination offset (0-based)",
301
+ "schema": {
302
+ "type": "integer",
303
+ "minimum": 0,
304
+ "default": 0
305
+ }
306
+ },
307
+ {
308
+ "name": "size",
309
+ "in": "query",
310
+ "required": false,
311
+ "description": "Results per page",
312
+ "schema": {
313
+ "type": "integer",
314
+ "minimum": 1,
315
+ "maximum": 1000,
316
+ "default": 25
317
+ }
318
+ },
319
+ {
320
+ "name": "sort",
321
+ "in": "query",
322
+ "required": false,
323
+ "description": "Sort fields (prefix with - for descending)",
324
+ "schema": {
325
+ "type": "string"
326
+ }
327
+ },
328
+ {
329
+ "name": "fields",
330
+ "in": "query",
331
+ "required": false,
332
+ "description": "Comma-separated fields to include",
333
+ "schema": {
334
+ "type": "string"
335
+ }
336
+ },
337
+ {
338
+ "name": "hydrate",
339
+ "in": "query",
340
+ "required": false,
341
+ "description": "Resolve nested relations",
342
+ "schema": {
343
+ "type": "boolean",
344
+ "default": false
345
+ }
346
+ }
347
+ ],
348
+ "responses": {
349
+ "200": {
350
+ "description": "Success",
351
+ "content": {
352
+ "application/json": {
353
+ "schema": {
354
+ "$ref": "#/components/schemas/NotificationTemplateListResponse"
355
+ }
356
+ }
357
+ }
358
+ },
359
+ "401": {
360
+ "description": "Unauthorized",
361
+ "content": {
362
+ "application/json": {
363
+ "schema": {
364
+ "$ref": "#/components/schemas/Error"
365
+ }
366
+ }
367
+ }
368
+ },
369
+ "500": {
370
+ "description": "Internal Server Error",
371
+ "content": {
372
+ "application/json": {
373
+ "schema": {
374
+ "$ref": "#/components/schemas/Error"
375
+ }
376
+ }
377
+ }
378
+ }
379
+ }
380
+ },
381
+ "post": {
382
+ "operationId": "createNotificationTemplate",
383
+ "summary": "createNotificationTemplate",
384
+ "description": "Create a new notification template",
385
+ "tags": [
386
+ "Template"
387
+ ],
388
+ "requestBody": {
389
+ "required": true,
390
+ "content": {
391
+ "application/json": {
392
+ "schema": {
393
+ "$ref": "#/components/schemas/CreateNotificationTemplateInput"
394
+ }
395
+ }
396
+ }
397
+ },
398
+ "responses": {
399
+ "201": {
400
+ "description": "Created",
401
+ "content": {
402
+ "application/json": {
403
+ "schema": {
404
+ "$ref": "#/components/schemas/NotificationTemplate"
405
+ }
406
+ }
407
+ }
408
+ },
409
+ "400": {
410
+ "description": "Bad Request",
411
+ "content": {
412
+ "application/json": {
413
+ "schema": {
414
+ "$ref": "#/components/schemas/Error"
415
+ }
416
+ }
417
+ }
418
+ },
419
+ "401": {
420
+ "description": "Unauthorized",
421
+ "content": {
422
+ "application/json": {
423
+ "schema": {
424
+ "$ref": "#/components/schemas/Error"
425
+ }
426
+ }
427
+ }
428
+ },
429
+ "500": {
430
+ "description": "Internal Server Error",
431
+ "content": {
432
+ "application/json": {
433
+ "schema": {
434
+ "$ref": "#/components/schemas/Error"
435
+ }
436
+ }
437
+ }
438
+ }
439
+ }
440
+ }
441
+ },
442
+ "/v1/notification/templates/{id}": {
443
+ "get": {
444
+ "operationId": "getNotificationTemplate",
445
+ "summary": "getNotificationTemplate",
446
+ "description": "Get a single notification template by ID",
447
+ "tags": [
448
+ "Template"
449
+ ],
450
+ "parameters": [
451
+ {
452
+ "$ref": "#/components/parameters/TemplateIdPathParam"
453
+ }
454
+ ],
455
+ "responses": {
456
+ "200": {
457
+ "description": "Success",
458
+ "content": {
459
+ "application/json": {
460
+ "schema": {
461
+ "$ref": "#/components/schemas/NotificationTemplate"
462
+ }
463
+ }
464
+ }
465
+ },
466
+ "401": {
467
+ "description": "Unauthorized",
468
+ "content": {
469
+ "application/json": {
470
+ "schema": {
471
+ "$ref": "#/components/schemas/Error"
472
+ }
473
+ }
474
+ }
475
+ },
476
+ "404": {
477
+ "description": "Not Found",
478
+ "content": {
479
+ "application/json": {
480
+ "schema": {
481
+ "$ref": "#/components/schemas/Error"
482
+ }
483
+ }
484
+ }
485
+ },
486
+ "500": {
487
+ "description": "Internal Server Error",
488
+ "content": {
489
+ "application/json": {
490
+ "schema": {
491
+ "$ref": "#/components/schemas/Error"
492
+ }
493
+ }
494
+ }
495
+ }
496
+ }
497
+ },
498
+ "put": {
499
+ "operationId": "updateNotificationTemplate",
500
+ "summary": "updateNotificationTemplate",
501
+ "description": "Update a notification template (full replacement)",
502
+ "tags": [
503
+ "Template"
504
+ ],
505
+ "parameters": [
506
+ {
507
+ "$ref": "#/components/parameters/TemplateIdPathParam"
508
+ }
509
+ ],
510
+ "requestBody": {
511
+ "required": true,
512
+ "content": {
513
+ "application/json": {
514
+ "schema": {
515
+ "$ref": "#/components/schemas/UpdateNotificationTemplateInput"
516
+ }
517
+ }
518
+ }
519
+ },
520
+ "responses": {
521
+ "200": {
522
+ "description": "Success",
523
+ "content": {
524
+ "application/json": {
525
+ "schema": {
526
+ "$ref": "#/components/schemas/NotificationTemplate"
527
+ }
528
+ }
529
+ }
530
+ },
531
+ "400": {
532
+ "description": "Bad Request",
533
+ "content": {
534
+ "application/json": {
535
+ "schema": {
536
+ "$ref": "#/components/schemas/Error"
537
+ }
538
+ }
539
+ }
540
+ },
541
+ "401": {
542
+ "description": "Unauthorized",
543
+ "content": {
544
+ "application/json": {
545
+ "schema": {
546
+ "$ref": "#/components/schemas/Error"
547
+ }
548
+ }
549
+ }
550
+ },
551
+ "404": {
552
+ "description": "Not Found",
553
+ "content": {
554
+ "application/json": {
555
+ "schema": {
556
+ "$ref": "#/components/schemas/Error"
557
+ }
558
+ }
559
+ }
560
+ },
561
+ "500": {
562
+ "description": "Internal Server Error",
563
+ "content": {
564
+ "application/json": {
565
+ "schema": {
566
+ "$ref": "#/components/schemas/Error"
567
+ }
568
+ }
569
+ }
570
+ }
571
+ }
572
+ },
573
+ "patch": {
574
+ "operationId": "patchNotificationTemplate",
575
+ "summary": "patchNotificationTemplate",
576
+ "description": "Partially update a notification template",
577
+ "tags": [
578
+ "Template"
579
+ ],
580
+ "parameters": [
581
+ {
582
+ "$ref": "#/components/parameters/TemplateIdPathParam"
583
+ }
584
+ ],
585
+ "requestBody": {
586
+ "required": true,
587
+ "content": {
588
+ "application/json": {
589
+ "schema": {
590
+ "$ref": "#/components/schemas/UpdateNotificationTemplateInput"
591
+ }
592
+ }
593
+ }
594
+ },
595
+ "responses": {
596
+ "200": {
597
+ "description": "Success",
598
+ "content": {
599
+ "application/json": {
600
+ "schema": {
601
+ "$ref": "#/components/schemas/NotificationTemplate"
602
+ }
603
+ }
604
+ }
605
+ },
606
+ "400": {
607
+ "description": "Bad Request",
608
+ "content": {
609
+ "application/json": {
610
+ "schema": {
611
+ "$ref": "#/components/schemas/Error"
612
+ }
613
+ }
614
+ }
615
+ },
616
+ "401": {
617
+ "description": "Unauthorized",
618
+ "content": {
619
+ "application/json": {
620
+ "schema": {
621
+ "$ref": "#/components/schemas/Error"
622
+ }
623
+ }
624
+ }
625
+ },
626
+ "404": {
627
+ "description": "Not Found",
628
+ "content": {
629
+ "application/json": {
630
+ "schema": {
631
+ "$ref": "#/components/schemas/Error"
632
+ }
633
+ }
634
+ }
635
+ },
636
+ "500": {
637
+ "description": "Internal Server Error",
638
+ "content": {
639
+ "application/json": {
640
+ "schema": {
641
+ "$ref": "#/components/schemas/Error"
642
+ }
643
+ }
644
+ }
645
+ }
646
+ }
647
+ },
648
+ "delete": {
649
+ "operationId": "deleteNotificationTemplate",
650
+ "summary": "deleteNotificationTemplate",
651
+ "description": "Delete a notification template permanently",
652
+ "tags": [
653
+ "Template"
654
+ ],
655
+ "parameters": [
656
+ {
657
+ "$ref": "#/components/parameters/TemplateIdPathParam"
658
+ }
659
+ ],
660
+ "responses": {
661
+ "200": {
662
+ "description": "Success",
663
+ "content": {
664
+ "application/json": {
665
+ "schema": {
666
+ "$ref": "#/components/schemas/NotificationTemplate"
667
+ }
668
+ }
669
+ }
670
+ },
671
+ "401": {
672
+ "description": "Unauthorized",
673
+ "content": {
674
+ "application/json": {
675
+ "schema": {
676
+ "$ref": "#/components/schemas/Error"
677
+ }
678
+ }
679
+ }
680
+ },
681
+ "404": {
682
+ "description": "Not Found",
683
+ "content": {
684
+ "application/json": {
685
+ "schema": {
686
+ "$ref": "#/components/schemas/Error"
687
+ }
688
+ }
689
+ }
690
+ },
691
+ "500": {
692
+ "description": "Internal Server Error",
693
+ "content": {
694
+ "application/json": {
695
+ "schema": {
696
+ "$ref": "#/components/schemas/Error"
697
+ }
698
+ }
699
+ }
700
+ }
701
+ }
702
+ }
703
+ },
704
+ "/v1/notification/templates/send-preview": {
705
+ "post": {
706
+ "operationId": "sendPreview",
707
+ "summary": "sendPreview",
708
+ "description": "Send a preview notification (both email and in-app) to the requesting user.\nUsed to test notification templates before saving.\n",
709
+ "tags": [
710
+ "Template"
711
+ ],
712
+ "requestBody": {
713
+ "required": true,
714
+ "content": {
715
+ "application/json": {
716
+ "schema": {
717
+ "$ref": "#/components/schemas/SendPreviewInput"
718
+ }
719
+ }
720
+ }
721
+ },
722
+ "responses": {
723
+ "200": {
724
+ "description": "Preview notification sent successfully",
725
+ "content": {
726
+ "application/json": {
727
+ "schema": {
728
+ "$ref": "#/components/schemas/SendPreviewResponse"
729
+ }
730
+ }
731
+ }
732
+ },
733
+ "400": {
734
+ "description": "Bad Request",
735
+ "content": {
736
+ "application/json": {
737
+ "schema": {
738
+ "$ref": "#/components/schemas/Error"
739
+ }
740
+ }
741
+ }
742
+ },
743
+ "401": {
744
+ "description": "Unauthorized",
745
+ "content": {
746
+ "application/json": {
747
+ "schema": {
748
+ "$ref": "#/components/schemas/Error"
749
+ }
750
+ }
751
+ }
752
+ },
753
+ "500": {
754
+ "description": "Internal Server Error",
755
+ "content": {
756
+ "application/json": {
757
+ "schema": {
758
+ "$ref": "#/components/schemas/Error"
759
+ }
760
+ }
761
+ }
762
+ }
763
+ }
764
+ }
765
+ }
766
+ },
767
+ "components": {
768
+ "securitySchemes": {
769
+ "EpilotAuth": {
770
+ "type": "http",
771
+ "scheme": "bearer",
772
+ "description": "Authorization header with epilot OAuth2 bearer token",
773
+ "bearerFormat": "JWT"
774
+ },
775
+ "EpilotOrg": {
776
+ "description": "Overrides the target organization to allow shared tenant access",
777
+ "name": "x-epilot-org-id",
778
+ "in": "header",
779
+ "type": "apiKey"
780
+ }
781
+ },
782
+ "parameters": {
783
+ "TemplateIdPathParam": {
784
+ "name": "id",
785
+ "in": "path",
786
+ "required": true,
787
+ "description": "Template ID (UUID)",
788
+ "schema": {
789
+ "type": "string",
790
+ "format": "uuid"
791
+ }
792
+ }
793
+ },
794
+ "schemas": {
795
+ "Error": {
796
+ "type": "object",
797
+ "properties": {
798
+ "message": {
799
+ "type": "string",
800
+ "description": "Error message"
801
+ },
802
+ "code": {
803
+ "type": "string",
804
+ "description": "Error code"
805
+ }
806
+ },
807
+ "required": [
808
+ "message"
809
+ ]
810
+ },
811
+ "EntityOperation": {
812
+ "type": "object",
813
+ "properties": {
814
+ "entity": {
815
+ "$ref": "#/components/schemas/EntityId"
816
+ },
817
+ "operation": {
818
+ "type": "string",
819
+ "example": "updateEntity"
820
+ },
821
+ "params": {
822
+ "type": "object",
823
+ "properties": {
824
+ "id": {
825
+ "$ref": "#/components/schemas/EntityId"
826
+ },
827
+ "slug": {
828
+ "$ref": "#/components/schemas/EntitySlug"
829
+ }
830
+ },
831
+ "example": {
832
+ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
833
+ "slug": "contact"
834
+ }
835
+ },
836
+ "payload": {
837
+ "allOf": [
838
+ {
839
+ "$ref": "#/components/schemas/Entity"
840
+ },
841
+ {
842
+ "example": {
843
+ "_schema": "contact",
844
+ "_org": "123",
845
+ "status": "Inactive"
846
+ }
847
+ }
848
+ ]
849
+ }
850
+ },
851
+ "required": [
852
+ "entity",
853
+ "name"
854
+ ]
855
+ },
856
+ "NotificationItem": {
857
+ "allOf": [
858
+ {
859
+ "type": "object",
860
+ "properties": {
861
+ "id": {
862
+ "$ref": "#/components/schemas/Id"
863
+ },
864
+ "notification_id": {
865
+ "$ref": "#/components/schemas/NotificationId"
866
+ },
867
+ "timestamp": {
868
+ "type": "string",
869
+ "format": "date-time"
870
+ },
871
+ "read_state": {
872
+ "type": "boolean",
873
+ "example": false
874
+ }
875
+ }
876
+ },
877
+ {
878
+ "$ref": "#/components/schemas/NotificationBase"
879
+ },
880
+ {
881
+ "type": "object",
882
+ "properties": {
883
+ "caller": {
884
+ "$ref": "#/components/schemas/NotificationCallerContext"
885
+ }
886
+ }
887
+ },
888
+ {
889
+ "type": "object",
890
+ "properties": {
891
+ "operations": {
892
+ "type": "array",
893
+ "items": {
894
+ "$ref": "#/components/schemas/EntityOperation"
895
+ }
896
+ }
897
+ }
898
+ }
899
+ ]
900
+ },
901
+ "Notification": {
902
+ "allOf": [
903
+ {
904
+ "$ref": "#/components/schemas/NotificationBase"
905
+ },
906
+ {
907
+ "type": "object",
908
+ "properties": {
909
+ "read_state": {
910
+ "type": "boolean",
911
+ "example": false
912
+ },
913
+ "visibility_user_ids": {
914
+ "description": "The person who is the corresponding event recipient.",
915
+ "type": "array",
916
+ "items": {
917
+ "type": "string"
918
+ },
919
+ "example": [
920
+ "1",
921
+ "2",
922
+ "3",
923
+ "4",
924
+ "5"
925
+ ]
926
+ }
927
+ }
928
+ }
929
+ ]
930
+ },
931
+ "NotificationBase": {
932
+ "type": "object",
933
+ "properties": {
934
+ "notification_id": {
935
+ "type": "number"
936
+ },
937
+ "timestamp": {
938
+ "type": "string",
939
+ "format": "date-time"
940
+ },
941
+ "type": {
942
+ "description": "Type of notification",
943
+ "type": "string",
944
+ "example": "workflow"
945
+ },
946
+ "redirect_url": {
947
+ "description": "Redirect url",
948
+ "type": "string",
949
+ "example": "https://epilot.cloud"
950
+ },
951
+ "organization_id": {
952
+ "description": "Organization Id",
953
+ "type": "string",
954
+ "example": "206801"
955
+ },
956
+ "title": {
957
+ "type": "object",
958
+ "properties": {
959
+ "en": {
960
+ "type": "string",
961
+ "description": "Title for notification. Supports handlebars syntax.",
962
+ "example": "My custom notification"
963
+ },
964
+ "de": {
965
+ "type": "string",
966
+ "description": "Title for notification. Supports handlebars syntax.",
967
+ "example": "Meine benutzerdefinierte Aktivität"
968
+ }
969
+ }
970
+ },
971
+ "message": {
972
+ "type": "object",
973
+ "properties": {
974
+ "en": {
975
+ "type": "string",
976
+ "description": "Message for notification. Supports handlebars syntax.",
977
+ "example": "{{caller}} did something with {{contact.entity.id}} {{branch.name}}."
978
+ },
979
+ "de": {
980
+ "type": "string",
981
+ "description": "Message for notification. Supports handlebars syntax.",
982
+ "example": "{{caller}} habe etwas damit gemacht {{contact.entity.id}} {{branch.name}}."
983
+ }
984
+ }
985
+ },
986
+ "payload": {
987
+ "type": "object",
988
+ "properties": {},
989
+ "additionalProperties": true,
990
+ "example": {
991
+ "entity": {
992
+ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
993
+ "schema": "contact"
994
+ }
995
+ }
996
+ },
997
+ "caller": {
998
+ "$ref": "#/components/schemas/NotificationCallerContext"
999
+ },
1000
+ "operations": {
1001
+ "type": "array",
1002
+ "items": {
1003
+ "$ref": "#/components/schemas/EntityOperation"
1004
+ }
1005
+ },
1006
+ "force_notify_users": {
1007
+ "type": "object",
1008
+ "properties": {},
1009
+ "additionalProperties": true,
1010
+ "example": {
1011
+ "12345": {
1012
+ "email": false,
1013
+ "in_app": false
1014
+ }
1015
+ }
1016
+ }
1017
+ },
1018
+ "required": [
1019
+ "type",
1020
+ "title",
1021
+ "message"
1022
+ ]
1023
+ },
1024
+ "EntityId": {
1025
+ "type": "string",
1026
+ "format": "uuid"
1027
+ },
1028
+ "Entity": {
1029
+ "type": "object",
1030
+ "properties": {},
1031
+ "additionalProperties": true
1032
+ },
1033
+ "Id": {
1034
+ "type": "number",
1035
+ "example": 123456789
1036
+ },
1037
+ "NotificationId": {
1038
+ "type": "number",
1039
+ "example": 123456789
1040
+ },
1041
+ "NotificationCallerContext": {
1042
+ "type": "object",
1043
+ "additionalProperties": true,
1044
+ "properties": {
1045
+ "EpilotAuth": {
1046
+ "type": "object",
1047
+ "properties": {
1048
+ "token": {
1049
+ "type": "object",
1050
+ "properties": {
1051
+ "sub": {
1052
+ "type": "string",
1053
+ "example": "476e9b48-42f4-4234-a2b0-4668b34626ce"
1054
+ },
1055
+ "email": {
1056
+ "type": "string",
1057
+ "example": "example@epilot.cloud"
1058
+ },
1059
+ "cognito:username": {
1060
+ "type": "string",
1061
+ "example": "example@epilot.cloud"
1062
+ },
1063
+ "custom:ivy_user_id": {
1064
+ "type": "string",
1065
+ "example": "10006129"
1066
+ }
1067
+ },
1068
+ "example": {
1069
+ "sub": "476e9b48-42f4-4234-a2b0-4668b34626ce",
1070
+ "cognito:groups": [
1071
+ "Administrator"
1072
+ ],
1073
+ "cognito:preferred_role": "arn:aws:iam::912468240823:role/base-administrator-role",
1074
+ "iss": "https://cognito-idp.eu-central-1.amazonaws.com/eu-central-1_6lZSgmU6D",
1075
+ "custom:ivy_org_id": "739224",
1076
+ "cognito:username": "n.ahmad@epilot.cloud",
1077
+ "custom:ivy_user_id": "10006129",
1078
+ "cognito:roles": [
1079
+ "arn:aws:iam::912468240823:role/base-administrator-role"
1080
+ ],
1081
+ "aud": "6e0jbdnger7nmoktaaflarue1l",
1082
+ "event_id": "cd5f5583-d90c-4db5-8e99-5f5dd29a4d75",
1083
+ "token_use": "id",
1084
+ "auth_time": 1614333023,
1085
+ "exp": 1614336623,
1086
+ "iat": 1614333023,
1087
+ "email": "n.ahmad@epilot.cloud"
1088
+ }
1089
+ }
1090
+ }
1091
+ }
1092
+ }
1093
+ },
1094
+ "EntitySlug": {
1095
+ "description": "URL-friendly identifier for the entity schema",
1096
+ "type": "string",
1097
+ "example": "contact"
1098
+ },
1099
+ "EntityOwner": {
1100
+ "type": "object",
1101
+ "required": [
1102
+ "org_id",
1103
+ "user_id"
1104
+ ],
1105
+ "properties": {
1106
+ "org_id": {
1107
+ "type": "string",
1108
+ "description": "Organization ID"
1109
+ },
1110
+ "user_id": {
1111
+ "type": "string",
1112
+ "description": "User ID"
1113
+ }
1114
+ }
1115
+ },
1116
+ "EntityAcl": {
1117
+ "type": "object",
1118
+ "description": "Access control list",
1119
+ "properties": {
1120
+ "view": {
1121
+ "type": "array",
1122
+ "items": {
1123
+ "type": "string"
1124
+ }
1125
+ },
1126
+ "edit": {
1127
+ "type": "array",
1128
+ "items": {
1129
+ "type": "string"
1130
+ }
1131
+ },
1132
+ "delete": {
1133
+ "type": "array",
1134
+ "items": {
1135
+ "type": "string"
1136
+ }
1137
+ }
1138
+ }
1139
+ },
1140
+ "NotificationTemplate": {
1141
+ "type": "object",
1142
+ "required": [
1143
+ "_id",
1144
+ "_org",
1145
+ "_schema",
1146
+ "_title",
1147
+ "_created_at",
1148
+ "_updated_at"
1149
+ ],
1150
+ "properties": {
1151
+ "_id": {
1152
+ "type": "string",
1153
+ "format": "uuid",
1154
+ "description": "Unique identifier"
1155
+ },
1156
+ "_schema": {
1157
+ "type": "string",
1158
+ "description": "Entity schema type"
1159
+ },
1160
+ "_title": {
1161
+ "type": "string",
1162
+ "nullable": true,
1163
+ "description": "Display title"
1164
+ },
1165
+ "_org": {
1166
+ "type": "string",
1167
+ "description": "Organization ID"
1168
+ },
1169
+ "_tags": {
1170
+ "type": "array",
1171
+ "items": {
1172
+ "type": "string"
1173
+ },
1174
+ "nullable": true,
1175
+ "description": "Tags for categorization"
1176
+ },
1177
+ "_created_at": {
1178
+ "type": "string",
1179
+ "format": "date-time",
1180
+ "nullable": true,
1181
+ "description": "ISO timestamp of creation"
1182
+ },
1183
+ "_updated_at": {
1184
+ "type": "string",
1185
+ "format": "date-time",
1186
+ "nullable": true,
1187
+ "description": "ISO timestamp of last update"
1188
+ },
1189
+ "_manifest": {
1190
+ "type": "array",
1191
+ "description": "Manifest ID used to create/update the entity",
1192
+ "items": {
1193
+ "type": "string",
1194
+ "format": "uuid",
1195
+ "example": "123e4567-e89b-12d3-a456-426614174000"
1196
+ }
1197
+ },
1198
+ "_owners": {
1199
+ "type": "array",
1200
+ "items": {
1201
+ "$ref": "#/components/schemas/EntityOwner"
1202
+ },
1203
+ "description": "Entity owners",
1204
+ "readOnly": true
1205
+ },
1206
+ "_acl": {
1207
+ "allOf": [
1208
+ {
1209
+ "$ref": "#/components/schemas/EntityAcl"
1210
+ }
1211
+ ],
1212
+ "description": "Access control list",
1213
+ "readOnly": true
1214
+ },
1215
+ "name": {
1216
+ "type": "string",
1217
+ "description": "Internal template name"
1218
+ },
1219
+ "type": {
1220
+ "type": "string",
1221
+ "description": "Notification type key"
1222
+ },
1223
+ "notification_title": {
1224
+ "type": "string",
1225
+ "description": "Notification title (Lexical editor JSON, supports variables)"
1226
+ },
1227
+ "message": {
1228
+ "type": "string",
1229
+ "description": "Notification body (Lexical editor JSON, supports variables)"
1230
+ },
1231
+ "action_label": {
1232
+ "type": "string",
1233
+ "description": "CTA button text (supports variables)"
1234
+ },
1235
+ "action_url": {
1236
+ "type": "string",
1237
+ "description": "CTA button URL (supports variables)"
1238
+ },
1239
+ "style": {
1240
+ "type": "string",
1241
+ "description": "JSON string with style config"
1242
+ },
1243
+ "system_template": {
1244
+ "type": "boolean",
1245
+ "description": "Whether this is a system template",
1246
+ "readOnly": true
1247
+ },
1248
+ "created_by": {
1249
+ "type": "string",
1250
+ "description": "User ID who created the template",
1251
+ "readOnly": true
1252
+ },
1253
+ "updated_by": {
1254
+ "type": "string",
1255
+ "description": "User ID who last updated the template",
1256
+ "readOnly": true
1257
+ }
1258
+ }
1259
+ },
1260
+ "CreateNotificationTemplateInput": {
1261
+ "type": "object",
1262
+ "required": [
1263
+ "name",
1264
+ "type"
1265
+ ],
1266
+ "properties": {
1267
+ "name": {
1268
+ "type": "string",
1269
+ "description": "Internal template name (required)"
1270
+ },
1271
+ "type": {
1272
+ "type": "string",
1273
+ "description": "Notification type key (required)"
1274
+ },
1275
+ "notification_title": {
1276
+ "type": "string",
1277
+ "description": "Notification title (Lexical editor JSON, supports variables)"
1278
+ },
1279
+ "message": {
1280
+ "type": "string",
1281
+ "description": "Notification body (Lexical editor JSON, supports variables)"
1282
+ },
1283
+ "action_label": {
1284
+ "type": "string",
1285
+ "description": "CTA button text (supports variables)"
1286
+ },
1287
+ "action_url": {
1288
+ "type": "string",
1289
+ "description": "CTA button URL (supports variables)"
1290
+ },
1291
+ "style": {
1292
+ "type": "string",
1293
+ "description": "JSON string with style config"
1294
+ },
1295
+ "_title": {
1296
+ "type": "string",
1297
+ "description": "Display title"
1298
+ },
1299
+ "_tags": {
1300
+ "type": "array",
1301
+ "items": {
1302
+ "type": "string"
1303
+ },
1304
+ "description": "Tags for categorization"
1305
+ },
1306
+ "_manifest": {
1307
+ "type": "array",
1308
+ "description": "Manifest ID used to create/update the entity",
1309
+ "items": {
1310
+ "type": "string",
1311
+ "format": "uuid",
1312
+ "example": "123e4567-e89b-12d3-a456-426614174000"
1313
+ }
1314
+ }
1315
+ }
1316
+ },
1317
+ "UpdateNotificationTemplateInput": {
1318
+ "type": "object",
1319
+ "properties": {
1320
+ "name": {
1321
+ "type": "string",
1322
+ "description": "Internal template name"
1323
+ },
1324
+ "notification_title": {
1325
+ "type": "string",
1326
+ "description": "Notification title (Lexical editor JSON, supports variables)"
1327
+ },
1328
+ "message": {
1329
+ "type": "string",
1330
+ "description": "Notification body (Lexical editor JSON, supports variables)"
1331
+ },
1332
+ "action_label": {
1333
+ "type": "string",
1334
+ "description": "CTA button text (supports variables)"
1335
+ },
1336
+ "action_url": {
1337
+ "type": "string",
1338
+ "description": "CTA button URL (supports variables)"
1339
+ },
1340
+ "style": {
1341
+ "type": "string",
1342
+ "description": "JSON string with style config"
1343
+ },
1344
+ "_title": {
1345
+ "type": "string",
1346
+ "description": "Display title"
1347
+ },
1348
+ "_tags": {
1349
+ "type": "array",
1350
+ "items": {
1351
+ "type": "string"
1352
+ },
1353
+ "description": "Tags for categorization"
1354
+ },
1355
+ "_manifest": {
1356
+ "type": "array",
1357
+ "description": "Manifest ID used to create/update the entity",
1358
+ "items": {
1359
+ "type": "string",
1360
+ "format": "uuid",
1361
+ "example": "123e4567-e89b-12d3-a456-426614174000"
1362
+ }
1363
+ }
1364
+ }
1365
+ },
1366
+ "NotificationTemplateListResponse": {
1367
+ "type": "object",
1368
+ "properties": {
1369
+ "results": {
1370
+ "type": "array",
1371
+ "items": {
1372
+ "$ref": "#/components/schemas/NotificationTemplate"
1373
+ }
1374
+ },
1375
+ "hits": {
1376
+ "type": "integer",
1377
+ "description": "Total number of matching results"
1378
+ }
1379
+ }
1380
+ },
1381
+ "SendPreviewInput": {
1382
+ "type": "object",
1383
+ "required": [
1384
+ "template"
1385
+ ],
1386
+ "properties": {
1387
+ "template": {
1388
+ "$ref": "#/components/schemas/UpdateNotificationTemplateInput"
1389
+ },
1390
+ "context_ids": {
1391
+ "type": "object",
1392
+ "description": "Optional context IDs for variable replacement",
1393
+ "additionalProperties": {
1394
+ "type": "string"
1395
+ }
1396
+ }
1397
+ }
1398
+ },
1399
+ "SendPreviewResponse": {
1400
+ "type": "array",
1401
+ "description": "Array of results for each notification channel (email, in-app)",
1402
+ "items": {
1403
+ "type": "object",
1404
+ "required": [
1405
+ "success"
1406
+ ],
1407
+ "properties": {
1408
+ "success": {
1409
+ "type": "boolean",
1410
+ "description": "Whether this notification was sent successfully"
1411
+ },
1412
+ "data": {
1413
+ "description": "Result data"
1414
+ }
1415
+ }
1416
+ }
1417
+ }
1418
+ }
1419
+ },
1420
+ "servers": [
1421
+ {
1422
+ "url": "https://notification.sls.epilot.io"
1423
+ }
1424
+ ]
1425
+ }