@epilot/sdk 2.20.23 → 2.20.25

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 (233) hide show
  1. package/dist/apis/access-token.cjs +6 -6
  2. package/dist/apis/access-token.js +1 -1
  3. package/dist/apis/address-suggestions.cjs +6 -6
  4. package/dist/apis/address-suggestions.js +1 -1
  5. package/dist/apis/address.cjs +6 -6
  6. package/dist/apis/address.js +1 -1
  7. package/dist/apis/ai-agents.cjs +6 -6
  8. package/dist/apis/ai-agents.js +1 -1
  9. package/dist/apis/app.cjs +6 -6
  10. package/dist/apis/app.js +1 -1
  11. package/dist/apis/audit-logs.cjs +6 -6
  12. package/dist/apis/audit-logs.js +1 -1
  13. package/dist/apis/automation.cjs +6 -6
  14. package/dist/apis/automation.js +1 -1
  15. package/dist/apis/billing.cjs +6 -6
  16. package/dist/apis/billing.js +1 -1
  17. package/dist/apis/blueprint-manifest.cjs +6 -6
  18. package/dist/apis/blueprint-manifest.js +1 -1
  19. package/dist/apis/calendar.cjs +6 -6
  20. package/dist/apis/calendar.js +1 -1
  21. package/dist/apis/chat.cjs +6 -6
  22. package/dist/apis/chat.js +1 -1
  23. package/dist/apis/configuration-hub.cjs +6 -6
  24. package/dist/apis/configuration-hub.js +1 -1
  25. package/dist/apis/consent.cjs +6 -6
  26. package/dist/apis/consent.js +1 -1
  27. package/dist/apis/customer-portal.cjs +6 -6
  28. package/dist/apis/customer-portal.js +1 -1
  29. package/dist/apis/dashboard.cjs +6 -6
  30. package/dist/apis/dashboard.js +1 -1
  31. package/dist/apis/data-governance.cjs +6 -6
  32. package/dist/apis/data-governance.js +1 -1
  33. package/dist/apis/deduplication.cjs +6 -6
  34. package/dist/apis/deduplication.js +1 -1
  35. package/dist/apis/design.cjs +6 -6
  36. package/dist/apis/design.js +1 -1
  37. package/dist/apis/document.cjs +6 -6
  38. package/dist/apis/document.js +1 -1
  39. package/dist/apis/email-settings.cjs +6 -6
  40. package/dist/apis/email-settings.js +1 -1
  41. package/dist/apis/email-template.cjs +6 -6
  42. package/dist/apis/email-template.js +1 -1
  43. package/dist/apis/entity-mapping.cjs +6 -6
  44. package/dist/apis/entity-mapping.d.cts +2 -2
  45. package/dist/apis/entity-mapping.d.ts +2 -2
  46. package/dist/apis/entity-mapping.js +1 -1
  47. package/dist/apis/entity.cjs +6 -6
  48. package/dist/apis/entity.js +1 -1
  49. package/dist/apis/environments.cjs +6 -6
  50. package/dist/apis/environments.js +1 -1
  51. package/dist/apis/event-catalog.cjs +6 -6
  52. package/dist/apis/event-catalog.js +1 -1
  53. package/dist/apis/file.cjs +6 -6
  54. package/dist/apis/file.js +1 -1
  55. package/dist/apis/iban.cjs +6 -6
  56. package/dist/apis/iban.js +1 -1
  57. package/dist/apis/integration-toolkit.cjs +6 -6
  58. package/dist/apis/integration-toolkit.d.cts +2 -2
  59. package/dist/apis/integration-toolkit.d.ts +2 -2
  60. package/dist/apis/integration-toolkit.js +1 -1
  61. package/dist/apis/journey.cjs +6 -6
  62. package/dist/apis/journey.js +1 -1
  63. package/dist/apis/kanban.cjs +6 -6
  64. package/dist/apis/kanban.js +1 -1
  65. package/dist/apis/message.cjs +6 -6
  66. package/dist/apis/message.js +1 -1
  67. package/dist/apis/metering.cjs +6 -6
  68. package/dist/apis/metering.js +1 -1
  69. package/dist/apis/notes.cjs +6 -6
  70. package/dist/apis/notes.js +1 -1
  71. package/dist/apis/notification.cjs +6 -6
  72. package/dist/apis/notification.js +1 -1
  73. package/dist/apis/organization.cjs +6 -6
  74. package/dist/apis/organization.js +1 -1
  75. package/dist/apis/partner-directory.cjs +6 -6
  76. package/dist/apis/partner-directory.js +1 -1
  77. package/dist/apis/permissions.cjs +6 -6
  78. package/dist/apis/permissions.js +1 -1
  79. package/dist/apis/pricing-tier.cjs +6 -6
  80. package/dist/apis/pricing-tier.js +1 -1
  81. package/dist/apis/pricing.cjs +6 -6
  82. package/dist/apis/pricing.js +1 -1
  83. package/dist/apis/purpose.cjs +6 -6
  84. package/dist/apis/purpose.js +1 -1
  85. package/dist/apis/query.cjs +6 -6
  86. package/dist/apis/query.js +1 -1
  87. package/dist/apis/sandbox.cjs +6 -6
  88. package/dist/apis/sandbox.js +1 -1
  89. package/dist/apis/sharing.cjs +6 -6
  90. package/dist/apis/sharing.js +1 -1
  91. package/dist/apis/snapshot.cjs +6 -6
  92. package/dist/apis/snapshot.js +1 -1
  93. package/dist/apis/submission.cjs +6 -6
  94. package/dist/apis/submission.js +1 -1
  95. package/dist/apis/target.cjs +6 -6
  96. package/dist/apis/target.js +1 -1
  97. package/dist/apis/targeting.cjs +6 -6
  98. package/dist/apis/targeting.js +1 -1
  99. package/dist/apis/template-variables.cjs +6 -6
  100. package/dist/apis/template-variables.js +1 -1
  101. package/dist/apis/user.cjs +6 -6
  102. package/dist/apis/user.js +1 -1
  103. package/dist/apis/validation-rules.cjs +6 -6
  104. package/dist/apis/validation-rules.js +1 -1
  105. package/dist/apis/webhooks.cjs +6 -6
  106. package/dist/apis/webhooks.js +1 -1
  107. package/dist/apis/workflow-definition.cjs +6 -6
  108. package/dist/apis/workflow-definition.js +1 -1
  109. package/dist/apis/workflow.cjs +6 -6
  110. package/dist/apis/workflow.js +1 -1
  111. package/dist/{chunk-YCTBOY3T.cjs → chunk-PZ4TXAF5.cjs} +2 -2
  112. package/dist/{chunk-KZXOYL5D.js → chunk-X742W7MI.js} +2 -2
  113. package/dist/{entity-mapping-D67LJE74.js → entity-mapping-CBRH3VBZ.js} +1 -1
  114. package/dist/{entity-mapping-WFPSOXRK.cjs → entity-mapping-WE3QMZWA.cjs} +1 -1
  115. package/dist/{entity-mapping.d-CQv75o8M.d.cts → entity-mapping.d-8MtWa2_L.d.cts} +22 -0
  116. package/dist/{entity-mapping.d-CQv75o8M.d.ts → entity-mapping.d-8MtWa2_L.d.ts} +22 -0
  117. package/dist/index.cjs +8 -8
  118. package/dist/index.d.cts +2 -2
  119. package/dist/index.d.ts +2 -2
  120. package/dist/index.js +1 -1
  121. package/dist/integration-toolkit-FHPQSYLH.js +7 -0
  122. package/dist/integration-toolkit-YBZJK4IG.cjs +7 -0
  123. package/dist/{integration-toolkit.d-bhpB79pc.d.ts → integration-toolkit.d--hon4GPp.d.cts} +79 -26
  124. package/dist/{integration-toolkit.d-bhpB79pc.d.cts → integration-toolkit.d--hon4GPp.d.ts} +79 -26
  125. package/docs/entity-mapping.md +19 -0
  126. package/docs/integration-toolkit.md +19 -250
  127. package/package.json +1 -1
  128. package/definitions/access-token-runtime.json +0 -1
  129. package/definitions/access-token.json +0 -1025
  130. package/definitions/address-runtime.json +0 -1
  131. package/definitions/address-suggestions-runtime.json +0 -1
  132. package/definitions/address-suggestions.json +0 -582
  133. package/definitions/address.json +0 -578
  134. package/definitions/ai-agents-runtime.json +0 -1
  135. package/definitions/ai-agents.json +0 -2863
  136. package/definitions/app-runtime.json +0 -1
  137. package/definitions/app.json +0 -5994
  138. package/definitions/audit-logs-runtime.json +0 -1
  139. package/definitions/audit-logs.json +0 -305
  140. package/definitions/automation-runtime.json +0 -1
  141. package/definitions/automation.json +0 -5979
  142. package/definitions/billing-runtime.json +0 -1
  143. package/definitions/billing.json +0 -2394
  144. package/definitions/blueprint-manifest-runtime.json +0 -1
  145. package/definitions/blueprint-manifest.json +0 -7817
  146. package/definitions/calendar-runtime.json +0 -1
  147. package/definitions/calendar.json +0 -2904
  148. package/definitions/chat-runtime.json +0 -1
  149. package/definitions/chat.json +0 -2909
  150. package/definitions/configuration-hub-runtime.json +0 -1
  151. package/definitions/configuration-hub.json +0 -2250
  152. package/definitions/consent-runtime.json +0 -1
  153. package/definitions/consent.json +0 -344
  154. package/definitions/customer-portal-runtime.json +0 -1
  155. package/definitions/customer-portal.json +0 -21181
  156. package/definitions/dashboard-runtime.json +0 -1
  157. package/definitions/dashboard.json +0 -1355
  158. package/definitions/data-governance-runtime.json +0 -1
  159. package/definitions/data-governance.json +0 -1126
  160. package/definitions/deduplication-runtime.json +0 -1
  161. package/definitions/deduplication.json +0 -782
  162. package/definitions/design-runtime.json +0 -1
  163. package/definitions/design.json +0 -1827
  164. package/definitions/document-runtime.json +0 -1
  165. package/definitions/document.json +0 -758
  166. package/definitions/email-settings-runtime.json +0 -1
  167. package/definitions/email-settings.json +0 -3736
  168. package/definitions/email-template-runtime.json +0 -1
  169. package/definitions/email-template.json +0 -1441
  170. package/definitions/entity-mapping-runtime.json +0 -1
  171. package/definitions/entity-mapping.json +0 -1829
  172. package/definitions/entity-runtime.json +0 -1
  173. package/definitions/entity.json +0 -11546
  174. package/definitions/environments-runtime.json +0 -1
  175. package/definitions/environments.json +0 -988
  176. package/definitions/event-catalog-runtime.json +0 -1
  177. package/definitions/event-catalog.json +0 -2014
  178. package/definitions/file-runtime.json +0 -1
  179. package/definitions/file.json +0 -4298
  180. package/definitions/iban-runtime.json +0 -1
  181. package/definitions/iban.json +0 -132
  182. package/definitions/integration-toolkit-runtime.json +0 -1
  183. package/definitions/integration-toolkit.json +0 -13069
  184. package/definitions/journey-runtime.json +0 -1
  185. package/definitions/journey.json +0 -3586
  186. package/definitions/kanban-runtime.json +0 -1
  187. package/definitions/kanban.json +0 -1506
  188. package/definitions/message-runtime.json +0 -1
  189. package/definitions/message.json +0 -3667
  190. package/definitions/metering-runtime.json +0 -1
  191. package/definitions/metering.json +0 -3132
  192. package/definitions/notes-runtime.json +0 -1
  193. package/definitions/notes.json +0 -1698
  194. package/definitions/notification-runtime.json +0 -1
  195. package/definitions/notification.json +0 -1439
  196. package/definitions/organization-runtime.json +0 -1
  197. package/definitions/organization.json +0 -1192
  198. package/definitions/partner-directory-runtime.json +0 -1
  199. package/definitions/partner-directory.json +0 -2284
  200. package/definitions/permissions-runtime.json +0 -1
  201. package/definitions/permissions.json +0 -1598
  202. package/definitions/pricing-runtime.json +0 -1
  203. package/definitions/pricing-tier-runtime.json +0 -1
  204. package/definitions/pricing-tier.json +0 -105
  205. package/definitions/pricing.json +0 -14369
  206. package/definitions/purpose-runtime.json +0 -1
  207. package/definitions/purpose.json +0 -524
  208. package/definitions/query-runtime.json +0 -1
  209. package/definitions/query.json +0 -3178
  210. package/definitions/sandbox-runtime.json +0 -1
  211. package/definitions/sandbox.json +0 -453
  212. package/definitions/sharing-runtime.json +0 -1
  213. package/definitions/sharing.json +0 -956
  214. package/definitions/snapshot-runtime.json +0 -1
  215. package/definitions/snapshot.json +0 -1103
  216. package/definitions/submission-runtime.json +0 -1
  217. package/definitions/submission.json +0 -313
  218. package/definitions/targeting-runtime.json +0 -1
  219. package/definitions/targeting.json +0 -2285
  220. package/definitions/template-variables-runtime.json +0 -1
  221. package/definitions/template-variables.json +0 -1416
  222. package/definitions/user-runtime.json +0 -1
  223. package/definitions/user.json +0 -3051
  224. package/definitions/validation-rules-runtime.json +0 -1
  225. package/definitions/validation-rules.json +0 -2642
  226. package/definitions/webhooks-runtime.json +0 -1
  227. package/definitions/webhooks.json +0 -1875
  228. package/definitions/workflow-definition-runtime.json +0 -1
  229. package/definitions/workflow-definition.json +0 -3592
  230. package/definitions/workflow-runtime.json +0 -1
  231. package/definitions/workflow.json +0 -4669
  232. package/dist/integration-toolkit-GOFVOMNH.js +0 -7
  233. package/dist/integration-toolkit-XMM5LLK6.cjs +0 -7
@@ -1,1416 +0,0 @@
1
- {
2
- "openapi": "3.0.2",
3
- "info": {
4
- "title": "Template Variables API",
5
- "description": "This API provides dynamic template processing and variable management, seamless Handlebars template compilation, custom variable operations, and context-aware content generation across email, document templates and snippets.\n",
6
- "version": "1.1.0"
7
- },
8
- "servers": [
9
- {
10
- "url": "https://template-variables-api.sls.epilot.io"
11
- },
12
- {
13
- "url": "https://template-variables-api.dev.sls.epilot.io",
14
- "description": "Production server"
15
- }
16
- ],
17
- "tags": [
18
- {
19
- "name": "Templates",
20
- "description": "Template-based Operations"
21
- },
22
- {
23
- "name": "Custom Variables",
24
- "description": "Custom Variables Operations"
25
- }
26
- ],
27
- "security": [
28
- {
29
- "EpilotAuth": []
30
- },
31
- {
32
- "EpilotOrg": []
33
- }
34
- ],
35
- "paths": {
36
- "/v1/template-variables/categories": {
37
- "get": {
38
- "operationId": "getCategories",
39
- "summary": "getCategories",
40
- "description": "Get all template variable categories",
41
- "tags": [
42
- "Templates"
43
- ],
44
- "parameters": [
45
- {
46
- "name": "lang",
47
- "in": "query",
48
- "schema": {
49
- "$ref": "#/components/schemas/Language"
50
- }
51
- }
52
- ],
53
- "responses": {
54
- "200": {
55
- "description": "ok",
56
- "content": {
57
- "application/json": {
58
- "schema": {
59
- "type": "array",
60
- "items": {
61
- "$ref": "#/components/schemas/CategoryResult"
62
- }
63
- },
64
- "example": [
65
- {
66
- "category": "contact",
67
- "description": "Contact"
68
- },
69
- {
70
- "category": "account",
71
- "description": "Account"
72
- },
73
- {
74
- "category": "organization",
75
- "description": "Organization"
76
- }
77
- ]
78
- }
79
- }
80
- }
81
- }
82
- }
83
- },
84
- "/v1/template-variables:search": {
85
- "post": {
86
- "operationId": "searchVariables",
87
- "summary": "searchVariables",
88
- "description": "Search variables",
89
- "tags": [
90
- "Templates"
91
- ],
92
- "requestBody": {
93
- "content": {
94
- "application/json": {
95
- "schema": {
96
- "type": "object",
97
- "properties": {
98
- "template_type": {
99
- "$ref": "#/components/schemas/TemplateType"
100
- },
101
- "query": {
102
- "type": "string",
103
- "description": "Search string",
104
- "example": "logo"
105
- },
106
- "from": {
107
- "type": "integer",
108
- "default": 0
109
- },
110
- "size": {
111
- "type": "integer",
112
- "default": 25
113
- },
114
- "lang": {
115
- "$ref": "#/components/schemas/Language"
116
- },
117
- "entity_schemas": {
118
- "type": "array",
119
- "items": {
120
- "type": "string",
121
- "description": "Schema slug",
122
- "example": "contact"
123
- }
124
- }
125
- },
126
- "required": [
127
- "template_type",
128
- "query"
129
- ]
130
- }
131
- }
132
- }
133
- },
134
- "responses": {
135
- "200": {
136
- "description": "ok",
137
- "content": {
138
- "application/json": {
139
- "schema": {
140
- "type": "array",
141
- "items": {
142
- "$ref": "#/components/schemas/VariableResult"
143
- }
144
- },
145
- "example": [
146
- {
147
- "group": "Personal Details",
148
- "insert": "{{account.name}}",
149
- "description": "Company name",
150
- "type": "simple"
151
- },
152
- {
153
- "group": "Personal Details",
154
- "insert": "{{account.tax_id}}",
155
- "description": "Tax ID",
156
- "type": "simple"
157
- },
158
- {
159
- "group": "Address details",
160
- "qrdata": "{{account.address_details}}",
161
- "description": "Address Details",
162
- "type": "partial"
163
- },
164
- {
165
- "group": "Address Details",
166
- "insert": "{{account.address.street}}",
167
- "description": "Address - Street name",
168
- "type": "simple"
169
- },
170
- {
171
- "group": "Address Details",
172
- "insert": "{{account.address.street_number}}",
173
- "description": "Address - Street number",
174
- "type": "simple"
175
- },
176
- {
177
- "group": "Address Details",
178
- "insert": "{{account.address.postal_code}}",
179
- "description": "Address - Postal code",
180
- "type": "simple"
181
- },
182
- {
183
- "group": "Address Details",
184
- "insert": "{{account.address.city}}",
185
- "description": "Address - City",
186
- "type": "simple"
187
- }
188
- ]
189
- }
190
- }
191
- }
192
- }
193
- }
194
- },
195
- "/v1/template-variables:context": {
196
- "post": {
197
- "operationId": "getVariableContext",
198
- "summary": "getVariableContext",
199
- "description": "Get full variable context\n\nCalls Entity API, User API, Brand API and others to construct full context object used for template variable replace\n",
200
- "tags": [
201
- "Templates"
202
- ],
203
- "requestBody": {
204
- "content": {
205
- "application/json": {
206
- "schema": {
207
- "type": "object",
208
- "properties": {
209
- "parameters": {
210
- "$ref": "#/components/schemas/VariableParameters"
211
- }
212
- }
213
- }
214
- }
215
- }
216
- },
217
- "responses": {
218
- "200": {
219
- "description": "ok",
220
- "content": {
221
- "application/json": {
222
- "schema": {
223
- "$ref": "#/components/schemas/VariableContext"
224
- }
225
- }
226
- }
227
- }
228
- }
229
- }
230
- },
231
- "/v1/template-variables:replace": {
232
- "post": {
233
- "operationId": "replaceTemplates",
234
- "summary": "replaceTemplates",
235
- "description": "Replace variables in handlebars templates\n\nTakes in an array of input templates and outputs the output text with replaced variables\n",
236
- "tags": [
237
- "Templates"
238
- ],
239
- "requestBody": {
240
- "content": {
241
- "application/json": {
242
- "schema": {
243
- "type": "object",
244
- "properties": {
245
- "inputs": {
246
- "type": "array",
247
- "items": {
248
- "type": "string",
249
- "example": "Hello, {{contact.first_name}}!\n\n{{{brand.signature}}}\n"
250
- }
251
- },
252
- "parameters": {
253
- "$ref": "#/components/schemas/VariableParameters"
254
- }
255
- }
256
- }
257
- }
258
- }
259
- },
260
- "responses": {
261
- "200": {
262
- "description": "ok",
263
- "content": {
264
- "application/json": {
265
- "schema": {
266
- "$ref": "#/components/schemas/ReplacementOutput"
267
- }
268
- }
269
- }
270
- }
271
- }
272
- }
273
- },
274
- "/v2/template:replace": {
275
- "post": {
276
- "operationId": "replaceTemplatesV2",
277
- "summary": "Replace variables in templates (V2)",
278
- "description": "Replace variables in handlebars templates with raw value preservation\n\nV2 returns parsed outputs that preserve the original data types (arrays, objects, strings)\ninstead of stringifying always. Variables with strings mixed with other variables will be returned in the stringified format. \nAlongside the parsed outputs for every single variable.\n\nTakes in an array of input templates and outputs an object mapping each input and variable\nto their rendered values with type preservation.\n",
279
- "tags": [
280
- "Templates"
281
- ],
282
- "requestBody": {
283
- "content": {
284
- "application/json": {
285
- "schema": {
286
- "type": "object",
287
- "properties": {
288
- "inputs": {
289
- "type": "array",
290
- "items": {
291
- "type": "string",
292
- "example": "Hello, {{contact.first_name}}!\n"
293
- }
294
- },
295
- "parameters": {
296
- "$ref": "#/components/schemas/VariableParameters"
297
- }
298
- }
299
- }
300
- }
301
- }
302
- },
303
- "responses": {
304
- "200": {
305
- "description": "ok",
306
- "content": {
307
- "application/json": {
308
- "schema": {
309
- "$ref": "#/components/schemas/ReplacementOutputV2"
310
- }
311
- }
312
- }
313
- }
314
- }
315
- }
316
- },
317
- "/v1/custom-variables": {
318
- "get": {
319
- "operationId": "getCustomVariables",
320
- "summary": "Get custom variables",
321
- "description": "Get all custom variables of organization",
322
- "tags": [
323
- "Custom Variables"
324
- ],
325
- "responses": {
326
- "200": {
327
- "description": "Success",
328
- "content": {
329
- "application/json": {
330
- "schema": {
331
- "type": "array",
332
- "items": {
333
- "$ref": "#/components/schemas/CustomVariable"
334
- }
335
- }
336
- }
337
- }
338
- },
339
- "403": {
340
- "description": "Forbidden"
341
- }
342
- }
343
- },
344
- "post": {
345
- "operationId": "createCustomVariable",
346
- "summary": "Create custom variable",
347
- "description": "Create custom variable",
348
- "tags": [
349
- "Custom Variables"
350
- ],
351
- "requestBody": {
352
- "content": {
353
- "application/json": {
354
- "schema": {
355
- "$ref": "#/components/schemas/CustomVariable"
356
- }
357
- }
358
- }
359
- },
360
- "responses": {
361
- "201": {
362
- "description": "Success",
363
- "content": {
364
- "application/json": {
365
- "schema": {
366
- "$ref": "#/components/schemas/CustomVariable"
367
- }
368
- }
369
- }
370
- },
371
- "403": {
372
- "description": "Forbidden"
373
- },
374
- "409": {
375
- "description": "Conflict - Custom variable with the same key already exists"
376
- }
377
- }
378
- }
379
- },
380
- "/v1/custom-variables:search": {
381
- "post": {
382
- "operationId": "searchCustomVariables",
383
- "summary": "searchCustomVariables",
384
- "description": "Search custom variables",
385
- "tags": [
386
- "Custom Variables"
387
- ],
388
- "requestBody": {
389
- "content": {
390
- "application/json": {
391
- "schema": {
392
- "$ref": "#/components/schemas/CustomVariablesSearchParams"
393
- }
394
- }
395
- }
396
- },
397
- "responses": {
398
- "200": {
399
- "description": "Success",
400
- "content": {
401
- "application/json": {
402
- "schema": {
403
- "type": "object",
404
- "properties": {
405
- "results": {
406
- "type": "array",
407
- "items": {
408
- "$ref": "#/components/schemas/CustomVariable"
409
- }
410
- },
411
- "hits": {
412
- "type": "integer",
413
- "description": "Total number of results",
414
- "example": 100
415
- }
416
- }
417
- }
418
- }
419
- }
420
- },
421
- "403": {
422
- "description": "Forbidden"
423
- }
424
- }
425
- }
426
- },
427
- "/v1/custom-variables/{id}": {
428
- "put": {
429
- "operationId": "updateCustomVariable",
430
- "summary": "Update custom variable",
431
- "description": "Update custom variable",
432
- "tags": [
433
- "Custom Variables"
434
- ],
435
- "parameters": [
436
- {
437
- "name": "id",
438
- "description": "Custom variable ID",
439
- "in": "path",
440
- "required": true,
441
- "schema": {
442
- "type": "string"
443
- },
444
- "example": "rbse777b-3cf8-4bff-bb0c-253fd1123250"
445
- }
446
- ],
447
- "requestBody": {
448
- "content": {
449
- "application/json": {
450
- "schema": {
451
- "$ref": "#/components/schemas/CustomVariable"
452
- }
453
- }
454
- }
455
- },
456
- "responses": {
457
- "200": {
458
- "description": "Success",
459
- "content": {
460
- "application/json": {
461
- "schema": {
462
- "$ref": "#/components/schemas/CustomVariable"
463
- }
464
- }
465
- }
466
- },
467
- "403": {
468
- "description": "Forbidden"
469
- },
470
- "409": {
471
- "description": "Conflict - Custom variable with the same key already exists"
472
- }
473
- }
474
- },
475
- "get": {
476
- "operationId": "getCustomVariable",
477
- "summary": "Get custom variable",
478
- "description": "Get custom variable",
479
- "tags": [
480
- "Custom Variables"
481
- ],
482
- "parameters": [
483
- {
484
- "name": "id",
485
- "description": "Custom vairable ID",
486
- "in": "path",
487
- "required": true,
488
- "schema": {
489
- "type": "string"
490
- },
491
- "example": "rbse777b-3cf8-4bff-bb0c-253fd1123250"
492
- }
493
- ],
494
- "responses": {
495
- "200": {
496
- "description": "Success",
497
- "content": {
498
- "application/json": {
499
- "schema": {
500
- "$ref": "#/components/schemas/CustomVariable"
501
- }
502
- }
503
- }
504
- },
505
- "403": {
506
- "description": "Forbidden"
507
- },
508
- "404": {
509
- "description": "Not found"
510
- }
511
- }
512
- },
513
- "delete": {
514
- "operationId": "deleteCustomVariable",
515
- "summary": "Delete custom variable",
516
- "description": "Immediately and permanently deletes a custom variable",
517
- "tags": [
518
- "Custom Variables"
519
- ],
520
- "parameters": [
521
- {
522
- "name": "id",
523
- "description": "Custom vairable ID",
524
- "in": "path",
525
- "required": true,
526
- "schema": {
527
- "type": "string"
528
- },
529
- "example": "rbse777b-3cf8-4bff-bb0c-253fd1123250"
530
- }
531
- ],
532
- "responses": {
533
- "204": {
534
- "description": "Success"
535
- },
536
- "403": {
537
- "description": "Forbidden"
538
- }
539
- }
540
- }
541
- },
542
- "/v1/custom-variables/order-table-blueprint": {
543
- "get": {
544
- "operationId": "getBluePrintTableConfig",
545
- "summary": "Get default table config",
546
- "description": "Get default table config",
547
- "tags": [
548
- "Custom Variables"
549
- ],
550
- "responses": {
551
- "200": {
552
- "description": "Success",
553
- "content": {
554
- "application/json": {
555
- "schema": {
556
- "$ref": "#/components/schemas/CustomVariable"
557
- }
558
- }
559
- }
560
- },
561
- "403": {
562
- "description": "Forbidden"
563
- }
564
- }
565
- }
566
- }
567
- },
568
- "components": {
569
- "securitySchemes": {
570
- "EpilotAuth": {
571
- "type": "http",
572
- "scheme": "bearer",
573
- "description": "Authorization header with epilot OAuth2 bearer token",
574
- "bearerFormat": "JWT"
575
- },
576
- "EpilotOrg": {
577
- "description": "Overrides the target organization",
578
- "name": "x-ivy-org-id",
579
- "in": "header",
580
- "type": "apiKey"
581
- }
582
- },
583
- "schemas": {
584
- "Language": {
585
- "type": "string",
586
- "description": "2-letter language code (ISO 639-1)",
587
- "default": "de"
588
- },
589
- "VariableParameters": {
590
- "type": "object",
591
- "properties": {
592
- "template_type": {
593
- "$ref": "#/components/schemas/TemplateType"
594
- },
595
- "language": {
596
- "$ref": "#/components/schemas/Language"
597
- },
598
- "main_entity_id": {
599
- "type": "string",
600
- "format": "uuid",
601
- "description": "The main entity ID. Use main entity in order to use the variable without schema slug prefix - or just pass directly to other object ID.",
602
- "example": "63753437-c9e2-4e83-82bb-b1c666514561"
603
- },
604
- "brand_id": {
605
- "type": "number",
606
- "nullable": true,
607
- "description": "Brand ID",
608
- "example": 123451
609
- },
610
- "user_id": {
611
- "type": "string",
612
- "nullable": true,
613
- "description": "User ID",
614
- "example": "50001"
615
- },
616
- "user_org_id": {
617
- "type": "string",
618
- "nullable": true,
619
- "description": "Organization ID of the user",
620
- "example": "729224"
621
- },
622
- "custom_variables": {
623
- "type": "array",
624
- "description": "Custom variables with specified values form other services.",
625
- "items": {
626
- "$ref": "#/components/schemas/ExternalCustomVariable"
627
- }
628
- },
629
- "context_data": {
630
- "type": "object",
631
- "description": "If context data is available, this data will be used for variable replace."
632
- },
633
- "template_name": {
634
- "type": "string",
635
- "description": "The name of email template"
636
- },
637
- "template_tags": {
638
- "type": "array",
639
- "description": "The tags of email template",
640
- "items": {
641
- "type": "string"
642
- }
643
- },
644
- "template_id": {
645
- "type": "string",
646
- "description": "The Id of email template"
647
- },
648
- "variables_version": {
649
- "type": "string",
650
- "description": "The version of the variables syntax supported. Default is 1.0",
651
- "example": "2"
652
- }
653
- },
654
- "required": [
655
- "template_type"
656
- ]
657
- },
658
- "ReplacementOutput": {
659
- "type": "object",
660
- "properties": {
661
- "outputs": {
662
- "type": "array",
663
- "items": {
664
- "type": "string"
665
- },
666
- "example": [
667
- "[Brand Name GmbH] Order confirmation\nHello Customer Name\n\n<span color=\"#ccc\">Brand Name GmbH</span>\n<img src=\"https://logobucket.s3.amazonaws.com/brandlogo.png\" alt=\"Brand Name\"/>\n<a href=\"https://company.com/imprint\">imprint</a>\n"
668
- ]
669
- }
670
- }
671
- },
672
- "ReplacementOutputV2": {
673
- "type": "object",
674
- "properties": {
675
- "outputs": {
676
- "type": "object",
677
- "description": "Dictionary mapping input templates and variable names to their resolved output values.\nValues preserve their original types (string, array, object) instead of being stringified.\n\nKeys include:\n- Original input templates (e.g., \"Hello {{name}}\")\n- Individual variables found in templates (e.g., \"{{name}}\", \"{{product_images[*].public_url}}\")\n",
678
- "additionalProperties": {
679
- "anyOf": [
680
- {
681
- "type": "string"
682
- },
683
- {
684
- "type": "number"
685
- },
686
- {
687
- "type": "boolean"
688
- },
689
- {
690
- "type": "array",
691
- "items": {}
692
- },
693
- {
694
- "type": "object",
695
- "additionalProperties": {}
696
- }
697
- ]
698
- },
699
- "example": {
700
- "Hello {{first_name}}": "Hello John",
701
- "{{first_name}}": "John",
702
- "{{product_images[*].public_url}}": [
703
- "http://myimage.server.com/img1.png",
704
- "http://myimage.server.com/img2.png"
705
- ]
706
- }
707
- }
708
- }
709
- },
710
- "VariableResult": {
711
- "type": "object",
712
- "properties": {
713
- "type": {
714
- "type": "string",
715
- "enum": [
716
- "simple",
717
- "partial"
718
- ]
719
- },
720
- "qrdata": {
721
- "type": "string",
722
- "description": "Payload for the QR data"
723
- },
724
- "group": {
725
- "type": "string",
726
- "description": "Variable group"
727
- },
728
- "insert": {
729
- "type": "string",
730
- "description": "The value which is used to insert to template"
731
- },
732
- "description": {
733
- "type": "string",
734
- "description": "Variable description"
735
- }
736
- }
737
- },
738
- "CustomVariablesSearchParams": {
739
- "type": "object",
740
- "properties": {
741
- "type": {
742
- "type": "string",
743
- "description": "Variable type",
744
- "enum": [
745
- "order_table",
746
- "custom",
747
- "journey_link",
748
- "snippet"
749
- ]
750
- },
751
- "tags": {
752
- "type": "array",
753
- "description": "The tags of custom variable",
754
- "items": {
755
- "type": "string"
756
- }
757
- },
758
- "query": {
759
- "type": "string",
760
- "description": "Search string",
761
- "example": "logo"
762
- },
763
- "from": {
764
- "type": "integer",
765
- "default": 0
766
- },
767
- "size": {
768
- "type": "integer",
769
- "default": 25
770
- },
771
- "sort_by": {
772
- "type": "string",
773
- "description": "Sort by field",
774
- "example": "created_at, name, key"
775
- },
776
- "fields": {
777
- "type": "array",
778
- "description": "Fields to return",
779
- "items": {
780
- "type": "string"
781
- }
782
- }
783
- }
784
- },
785
- "VariableContext": {
786
- "type": "object",
787
- "properties": {
788
- "unsubscribe_url": {
789
- "type": "string",
790
- "example": "https://consent.sls.epilot.io/v1/unsubscribe?token=abc123"
791
- },
792
- "main": {
793
- "type": "object",
794
- "additionalProperties": true,
795
- "example": {
796
- "_id": "03be777b-3cf8-4bff-bb0c-253fd1128479",
797
- "_title": "Example Customer",
798
- "customer_number": 123,
799
- "first_name": "Example",
800
- "last_name": "Customer",
801
- "title": "Prof.",
802
- "salutation": "Ms. / Mrs.",
803
- "birthdate": "2018-03-03",
804
- "email": [
805
- {
806
- "email": "contact.primary@domain.com",
807
- "_tags": [
808
- "primary"
809
- ]
810
- },
811
- {
812
- "email": "sale@domain.com"
813
- }
814
- ],
815
- "phone": [
816
- {
817
- "phone": "+49123456789",
818
- "_tags": [
819
- "primary",
820
- "support"
821
- ]
822
- },
823
- {
824
- "phone": "+49504305025"
825
- }
826
- ],
827
- "address": [
828
- {
829
- "_tags": [
830
- "primary",
831
- "delivery"
832
- ],
833
- "country": "Germany",
834
- "city": "Köln",
835
- "postal_code": "50825",
836
- "street": "Im Mediapark",
837
- "street_number": "8a",
838
- "additional_info": "11th floor"
839
- },
840
- {
841
- "_tags": [
842
- "billing"
843
- ],
844
- "country": "Finland",
845
- "city": "Köln",
846
- "postal_code": "50670",
847
- "street": "Im Mediapark",
848
- "street_number": "8a",
849
- "additional_info": ""
850
- }
851
- ],
852
- "account": [
853
- {
854
- "status": "Active",
855
- "_id": "c8d20ff6-df7a-465a-a26e-e5d28c2a3f79",
856
- "tax_id": "123abc",
857
- "name": "name",
858
- "email": [
859
- {
860
- "email": "account.primary@domain.com",
861
- "_tags": [
862
- "primary"
863
- ]
864
- },
865
- {
866
- "email": "account.sale@domain.com"
867
- }
868
- ],
869
- "phone": [
870
- {
871
- "phone": "+49123456789",
872
- "_tags": [
873
- "primary",
874
- "support"
875
- ]
876
- },
877
- {
878
- "phone": "+49504305025"
879
- }
880
- ],
881
- "address": [
882
- {
883
- "_tags": [
884
- "primary",
885
- "delivery"
886
- ],
887
- "country": "Germany",
888
- "city": "Köln",
889
- "postal_code": "50825",
890
- "street": "Im Mediapark",
891
- "street_number": "8a",
892
- "additional_info": "11th floor"
893
- }
894
- ]
895
- }
896
- ]
897
- }
898
- },
899
- "contact": {
900
- "type": "object",
901
- "additionalProperties": true,
902
- "example": {
903
- "_id": "03be777b-3cf8-4bff-bb0c-253fd1128479",
904
- "_title": "Example Customer",
905
- "customer_number": 123,
906
- "first_name": "Example",
907
- "last_name": "Customer",
908
- "title": "Prof.",
909
- "salutation": "Ms. / Mrs.",
910
- "birthdate": "2018-03-03",
911
- "email": [
912
- {
913
- "email": "contact.primary@domain.com",
914
- "_tags": [
915
- "primary"
916
- ]
917
- },
918
- {
919
- "email": "sale@domain.com"
920
- }
921
- ],
922
- "phone": [
923
- {
924
- "phone": "+49123456789",
925
- "_tags": [
926
- "primary",
927
- "support"
928
- ]
929
- },
930
- {
931
- "phone": "+49504305025"
932
- }
933
- ],
934
- "address": [
935
- {
936
- "_tags": [
937
- "primary",
938
- "delivery"
939
- ],
940
- "country": "Germany",
941
- "city": "Köln",
942
- "postal_code": "50825",
943
- "street": "Im Mediapark",
944
- "street_number": "8a",
945
- "additional_info": "11th floor"
946
- },
947
- {
948
- "_tags": [
949
- "billing"
950
- ],
951
- "country": "Finland",
952
- "city": "Köln",
953
- "postal_code": "50670",
954
- "street": "Im Mediapark",
955
- "street_number": "8a",
956
- "additional_info": ""
957
- }
958
- ],
959
- "account": [
960
- {
961
- "status": "Active",
962
- "_id": "c8d20ff6-df7a-465a-a26e-e5d28c2a3f79",
963
- "tax_id": "123abc",
964
- "name": "name",
965
- "email": [
966
- {
967
- "email": "account.primary@domain.com",
968
- "_tags": [
969
- "primary"
970
- ]
971
- },
972
- {
973
- "email": "account.sale@domain.com"
974
- }
975
- ],
976
- "phone": [
977
- {
978
- "phone": "+49123456789",
979
- "_tags": [
980
- "primary",
981
- "support"
982
- ]
983
- },
984
- {
985
- "phone": "+49504305025"
986
- }
987
- ],
988
- "address": [
989
- {
990
- "_tags": [
991
- "primary",
992
- "delivery"
993
- ],
994
- "country": "Germany",
995
- "city": "KölnSS",
996
- "postal_code": "50825",
997
- "street": "Im Mediapark",
998
- "street_number": "8a",
999
- "additional_info": "11th floor"
1000
- }
1001
- ]
1002
- }
1003
- ]
1004
- }
1005
- },
1006
- "brand": {
1007
- "type": "object",
1008
- "additionalProperties": true,
1009
- "example": {
1010
- "id": 123453,
1011
- "name": "Brand name",
1012
- "signature": "Signature"
1013
- }
1014
- }
1015
- }
1016
- },
1017
- "TemplateType": {
1018
- "type": "string",
1019
- "enum": [
1020
- "email",
1021
- "document"
1022
- ]
1023
- },
1024
- "CategoryResult": {
1025
- "type": "object",
1026
- "properties": {
1027
- "category": {
1028
- "type": "string",
1029
- "example": "contact"
1030
- },
1031
- "description": {
1032
- "type": "string",
1033
- "example": "Contact"
1034
- }
1035
- }
1036
- },
1037
- "ExternalCustomVariable": {
1038
- "type": "object",
1039
- "properties": {
1040
- "variable": {
1041
- "type": "string",
1042
- "example": "{{craftsmen.invitation_link}}"
1043
- },
1044
- "value": {
1045
- "type": "string",
1046
- "example": "https://partner.epilot.cloud/activate-account?user_name=htny.pct%2Btet%40gmail.com&confirmation_code=EdXPRW19"
1047
- }
1048
- }
1049
- },
1050
- "CustomVariable": {
1051
- "type": "object",
1052
- "properties": {
1053
- "id": {
1054
- "type": "string",
1055
- "description": "ID",
1056
- "example": "rbse777b-3cf8-4bff-bb0c-253fd1123250"
1057
- },
1058
- "type": {
1059
- "type": "string",
1060
- "description": "Custom variable type",
1061
- "enum": [
1062
- "order_table",
1063
- "custom",
1064
- "journey_link",
1065
- "snippet"
1066
- ]
1067
- },
1068
- "name": {
1069
- "type": "string",
1070
- "description": "Custom variable name",
1071
- "example": "My Custom table"
1072
- },
1073
- "key": {
1074
- "type": "string",
1075
- "description": "The key which is used for Handlebar variable syntax {{key}}",
1076
- "example": "my_custom_table"
1077
- },
1078
- "_tags": {
1079
- "type": "array",
1080
- "description": "The tags of custom variable",
1081
- "items": {
1082
- "type": "string"
1083
- }
1084
- },
1085
- "_manifest": {
1086
- "type": "array",
1087
- "description": "The manifest IDs associated with this custom variable",
1088
- "items": {
1089
- "type": "string"
1090
- }
1091
- },
1092
- "helper_params": {
1093
- "type": "array",
1094
- "description": "The helper function parameter's names",
1095
- "items": {
1096
- "type": "string"
1097
- },
1098
- "example": [
1099
- "param1",
1100
- "param2"
1101
- ]
1102
- },
1103
- "helper_logic": {
1104
- "type": "string",
1105
- "description": "The helper function logic",
1106
- "example": "return param1 * param2;"
1107
- },
1108
- "config": {
1109
- "type": "object",
1110
- "description": "Variable configuration",
1111
- "example": {
1112
- "header": null,
1113
- "style": {
1114
- "color": "#222",
1115
- "background": "#fff",
1116
- "font-size": "16px",
1117
- "font-family": "",
1118
- "padding-bottom": "4px",
1119
- "font-weight": "bold",
1120
- "border": "none !important",
1121
- "text-align": "left"
1122
- },
1123
- "columns": [
1124
- {
1125
- "id": "item",
1126
- "index": 0,
1127
- "label": {
1128
- "en": "Item",
1129
- "de": "Produkt"
1130
- },
1131
- "enable": true,
1132
- "draggable": true,
1133
- "style": {
1134
- "padding-left": "10px",
1135
- "max-width": "30%"
1136
- }
1137
- },
1138
- {
1139
- "id": "quantity",
1140
- "index": 1,
1141
- "label": {
1142
- "en": "Quanity",
1143
- "de": "Menge"
1144
- },
1145
- "enable": true,
1146
- "draggable": true,
1147
- "style": {
1148
- "min-width": "60px",
1149
- "width": "30%"
1150
- }
1151
- },
1152
- {
1153
- "id": "tax",
1154
- "index": 2,
1155
- "label": {
1156
- "en": "Tax Rate",
1157
- "de": "Steuerrate"
1158
- },
1159
- "enable": true,
1160
- "draggable": true,
1161
- "style": {
1162
- "min-width": "60px",
1163
- "width": "30%"
1164
- }
1165
- },
1166
- {
1167
- "id": "unit_amount",
1168
- "index": 3,
1169
- "label": {
1170
- "en": "Unit Net Price",
1171
- "de": "Nettopreis"
1172
- },
1173
- "enable": true,
1174
- "draggable": true,
1175
- "style": {
1176
- "min-width": "60px",
1177
- "width": "30%"
1178
- }
1179
- },
1180
- {
1181
- "id": "net_total",
1182
- "index": 4,
1183
- "label": {
1184
- "en": "Net total",
1185
- "de": "Nettosumme"
1186
- },
1187
- "enable": "true,",
1188
- "draggable": true,
1189
- "style": {
1190
- "min-width": "60px",
1191
- "width": "30%"
1192
- }
1193
- },
1194
- {
1195
- "id": "gross_total",
1196
- "index": 5,
1197
- "label": {
1198
- "en": "Total",
1199
- "de": "Gesamt"
1200
- },
1201
- "enable": true,
1202
- "draggable": true,
1203
- "style": {
1204
- "min-width": "60px",
1205
- "width": "30%"
1206
- }
1207
- }
1208
- ],
1209
- "body": {
1210
- "product_name": {
1211
- "parent_column": "item",
1212
- "enable": true,
1213
- "style": {
1214
- "color": "#222",
1215
- "background": "#fff",
1216
- "font-size": "14px",
1217
- "font-family": "",
1218
- "font-weight": "bold",
1219
- "font-style": "normal",
1220
- "padding-top": "16px",
1221
- "padding-bottom": "8px",
1222
- "border": "none !important",
1223
- "vertical-align": "top",
1224
- "text-align": "left",
1225
- "max-width": "30%",
1226
- "padding-left": "10px"
1227
- }
1228
- },
1229
- "price_description": {
1230
- "parent_column": "item",
1231
- "enable": true,
1232
- "style": {
1233
- "color": "#222",
1234
- "background": "#fff",
1235
- "font-size": "12px",
1236
- "font-family": "",
1237
- "font-weight": "normal",
1238
- "font-style": "normal",
1239
- "text-align": "left",
1240
- "max-width": "30%"
1241
- }
1242
- },
1243
- "product_description": {
1244
- "parent_column": "item",
1245
- "enable": true,
1246
- "style": {
1247
- "color": "#222",
1248
- "background": "#fff",
1249
- "font-size": "12px",
1250
- "font-family": "",
1251
- "font-weight": "normal",
1252
- "font-style": "normal",
1253
- "text-align": "left",
1254
- "max-width": "30%"
1255
- }
1256
- },
1257
- "quantity": {
1258
- "enable": true,
1259
- "style": {
1260
- "color": "#222",
1261
- "background": "#fff",
1262
- "font-size": "12px",
1263
- "font-family": "",
1264
- "font-weight": "normal",
1265
- "font-style": "normal",
1266
- "text-align": "left",
1267
- "max-width": "30%"
1268
- }
1269
- },
1270
- "tax": {
1271
- "enable": true,
1272
- "style": {
1273
- "color": "#222",
1274
- "background": "#fff",
1275
- "font-size": "12px",
1276
- "font-family": "",
1277
- "font-weight": "normal",
1278
- "font-style": "normal",
1279
- "text-align": "left",
1280
- "max-width": "30%"
1281
- }
1282
- },
1283
- "unit_amount": {
1284
- "enable": true,
1285
- "style": {
1286
- "color": "#222",
1287
- "background": "#fff",
1288
- "font-size": "12px",
1289
- "font-family": "",
1290
- "font-weight": "normal",
1291
- "font-style": "normal",
1292
- "text-align": "left",
1293
- "max-width": "30%"
1294
- }
1295
- },
1296
- "net_total": {
1297
- "enable": true,
1298
- "style": {
1299
- "color": "#222",
1300
- "background": "#fff",
1301
- "font-size": "12px",
1302
- "font-family": "",
1303
- "font-weight": "normal",
1304
- "font-style": "normal",
1305
- "text-align": "left",
1306
- "max-width": "30%"
1307
- }
1308
- },
1309
- "gross_total": {
1310
- "enable": true,
1311
- "style": {
1312
- "color": "#222",
1313
- "background": "#fff",
1314
- "font-size": "12px",
1315
- "font-family": "",
1316
- "font-weight": "normal",
1317
- "font-style": "normal",
1318
- "text-align": "left",
1319
- "max-width": "30%"
1320
- }
1321
- }
1322
- },
1323
- "footer": {
1324
- "payment_type": {
1325
- "enable": true,
1326
- "style": {
1327
- "color": "#222",
1328
- "background": "#fff",
1329
- "font-size": "12px",
1330
- "font-family": "",
1331
- "font-weight": "normal",
1332
- "font-style": "normal",
1333
- "text-align": "left",
1334
- "max-width": "30%"
1335
- }
1336
- },
1337
- "net_total": {
1338
- "enable": true,
1339
- "style": {
1340
- "color": "#222",
1341
- "background": "#fff",
1342
- "font-size": "12px",
1343
- "font-family": "",
1344
- "font-weight": "normal",
1345
- "font-style": "normal",
1346
- "text-align": "left",
1347
- "max-width": "30%"
1348
- }
1349
- },
1350
- "amount_tax": {
1351
- "enable": true,
1352
- "style": {
1353
- "color": "#222",
1354
- "background": "#fff",
1355
- "font-size": "12px",
1356
- "font-family": "",
1357
- "font-weight": "normal",
1358
- "font-style": "normal",
1359
- "text-align": "left",
1360
- "max-width": "30%"
1361
- }
1362
- },
1363
- "gross_total": {
1364
- "enable": true,
1365
- "style": {
1366
- "color": "#222",
1367
- "background": "#fff",
1368
- "font-size": "12px",
1369
- "font-family": "",
1370
- "font-weight": "normal",
1371
- "font-style": "normal",
1372
- "text-align": "left",
1373
- "max-width": "30%"
1374
- }
1375
- }
1376
- }
1377
- }
1378
- },
1379
- "template": {
1380
- "type": "string",
1381
- "description": "Handlebar template that used to generate the variable content",
1382
- "example": "<table style=\"table-layout: fixed;width: 100%;max-width: 1000px;border-collapse: collapse;\">\n <thead>\n <tr style=\"height: 48px;border-bottom: 1px solid #D5E1ED;\">\n {{#each table_config.header.columns as |column|}}\n {{#if column.enable}}\n <th style=\"{{makeStyle @root.table_config.header.style}};{{makeStyle column.style}};\">{{column._label}}</th>\n {{/if}}\n {{/each}}\n </tr>\n </thead>\n <tbody style=\"vertical-align: baseline !important;font-weight: 400;font-size: 12px;position: relative;\">\n <!-- Start rendering products -->\n {{#each order.products as |product|}}\n {{#if @last}}\n <tr style=\"height: 48px;;font-size:14px;border-bottom: 1px solid #D5E1ED;\">\n {{else}}\n <tr style=\"height: 48px;;font-size:14px;\">\n {{/if}}\n {{#each @root.table_config.header.columns as |column|}}\n {{#if column.enable}}\n {{#if (eq column.id 'item')}}\n <!-- Item -->\n <td style=\"{{makeStyle @root.table_config.body.product_name.style}}\">\n {{#if @root.table_config.body.product_name.enable}}\n {{product.name}}\n {{/if}}\n {{#if @root.table_config.body.price_description.enable}}\n <br>\n <span style=\"{{makeStyle @root.table_config.body.price_description.style}}\">{{product.price.description}}</span>\n {{/if}}\n {{#if @root.table_config.body.product_description.enable}}\n <br>\n <span style=\"{{makeStyle @root.table_config.body.product_description.style}}\">{{product.description}}</span>\n {{/if}}\n </td>\n {{/if}}\n {{#if (eq column.id 'quantity')}}\n <!-- Quantity -->\n <td style=\"{{makeStyle @root.table_config.body.quantity.style}}\">{{product.price.quantity}}\n </td>\n {{/if}}\n {{#if (eq column.id 'tax')}}\n <!-- Tax -->\n <td style=\"{{makeStyle @root.table_config.body.tax.style}}\">\n {{product.price.tax_rate}}\n </td>\n {{/if}}\n {{#if (eq column.id 'unit_amount')}}\n <!-- Unit amount -->\n <td style=\"{{makeStyle @root.table_config.body.unit_amount.style}}\">\n {{product.price.unit_amount_net}}\n </td>\n {{/if}}\n {{#if (eq column.id 'net_total')}}\n <!-- Amount Subtotal -->\n <td style=\"{{makeStyle @root.table_config.body.net_total.style}}\">\n {{product.price.amount_subtotal}}\n </td>\n {{/if}}\n {{#if (eq column.id 'amount_tax')}}\n <!-- Tax amount-->\n <td style=\"{{makeStyle @root.table_config.body.amount_tax.style}}\">\n {{product.price.amount_tax}}\n </td>\n {{/if}}\n {{#if (eq column.id 'gross_total')}}\n <!-- Gross total -->\n <td style=\"{{makeStyle @root.table_config.body.gross_total.style}}\">\n {{product.price.amount_total}}\n {{#if @root.table_config.body.payment_type.enable}}\n {{#if (eq product.price.type 'recurring')}}\n <br>\n <span style=\"{{makeStyle @root.table_config.body.payment_type.style}}\">{{product.price.billing_period}}</span>\n {{/if}}\n {{/if}}\n </td>\n {{/if}}\n {{/if}}\n {{/each}}\n </tr>\n {{/each}}\n <!-- Finish rendering products -->\n {{#if table_config.footer.gross_total.enable}}\n {{#each order.total_details.recurrences as |item|}}\n <tr style=\"height: 48px;font-size: 14px;\">\n <td style=\"padding-top: 16px; padding-bottom: 8px; border: none !important; vertical-align: top;\" colspan=\"{{calculate_colspan @root.table_config}}\"></td>\n {{#if @root.table_config.footer.payment_type.enable}}\n <td style=\"{{makeStyle @root.table_config.footer.payment_type.style}}\" colspan=\"2\">{{item.billing_period}}</td>\n {{/if}}\n {{#if (isColumnEnabled @root.table_config 'net_total')}}\n {{#if @root.table_config.footer.net_total.enable}}\n <td style=\"{{makeStyle @root.table_config.footer.net_total.style}}\">{{item.amount_subtotal}}</td>\n {{/if}}\n {{/if}}\n <td style=\"{{makeStyle @root.table_config.footer.gross_total.style}}\">{{item.amount_total}}\n {{#if @root.table_config.footer.amount_tax.enable}}\n <br>\n <span style=\"{{makeStyle @root.table_config.footer.amount_tax.style}}\">{{item.full_amount_tax}}</span>\n {{/if}}\n </td>\n </tr>\n {{/each}}\n {{/if}}\n <tr style=\"height:16px !important;\"></tr>\n </tbody>\n</table>\n"
1383
- },
1384
- "created_at": {
1385
- "type": "string",
1386
- "description": "Creation time",
1387
- "example": "2022-04-19T12:41:43.662Z",
1388
- "readOnly": true
1389
- },
1390
- "created_by": {
1391
- "type": "string",
1392
- "description": "Created by",
1393
- "example": "100042",
1394
- "readOnly": true
1395
- },
1396
- "updated_at": {
1397
- "type": "string",
1398
- "description": "Last update time",
1399
- "example": "2022-04-20T12:41:43.662Z",
1400
- "readOnly": true
1401
- },
1402
- "updated_by": {
1403
- "type": "string",
1404
- "description": "Updated by",
1405
- "example": "100042",
1406
- "readOnly": true
1407
- }
1408
- },
1409
- "required": [
1410
- "key",
1411
- "template"
1412
- ]
1413
- }
1414
- }
1415
- }
1416
- }