@opens/gateways 1.17.5 → 1.17.7

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.
@@ -34,6 +34,84 @@ var ScreenRuleVO = class _ScreenRuleVO {
34
34
  }
35
35
  };
36
36
 
37
+ // src/chat-config/value-objects/_service-rule.ts
38
+ var clonePayload2 = (payload) => ({
39
+ name: payload.name,
40
+ action: "service",
41
+ settings: {
42
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
43
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
44
+ ...payload.settings.features !== void 0 ? { features: { ...payload.settings.features } } : {},
45
+ ...payload.settings.behavior !== void 0 ? { behavior: payload.settings.behavior } : {}
46
+ }
47
+ });
48
+ var ServiceRuleVO = class _ServiceRuleVO {
49
+ payload;
50
+ /**
51
+ * Creates a service-rule value object from a complete payload.
52
+ * @param payload - The service-rule payload to snapshot.
53
+ */
54
+ constructor(payload) {
55
+ this.payload = clonePayload2(payload);
56
+ }
57
+ /**
58
+ * Creates a value object from its JSON representation.
59
+ * @param payload - The service-rule JSON payload.
60
+ * @returns A service-rule value object containing a defensive snapshot.
61
+ */
62
+ static fromJSON(payload) {
63
+ return new _ServiceRuleVO(payload);
64
+ }
65
+ /**
66
+ * Converts a service-rule value object to JSON.
67
+ * @param serviceRuleVO - The service-rule value object to serialize.
68
+ * @returns A defensive copy of the service-rule payload.
69
+ */
70
+ static toJSON(serviceRuleVO) {
71
+ return clonePayload2(serviceRuleVO.payload);
72
+ }
73
+ };
74
+
75
+ // src/chat-config/value-objects/_identification-rule.ts
76
+ var clonePayload3 = (payload) => ({
77
+ name: payload.name,
78
+ action: "identification",
79
+ settings: {
80
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
81
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
82
+ form: {
83
+ ...payload.settings.form,
84
+ ...payload.settings.form.fields !== void 0 ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) } : {}
85
+ }
86
+ }
87
+ });
88
+ var IdentificationRuleVO = class _IdentificationRuleVO {
89
+ payload;
90
+ /**
91
+ * Creates an identification-rule value object from a complete payload.
92
+ * @param payload - The identification-rule payload to snapshot.
93
+ */
94
+ constructor(payload) {
95
+ this.payload = clonePayload3(payload);
96
+ }
97
+ /**
98
+ * Creates a value object from its JSON representation.
99
+ * @param payload - The identification-rule JSON payload.
100
+ * @returns An identification-rule value object containing a defensive snapshot.
101
+ */
102
+ static fromJSON(payload) {
103
+ return new _IdentificationRuleVO(payload);
104
+ }
105
+ /**
106
+ * Converts an identification-rule value object to JSON.
107
+ * @param identificationRuleVO - The identification-rule value object to serialize.
108
+ * @returns A defensive copy of the identification-rule payload.
109
+ */
110
+ static toJSON(identificationRuleVO) {
111
+ return clonePayload3(identificationRuleVO.payload);
112
+ }
113
+ };
114
+
37
115
  // src/chat-config/builders/_screen-rule.ts
38
116
  var clonePartialPayload = (payload) => ({
39
117
  ...payload,
@@ -135,13 +213,298 @@ var ScreenRuleBuilder = class _ScreenRuleBuilder {
135
213
  const hasBody = settings?.body !== void 0;
136
214
  if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
137
215
  if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
138
- if (hasBody && (settings?.body === null || typeof settings?.body !== "object" || typeof settings.body.content !== "string"))
139
- invalidFields.push("settings.body.content");
216
+ if (hasHeader && (settings?.header === null || typeof settings?.header !== "object"))
217
+ invalidFields.push("settings.header");
218
+ if (hasBody && (settings?.body === null || typeof settings?.body !== "object")) invalidFields.push("settings.body");
140
219
  if (invalidFields.length > 0)
141
220
  throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
142
221
  }
143
222
  };
223
+
224
+ // src/chat-config/builders/_service-rule.ts
225
+ var clonePartialPayload2 = (payload) => ({
226
+ ...payload,
227
+ ...payload.settings !== void 0 ? {
228
+ settings: {
229
+ ...payload.settings,
230
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
231
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
232
+ ...payload.settings.features !== void 0 ? { features: { ...payload.settings.features } } : {}
233
+ }
234
+ } : {}
235
+ });
236
+ var ServiceRuleBuilder = class _ServiceRuleBuilder {
237
+ payload = {
238
+ action: "service",
239
+ settings: {}
240
+ };
241
+ constructor(payload) {
242
+ if (payload !== void 0) this.withRule(payload);
243
+ }
244
+ /**
245
+ * Creates a service-rule builder.
246
+ * @param payload - Optional initial service-rule values.
247
+ * @returns A new service-rule builder.
248
+ */
249
+ static create(payload) {
250
+ return new _ServiceRuleBuilder(payload);
251
+ }
252
+ /**
253
+ * Merges partial service-rule values into the builder.
254
+ * @param payload - Service-rule values to merge.
255
+ * @returns This builder instance.
256
+ */
257
+ withRule(payload) {
258
+ const snapshot = clonePartialPayload2(payload);
259
+ this.payload = {
260
+ ...this.payload,
261
+ ...snapshot,
262
+ action: "service",
263
+ settings: {
264
+ ...this.payload.settings,
265
+ ...snapshot.settings,
266
+ ...snapshot.settings?.features !== void 0 ? { features: { ...this.payload.settings?.features, ...snapshot.settings.features } } : {}
267
+ }
268
+ };
269
+ return this;
270
+ }
271
+ /**
272
+ * Sets the service-rule name.
273
+ * @param name - The service-rule name.
274
+ * @returns This builder instance.
275
+ */
276
+ withName(name) {
277
+ this.payload.name = name;
278
+ return this;
279
+ }
280
+ /**
281
+ * Sets the service-rule header.
282
+ * @param header - The header component.
283
+ * @returns This builder instance.
284
+ */
285
+ withHeader(header) {
286
+ this.payload.settings = {
287
+ ...this.payload.settings,
288
+ header: { ...header }
289
+ };
290
+ return this;
291
+ }
292
+ /**
293
+ * Sets the service-rule body.
294
+ * @param body - The body component.
295
+ * @returns This builder instance.
296
+ */
297
+ withBody(body) {
298
+ this.payload.settings = {
299
+ ...this.payload.settings,
300
+ body: { ...body }
301
+ };
302
+ return this;
303
+ }
304
+ /**
305
+ * Sets the feature flags available during the service attendance.
306
+ * @param features - The service feature flags.
307
+ * @returns This builder instance.
308
+ */
309
+ withFeatures(features) {
310
+ this.payload.settings = {
311
+ ...this.payload.settings,
312
+ features: { ...features }
313
+ };
314
+ return this;
315
+ }
316
+ /**
317
+ * Sets whether the service attendance is chat or voice.
318
+ * @param behavior - The attendance behavior.
319
+ * @returns This builder instance.
320
+ */
321
+ withBehavior(behavior) {
322
+ this.payload.settings = {
323
+ ...this.payload.settings,
324
+ behavior
325
+ };
326
+ return this;
327
+ }
328
+ /**
329
+ * Builds a validated service-rule value object.
330
+ * @returns The completed service-rule value object.
331
+ * @throws {Error} If required service-rule fields are missing or invalid.
332
+ */
333
+ build() {
334
+ this.assertValidPayload(this.payload);
335
+ return ServiceRuleVO.fromJSON({
336
+ name: this.payload.name,
337
+ action: "service",
338
+ settings: {
339
+ ...this.payload.settings.header !== void 0 ? { header: { ...this.payload.settings.header } } : {},
340
+ ...this.payload.settings.body !== void 0 ? { body: { ...this.payload.settings.body } } : {},
341
+ ...this.payload.settings.features !== void 0 ? { features: { ...this.payload.settings.features } } : {},
342
+ ...this.payload.settings.behavior !== void 0 ? { behavior: this.payload.settings.behavior } : {}
343
+ }
344
+ });
345
+ }
346
+ assertValidPayload(payload) {
347
+ const invalidFields = [];
348
+ const settings = payload.settings;
349
+ const hasHeader = settings?.header !== void 0;
350
+ const hasBody = settings?.body !== void 0;
351
+ if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
352
+ if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
353
+ if (hasHeader && (settings?.header === null || typeof settings?.header !== "object"))
354
+ invalidFields.push("settings.header");
355
+ if (hasBody && (settings?.body === null || typeof settings?.body !== "object")) invalidFields.push("settings.body");
356
+ if (invalidFields.length > 0)
357
+ throw new Error(`Cannot build service rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
358
+ }
359
+ };
360
+
361
+ // src/chat-config/builders/_identification-rule.ts
362
+ var clonePartialPayload3 = (payload) => ({
363
+ ...payload,
364
+ ...payload.settings !== void 0 ? {
365
+ settings: {
366
+ ...payload.settings,
367
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
368
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
369
+ ...payload.settings.form !== void 0 ? {
370
+ form: {
371
+ ...payload.settings.form,
372
+ ...payload.settings.form.fields !== void 0 ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) } : {}
373
+ }
374
+ } : {}
375
+ }
376
+ } : {}
377
+ });
378
+ var IdentificationRuleBuilder = class _IdentificationRuleBuilder {
379
+ payload = {
380
+ action: "identification",
381
+ settings: {
382
+ form: {}
383
+ }
384
+ };
385
+ constructor(payload) {
386
+ if (payload !== void 0) this.withRule(payload);
387
+ }
388
+ /**
389
+ * Creates an identification-rule builder.
390
+ * @param payload - Optional initial identification-rule values.
391
+ * @returns A new identification-rule builder.
392
+ */
393
+ static create(payload) {
394
+ return new _IdentificationRuleBuilder(payload);
395
+ }
396
+ /**
397
+ * Merges partial identification-rule values into the builder.
398
+ * @param payload - Identification-rule values to merge.
399
+ * @returns This builder instance.
400
+ */
401
+ withRule(payload) {
402
+ const snapshot = clonePartialPayload3(payload);
403
+ this.payload = {
404
+ ...this.payload,
405
+ ...snapshot,
406
+ action: "identification",
407
+ settings: {
408
+ ...this.payload.settings,
409
+ ...snapshot.settings,
410
+ form: {
411
+ ...this.payload.settings?.form,
412
+ ...snapshot.settings?.form,
413
+ ...snapshot.settings?.form?.fields !== void 0 ? { fields: snapshot.settings.form.fields.map((field) => ({ ...field })) } : {}
414
+ }
415
+ }
416
+ };
417
+ return this;
418
+ }
419
+ /**
420
+ * Sets the identification-rule name.
421
+ * @param name - The identification-rule name.
422
+ * @returns This builder instance.
423
+ */
424
+ withName(name) {
425
+ this.payload.name = name;
426
+ return this;
427
+ }
428
+ /**
429
+ * Sets the identification-rule header.
430
+ * @param header - The header component.
431
+ * @returns This builder instance.
432
+ */
433
+ withHeader(header) {
434
+ this.payload.settings = {
435
+ ...this.payload.settings,
436
+ header: { ...header },
437
+ form: this.payload.settings?.form ?? {}
438
+ };
439
+ return this;
440
+ }
441
+ /**
442
+ * Sets the identification-rule body.
443
+ * @param body - The body component.
444
+ * @returns This builder instance.
445
+ */
446
+ withBody(body) {
447
+ this.payload.settings = {
448
+ ...this.payload.settings,
449
+ body: { ...body },
450
+ form: this.payload.settings?.form ?? {}
451
+ };
452
+ return this;
453
+ }
454
+ /**
455
+ * Sets the identification-rule form component.
456
+ * @param form - The form component.
457
+ * @returns This builder instance.
458
+ */
459
+ withForm(form) {
460
+ this.payload.settings = {
461
+ ...this.payload.settings,
462
+ form: {
463
+ ...form,
464
+ ...form.fields !== void 0 ? { fields: form.fields.map((field) => ({ ...field })) } : {}
465
+ }
466
+ };
467
+ return this;
468
+ }
469
+ /**
470
+ * Builds a validated identification-rule value object.
471
+ * @returns The completed identification-rule value object.
472
+ * @throws {Error} If required identification-rule fields are missing or invalid.
473
+ */
474
+ build() {
475
+ this.assertValidPayload(this.payload);
476
+ return IdentificationRuleVO.fromJSON({
477
+ name: this.payload.name,
478
+ action: "identification",
479
+ settings: {
480
+ ...this.payload.settings.header !== void 0 ? { header: { ...this.payload.settings.header } } : {},
481
+ ...this.payload.settings.body !== void 0 ? { body: { ...this.payload.settings.body } } : {},
482
+ form: {
483
+ ...this.payload.settings.form,
484
+ ...this.payload.settings.form.fields !== void 0 ? { fields: this.payload.settings.form.fields.map((field) => ({ ...field })) } : {}
485
+ }
486
+ }
487
+ });
488
+ }
489
+ assertValidPayload(payload) {
490
+ const invalidFields = [];
491
+ const settings = payload.settings;
492
+ const hasHeader = settings?.header !== void 0;
493
+ const hasBody = settings?.body !== void 0;
494
+ const form = settings?.form;
495
+ if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
496
+ if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
497
+ if (hasHeader && (settings?.header === null || typeof settings?.header !== "object"))
498
+ invalidFields.push("settings.header");
499
+ if (hasBody && (settings?.body === null || typeof settings?.body !== "object")) invalidFields.push("settings.body");
500
+ if (form === void 0 || form === null || typeof form !== "object") invalidFields.push("settings.form");
501
+ if (invalidFields.length > 0)
502
+ throw new Error(`Cannot build identification rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
503
+ }
504
+ };
144
505
  export {
145
- ScreenRuleBuilder
506
+ IdentificationRuleBuilder,
507
+ ScreenRuleBuilder,
508
+ ServiceRuleBuilder
146
509
  };
147
510
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/chat-config/value-objects/_screen-rule.ts","../../../src/chat-config/builders/_screen-rule.ts"],"sourcesContent":["import type { CreateScreenRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateScreenRuleDTO): CreateScreenRuleDTO => ({\n name: payload.name,\n action: 'screen',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n});\n\n/** Value object representing a complete screen-rule payload. */\nexport class ScreenRuleVO {\n readonly payload: CreateScreenRuleDTO;\n\n /**\n * Creates a screen-rule value object from a complete payload.\n * @param payload - The screen-rule payload to snapshot.\n */\n constructor(payload: CreateScreenRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The screen-rule JSON payload.\n * @returns A screen-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateScreenRuleDTO): ScreenRuleVO {\n return new ScreenRuleVO(payload);\n }\n\n /**\n * Converts a screen-rule value object to JSON.\n * @param screenRuleVO - The screen-rule value object to serialize.\n * @returns A defensive copy of the screen-rule payload.\n */\n static toJSON(screenRuleVO: ScreenRuleVO): CreateScreenRuleDTO {\n return clonePayload(screenRuleVO.payload);\n }\n}\n","import type { CreateScreenRuleDTO, ScreenRuleBodyComponent, ScreenRuleHeaderComponent } from '../contracts';\nimport { ScreenRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateScreenRuleDTO>): Partial<CreateScreenRuleDTO> => ({\n ...payload,\n ...(payload.settings !== undefined\n ? {\n settings: {\n ...payload.settings,\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated screen-rule value objects. */\nexport class ScreenRuleBuilder {\n private payload: Partial<CreateScreenRuleDTO> = {\n action: 'screen',\n settings: {},\n };\n\n private constructor(payload?: Partial<CreateScreenRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates a screen-rule builder.\n * @param payload - Optional initial screen-rule values.\n * @returns A new screen-rule builder.\n */\n static create(payload?: Partial<CreateScreenRuleDTO>): ScreenRuleBuilder {\n return new ScreenRuleBuilder(payload);\n }\n\n /**\n * Merges partial screen-rule values into the builder.\n * @param payload - Screen-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateScreenRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'screen',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n },\n };\n\n return this;\n }\n\n /**\n * Sets the screen-rule name.\n * @param name - The screen-rule name.\n * @returns This builder instance.\n */\n withName(name: string): this {\n this.payload.name = name;\n return this;\n }\n\n /**\n * Sets the screen-rule header.\n * @param header - The header component.\n * @returns This builder instance.\n */\n withHeader(header: ScreenRuleHeaderComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n header: { ...header },\n };\n return this;\n }\n\n /**\n * Sets the screen-rule body.\n * @param body - The body component.\n * @returns This builder instance.\n */\n withBody(body: ScreenRuleBodyComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n body: { ...body },\n };\n return this;\n }\n\n /**\n * Builds a validated screen-rule value object.\n * @returns The completed screen-rule value object.\n * @throws {Error} If required screen-rule fields are missing or invalid.\n */\n build(): ScreenRuleVO {\n this.assertValidPayload(this.payload);\n\n return ScreenRuleVO.fromJSON({\n name: this.payload.name,\n action: 'screen',\n settings: {\n ...(this.payload.settings.header !== undefined ? { header: { ...this.payload.settings.header } } : {}),\n ...(this.payload.settings.body !== undefined ? { body: { ...this.payload.settings.body } } : {}),\n },\n });\n }\n\n private assertValidPayload(payload: Partial<CreateScreenRuleDTO>): asserts payload is CreateScreenRuleDTO {\n const invalidFields: string[] = [];\n const settings = payload.settings;\n const hasHeader = settings?.header !== undefined;\n const hasBody = settings?.body !== undefined;\n\n if (typeof payload.name !== 'string' || payload.name.trim().length === 0) invalidFields.push('name');\n if (!hasHeader && !hasBody) invalidFields.push('settings.header or settings.body');\n if (\n hasBody &&\n (settings?.body === null || typeof settings?.body !== 'object' || typeof settings.body.content !== 'string')\n )\n invalidFields.push('settings.body.content');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/chat-config/value-objects/_screen-rule.ts","../../../src/chat-config/value-objects/_service-rule.ts","../../../src/chat-config/value-objects/_identification-rule.ts","../../../src/chat-config/builders/_screen-rule.ts","../../../src/chat-config/builders/_service-rule.ts","../../../src/chat-config/builders/_identification-rule.ts"],"sourcesContent":["import type { CreateScreenRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateScreenRuleDTO): CreateScreenRuleDTO => ({\n name: payload.name,\n action: 'screen',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n});\n\n/** Value object representing a complete screen-rule payload. */\nexport class ScreenRuleVO {\n readonly payload: CreateScreenRuleDTO;\n\n /**\n * Creates a screen-rule value object from a complete payload.\n * @param payload - The screen-rule payload to snapshot.\n */\n constructor(payload: CreateScreenRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The screen-rule JSON payload.\n * @returns A screen-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateScreenRuleDTO): ScreenRuleVO {\n return new ScreenRuleVO(payload);\n }\n\n /**\n * Converts a screen-rule value object to JSON.\n * @param screenRuleVO - The screen-rule value object to serialize.\n * @returns A defensive copy of the screen-rule payload.\n */\n static toJSON(screenRuleVO: ScreenRuleVO): CreateScreenRuleDTO {\n return clonePayload(screenRuleVO.payload);\n }\n}\n","import type { CreateServiceRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateServiceRuleDTO): CreateServiceRuleDTO => ({\n name: payload.name,\n action: 'service',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n ...(payload.settings.features !== undefined ? { features: { ...payload.settings.features } } : {}),\n ...(payload.settings.behavior !== undefined ? { behavior: payload.settings.behavior } : {}),\n },\n});\n\n/** Value object representing a complete service-rule payload. */\nexport class ServiceRuleVO {\n readonly payload: CreateServiceRuleDTO;\n\n /**\n * Creates a service-rule value object from a complete payload.\n * @param payload - The service-rule payload to snapshot.\n */\n constructor(payload: CreateServiceRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The service-rule JSON payload.\n * @returns A service-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateServiceRuleDTO): ServiceRuleVO {\n return new ServiceRuleVO(payload);\n }\n\n /**\n * Converts a service-rule value object to JSON.\n * @param serviceRuleVO - The service-rule value object to serialize.\n * @returns A defensive copy of the service-rule payload.\n */\n static toJSON(serviceRuleVO: ServiceRuleVO): CreateServiceRuleDTO {\n return clonePayload(serviceRuleVO.payload);\n }\n}\n","import type { CreateIdentificationRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateIdentificationRuleDTO): CreateIdentificationRuleDTO => ({\n name: payload.name,\n action: 'identification',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n form: {\n ...payload.settings.form,\n ...(payload.settings.form.fields !== undefined\n ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n },\n});\n\n/** Value object representing a complete identification-rule payload. */\nexport class IdentificationRuleVO {\n readonly payload: CreateIdentificationRuleDTO;\n\n /**\n * Creates an identification-rule value object from a complete payload.\n * @param payload - The identification-rule payload to snapshot.\n */\n constructor(payload: CreateIdentificationRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The identification-rule JSON payload.\n * @returns An identification-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateIdentificationRuleDTO): IdentificationRuleVO {\n return new IdentificationRuleVO(payload);\n }\n\n /**\n * Converts an identification-rule value object to JSON.\n * @param identificationRuleVO - The identification-rule value object to serialize.\n * @returns A defensive copy of the identification-rule payload.\n */\n static toJSON(identificationRuleVO: IdentificationRuleVO): CreateIdentificationRuleDTO {\n return clonePayload(identificationRuleVO.payload);\n }\n}\n","import type { CreateScreenRuleDTO, ScreenRuleBodyComponent, ScreenRuleHeaderComponent } from '../contracts';\nimport { ScreenRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateScreenRuleDTO>): Partial<CreateScreenRuleDTO> => ({\n ...payload,\n ...(payload.settings !== undefined\n ? {\n settings: {\n ...payload.settings,\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated screen-rule value objects. */\nexport class ScreenRuleBuilder {\n private payload: Partial<CreateScreenRuleDTO> = {\n action: 'screen',\n settings: {},\n };\n\n private constructor(payload?: Partial<CreateScreenRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates a screen-rule builder.\n * @param payload - Optional initial screen-rule values.\n * @returns A new screen-rule builder.\n */\n static create(payload?: Partial<CreateScreenRuleDTO>): ScreenRuleBuilder {\n return new ScreenRuleBuilder(payload);\n }\n\n /**\n * Merges partial screen-rule values into the builder.\n * @param payload - Screen-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateScreenRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'screen',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n },\n };\n\n return this;\n }\n\n /**\n * Sets the screen-rule name.\n * @param name - The screen-rule name.\n * @returns This builder instance.\n */\n withName(name: string): this {\n this.payload.name = name;\n return this;\n }\n\n /**\n * Sets the screen-rule header.\n * @param header - The header component.\n * @returns This builder instance.\n */\n withHeader(header: ScreenRuleHeaderComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n header: { ...header },\n };\n return this;\n }\n\n /**\n * Sets the screen-rule body.\n * @param body - The body component.\n * @returns This builder instance.\n */\n withBody(body: ScreenRuleBodyComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n body: { ...body },\n };\n return this;\n }\n\n /**\n * Builds a validated screen-rule value object.\n * @returns The completed screen-rule value object.\n * @throws {Error} If required screen-rule fields are missing or invalid.\n */\n build(): ScreenRuleVO {\n this.assertValidPayload(this.payload);\n\n return ScreenRuleVO.fromJSON({\n name: this.payload.name,\n action: 'screen',\n settings: {\n ...(this.payload.settings.header !== undefined ? { header: { ...this.payload.settings.header } } : {}),\n ...(this.payload.settings.body !== undefined ? { body: { ...this.payload.settings.body } } : {}),\n },\n });\n }\n\n private assertValidPayload(payload: Partial<CreateScreenRuleDTO>): asserts payload is CreateScreenRuleDTO {\n const invalidFields: string[] = [];\n const settings = payload.settings;\n const hasHeader = settings?.header !== undefined;\n const hasBody = settings?.body !== undefined;\n\n if (typeof payload.name !== 'string' || payload.name.trim().length === 0) invalidFields.push('name');\n if (!hasHeader && !hasBody) invalidFields.push('settings.header or settings.body');\n if (hasHeader && (settings?.header === null || typeof settings?.header !== 'object'))\n invalidFields.push('settings.header');\n if (hasBody && (settings?.body === null || typeof settings?.body !== 'object')) invalidFields.push('settings.body');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n","import type {\n CreateServiceRuleDTO,\n ScreenRuleBodyComponent,\n ScreenRuleHeaderComponent,\n ServiceRuleBehavior,\n ServiceRuleFeatures,\n} from '../contracts';\nimport { ServiceRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateServiceRuleDTO>): Partial<CreateServiceRuleDTO> => ({\n ...payload,\n ...(payload.settings !== undefined\n ? {\n settings: {\n ...payload.settings,\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n ...(payload.settings.features !== undefined ? { features: { ...payload.settings.features } } : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated service-rule value objects. */\nexport class ServiceRuleBuilder {\n private payload: Partial<CreateServiceRuleDTO> = {\n action: 'service',\n settings: {},\n };\n\n private constructor(payload?: Partial<CreateServiceRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates a service-rule builder.\n * @param payload - Optional initial service-rule values.\n * @returns A new service-rule builder.\n */\n static create(payload?: Partial<CreateServiceRuleDTO>): ServiceRuleBuilder {\n return new ServiceRuleBuilder(payload);\n }\n\n /**\n * Merges partial service-rule values into the builder.\n * @param payload - Service-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateServiceRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'service',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n ...(snapshot.settings?.features !== undefined\n ? { features: { ...this.payload.settings?.features, ...snapshot.settings.features } }\n : {}),\n },\n };\n\n return this;\n }\n\n /**\n * Sets the service-rule name.\n * @param name - The service-rule name.\n * @returns This builder instance.\n */\n withName(name: string): this {\n this.payload.name = name;\n return this;\n }\n\n /**\n * Sets the service-rule header.\n * @param header - The header component.\n * @returns This builder instance.\n */\n withHeader(header: ScreenRuleHeaderComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n header: { ...header },\n };\n return this;\n }\n\n /**\n * Sets the service-rule body.\n * @param body - The body component.\n * @returns This builder instance.\n */\n withBody(body: ScreenRuleBodyComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n body: { ...body },\n };\n return this;\n }\n\n /**\n * Sets the feature flags available during the service attendance.\n * @param features - The service feature flags.\n * @returns This builder instance.\n */\n withFeatures(features: ServiceRuleFeatures): this {\n this.payload.settings = {\n ...this.payload.settings,\n features: { ...features },\n };\n return this;\n }\n\n /**\n * Sets whether the service attendance is chat or voice.\n * @param behavior - The attendance behavior.\n * @returns This builder instance.\n */\n withBehavior(behavior: ServiceRuleBehavior): this {\n this.payload.settings = {\n ...this.payload.settings,\n behavior,\n };\n return this;\n }\n\n /**\n * Builds a validated service-rule value object.\n * @returns The completed service-rule value object.\n * @throws {Error} If required service-rule fields are missing or invalid.\n */\n build(): ServiceRuleVO {\n this.assertValidPayload(this.payload);\n\n return ServiceRuleVO.fromJSON({\n name: this.payload.name,\n action: 'service',\n settings: {\n ...(this.payload.settings.header !== undefined ? { header: { ...this.payload.settings.header } } : {}),\n ...(this.payload.settings.body !== undefined ? { body: { ...this.payload.settings.body } } : {}),\n ...(this.payload.settings.features !== undefined ? { features: { ...this.payload.settings.features } } : {}),\n ...(this.payload.settings.behavior !== undefined ? { behavior: this.payload.settings.behavior } : {}),\n },\n });\n }\n\n private assertValidPayload(payload: Partial<CreateServiceRuleDTO>): asserts payload is CreateServiceRuleDTO {\n const invalidFields: string[] = [];\n const settings = payload.settings;\n const hasHeader = settings?.header !== undefined;\n const hasBody = settings?.body !== undefined;\n\n if (typeof payload.name !== 'string' || payload.name.trim().length === 0) invalidFields.push('name');\n if (!hasHeader && !hasBody) invalidFields.push('settings.header or settings.body');\n if (hasHeader && (settings?.header === null || typeof settings?.header !== 'object'))\n invalidFields.push('settings.header');\n if (hasBody && (settings?.body === null || typeof settings?.body !== 'object')) invalidFields.push('settings.body');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build service rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n","import type {\n CreateIdentificationRuleDTO,\n IdentificationRuleFormComponent,\n ScreenRuleBodyComponent,\n ScreenRuleHeaderComponent,\n} from '../contracts';\nimport { IdentificationRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateIdentificationRuleDTO>): Partial<CreateIdentificationRuleDTO> => ({\n ...payload,\n ...(payload.settings !== undefined\n ? {\n settings: {\n ...payload.settings,\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n ...(payload.settings.form !== undefined\n ? {\n form: {\n ...payload.settings.form,\n ...(payload.settings.form.fields !== undefined\n ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n }\n : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated identification-rule value objects. */\nexport class IdentificationRuleBuilder {\n private payload: Partial<CreateIdentificationRuleDTO> = {\n action: 'identification',\n settings: {\n form: {},\n },\n };\n\n private constructor(payload?: Partial<CreateIdentificationRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates an identification-rule builder.\n * @param payload - Optional initial identification-rule values.\n * @returns A new identification-rule builder.\n */\n static create(payload?: Partial<CreateIdentificationRuleDTO>): IdentificationRuleBuilder {\n return new IdentificationRuleBuilder(payload);\n }\n\n /**\n * Merges partial identification-rule values into the builder.\n * @param payload - Identification-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateIdentificationRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'identification',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n form: {\n ...this.payload.settings?.form,\n ...snapshot.settings?.form,\n ...(snapshot.settings?.form?.fields !== undefined\n ? { fields: snapshot.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n },\n };\n\n return this;\n }\n\n /**\n * Sets the identification-rule name.\n * @param name - The identification-rule name.\n * @returns This builder instance.\n */\n withName(name: string): this {\n this.payload.name = name;\n return this;\n }\n\n /**\n * Sets the identification-rule header.\n * @param header - The header component.\n * @returns This builder instance.\n */\n withHeader(header: ScreenRuleHeaderComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n header: { ...header },\n form: this.payload.settings?.form ?? {},\n };\n return this;\n }\n\n /**\n * Sets the identification-rule body.\n * @param body - The body component.\n * @returns This builder instance.\n */\n withBody(body: ScreenRuleBodyComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n body: { ...body },\n form: this.payload.settings?.form ?? {},\n };\n return this;\n }\n\n /**\n * Sets the identification-rule form component.\n * @param form - The form component.\n * @returns This builder instance.\n */\n withForm(form: IdentificationRuleFormComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n form: {\n ...form,\n ...(form.fields !== undefined ? { fields: form.fields.map((field) => ({ ...field })) } : {}),\n },\n };\n return this;\n }\n\n /**\n * Builds a validated identification-rule value object.\n * @returns The completed identification-rule value object.\n * @throws {Error} If required identification-rule fields are missing or invalid.\n */\n build(): IdentificationRuleVO {\n this.assertValidPayload(this.payload);\n\n return IdentificationRuleVO.fromJSON({\n name: this.payload.name,\n action: 'identification',\n settings: {\n ...(this.payload.settings.header !== undefined ? { header: { ...this.payload.settings.header } } : {}),\n ...(this.payload.settings.body !== undefined ? { body: { ...this.payload.settings.body } } : {}),\n form: {\n ...this.payload.settings.form,\n ...(this.payload.settings.form.fields !== undefined\n ? { fields: this.payload.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n },\n });\n }\n\n private assertValidPayload(\n payload: Partial<CreateIdentificationRuleDTO>,\n ): asserts payload is CreateIdentificationRuleDTO {\n const invalidFields: string[] = [];\n const settings = payload.settings;\n const hasHeader = settings?.header !== undefined;\n const hasBody = settings?.body !== undefined;\n const form = settings?.form;\n\n if (typeof payload.name !== 'string' || payload.name.trim().length === 0) invalidFields.push('name');\n if (!hasHeader && !hasBody) invalidFields.push('settings.header or settings.body');\n if (hasHeader && (settings?.header === null || typeof settings?.header !== 'object'))\n invalidFields.push('settings.header');\n if (hasBody && (settings?.body === null || typeof settings?.body !== 'object')) invalidFields.push('settings.body');\n if (form === undefined || form === null || typeof form !== 'object') invalidFields.push('settings.form');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build identification rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n"],"mappings":"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","names":["clonePayload","clonePayload","clonePartialPayload","clonePartialPayload"]}
@@ -1,4 +1,5 @@
1
- export { C as CreateScreenRuleDTO, a as ScreenRuleBodyComponent, S as ScreenRuleHeaderComponent } from '../../_screen-rule-FlIJzVXA.mjs';
1
+ import { S as ScreenRuleHeaderComponent, a as ScreenRuleBodyComponent, c as ServiceRuleFeatures, d as ServiceRuleBehavior, I as IdentificationRuleFormComponent } from '../../_identification-rule-C7mcbjha.mjs';
2
+ export { e as CreateIdentificationRuleDTO, C as CreateScreenRuleDTO, b as CreateServiceRuleDTO, f as IdentificationRuleFieldComponent } from '../../_identification-rule-C7mcbjha.mjs';
2
3
 
3
4
  /** Available provider options in the Chat Config API. */
4
5
  type ProviderName = 'whatsapp' | 'gmail' | 'outlook' | 'messenger' | 'direct' | 'yunique';
@@ -380,7 +381,7 @@ interface QueueRule extends Rule {
380
381
  flow?: Rule[];
381
382
  }
382
383
  /** Known rule action values used by the Chat Config API. */
383
- type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat';
384
+ type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat' | 'screen' | 'service' | 'identification';
384
385
  /** Archive filter for listing rules. Matches `GET /rules/paginated` query validation. */
385
386
  type RuleArchiveStatus = 'archived' | 'unarchived' | 'all';
386
387
  /** Associations that can be eager-loaded when listing paginated rules. */
@@ -548,11 +549,17 @@ interface RuleFlowSettings {
548
549
  }
549
550
  /**
550
551
  * Rule settings JSON.
551
- * Common keys: `interactiveType` (URA) and `flow` (action `flow`).
552
+ * Common keys: `interactiveType` (URA), `flow` (action `flow`),
553
+ * `header` / `body` for widget screen layouts, and `form` for identification.
552
554
  */
553
555
  interface RuleSettings {
554
556
  interactiveType?: RuleInteractiveType;
555
557
  flow?: RuleFlowSettings;
558
+ header?: ScreenRuleHeaderComponent;
559
+ body?: ScreenRuleBodyComponent;
560
+ features?: ServiceRuleFeatures;
561
+ behavior?: ServiceRuleBehavior;
562
+ form?: IdentificationRuleFormComponent;
556
563
  [key: string]: unknown;
557
564
  }
558
565
  /** Rule entity returned by the Chat Config API. */
@@ -598,17 +605,25 @@ type RulesCountResponse = {
598
605
  /** Response returned by the Chat Config API when listing root rules. */
599
606
  type RootRulesResponse = RulesResponse;
600
607
 
608
+ /** Directed connection from one rule to the next rule in a workflow. */
601
609
  interface WorkflowEdge {
610
+ /** Unique identifier of the edge. */
602
611
  id: string;
612
+ /** Identifier of the rule this edge points to. */
603
613
  nextRuleId: string;
604
614
  }
615
+ /** Flat workflow graph used to render a widget flow. */
605
616
  interface WorkflowData {
617
+ /** Unique identifier of the workflow. */
606
618
  id: string;
619
+ /** Rules that belong to the workflow. */
607
620
  rules: Rule[];
621
+ /** Outgoing edges keyed by the source rule id. */
608
622
  edges: Record<string, WorkflowEdge[]>;
609
623
  }
624
+ /** Envelope returned by `GET /workflow/:id`. */
610
625
  interface WorkflowDataResponse {
611
626
  data: WorkflowData;
612
627
  }
613
628
 
614
- export type { Config, ConfigListByProviderResponse, ConfigProvider, DistributionType, FindOrCreateQueueRuleRequest, GetConfigsByProviderParams, GetMemberQueuesRequest, GetProviderConfigurationsParams, GetProviderDisplayInfoParams, GetRootRulesRequest, GetRuleByIdRequest, GetRulesCountRequest, GetRulesRequest, GetServiceGroupsParams, MetaTemplateButton, MetaTemplateConfigResponse, MetaTemplateConfigsResponse, Provider, ProviderConfiguration, ProviderConfigurationsResponse, ProviderDisplayInfoResponse, ProviderListResponse, ProviderName, Queue, QueueListResponse, QueueMember, QueueRule, RootRulesResponse, Rule, RuleAction, RuleArchiveStatus, RuleAssociation, RuleAutomaticMessage, RuleCallOnQueue, RuleFlowSettings, RuleFlowTextResponse, RuleHttpMethod, RuleInteractiveType, RuleQuestionnaire, RuleQuestionnaireBodyField, RuleQuestionnaireHeader, RuleQuestionnaireInteractiveOption, RuleQuestionnaireQuestion, RuleQuestionnaireQuestionType, RuleQuestionnaireValidationAction, RuleQuestionnaireValidationRegexType, RuleResponse, RuleSettings, RuleWebhook, RuleWebhookHeader, RuleWebhookResponseMapping, RulesCountResponse, RulesResponse, ServiceGroup, ServiceGroupsResponse, WhatsAppProviderSettings, WidgetProviderSettings, WorkflowData, WorkflowDataResponse, WorkflowEdge };
629
+ export { type Config, type ConfigListByProviderResponse, type ConfigProvider, type DistributionType, type FindOrCreateQueueRuleRequest, type GetConfigsByProviderParams, type GetMemberQueuesRequest, type GetProviderConfigurationsParams, type GetProviderDisplayInfoParams, type GetRootRulesRequest, type GetRuleByIdRequest, type GetRulesCountRequest, type GetRulesRequest, type GetServiceGroupsParams, IdentificationRuleFormComponent, type MetaTemplateButton, type MetaTemplateConfigResponse, type MetaTemplateConfigsResponse, type Provider, type ProviderConfiguration, type ProviderConfigurationsResponse, type ProviderDisplayInfoResponse, type ProviderListResponse, type ProviderName, type Queue, type QueueListResponse, type QueueMember, type QueueRule, type RootRulesResponse, type Rule, type RuleAction, type RuleArchiveStatus, type RuleAssociation, type RuleAutomaticMessage, type RuleCallOnQueue, type RuleFlowSettings, type RuleFlowTextResponse, type RuleHttpMethod, type RuleInteractiveType, type RuleQuestionnaire, type RuleQuestionnaireBodyField, type RuleQuestionnaireHeader, type RuleQuestionnaireInteractiveOption, type RuleQuestionnaireQuestion, type RuleQuestionnaireQuestionType, type RuleQuestionnaireValidationAction, type RuleQuestionnaireValidationRegexType, type RuleResponse, type RuleSettings, type RuleWebhook, type RuleWebhookHeader, type RuleWebhookResponseMapping, type RulesCountResponse, type RulesResponse, ScreenRuleBodyComponent, ScreenRuleHeaderComponent, type ServiceGroup, type ServiceGroupsResponse, ServiceRuleBehavior, ServiceRuleFeatures, type WhatsAppProviderSettings, type WidgetProviderSettings, type WorkflowData, type WorkflowDataResponse, type WorkflowEdge };
@@ -1,4 +1,5 @@
1
- export { C as CreateScreenRuleDTO, a as ScreenRuleBodyComponent, S as ScreenRuleHeaderComponent } from '../../_screen-rule-FlIJzVXA.js';
1
+ import { S as ScreenRuleHeaderComponent, a as ScreenRuleBodyComponent, c as ServiceRuleFeatures, d as ServiceRuleBehavior, I as IdentificationRuleFormComponent } from '../../_identification-rule-C7mcbjha.js';
2
+ export { e as CreateIdentificationRuleDTO, C as CreateScreenRuleDTO, b as CreateServiceRuleDTO, f as IdentificationRuleFieldComponent } from '../../_identification-rule-C7mcbjha.js';
2
3
 
3
4
  /** Available provider options in the Chat Config API. */
4
5
  type ProviderName = 'whatsapp' | 'gmail' | 'outlook' | 'messenger' | 'direct' | 'yunique';
@@ -380,7 +381,7 @@ interface QueueRule extends Rule {
380
381
  flow?: Rule[];
381
382
  }
382
383
  /** Known rule action values used by the Chat Config API. */
383
- type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat';
384
+ type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat' | 'screen' | 'service' | 'identification';
384
385
  /** Archive filter for listing rules. Matches `GET /rules/paginated` query validation. */
385
386
  type RuleArchiveStatus = 'archived' | 'unarchived' | 'all';
386
387
  /** Associations that can be eager-loaded when listing paginated rules. */
@@ -548,11 +549,17 @@ interface RuleFlowSettings {
548
549
  }
549
550
  /**
550
551
  * Rule settings JSON.
551
- * Common keys: `interactiveType` (URA) and `flow` (action `flow`).
552
+ * Common keys: `interactiveType` (URA), `flow` (action `flow`),
553
+ * `header` / `body` for widget screen layouts, and `form` for identification.
552
554
  */
553
555
  interface RuleSettings {
554
556
  interactiveType?: RuleInteractiveType;
555
557
  flow?: RuleFlowSettings;
558
+ header?: ScreenRuleHeaderComponent;
559
+ body?: ScreenRuleBodyComponent;
560
+ features?: ServiceRuleFeatures;
561
+ behavior?: ServiceRuleBehavior;
562
+ form?: IdentificationRuleFormComponent;
556
563
  [key: string]: unknown;
557
564
  }
558
565
  /** Rule entity returned by the Chat Config API. */
@@ -598,17 +605,25 @@ type RulesCountResponse = {
598
605
  /** Response returned by the Chat Config API when listing root rules. */
599
606
  type RootRulesResponse = RulesResponse;
600
607
 
608
+ /** Directed connection from one rule to the next rule in a workflow. */
601
609
  interface WorkflowEdge {
610
+ /** Unique identifier of the edge. */
602
611
  id: string;
612
+ /** Identifier of the rule this edge points to. */
603
613
  nextRuleId: string;
604
614
  }
615
+ /** Flat workflow graph used to render a widget flow. */
605
616
  interface WorkflowData {
617
+ /** Unique identifier of the workflow. */
606
618
  id: string;
619
+ /** Rules that belong to the workflow. */
607
620
  rules: Rule[];
621
+ /** Outgoing edges keyed by the source rule id. */
608
622
  edges: Record<string, WorkflowEdge[]>;
609
623
  }
624
+ /** Envelope returned by `GET /workflow/:id`. */
610
625
  interface WorkflowDataResponse {
611
626
  data: WorkflowData;
612
627
  }
613
628
 
614
- export type { Config, ConfigListByProviderResponse, ConfigProvider, DistributionType, FindOrCreateQueueRuleRequest, GetConfigsByProviderParams, GetMemberQueuesRequest, GetProviderConfigurationsParams, GetProviderDisplayInfoParams, GetRootRulesRequest, GetRuleByIdRequest, GetRulesCountRequest, GetRulesRequest, GetServiceGroupsParams, MetaTemplateButton, MetaTemplateConfigResponse, MetaTemplateConfigsResponse, Provider, ProviderConfiguration, ProviderConfigurationsResponse, ProviderDisplayInfoResponse, ProviderListResponse, ProviderName, Queue, QueueListResponse, QueueMember, QueueRule, RootRulesResponse, Rule, RuleAction, RuleArchiveStatus, RuleAssociation, RuleAutomaticMessage, RuleCallOnQueue, RuleFlowSettings, RuleFlowTextResponse, RuleHttpMethod, RuleInteractiveType, RuleQuestionnaire, RuleQuestionnaireBodyField, RuleQuestionnaireHeader, RuleQuestionnaireInteractiveOption, RuleQuestionnaireQuestion, RuleQuestionnaireQuestionType, RuleQuestionnaireValidationAction, RuleQuestionnaireValidationRegexType, RuleResponse, RuleSettings, RuleWebhook, RuleWebhookHeader, RuleWebhookResponseMapping, RulesCountResponse, RulesResponse, ServiceGroup, ServiceGroupsResponse, WhatsAppProviderSettings, WidgetProviderSettings, WorkflowData, WorkflowDataResponse, WorkflowEdge };
629
+ export { type Config, type ConfigListByProviderResponse, type ConfigProvider, type DistributionType, type FindOrCreateQueueRuleRequest, type GetConfigsByProviderParams, type GetMemberQueuesRequest, type GetProviderConfigurationsParams, type GetProviderDisplayInfoParams, type GetRootRulesRequest, type GetRuleByIdRequest, type GetRulesCountRequest, type GetRulesRequest, type GetServiceGroupsParams, IdentificationRuleFormComponent, type MetaTemplateButton, type MetaTemplateConfigResponse, type MetaTemplateConfigsResponse, type Provider, type ProviderConfiguration, type ProviderConfigurationsResponse, type ProviderDisplayInfoResponse, type ProviderListResponse, type ProviderName, type Queue, type QueueListResponse, type QueueMember, type QueueRule, type RootRulesResponse, type Rule, type RuleAction, type RuleArchiveStatus, type RuleAssociation, type RuleAutomaticMessage, type RuleCallOnQueue, type RuleFlowSettings, type RuleFlowTextResponse, type RuleHttpMethod, type RuleInteractiveType, type RuleQuestionnaire, type RuleQuestionnaireBodyField, type RuleQuestionnaireHeader, type RuleQuestionnaireInteractiveOption, type RuleQuestionnaireQuestion, type RuleQuestionnaireQuestionType, type RuleQuestionnaireValidationAction, type RuleQuestionnaireValidationRegexType, type RuleResponse, type RuleSettings, type RuleWebhook, type RuleWebhookHeader, type RuleWebhookResponseMapping, type RulesCountResponse, type RulesResponse, ScreenRuleBodyComponent, ScreenRuleHeaderComponent, type ServiceGroup, type ServiceGroupsResponse, ServiceRuleBehavior, ServiceRuleFeatures, type WhatsAppProviderSettings, type WidgetProviderSettings, type WorkflowData, type WorkflowDataResponse, type WorkflowEdge };