wiil-core-js 0.0.82

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 (261) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +174 -0
  3. package/dist/core/account/index.d.ts +7 -0
  4. package/dist/core/account/index.js +23 -0
  5. package/dist/core/account/organization.schema.d.ts +118 -0
  6. package/dist/core/account/organization.schema.js +91 -0
  7. package/dist/core/account/project.schema.d.ts +121 -0
  8. package/dist/core/account/project.schema.js +102 -0
  9. package/dist/core/account/supported-business-verticals.d.ts +8 -0
  10. package/dist/core/account/supported-business-verticals.js +23 -0
  11. package/dist/core/assistant-setups/assistant-setup-result.schema.d.ts +115 -0
  12. package/dist/core/assistant-setups/assistant-setup-result.schema.js +17 -0
  13. package/dist/core/assistant-setups/base-assistant-setup.schema.d.ts +61 -0
  14. package/dist/core/assistant-setups/base-assistant-setup.schema.js +29 -0
  15. package/dist/core/assistant-setups/index.d.ts +4 -0
  16. package/dist/core/assistant-setups/index.js +21 -0
  17. package/dist/core/assistant-setups/phone-assistant-setup.schema.d.ts +63 -0
  18. package/dist/core/assistant-setups/phone-assistant-setup.schema.js +14 -0
  19. package/dist/core/assistant-setups/web-assitant-setup.schema.d.ts +56 -0
  20. package/dist/core/assistant-setups/web-assitant-setup.schema.js +17 -0
  21. package/dist/core/base.schema.d.ts +34 -0
  22. package/dist/core/base.schema.js +36 -0
  23. package/dist/core/business-mgt/appointment-additional-info.schema.d.ts +63 -0
  24. package/dist/core/business-mgt/appointment-additional-info.schema.js +53 -0
  25. package/dist/core/business-mgt/appointment-field-config.schema.d.ts +251 -0
  26. package/dist/core/business-mgt/appointment-field-config.schema.js +49 -0
  27. package/dist/core/business-mgt/bookings.shared.schema.d.ts +47 -0
  28. package/dist/core/business-mgt/bookings.shared.schema.js +60 -0
  29. package/dist/core/business-mgt/business-location.schema.d.ts +327 -0
  30. package/dist/core/business-mgt/business-location.schema.js +176 -0
  31. package/dist/core/business-mgt/customer-management/customer-group.schema.d.ts +87 -0
  32. package/dist/core/business-mgt/customer-management/customer-group.schema.js +53 -0
  33. package/dist/core/business-mgt/customer-management/customer.schema.d.ts +156 -0
  34. package/dist/core/business-mgt/customer-management/customer.schema.js +93 -0
  35. package/dist/core/business-mgt/customer-management/index.d.ts +7 -0
  36. package/dist/core/business-mgt/customer-management/index.js +23 -0
  37. package/dist/core/business-mgt/customer-management/shipping-address.schema.d.ts +112 -0
  38. package/dist/core/business-mgt/customer-management/shipping-address.schema.js +79 -0
  39. package/dist/core/business-mgt/customer.schema.d.ts +111 -0
  40. package/dist/core/business-mgt/customer.schema.js +73 -0
  41. package/dist/core/business-mgt/discount-rule.schema.d.ts +183 -0
  42. package/dist/core/business-mgt/discount-rule.schema.js +108 -0
  43. package/dist/core/business-mgt/index.d.ts +16 -0
  44. package/dist/core/business-mgt/index.js +38 -0
  45. package/dist/core/business-mgt/menu-config.schema.d.ts +165 -0
  46. package/dist/core/business-mgt/menu-config.schema.js +86 -0
  47. package/dist/core/business-mgt/menu-management/index.d.ts +11 -0
  48. package/dist/core/business-mgt/menu-management/index.js +27 -0
  49. package/dist/core/business-mgt/menu-management/menu-catalog.schema.d.ts +386 -0
  50. package/dist/core/business-mgt/menu-management/menu-catalog.schema.js +58 -0
  51. package/dist/core/business-mgt/menu-management/menu-config.schema.d.ts +301 -0
  52. package/dist/core/business-mgt/menu-management/menu-config.schema.js +169 -0
  53. package/dist/core/business-mgt/menu-management/menu-item-variant.schema.d.ts +143 -0
  54. package/dist/core/business-mgt/menu-management/menu-item-variant.schema.js +86 -0
  55. package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.d.ts +239 -0
  56. package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.js +117 -0
  57. package/dist/core/business-mgt/menu-management/menu-set.schema.d.ts +420 -0
  58. package/dist/core/business-mgt/menu-management/menu-set.schema.js +283 -0
  59. package/dist/core/business-mgt/menu-management/menu.order.schema.d.ts +654 -0
  60. package/dist/core/business-mgt/menu-management/menu.order.schema.js +204 -0
  61. package/dist/core/business-mgt/menu-management/modifier.schema.d.ts +585 -0
  62. package/dist/core/business-mgt/menu-management/modifier.schema.js +341 -0
  63. package/dist/core/business-mgt/menu.order.schema.d.ts +335 -0
  64. package/dist/core/business-mgt/menu.order.schema.js +149 -0
  65. package/dist/core/business-mgt/order.schema.d.ts +222 -0
  66. package/dist/core/business-mgt/order.schema.js +205 -0
  67. package/dist/core/business-mgt/pricing-rule.shared.schema.d.ts +56 -0
  68. package/dist/core/business-mgt/pricing-rule.shared.schema.js +68 -0
  69. package/dist/core/business-mgt/product-config.schema.d.ts +177 -0
  70. package/dist/core/business-mgt/product-config.schema.js +106 -0
  71. package/dist/core/business-mgt/product-management/index.d.ts +12 -0
  72. package/dist/core/business-mgt/product-management/index.js +28 -0
  73. package/dist/core/business-mgt/product-management/product-axis-binding.schema.d.ts +54 -0
  74. package/dist/core/business-mgt/product-management/product-axis-binding.schema.js +54 -0
  75. package/dist/core/business-mgt/product-management/product-config.schema.d.ts +1042 -0
  76. package/dist/core/business-mgt/product-management/product-config.schema.js +392 -0
  77. package/dist/core/business-mgt/product-management/product-display.schema.d.ts +548 -0
  78. package/dist/core/business-mgt/product-management/product-display.schema.js +80 -0
  79. package/dist/core/business-mgt/product-management/product-order.schema.d.ts +493 -0
  80. package/dist/core/business-mgt/product-management/product-order.schema.js +158 -0
  81. package/dist/core/business-mgt/product-management/product-pricing-rule.schema.d.ts +167 -0
  82. package/dist/core/business-mgt/product-management/product-pricing-rule.schema.js +68 -0
  83. package/dist/core/business-mgt/product-management/product-set.schema.d.ts +488 -0
  84. package/dist/core/business-mgt/product-management/product-set.schema.js +273 -0
  85. package/dist/core/business-mgt/product-management/product-variant-axis.schema.d.ts +156 -0
  86. package/dist/core/business-mgt/product-management/product-variant-axis.schema.js +98 -0
  87. package/dist/core/business-mgt/product-management/product-variant.schema.d.ts +219 -0
  88. package/dist/core/business-mgt/product-management/product-variant.schema.js +130 -0
  89. package/dist/core/business-mgt/product-order.schema.d.ts +326 -0
  90. package/dist/core/business-mgt/product-order.schema.js +153 -0
  91. package/dist/core/business-mgt/property-config.schema.d.ts +621 -0
  92. package/dist/core/business-mgt/property-config.schema.js +224 -0
  93. package/dist/core/business-mgt/property-inquiry.schema.d.ts +222 -0
  94. package/dist/core/business-mgt/property-inquiry.schema.js +112 -0
  95. package/dist/core/business-mgt/property-management/index.d.ts +6 -0
  96. package/dist/core/business-mgt/property-management/index.js +22 -0
  97. package/dist/core/business-mgt/property-management/property-config.schema.d.ts +1306 -0
  98. package/dist/core/business-mgt/property-management/property-config.schema.js +367 -0
  99. package/dist/core/business-mgt/property-management/property-inquiry.schema.d.ts +254 -0
  100. package/dist/core/business-mgt/property-management/property-inquiry.schema.js +131 -0
  101. package/dist/core/business-mgt/reservation-mgt/assignment/index.d.ts +3 -0
  102. package/dist/core/business-mgt/reservation-mgt/assignment/index.js +19 -0
  103. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.d.ts +139 -0
  104. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.js +90 -0
  105. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.d.ts +104 -0
  106. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.js +70 -0
  107. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.d.ts +104 -0
  108. package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.js +72 -0
  109. package/dist/core/business-mgt/reservation-mgt/index.d.ts +14 -0
  110. package/dist/core/business-mgt/reservation-mgt/index.js +31 -0
  111. package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.d.ts +180 -0
  112. package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.js +75 -0
  113. package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.d.ts +91 -0
  114. package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.js +57 -0
  115. package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.d.ts +334 -0
  116. package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.js +179 -0
  117. package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.d.ts +195 -0
  118. package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.js +106 -0
  119. package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.d.ts +402 -0
  120. package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.js +198 -0
  121. package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.d.ts +229 -0
  122. package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.js +127 -0
  123. package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.d.ts +382 -0
  124. package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.js +322 -0
  125. package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.d.ts +123 -0
  126. package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.js +83 -0
  127. package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.d.ts +167 -0
  128. package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.js +84 -0
  129. package/dist/core/business-mgt/reservation-mgt/reservation.schema.d.ts +0 -0
  130. package/dist/core/business-mgt/reservation-mgt/reservation.schema.js +153 -0
  131. package/dist/core/business-mgt/reservation-mgt/resource/index.d.ts +4 -0
  132. package/dist/core/business-mgt/reservation-mgt/resource/index.js +20 -0
  133. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.d.ts +157 -0
  134. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.js +76 -0
  135. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.d.ts +137 -0
  136. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.js +94 -0
  137. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.d.ts +713 -0
  138. package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.js +363 -0
  139. package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.d.ts +151 -0
  140. package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.js +147 -0
  141. package/dist/core/business-mgt/reservation-resource.schema.d.ts +154 -0
  142. package/dist/core/business-mgt/reservation-resource.schema.js +100 -0
  143. package/dist/core/business-mgt/reservation.schema.d.ts +119 -0
  144. package/dist/core/business-mgt/reservation.schema.js +89 -0
  145. package/dist/core/business-mgt/service-appointment.schema.d.ts +105 -0
  146. package/dist/core/business-mgt/service-appointment.schema.js +69 -0
  147. package/dist/core/business-mgt/service-config.schema.d.ts +453 -0
  148. package/dist/core/business-mgt/service-config.schema.js +102 -0
  149. package/dist/core/business-mgt/service-management/appointment-additional-info.schema.d.ts +110 -0
  150. package/dist/core/business-mgt/service-management/appointment-additional-info.schema.js +78 -0
  151. package/dist/core/business-mgt/service-management/appointment-field-config.schema.d.ts +304 -0
  152. package/dist/core/business-mgt/service-management/appointment-field-config.schema.js +75 -0
  153. package/dist/core/business-mgt/service-management/business-service-config.schema.d.ts +1226 -0
  154. package/dist/core/business-mgt/service-management/business-service-config.schema.js +317 -0
  155. package/dist/core/business-mgt/service-management/index.d.ts +13 -0
  156. package/dist/core/business-mgt/service-management/index.js +29 -0
  157. package/dist/core/business-mgt/service-management/service-appointment.schema.d.ts +531 -0
  158. package/dist/core/business-mgt/service-management/service-appointment.schema.js +116 -0
  159. package/dist/core/business-mgt/service-management/service-person.schema.d.ts +122 -0
  160. package/dist/core/business-mgt/service-management/service-person.schema.js +66 -0
  161. package/dist/core/business-mgt/service-management/service-pricing-rule.schema.d.ts +221 -0
  162. package/dist/core/business-mgt/service-management/service-pricing-rule.schema.js +118 -0
  163. package/dist/core/business-mgt/service-management/service-provider.schema.d.ts +90 -0
  164. package/dist/core/business-mgt/service-management/service-provider.schema.js +54 -0
  165. package/dist/core/business-mgt/service-management/service-slot-query.schema.d.ts +90 -0
  166. package/dist/core/business-mgt/service-management/service-slot-query.schema.js +113 -0
  167. package/dist/core/business-mgt/service-management/service-time-off.schema.d.ts +121 -0
  168. package/dist/core/business-mgt/service-management/service-time-off.schema.js +95 -0
  169. package/dist/core/business-mgt/service-person.schema.d.ts +43 -0
  170. package/dist/core/business-mgt/service-person.schema.js +38 -0
  171. package/dist/core/business-mgt/tax-rule.schema.d.ts +161 -0
  172. package/dist/core/business-mgt/tax-rule.schema.js +90 -0
  173. package/dist/core/conversation/conversation-config.schema.d.ts +644 -0
  174. package/dist/core/conversation/conversation-config.schema.js +351 -0
  175. package/dist/core/conversation/conversation-message.schema.d.ts +307 -0
  176. package/dist/core/conversation/conversation-message.schema.js +275 -0
  177. package/dist/core/conversation/index.d.ts +12 -0
  178. package/dist/core/conversation/index.js +28 -0
  179. package/dist/core/conversation/outbound-call.schema.d.ts +209 -0
  180. package/dist/core/conversation/outbound-call.schema.js +116 -0
  181. package/dist/core/conversation/outbound-email.schema.d.ts +338 -0
  182. package/dist/core/conversation/outbound-email.schema.js +150 -0
  183. package/dist/core/conversation/outbound-sms.schema.d.ts +163 -0
  184. package/dist/core/conversation/outbound-sms.schema.js +85 -0
  185. package/dist/core/conversation/outbound-template.schema.d.ts +375 -0
  186. package/dist/core/conversation/outbound-template.schema.js +160 -0
  187. package/dist/core/conversation/translation-config.schema.d.ts +92 -0
  188. package/dist/core/conversation/translation-config.schema.js +88 -0
  189. package/dist/core/conversation/translation-conversation.schema.d.ts +469 -0
  190. package/dist/core/conversation/translation-conversation.schema.js +175 -0
  191. package/dist/core/index.d.ts +12 -0
  192. package/dist/core/index.js +30 -0
  193. package/dist/core/service-configuration/agent-config.schema.d.ts +236 -0
  194. package/dist/core/service-configuration/agent-config.schema.js +152 -0
  195. package/dist/core/service-configuration/base-agent-setup.d.ts +147 -0
  196. package/dist/core/service-configuration/base-agent-setup.js +123 -0
  197. package/dist/core/service-configuration/call-transfer-config.schema.d.ts +60 -0
  198. package/dist/core/service-configuration/call-transfer-config.schema.js +53 -0
  199. package/dist/core/service-configuration/deployment-config.schema.d.ts +522 -0
  200. package/dist/core/service-configuration/deployment-config.schema.js +271 -0
  201. package/dist/core/service-configuration/dynamic_setup/base-agent-setup.d.ts +130 -0
  202. package/dist/core/service-configuration/dynamic_setup/base-agent-setup.js +110 -0
  203. package/dist/core/service-configuration/dynamic_setup/index.d.ts +10 -0
  204. package/dist/core/service-configuration/dynamic_setup/index.js +26 -0
  205. package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.d.ts +111 -0
  206. package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.js +56 -0
  207. package/dist/core/service-configuration/dynamic_setup/web-agent-setup.d.ts +113 -0
  208. package/dist/core/service-configuration/dynamic_setup/web-agent-setup.js +55 -0
  209. package/dist/core/service-configuration/index.d.ts +17 -0
  210. package/dist/core/service-configuration/index.js +33 -0
  211. package/dist/core/service-configuration/instruction-config.schema.d.ts +183 -0
  212. package/dist/core/service-configuration/instruction-config.schema.js +139 -0
  213. package/dist/core/service-configuration/interaction-channels.schema.d.ts +469 -0
  214. package/dist/core/service-configuration/interaction-channels.schema.js +390 -0
  215. package/dist/core/service-configuration/knowledge.schema.d.ts +107 -0
  216. package/dist/core/service-configuration/knowledge.schema.js +106 -0
  217. package/dist/core/service-configuration/phone-config.schema.d.ts +206 -0
  218. package/dist/core/service-configuration/phone-config.schema.js +121 -0
  219. package/dist/core/service-configuration/phone-number.schema.d.ts +236 -0
  220. package/dist/core/service-configuration/phone-number.schema.js +211 -0
  221. package/dist/core/service-configuration/provisioning-config.d.ts +429 -0
  222. package/dist/core/service-configuration/provisioning-config.js +307 -0
  223. package/dist/core/service-configuration/support-llm.d.ts +95 -0
  224. package/dist/core/service-configuration/support-llm.js +76 -0
  225. package/dist/core/service-configuration/voice-language.schema.d.ts +200 -0
  226. package/dist/core/service-configuration/voice-language.schema.js +166 -0
  227. package/dist/core/type-definitions/account-definitions.d.ts +82 -0
  228. package/dist/core/type-definitions/account-definitions.js +88 -0
  229. package/dist/core/type-definitions/business-definitions.d.ts +394 -0
  230. package/dist/core/type-definitions/business-definitions.js +447 -0
  231. package/dist/core/type-definitions/conversation.type.definition.d.ts +223 -0
  232. package/dist/core/type-definitions/conversation.type.definition.js +236 -0
  233. package/dist/core/type-definitions/display-order.d.ts +154 -0
  234. package/dist/core/type-definitions/display-order.js +154 -0
  235. package/dist/core/type-definitions/dynamic-fields/field-definition.schema.d.ts +165 -0
  236. package/dist/core/type-definitions/dynamic-fields/field-definition.schema.js +97 -0
  237. package/dist/core/type-definitions/dynamic-fields/field-types.d.ts +49 -0
  238. package/dist/core/type-definitions/dynamic-fields/field-types.js +104 -0
  239. package/dist/core/type-definitions/dynamic-fields/index.d.ts +9 -0
  240. package/dist/core/type-definitions/dynamic-fields/index.js +25 -0
  241. package/dist/core/type-definitions/index.d.ts +10 -0
  242. package/dist/core/type-definitions/index.js +26 -0
  243. package/dist/core/type-definitions/knowledge-definitions.d.ts +30 -0
  244. package/dist/core/type-definitions/knowledge-definitions.js +37 -0
  245. package/dist/core/type-definitions/service-config.definitions.d.ts +112 -0
  246. package/dist/core/type-definitions/service-config.definitions.js +135 -0
  247. package/dist/core/validators/channel-validation.d.ts +19 -0
  248. package/dist/core/validators/channel-validation.js +40 -0
  249. package/dist/core/validators/index.d.ts +5 -0
  250. package/dist/core/validators/index.js +21 -0
  251. package/dist/index.d.ts +6 -0
  252. package/dist/index.js +24 -0
  253. package/dist/request/index.d.ts +5 -0
  254. package/dist/request/index.js +21 -0
  255. package/dist/request/models/index.d.ts +6 -0
  256. package/dist/request/models/index.js +22 -0
  257. package/dist/request/models/paginated-quest.schema.d.ts +33 -0
  258. package/dist/request/models/paginated-quest.schema.js +35 -0
  259. package/dist/request/models/paginated-result.schema.d.ts +124 -0
  260. package/dist/request/models/paginated-result.schema.js +94 -0
  261. package/package.json +43 -0
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MenuSetViewSchema = exports.MenuSetItemViewSchema = exports.UpdateMenuSetSchema = exports.CreateMenuSetSchema = exports.MenuSetSchema = exports.MenuSetSelectorSchema = exports.MenuSetItemSchema = exports.MenuSetChannelMappingSchema = exports.MenuSetTargetingMode = exports.MenuSetPricingMode = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const base_schema_1 = require("../../base.schema");
9
+ const menu_config_schema_1 = require("./menu-config.schema");
10
+ /**
11
+ * @fileoverview Menu set schema definitions for bundled menu items.
12
+ * @module business-mgt/menu-set
13
+ *
14
+ * Includes menu sets (bundles/combos), pricing modes, targeting modes,
15
+ * and selectors for dynamic set membership.
16
+ */
17
+ // ============================================================================
18
+ // ENUMS
19
+ // ============================================================================
20
+ /**
21
+ * Menu set pricing mode.
22
+ * Determines how set pricing is calculated.
23
+ *
24
+ * @enum {string}
25
+ */
26
+ var MenuSetPricingMode;
27
+ (function (MenuSetPricingMode) {
28
+ MenuSetPricingMode["FIXED"] = "FIXED";
29
+ MenuSetPricingMode["SUM_OF_ITEMS"] = "SUM_OF_ITEMS";
30
+ })(MenuSetPricingMode || (exports.MenuSetPricingMode = MenuSetPricingMode = {}));
31
+ /**
32
+ * Menu set targeting mode.
33
+ * Determines how set members are selected.
34
+ *
35
+ * @enum {string}
36
+ */
37
+ var MenuSetTargetingMode;
38
+ (function (MenuSetTargetingMode) {
39
+ MenuSetTargetingMode["EXPLICIT"] = "EXPLICIT";
40
+ MenuSetTargetingMode["SELECTOR"] = "SELECTOR";
41
+ })(MenuSetTargetingMode || (exports.MenuSetTargetingMode = MenuSetTargetingMode = {}));
42
+ // ============================================================================
43
+ // CHANNEL MAPPING SCHEMAS
44
+ // ============================================================================
45
+ /**
46
+ * Menu set channel mapping schema.
47
+ * Maps menu sets to external platform identifiers.
48
+ *
49
+ * @typedef {Object} MenuSetChannelMapping
50
+ * @property {string} channelId - Channel identifier (e.g., doordash, uber-eats)
51
+ * @property {string} externalMenuSetId - External menu set ID for synchronization
52
+ */
53
+ exports.MenuSetChannelMappingSchema = zod_1.default.object({
54
+ channelId: zod_1.default.string().describe("Channel ID (e.g., doordash, uber-eats)"),
55
+ externalMenuSetId: zod_1.default.string().describe("External menu set ID for this specific channel"),
56
+ }).describe("Per-channel external menu set ID mapping");
57
+ // ============================================================================
58
+ // MENU SET ITEM SCHEMA
59
+ // ============================================================================
60
+ /**
61
+ * Menu set item schema.
62
+ * Individual item within a menu set.
63
+ *
64
+ * @typedef {Object} MenuSetItem
65
+ * @property {string} menuItemId - Menu item ID included in the set
66
+ * @property {string} menuItemVariantId - Menu item variant ID included in the set
67
+ * @property {number} quantity - Quantity of this menu item in the set
68
+ * @property {boolean} isRequired - Whether this item is required in the set
69
+ * @property {number} [displayOrder] - Display order inside the set
70
+ */
71
+ exports.MenuSetItemSchema = zod_1.default.object({
72
+ menuItemId: zod_1.default.string().describe("Menu item ID included in the set"),
73
+ menuItemVariantId: zod_1.default.string().describe("Menu item variant ID included in the set"),
74
+ quantity: zod_1.default.number().int().positive().describe("Quantity of this menu item in the set"),
75
+ isRequired: zod_1.default.boolean().default(true).describe("Whether this item is required in the set"),
76
+ displayOrder: zod_1.default.number().int().nullable().optional().describe("Display order inside the set"),
77
+ });
78
+ // ============================================================================
79
+ // MENU SET SELECTOR SCHEMA
80
+ // ============================================================================
81
+ /**
82
+ * Menu set selector schema.
83
+ * Defines dynamic rules for set membership.
84
+ *
85
+ * @typedef {Object} MenuSetSelector
86
+ * @property {string[]} menuItemIdsAny - Any matching catalog menu item IDs
87
+ * @property {string[]} menuItemIdsAll - All required catalog menu item IDs
88
+ * @property {boolean} allMenuItems - Includes all catalog menu items
89
+ * @property {number} [quantityExact] - Requires exact matched quantity
90
+ * @property {number} [quantityMin] - Requires minimum matched quantity
91
+ * @property {number} [quantityMax] - Caps maximum matched quantity
92
+ */
93
+ exports.MenuSetSelectorSchema = zod_1.default.object({
94
+ menuItemIdsAny: zod_1.default.array(zod_1.default.string()).max(5000).default([]).describe("Any matching catalog menu item IDs"),
95
+ menuItemIdsAll: zod_1.default.array(zod_1.default.string()).max(5000).default([]).describe("All required catalog menu item IDs"),
96
+ allMenuItems: zod_1.default.boolean().default(false).describe("Includes all catalog menu items"),
97
+ quantityExact: zod_1.default.number().int().positive().optional().describe("Requires exact matched quantity"),
98
+ quantityMin: zod_1.default.number().int().nonnegative().optional().describe("Requires minimum matched quantity"),
99
+ quantityMax: zod_1.default.number().int().positive().optional().describe("Caps maximum matched quantity"),
100
+ }).superRefine((data, ctx) => {
101
+ const selectorModes = [
102
+ data.menuItemIdsAny.length > 0,
103
+ data.menuItemIdsAll.length > 0,
104
+ data.allMenuItems,
105
+ ].filter(Boolean).length;
106
+ if (selectorModes !== 1) {
107
+ ctx.addIssue({
108
+ code: "custom",
109
+ path: ["menuItemIdsAny"],
110
+ message: "Exactly one of menuItemIdsAny, menuItemIdsAll, or allMenuItems must be set",
111
+ });
112
+ }
113
+ if (data.quantityExact !== undefined && (data.quantityMin !== undefined || data.quantityMax !== undefined)) {
114
+ ctx.addIssue({
115
+ code: "custom",
116
+ path: ["quantityExact"],
117
+ message: "quantityExact cannot be combined with quantityMin or quantityMax",
118
+ });
119
+ }
120
+ if (data.quantityMin !== undefined &&
121
+ data.quantityMax !== undefined &&
122
+ data.quantityMax < data.quantityMin) {
123
+ ctx.addIssue({
124
+ code: "custom",
125
+ path: ["quantityMax"],
126
+ message: "quantityMax must be greater than or equal to quantityMin",
127
+ });
128
+ }
129
+ });
130
+ // ============================================================================
131
+ // MENU SET SCHEMA
132
+ // ============================================================================
133
+ /**
134
+ * Menu set schema.
135
+ * Bundled menu items (combos, deals, meal sets).
136
+ *
137
+ * @typedef {Object} MenuSet
138
+ * @property {string} [locationId] - Location ID for location-specific menu sets
139
+ * @property {string} [menuRevisionId] - Menu revision ID for version-scoped data
140
+ * @property {string} [code] - Stable internal code for integration matching
141
+ * @property {string} name - Menu set name
142
+ * @property {string} [description] - Menu set description
143
+ * @property {MenuSetChannelMapping[]} [channelMappings] - Per-channel mappings
144
+ * @property {MenuSetTargetingMode} targetingMode - How this set selects its members
145
+ * @property {MenuSetPricingMode} pricingMode - How set pricing is resolved
146
+ * @property {number} [fixedPrice] - Set price when pricing mode is FIXED
147
+ * @property {MenuSetItem[]} [items] - Explicit menu members for EXPLICIT targeting
148
+ * @property {MenuSetSelector} [selector] - Selector definition for SELECTOR targeting
149
+ * @property {boolean} isActive - Whether this menu set is active
150
+ * @property {string} [imageUrl] - Public image URL for the menu set
151
+ * @property {string[]} [imageUrls] - Public image URLs for the menu set
152
+ * @property {number} [displayOrder] - Display order in catalog
153
+ */
154
+ exports.MenuSetSchema = base_schema_1.BaseModelSchema.safeExtend({
155
+ locationId: zod_1.default.string().nullable().optional().describe("Location ID for location-specific menu sets"),
156
+ menuRevisionId: zod_1.default.string().nullable().optional().describe("Optional menu revision ID for version-scoped data"),
157
+ code: zod_1.default.string().min(1).nullable().optional().describe("Stable internal code for idempotent integration matching"),
158
+ name: zod_1.default.string().min(1, "Menu set name is required").describe("Menu set name"),
159
+ description: zod_1.default.string().nullable().optional().describe("Menu set description"),
160
+ channelMappings: zod_1.default.array(exports.MenuSetChannelMappingSchema).nullable().optional().describe("Per-channel menu set ID mappings"),
161
+ targetingMode: zod_1.default.enum(MenuSetTargetingMode).default(MenuSetTargetingMode.EXPLICIT).describe("How this set selects its members"),
162
+ pricingMode: zod_1.default.enum(MenuSetPricingMode).default(MenuSetPricingMode.SUM_OF_ITEMS).describe("How set pricing is resolved"),
163
+ fixedPrice: zod_1.default.number().nonnegative().nullable().optional().describe("Set price when pricing mode is FIXED"),
164
+ items: zod_1.default.array(exports.MenuSetItemSchema).nullable().optional().describe("Explicit menu members for EXPLICIT targeting"),
165
+ selector: exports.MenuSetSelectorSchema.nullable().optional().describe("Selector definition for SELECTOR targeting"),
166
+ isActive: zod_1.default.boolean().default(true).describe("Whether this menu set is active"),
167
+ imageUrl: zod_1.default.string().nullable().optional().describe("Public image URL for the menu set"),
168
+ imageUrls: zod_1.default.array(zod_1.default.string()).nullable().optional().describe("Public image URLs for the menu set"),
169
+ displayOrder: zod_1.default.number().int().nullable().optional().describe("Display order in catalog"),
170
+ }).superRefine((data, ctx) => {
171
+ if (data.pricingMode === MenuSetPricingMode.FIXED && (data.fixedPrice === undefined || data.fixedPrice === null)) {
172
+ ctx.addIssue({
173
+ code: "custom",
174
+ path: ["fixedPrice"],
175
+ message: "fixedPrice is required when pricingMode is FIXED",
176
+ });
177
+ }
178
+ if (data.pricingMode === MenuSetPricingMode.SUM_OF_ITEMS && data.fixedPrice != null) {
179
+ ctx.addIssue({
180
+ code: "custom",
181
+ path: ["fixedPrice"],
182
+ message: "fixedPrice must be null or omitted when pricingMode is SUM_OF_ITEMS",
183
+ });
184
+ }
185
+ if (data.targetingMode === MenuSetTargetingMode.EXPLICIT) {
186
+ if (!data.items || data.items.length === 0) {
187
+ ctx.addIssue({
188
+ code: "custom",
189
+ path: ["items"],
190
+ message: "items is required when targetingMode is EXPLICIT",
191
+ });
192
+ }
193
+ if (data.selector != null) {
194
+ ctx.addIssue({
195
+ code: "custom",
196
+ path: ["selector"],
197
+ message: "selector must be null or omitted when targetingMode is EXPLICIT",
198
+ });
199
+ }
200
+ }
201
+ if (data.targetingMode === MenuSetTargetingMode.SELECTOR) {
202
+ if (data.selector == null) {
203
+ ctx.addIssue({
204
+ code: "custom",
205
+ path: ["selector"],
206
+ message: "selector is required when targetingMode is SELECTOR",
207
+ });
208
+ }
209
+ if (data.items && data.items.length > 0) {
210
+ ctx.addIssue({
211
+ code: "custom",
212
+ path: ["items"],
213
+ message: "items must be empty when targetingMode is SELECTOR",
214
+ });
215
+ }
216
+ }
217
+ if (!data.items || data.items.length === 0) {
218
+ return;
219
+ }
220
+ const seenItemKeys = new Set();
221
+ for (const [index, item] of data.items.entries()) {
222
+ const itemKey = `${item.menuItemId}::${item.menuItemVariantId}`;
223
+ if (seenItemKeys.has(itemKey)) {
224
+ ctx.addIssue({
225
+ code: "custom",
226
+ path: ["items", index],
227
+ message: "Duplicate menuItemId + menuItemVariantId combination is not allowed in a menu set",
228
+ });
229
+ }
230
+ seenItemKeys.add(itemKey);
231
+ }
232
+ });
233
+ // ============================================================================
234
+ // CREATE/UPDATE SCHEMAS
235
+ // ============================================================================
236
+ /**
237
+ * Schema for creating a new menu set.
238
+ * Omits auto-generated fields.
239
+ */
240
+ exports.CreateMenuSetSchema = exports.MenuSetSchema.omit({
241
+ id: true,
242
+ createdAt: true,
243
+ updatedAt: true,
244
+ });
245
+ /**
246
+ * Schema for updating an existing menu set.
247
+ * All fields optional except id (required).
248
+ */
249
+ exports.UpdateMenuSetSchema = exports.CreateMenuSetSchema.partial().safeExtend({
250
+ id: zod_1.default.string(),
251
+ });
252
+ // ============================================================================
253
+ // VIEW SCHEMAS
254
+ // ============================================================================
255
+ /**
256
+ * Menu set item view schema.
257
+ * Read-optimized view with resolved menu item.
258
+ *
259
+ * @typedef {Object} MenuSetItemView
260
+ * @property {string} menuItemId - Menu item ID
261
+ * @property {string} menuItemVariantId - Menu item variant ID
262
+ * @property {number} quantity - Quantity in set
263
+ * @property {boolean} isRequired - Whether required
264
+ * @property {number} [displayOrder] - Display order
265
+ * @property {BusinessMenuItem} [menuItem] - Resolved menu item snapshot
266
+ */
267
+ exports.MenuSetItemViewSchema = exports.MenuSetItemSchema.safeExtend({
268
+ menuItem: menu_config_schema_1.BusinessMenuItemSchema.nullable().optional().describe("Resolved menu item snapshot"),
269
+ });
270
+ /**
271
+ * Menu set view schema.
272
+ * Read-optimized view with resolved items and pricing.
273
+ *
274
+ * @typedef {Object} MenuSetView
275
+ * @property {MenuSetItemView[]} [items] - Resolved menu set items
276
+ * @property {number} [resolvedPrice] - Computed display price for the set
277
+ */
278
+ exports.MenuSetViewSchema = exports.MenuSetSchema.omit({
279
+ items: true,
280
+ }).safeExtend({
281
+ items: zod_1.default.array(exports.MenuSetItemViewSchema).nullable().optional(),
282
+ resolvedPrice: zod_1.default.number().nonnegative().nullable().optional().describe("Computed display price for the set"),
283
+ });