@gofynd/fdk-client-javascript 1.4.8-beta.2 → 1.4.8

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 (198) hide show
  1. package/README.md +26 -1
  2. package/package.json +2 -2
  3. package/sdk/application/ApplicationClient.d.ts +8 -0
  4. package/sdk/application/ApplicationClient.js +14 -0
  5. package/sdk/application/Cart/CartApplicationClient.d.ts +20 -20
  6. package/sdk/application/Cart/CartApplicationClient.js +20 -20
  7. package/sdk/application/Cart/CartApplicationModel.d.ts +2446 -664
  8. package/sdk/application/Cart/CartApplicationModel.js +783 -552
  9. package/sdk/application/Cart/CartApplicationValidator.d.ts +268 -194
  10. package/sdk/application/Cart/CartApplicationValidator.js +100 -114
  11. package/sdk/application/Catalog/CatalogApplicationClient.d.ts +53 -53
  12. package/sdk/application/Catalog/CatalogApplicationClient.js +53 -53
  13. package/sdk/application/Catalog/CatalogApplicationModel.d.ts +2012 -503
  14. package/sdk/application/Catalog/CatalogApplicationModel.js +603 -453
  15. package/sdk/application/Catalog/CatalogApplicationValidator.d.ts +64 -64
  16. package/sdk/application/Catalog/CatalogApplicationValidator.js +32 -32
  17. package/sdk/application/Common/CommonApplicationClient.d.ts +2 -2
  18. package/sdk/application/Common/CommonApplicationClient.js +2 -2
  19. package/sdk/application/Common/CommonApplicationModel.d.ts +170 -90
  20. package/sdk/application/Common/CommonApplicationModel.js +59 -58
  21. package/sdk/application/Common/CommonApplicationValidator.d.ts +8 -5
  22. package/sdk/application/Common/CommonApplicationValidator.js +3 -3
  23. package/sdk/application/Communication/CommunicationApplicationClient.d.ts +2 -2
  24. package/sdk/application/Communication/CommunicationApplicationClient.js +2 -2
  25. package/sdk/application/Communication/CommunicationApplicationModel.d.ts +170 -35
  26. package/sdk/application/Communication/CommunicationApplicationModel.js +54 -33
  27. package/sdk/application/Configuration/ConfigurationApplicationClient.d.ts +15 -15
  28. package/sdk/application/Configuration/ConfigurationApplicationClient.js +15 -15
  29. package/sdk/application/Configuration/ConfigurationApplicationModel.d.ts +624 -443
  30. package/sdk/application/Configuration/ConfigurationApplicationModel.js +259 -248
  31. package/sdk/application/Configuration/ConfigurationApplicationValidator.d.ts +32 -24
  32. package/sdk/application/Configuration/ConfigurationApplicationValidator.js +14 -13
  33. package/sdk/application/Content/ContentApplicationClient.d.ts +16 -16
  34. package/sdk/application/Content/ContentApplicationClient.js +16 -16
  35. package/sdk/application/Content/ContentApplicationModel.d.ts +1206 -281
  36. package/sdk/application/Content/ContentApplicationModel.js +342 -276
  37. package/sdk/application/Content/ContentApplicationValidator.d.ts +28 -17
  38. package/sdk/application/Content/ContentApplicationValidator.js +11 -10
  39. package/sdk/application/FileStorage/FileStorageApplicationClient.d.ts +3 -3
  40. package/sdk/application/FileStorage/FileStorageApplicationClient.js +3 -3
  41. package/sdk/application/FileStorage/FileStorageApplicationModel.d.ts +146 -37
  42. package/sdk/application/FileStorage/FileStorageApplicationModel.js +38 -36
  43. package/sdk/application/Lead/LeadApplicationClient.d.ts +3 -3
  44. package/sdk/application/Lead/LeadApplicationClient.js +3 -3
  45. package/sdk/application/Lead/LeadApplicationModel.d.ts +195 -134
  46. package/sdk/application/Lead/LeadApplicationModel.js +110 -67
  47. package/sdk/application/Lead/LeadApplicationValidator.d.ts +8 -8
  48. package/sdk/application/Lead/LeadApplicationValidator.js +4 -4
  49. package/sdk/application/Logistic/LogisticApplicationClient.d.ts +10 -10
  50. package/sdk/application/Logistic/LogisticApplicationClient.js +10 -10
  51. package/sdk/application/Logistic/LogisticApplicationModel.d.ts +1039 -221
  52. package/sdk/application/Logistic/LogisticApplicationModel.js +342 -199
  53. package/sdk/application/Logistic/LogisticApplicationValidator.d.ts +76 -82
  54. package/sdk/application/Logistic/LogisticApplicationValidator.js +38 -41
  55. package/sdk/application/Order/OrderApplicationClient.d.ts +10 -10
  56. package/sdk/application/Order/OrderApplicationClient.js +10 -10
  57. package/sdk/application/Order/OrderApplicationModel.d.ts +1401 -324
  58. package/sdk/application/Order/OrderApplicationModel.js +392 -316
  59. package/sdk/application/Order/OrderApplicationValidator.d.ts +32 -30
  60. package/sdk/application/Order/OrderApplicationValidator.js +15 -14
  61. package/sdk/application/Payment/PaymentApplicationClient.d.ts +43 -43
  62. package/sdk/application/Payment/PaymentApplicationClient.js +43 -43
  63. package/sdk/application/Payment/PaymentApplicationModel.d.ts +1111 -1022
  64. package/sdk/application/Payment/PaymentApplicationModel.js +537 -521
  65. package/sdk/application/Payment/PaymentApplicationValidator.d.ts +82 -49
  66. package/sdk/application/Payment/PaymentApplicationValidator.js +30 -30
  67. package/sdk/application/Rewards/RewardsApplicationModel.d.ts +28 -7
  68. package/sdk/application/Rewards/RewardsApplicationModel.js +7 -7
  69. package/sdk/application/Share/ShareApplicationModel.d.ts +178 -38
  70. package/sdk/application/Share/ShareApplicationModel.js +53 -37
  71. package/sdk/application/Share/ShareApplicationValidator.d.ts +4 -2
  72. package/sdk/application/Share/ShareApplicationValidator.js +2 -1
  73. package/sdk/application/Theme/ThemeApplicationClient.d.ts +4 -4
  74. package/sdk/application/Theme/ThemeApplicationClient.js +14 -8
  75. package/sdk/application/Theme/ThemeApplicationModel.d.ts +528 -287
  76. package/sdk/application/Theme/ThemeApplicationModel.js +208 -172
  77. package/sdk/application/Theme/ThemeApplicationValidator.d.ts +17 -12
  78. package/sdk/application/Theme/ThemeApplicationValidator.js +8 -6
  79. package/sdk/application/User/UserApplicationClient.d.ts +36 -36
  80. package/sdk/application/User/UserApplicationClient.js +36 -36
  81. package/sdk/application/User/UserApplicationModel.d.ts +1062 -255
  82. package/sdk/application/User/UserApplicationModel.js +298 -244
  83. package/sdk/application/User/UserApplicationValidator.d.ts +80 -80
  84. package/sdk/application/User/UserApplicationValidator.js +40 -40
  85. package/sdk/application/Webhook/WebhookApplicationClient.d.ts +1 -1
  86. package/sdk/application/Webhook/WebhookApplicationClient.js +1 -1
  87. package/sdk/application/Webhook/WebhookApplicationModel.d.ts +20 -5
  88. package/sdk/application/Webhook/WebhookApplicationModel.js +5 -5
  89. package/sdk/common/Clickstream.js +95 -15
  90. package/sdk/common/Constant.d.ts +9 -0
  91. package/sdk/common/Constant.js +11 -0
  92. package/sdk/common/Utility.js +19 -0
  93. package/sdk/common/utils.js +8 -1
  94. package/sdk/partner/Lead/LeadPartnerModel.d.ts +28 -7
  95. package/sdk/partner/Lead/LeadPartnerModel.js +7 -7
  96. package/sdk/partner/Logistics/LogisticsPartnerModel.d.ts +75 -8
  97. package/sdk/partner/Logistics/LogisticsPartnerModel.js +59 -7
  98. package/sdk/partner/Logistics/LogisticsPartnerValidator.js +2 -2
  99. package/sdk/partner/PartnerClient.d.ts +8 -0
  100. package/sdk/partner/PartnerClient.js +14 -0
  101. package/sdk/partner/Theme/ThemePartnerClient.d.ts +20 -0
  102. package/sdk/partner/Theme/ThemePartnerClient.js +158 -0
  103. package/sdk/partner/Theme/ThemePartnerModel.d.ts +45 -6
  104. package/sdk/partner/Theme/ThemePartnerModel.js +33 -4
  105. package/sdk/partner/Theme/ThemePartnerValidator.d.ts +2 -0
  106. package/sdk/partner/Theme/ThemePartnerValidator.js +14 -0
  107. package/sdk/partner/Webhook/WebhookPartnerModel.d.ts +28 -7
  108. package/sdk/partner/Webhook/WebhookPartnerModel.js +7 -7
  109. package/sdk/platform/Analytics/AnalyticsPlatformModel.d.ts +28 -7
  110. package/sdk/platform/Analytics/AnalyticsPlatformModel.js +7 -7
  111. package/sdk/platform/Billing/BillingPlatformClient.d.ts +21 -10
  112. package/sdk/platform/Billing/BillingPlatformClient.js +167 -83
  113. package/sdk/platform/Billing/BillingPlatformModel.d.ts +2849 -565
  114. package/sdk/platform/Billing/BillingPlatformModel.js +935 -556
  115. package/sdk/platform/Billing/BillingPlatformValidator.d.ts +30 -14
  116. package/sdk/platform/Billing/BillingPlatformValidator.js +31 -16
  117. package/sdk/platform/Cart/CartPlatformModel.d.ts +28 -7
  118. package/sdk/platform/Cart/CartPlatformModel.js +8 -8
  119. package/sdk/platform/Catalog/CatalogPlatformApplicationClient.d.ts +1 -1
  120. package/sdk/platform/Catalog/CatalogPlatformApplicationClient.js +20 -0
  121. package/sdk/platform/Catalog/CatalogPlatformApplicationValidator.d.ts +37 -0
  122. package/sdk/platform/Catalog/CatalogPlatformApplicationValidator.js +16 -0
  123. package/sdk/platform/Catalog/CatalogPlatformClient.d.ts +12 -2
  124. package/sdk/platform/Catalog/CatalogPlatformClient.js +41 -1
  125. package/sdk/platform/Catalog/CatalogPlatformModel.d.ts +46 -12
  126. package/sdk/platform/Catalog/CatalogPlatformModel.js +14 -11
  127. package/sdk/platform/Catalog/CatalogPlatformValidator.d.ts +40 -0
  128. package/sdk/platform/Catalog/CatalogPlatformValidator.js +17 -0
  129. package/sdk/platform/Communication/CommunicationPlatformModel.d.ts +28 -7
  130. package/sdk/platform/Communication/CommunicationPlatformModel.js +7 -7
  131. package/sdk/platform/CompanyProfile/CompanyProfilePlatformModel.d.ts +28 -7
  132. package/sdk/platform/CompanyProfile/CompanyProfilePlatformModel.js +7 -7
  133. package/sdk/platform/Configuration/ConfigurationPlatformClient.d.ts +0 -97
  134. package/sdk/platform/Configuration/ConfigurationPlatformClient.js +77 -782
  135. package/sdk/platform/Configuration/ConfigurationPlatformModel.d.ts +24 -701
  136. package/sdk/platform/Configuration/ConfigurationPlatformModel.js +7 -539
  137. package/sdk/platform/Configuration/ConfigurationPlatformValidator.d.ts +1 -183
  138. package/sdk/platform/Configuration/ConfigurationPlatformValidator.js +0 -134
  139. package/sdk/platform/Content/ContentPlatformApplicationClient.d.ts +0 -10
  140. package/sdk/platform/Content/ContentPlatformApplicationClient.js +0 -79
  141. package/sdk/platform/Content/ContentPlatformApplicationValidator.d.ts +1 -15
  142. package/sdk/platform/Content/ContentPlatformApplicationValidator.js +0 -13
  143. package/sdk/platform/Content/ContentPlatformModel.d.ts +60 -17
  144. package/sdk/platform/Content/ContentPlatformModel.js +30 -15
  145. package/sdk/platform/Discount/DiscountPlatformModel.d.ts +28 -7
  146. package/sdk/platform/Discount/DiscountPlatformModel.js +7 -7
  147. package/sdk/platform/FileStorage/FileStoragePlatformModel.d.ts +127 -25
  148. package/sdk/platform/FileStorage/FileStoragePlatformModel.js +37 -25
  149. package/sdk/platform/Finance/FinancePlatformClient.d.ts +30 -30
  150. package/sdk/platform/Finance/FinancePlatformClient.js +30 -30
  151. package/sdk/platform/Finance/FinancePlatformModel.d.ts +1601 -348
  152. package/sdk/platform/Finance/FinancePlatformModel.js +488 -352
  153. package/sdk/platform/Lead/LeadPlatformModel.d.ts +28 -7
  154. package/sdk/platform/Lead/LeadPlatformModel.js +7 -7
  155. package/sdk/platform/Order/OrderPlatformClient.d.ts +22 -0
  156. package/sdk/platform/Order/OrderPlatformClient.js +165 -0
  157. package/sdk/platform/Order/OrderPlatformModel.d.ts +631 -39
  158. package/sdk/platform/Order/OrderPlatformModel.js +367 -41
  159. package/sdk/platform/Order/OrderPlatformValidator.d.ts +32 -1
  160. package/sdk/platform/Order/OrderPlatformValidator.js +28 -0
  161. package/sdk/platform/Payment/PaymentPlatformModel.d.ts +30 -9
  162. package/sdk/platform/Payment/PaymentPlatformModel.js +9 -9
  163. package/sdk/platform/PlatformClient.d.ts +8 -0
  164. package/sdk/platform/PlatformClient.js +14 -0
  165. package/sdk/platform/Rewards/RewardsPlatformModel.d.ts +28 -7
  166. package/sdk/platform/Rewards/RewardsPlatformModel.js +7 -7
  167. package/sdk/platform/Serviceability/ServiceabilityPlatformApplicationClient.d.ts +12 -9
  168. package/sdk/platform/Serviceability/ServiceabilityPlatformApplicationClient.js +12 -9
  169. package/sdk/platform/Serviceability/ServiceabilityPlatformClient.d.ts +1 -1
  170. package/sdk/platform/Serviceability/ServiceabilityPlatformClient.js +4 -4
  171. package/sdk/platform/Serviceability/ServiceabilityPlatformModel.d.ts +139 -22
  172. package/sdk/platform/Serviceability/ServiceabilityPlatformModel.js +98 -21
  173. package/sdk/platform/Serviceability/ServiceabilityPlatformValidator.d.ts +4 -4
  174. package/sdk/platform/Serviceability/ServiceabilityPlatformValidator.js +4 -4
  175. package/sdk/platform/Share/SharePlatformModel.d.ts +28 -7
  176. package/sdk/platform/Share/SharePlatformModel.js +7 -7
  177. package/sdk/platform/Theme/ThemePlatformModel.d.ts +18 -5
  178. package/sdk/platform/Theme/ThemePlatformModel.js +7 -4
  179. package/sdk/platform/User/UserPlatformModel.d.ts +18 -20
  180. package/sdk/platform/User/UserPlatformModel.js +9 -11
  181. package/sdk/platform/Webhook/WebhookPlatformModel.d.ts +54 -33
  182. package/sdk/platform/Webhook/WebhookPlatformModel.js +33 -33
  183. package/sdk/public/Billing/BillingPublicClient.d.ts +11 -0
  184. package/sdk/public/Billing/BillingPublicClient.js +80 -0
  185. package/sdk/public/Billing/BillingPublicModel.d.ts +584 -99
  186. package/sdk/public/Billing/BillingPublicModel.js +252 -87
  187. package/sdk/public/Billing/BillingPublicValidator.d.ts +10 -1
  188. package/sdk/public/Billing/BillingPublicValidator.js +12 -0
  189. package/sdk/public/PublicClient.d.ts +0 -2
  190. package/sdk/public/PublicClient.js +0 -4
  191. package/sdk/public/index.d.ts +0 -1
  192. package/sdk/public/index.js +0 -2
  193. package/sdk/public/Inventory/InventoryPublicClient.d.ts +0 -87
  194. package/sdk/public/Inventory/InventoryPublicClient.js +0 -529
  195. package/sdk/public/Inventory/InventoryPublicModel.d.ts +0 -393
  196. package/sdk/public/Inventory/InventoryPublicModel.js +0 -448
  197. package/sdk/public/Inventory/InventoryPublicValidator.d.ts +0 -91
  198. package/sdk/public/Inventory/InventoryPublicValidator.js +0 -85
@@ -2,52 +2,57 @@ const Joi = require("joi");
2
2
 
3
3
  /**
4
4
  * @typedef ProductDetailCustomOrder
5
- * @property {number} [manufacturing_time]
6
- * @property {string} [manufacturing_time_unit]
7
- * @property {boolean} [is_custom_order]
5
+ * @property {number} [manufacturing_time] - The unit of time taken for manufacturing.
6
+ * @property {string} [manufacturing_time_unit] - The unit of time required for
7
+ * manufacturing is defined in hours or days.
8
+ * @property {boolean} [is_custom_order] - A boolean flag indicating whether MTO
9
+ * (Make to Order) is enabled or not.
8
10
  */
9
11
 
10
12
  /**
11
13
  * @typedef Meta
12
- * @property {string} [source]
14
+ * @property {string} [source] - The source or origin of the media file, which
15
+ * could be a URL or a reference to where the media was obtained.
13
16
  */
14
17
 
15
18
  /**
16
19
  * @typedef Media
17
- * @property {string} [url]
18
- * @property {string} [type]
20
+ * @property {string} [url] - Absolute url for Media.
21
+ * @property {string} [type] - The type of media, such as image, video.
19
22
  * @property {Meta} [meta]
20
- * @property {string} [alt]
23
+ * @property {string} [alt] - Alternative text for the media, used for
24
+ * accessibility and SEO purposes.
21
25
  */
22
26
 
23
27
  /**
24
28
  * @typedef ProductListingActionPage
25
- * @property {string} [type]
26
- * @property {Object} [query]
27
- * @property {Object} [params]
29
+ * @property {string} [type] - The type of action such as product, products,
30
+ * category, brand.
31
+ * @property {Object} [query] - Query parameter if any to be added to the action.
32
+ * @property {Object} [params] - Parameters that should be considered in path.
28
33
  */
29
34
 
30
35
  /**
31
36
  * @typedef ProductListingAction
32
- * @property {string} [type]
37
+ * @property {string} [type] - Type of action to be taken e.g, page.
33
38
  * @property {ProductListingActionPage} [page]
34
39
  */
35
40
 
36
41
  /**
37
42
  * @typedef ProductBrand
38
- * @property {number} [uid]
43
+ * @property {number} [uid] - Unique identifier for the product brand.
39
44
  * @property {Media} [logo]
40
- * @property {string} [description]
41
- * @property {string} [name]
45
+ * @property {string} [description] - Description of the product brand.
46
+ * @property {string} [name] - Name of the product brand.
42
47
  * @property {ProductListingAction} [action]
43
48
  */
44
49
 
45
50
  /**
46
51
  * @typedef ProductDepartment
47
- * @property {number} [uid]
52
+ * @property {number} [uid] - Unique identifier for the product department.
48
53
  * @property {Media} [logo]
49
- * @property {string} [slug]
50
- * @property {string} [name]
54
+ * @property {string} [slug] - URL-friendly identifier for the product department.
55
+ * @property {string} [name] - Name of the product department.
51
56
  */
52
57
 
53
58
  /**
@@ -72,21 +77,22 @@ const Joi = require("joi");
72
77
 
73
78
  /**
74
79
  * @typedef ApplicationItemSEO
75
- * @property {Object} [title] - The SEO title of the item
76
- * @property {Object} [description] - The SEO description of the item
80
+ * @property {Object} [title] - The SEO title of the item.
81
+ * @property {Object} [description] - The SEO description of the item.
77
82
  */
78
83
 
79
84
  /**
80
85
  * @typedef ProductDetailAttribute
81
- * @property {string} [value]
82
- * @property {string} [type]
83
- * @property {string} [key]
86
+ * @property {string} [value] - The value of the product attribute.
87
+ * @property {string} [type] - The type or category of the product attribute.
88
+ * @property {string} [key] - The key or name of the product attribute.
84
89
  */
85
90
 
86
91
  /**
87
92
  * @typedef ProductDetailGroupedAttribute
88
- * @property {string} [title]
89
- * @property {ProductDetailAttribute[]} [details]
93
+ * @property {string} [title] - The title or name of the attribute group.
94
+ * @property {ProductDetailAttribute[]} [details] - A list of product attributes
95
+ * within this group.
90
96
  */
91
97
 
92
98
  /**
@@ -122,64 +128,77 @@ const Joi = require("joi");
122
128
 
123
129
  /**
124
130
  * @typedef ProductDetail
125
- * @property {number} [uid]
131
+ * @property {number} [uid] - Unique identifier for the product.
126
132
  * @property {ProductDetailCustomOrder} [custom_order]
127
133
  * @property {ProductCategoryMap} [category_map]
128
134
  * @property {NetQuantity} [net_quantity]
129
- * @property {number} [rating_count]
130
- * @property {CustomMetaFields[]} [_custom_meta]
131
- * @property {string[]} [similars]
132
- * @property {string[]} [tags]
135
+ * @property {number} [rating_count] - Count of ratings the product has received.
136
+ * @property {CustomMetaFields[]} [_custom_meta] - Custom metadata fields
137
+ * associated with the product.
138
+ * @property {string[]} [similars] - List of products marked similar to given product.
139
+ * @property {string[]} [tags] - Tags associated with the product for better
140
+ * categorization.
133
141
  * @property {ApplicationItemSEO} [seo]
134
- * @property {string} [image_nature]
135
- * @property {boolean} [has_variant]
136
- * @property {string} [item_type]
137
- * @property {string} [description]
138
- * @property {ProductDetailGroupedAttribute[]} [grouped_attributes]
139
- * @property {Media[]} [medias]
140
- * @property {string} [color]
141
- * @property {string} [type]
142
- * @property {string} [product_online_date]
143
- * @property {Object} [_custom_json]
144
- * @property {string} [item_code]
145
- * @property {string} [name]
142
+ * @property {string} [image_nature] - Type of the images associated with the
143
+ * product such as standard.
144
+ * @property {boolean} [has_variant] - Indicates whether the product has variants.
145
+ * @property {string} [item_type] - This field describes the type of item,
146
+ * indicating the category or nature of the product. Possible values are
147
+ * Standard, Composite, Wet, Digital.
148
+ * @property {string} [description] - Detailed description of the product.
149
+ * @property {ProductDetailGroupedAttribute[]} [grouped_attributes] - Grouped
150
+ * attributes detailing various characteristics of the product.
151
+ * @property {Media[]} [medias] - Media files associated with the product.
152
+ * @property {string} [color] - Color of the product, if applicable.
153
+ * @property {string} [type] - Product type or classification.
154
+ * @property {string} [product_online_date] - Date and time when the product was
155
+ * made available online.
156
+ * @property {Object} [_custom_json] - Custom JSON object for additional product data.
157
+ * @property {string} [item_code] - Item Code defined for the product.
158
+ * @property {string} [name] - Name of the product.
146
159
  * @property {ApplicationItemMOQ} [moq]
147
- * @property {string} [short_description]
148
- * @property {ProductBrand[]} [categories]
149
- * @property {Object} [attributes]
150
- * @property {string} [discount]
151
- * @property {string[]} [tryouts]
152
- * @property {string} slug
160
+ * @property {string} [short_description] - Brief description of the product.
161
+ * @property {ProductBrand[]} [categories] - List of product categories
162
+ * associated with the product.
163
+ * @property {Object} [attributes] - Additional attributes or characteristics of
164
+ * the product.
165
+ * @property {string} [discount] - Discount applied to the product, if any.
166
+ * @property {string[]} [tryouts] - Identifiers or names of tryout versions of
167
+ * the product.
168
+ * @property {string} slug - URL-friendly identifier for the product.
153
169
  * @property {ProductListingAction} [action]
154
- * @property {number} [rating]
155
- * @property {boolean} [is_dependent]
156
- * @property {string[]} [product_group_tag]
157
- * @property {string[]} [highlights]
170
+ * @property {number} [rating] - The rating of the product.
171
+ * @property {boolean} [is_dependent] - Indicates whether the product can be
172
+ * sold as an individual product.
173
+ * @property {string[]} [product_group_tag] - List of bundle/product grouping
174
+ * slugs mapped to the product.
175
+ * @property {string[]} [highlights] - Key highlights or features of the product.
158
176
  * @property {ProductListingPrice} [price]
159
177
  * @property {ProductBrand} [brand]
160
178
  * @property {ProductDepartment} [department]
161
- * @property {string} [teaser_tag]
179
+ * @property {string} [teaser_tag] - Teaser tag or short promotional phrase for
180
+ * the product.
162
181
  */
163
182
 
164
183
  /**
165
184
  * @typedef ErrorResponse
166
- * @property {string} [error]
185
+ * @property {string} [error] - A brief description of the error.
167
186
  */
168
187
 
169
188
  /**
170
189
  * @typedef Dimension
171
- * @property {string} unit - The unit of dimension
172
- * @property {number} height - The height of the product
173
- * @property {number} length - The length of the product
174
- * @property {number} width - The width of the product
175
- * @property {boolean} is_default - Whether the dimension is the default one or not
190
+ * @property {string} unit - The unit of dimension.
191
+ * @property {number} height - The height of the product.
192
+ * @property {number} length - The length of the product.
193
+ * @property {number} width - The width of the product.
194
+ * @property {boolean} is_default - Whether the dimension is the default one or not.
176
195
  */
177
196
 
178
197
  /**
179
198
  * @typedef Weight
180
- * @property {string} unit - The unit of weight
181
- * @property {number} shipping - The shipping weight of the product
182
- * @property {boolean} is_default - Whether the weight is the default one or not
199
+ * @property {string} unit - The unit of weight.
200
+ * @property {number} shipping - The shipping weight of the product.
201
+ * @property {boolean} is_default - Whether the weight is the default one or not.
183
202
  */
184
203
 
185
204
  /**
@@ -194,29 +213,32 @@ const Joi = require("joi");
194
213
 
195
214
  /**
196
215
  * @typedef ProductSize
197
- * @property {number} [quantity]
216
+ * @property {number} [quantity] - The quantity of the product size available.
198
217
  * @property {Dimension} [dimension]
199
218
  * @property {Weight} [weight]
200
- * @property {boolean} [is_available]
201
- * @property {string[]} [seller_identifiers]
202
- * @property {string} [value]
203
- * @property {string} [display]
219
+ * @property {boolean} [is_available] - Indicates whether the product size is
220
+ * available for purchase.
221
+ * @property {string[]} [seller_identifiers] - List of identifiers used by
222
+ * sellers for the product size.
223
+ * @property {string} [value] - The value or label representing the product size.
224
+ * @property {string} [display] - Display name of the product size.
204
225
  */
205
226
 
206
227
  /**
207
228
  * @typedef SizeChartValues
208
- * @property {string} [col_3]
209
- * @property {string} [col_6]
210
- * @property {string} [col_2]
211
- * @property {string} [col_4]
212
- * @property {string} [col_1]
213
- * @property {string} [col_5]
229
+ * @property {string} [col_3] - Value for column 3.
230
+ * @property {string} [col_6] - Value for column 6.
231
+ * @property {string} [col_2] - Value for column 2.
232
+ * @property {string} [col_4] - Value for column 4.
233
+ * @property {string} [col_1] - Value for column 1.
234
+ * @property {string} [col_5] - Value for column 5.
214
235
  */
215
236
 
216
237
  /**
217
238
  * @typedef ColumnHeader
218
- * @property {boolean} [convertable]
219
- * @property {string} [value]
239
+ * @property {boolean} [convertable] - Indicates if the column value can be
240
+ * converted or transformed.
241
+ * @property {string} [value] - The value or title of the column header.
220
242
  */
221
243
 
222
244
  /**
@@ -231,59 +253,62 @@ const Joi = require("joi");
231
253
 
232
254
  /**
233
255
  * @typedef SizeChart
234
- * @property {string} [unit]
235
- * @property {string} [image]
236
- * @property {string} [size_tip]
237
- * @property {SizeChartValues[]} [sizes]
238
- * @property {string} [description]
239
- * @property {string} [title]
256
+ * @property {string} [unit] - Unit of measurement used in the size chart (e.g., in, cm).
257
+ * @property {string} [image] - URL of the image representing the size chart.
258
+ * @property {string} [size_tip] - Additional tip or guideline related to sizing.
259
+ * @property {SizeChartValues[]} [sizes] - Array of size chart values for different sizes.
260
+ * @property {string} [description] - Description related to the size chart.
261
+ * @property {string} [title] - Title or name of the size chart.
240
262
  * @property {ColumnHeaders} [headers]
241
263
  */
242
264
 
243
265
  /**
244
266
  * @typedef ProductSizeStores
245
- * @property {number} [count]
267
+ * @property {number} [count] - Number of stores where the product size is available.
246
268
  */
247
269
 
248
270
  /**
249
271
  * @typedef ProductSizes
250
- * @property {ProductSize[]} [sizes]
272
+ * @property {ProductSize[]} [sizes] - List of available sizes for the product.
251
273
  * @property {ProductSizesPrice} [price]
252
274
  * @property {ProductSizesPrice} [price_per_piece]
253
275
  * @property {SizeChart} [size_chart]
254
- * @property {boolean} [sellable]
255
- * @property {boolean} [multi_size]
256
- * @property {string} [discount]
276
+ * @property {boolean} [sellable] - Whether the product sizes are available for sale.
277
+ * @property {boolean} [multi_size] - Whether the product supports multiple sizes.
278
+ * @property {string} [discount] - Discount information applicable to the product sizes.
257
279
  * @property {ProductSizeStores} [stores]
258
280
  * @property {DiscountMeta} [discount_meta]
259
281
  */
260
282
 
261
283
  /**
262
284
  * @typedef AttributeDetail
263
- * @property {string} [logo]
264
- * @property {string} [description]
265
- * @property {string} [display]
266
- * @property {string} [key]
285
+ * @property {string} [logo] - URL or path to the logo associated with the attribute.
286
+ * @property {string} [description] - A description of the attribute.
287
+ * @property {string} [display] - Display name or label for the attribute.
288
+ * @property {string} [key] - Unique key or identifier for the attribute.
267
289
  */
268
290
 
269
291
  /**
270
292
  * @typedef AttributeMetadata
271
- * @property {string} [title]
272
- * @property {AttributeDetail[]} [details]
293
+ * @property {string} [title] - Title or name of the attribute metadata.
294
+ * @property {AttributeDetail[]} [details] - List of detailed information about
295
+ * attributes.
273
296
  */
274
297
 
275
298
  /**
276
299
  * @typedef ProductsComparisonResponse
277
- * @property {ProductDetail[]} [items]
278
- * @property {AttributeMetadata[]} [attributes_metadata]
300
+ * @property {ProductDetail[]} [items] - List of product details for comparison.
301
+ * @property {AttributeMetadata[]} [attributes_metadata] - Metadata about
302
+ * attributes used for comparing products.
279
303
  */
280
304
 
281
305
  /**
282
306
  * @typedef ProductCompareResponse
283
- * @property {string} [title]
284
- * @property {ProductDetail[]} [items]
285
- * @property {AttributeMetadata[]} [attributes_metadata]
286
- * @property {string} [subtitle]
307
+ * @property {string} [title] - Title or name of the comparison.
308
+ * @property {ProductDetail[]} [items] - List of product details for comparison.
309
+ * @property {AttributeMetadata[]} [attributes_metadata] - Metadata about
310
+ * attributes used for comparing products.
311
+ * @property {string} [subtitle] - Subtitle or additional description for the comparison.
287
312
  */
288
313
 
289
314
  /**
@@ -293,195 +318,226 @@ const Joi = require("joi");
293
318
 
294
319
  /**
295
320
  * @typedef ProductVariantItemResponse
296
- * @property {number} [uid]
297
- * @property {string} [color_name]
298
- * @property {string} [color]
299
- * @property {Media[]} [medias]
300
- * @property {boolean} [is_available]
301
- * @property {CustomMetaFields[]} [_custom_meta]
302
- * @property {string} [name]
303
- * @property {string} [value]
304
- * @property {string} [slug]
305
- * @property {Object} [_custom_json]
321
+ * @property {number} [uid] - Unique identifier for the product variant.
322
+ * @property {string} [color_name] - Name of the color for the variant.
323
+ * @property {string} [color] - Color code or representation for the variant.
324
+ * @property {Media[]} [medias] - Media files associated with the product variant.
325
+ * @property {boolean} [is_available] - Indicates whether the product variant is
326
+ * available for purchase.
327
+ * @property {CustomMetaFields[]} [_custom_meta] - Custom metadata fields
328
+ * associated with the product.
329
+ * @property {string} [name] - Name of the product variant.
330
+ * @property {string} [value] - Value or label representing the product variant.
331
+ * @property {string} [slug] - URL-friendly identifier for the product.
332
+ * @property {Object} [_custom_json] - Custom JSON object for additional data
333
+ * related to the product.
306
334
  * @property {ProductListingAction} [action]
307
335
  */
308
336
 
309
337
  /**
310
338
  * @typedef ProductVariantResponse
311
- * @property {string} [display_type]
312
- * @property {string} [header]
313
- * @property {string} [group_id]
314
- * @property {ProductVariantItemResponse[]} [items]
315
- * @property {string} [key]
316
- * @property {string} [logo]
339
+ * @property {string} [display_type] - The type of display for the product
340
+ * variant (e.g., image, text, image, color).
341
+ * @property {string} [header] - Header or title for the product variant section.
342
+ * @property {string} [group_id] - Group ID used to group variants.
343
+ * @property {ProductVariantItemResponse[]} [items] - List of product variant items.
344
+ * @property {string} [key] - Attribute identifier of the variant.
345
+ * @property {string} [logo] - URL or path to the logo associated with the
346
+ * product variant.
317
347
  */
318
348
 
319
349
  /**
320
350
  * @typedef ProductVariantsResponse
321
- * @property {ProductVariantResponse[]} [variants]
351
+ * @property {ProductVariantResponse[]} [variants] - A list of product variant
352
+ * responses, each detailing a specific variant.
322
353
  */
323
354
 
324
355
  /**
325
356
  * @typedef StoreDetail
326
- * @property {string} [name]
327
- * @property {string} [city]
328
- * @property {number} [id]
329
- * @property {string} [code]
357
+ * @property {string} [name] - NA.
358
+ * @property {string} [city] - NA.
359
+ * @property {number} [id] - NA.
360
+ * @property {string} [code] - NA.
330
361
  */
331
362
 
332
363
  /**
333
364
  * @typedef ProductStockPrice
334
- * @property {number} [effective]
335
- * @property {string} [currency]
336
- * @property {number} [marked]
365
+ * @property {number} [effective] - NA.
366
+ * @property {string} [currency] - NA.
367
+ * @property {number} [marked] - NA.
337
368
  */
338
369
 
339
370
  /**
340
371
  * @typedef CompanyDetail
341
- * @property {string} [name]
342
- * @property {number} [id]
372
+ * @property {string} [name] - NA.
373
+ * @property {number} [id] - NA.
343
374
  */
344
375
 
345
376
  /**
346
377
  * @typedef Seller
347
- * @property {number} [uid]
348
- * @property {string} [name]
349
- * @property {number} [count]
378
+ * @property {number} [uid] - NA.
379
+ * @property {string} [name] - NA.
380
+ * @property {number} [count] - NA.
350
381
  */
351
382
 
352
383
  /**
353
384
  * @typedef ProductStockStatusItem
354
- * @property {string} [uid]
355
- * @property {number} [quantity]
385
+ * @property {string} [uid] - NA.
386
+ * @property {number} [quantity] - NA.
356
387
  * @property {StoreDetail} [store]
357
- * @property {string} [size]
388
+ * @property {string} [size] - NA.
358
389
  * @property {ProductStockPrice} [price]
359
390
  * @property {CompanyDetail} [company]
360
- * @property {number} [item_id]
391
+ * @property {number} [item_id] - NA.
361
392
  * @property {Seller} [seller]
362
- * @property {Object} [identifier]
393
+ * @property {Object} [identifier] - NA.
363
394
  */
364
395
 
365
396
  /**
366
397
  * @typedef ProductStockStatusResponse
367
- * @property {ProductStockStatusItem[]} [items]
398
+ * @property {ProductStockStatusItem[]} [items] - NA.
368
399
  */
369
400
 
370
401
  /**
371
402
  * @typedef Page
372
- * @property {number} [item_total]
373
- * @property {string} [next_id]
374
- * @property {boolean} [has_previous]
375
- * @property {boolean} [has_next]
376
- * @property {number} [current]
377
- * @property {string} type
378
- * @property {number} [size]
403
+ * @property {number} [item_total] - The total number of items on the page.
404
+ * @property {string} [next_id] - The identifier for the next page.
405
+ * @property {boolean} [has_previous] - Indicates whether there is a previous page.
406
+ * @property {boolean} [has_next] - Indicates whether there is a next page.
407
+ * @property {number} [current] - The current page number.
408
+ * @property {string} type - The type of the page, such as 'PageType'.
409
+ * @property {number} [size] - The number of items per page.
379
410
  */
380
411
 
381
412
  /**
382
413
  * @typedef ProductStockPolling
383
- * @property {ProductStockStatusItem[]} [items]
414
+ * @property {ProductStockStatusItem[]} [items] - NA.
384
415
  * @property {Page} page
385
416
  */
386
417
 
387
418
  /**
388
419
  * @typedef ProductVariantListingResponse
389
- * @property {string} [header]
390
- * @property {ProductVariantItemResponse[]} [items]
391
- * @property {number} [total]
392
- * @property {string} [key]
393
- * @property {string} [display_type]
420
+ * @property {string} [header] - Header or title for the product variant section.
421
+ * @property {ProductVariantItemResponse[]} [items] - List of Upto 5 product
422
+ * variant items.
423
+ * @property {number} [total] - The total number of product variants available.
424
+ * @property {string} [key] - Attribute identifier of the variant.
425
+ * @property {string} [display_type] - The type of display for the product
426
+ * variant (e.g., image, text, image, color).
394
427
  */
395
428
 
396
429
  /**
397
430
  * @typedef ProductListingDetail
398
- * @property {number} [uid]
431
+ * @property {number} [uid] - Unique identifier for the product.
399
432
  * @property {ProductDetailCustomOrder} [custom_order]
400
- * @property {string[]} [sizes]
433
+ * @property {string[]} [sizes] - Available sizes for the product.
401
434
  * @property {ProductCategoryMap} [category_map]
402
435
  * @property {NetQuantity} [net_quantity]
403
- * @property {number} [rating_count]
404
- * @property {CustomMetaFields[]} [_custom_meta]
405
- * @property {string[]} [similars]
406
- * @property {string[]} [tags]
436
+ * @property {number} [rating_count] - The number of ratings the product has received.
437
+ * @property {CustomMetaFields[]} [_custom_meta] - Custom metadata fields
438
+ * associated with the product.
439
+ * @property {string[]} [similars] - List of products marked similar to given product.
440
+ * @property {string[]} [tags] - Tags associated with the product for better
441
+ * categorization.
407
442
  * @property {ApplicationItemSEO} [seo]
408
- * @property {string} [image_nature]
409
- * @property {boolean} [has_variant]
410
- * @property {string} [item_type]
411
- * @property {string} [description]
412
- * @property {ProductDetailGroupedAttribute[]} [grouped_attributes]
413
- * @property {Media[]} [medias]
414
- * @property {string} [color]
415
- * @property {string} [type]
416
- * @property {string} [product_online_date]
417
- * @property {Object} [_custom_json]
418
- * @property {string} [item_code]
419
- * @property {string} [name]
443
+ * @property {string} [image_nature] - Type of the images associated with the
444
+ * product such as standard.
445
+ * @property {boolean} [has_variant] - Indicates whether the product has variants.
446
+ * @property {string} [item_type] - This field describes the type of item,
447
+ * indicating the category or nature of the product. Possible values are
448
+ * Standard, Composite, Wet, Digital.
449
+ * @property {string} [description] - Detailed description of the product.
450
+ * @property {ProductDetailGroupedAttribute[]} [grouped_attributes] - Grouped
451
+ * attributes detailing various characteristics of the product.
452
+ * @property {Media[]} [medias] - Media files associated with the product.
453
+ * @property {string} [color] - Color of the product, if applicable.
454
+ * @property {string} [type] - Product type or classification.
455
+ * @property {string} [product_online_date] - Date and time when the product was
456
+ * made available online.
457
+ * @property {Object} [_custom_json] - Custom JSON object for additional product data.
458
+ * @property {string} [item_code] - Item Code defined for the product.
459
+ * @property {string} [name] - Name of the product.
420
460
  * @property {ApplicationItemMOQ} [moq]
421
- * @property {string} [short_description]
422
- * @property {ProductBrand[]} [categories]
423
- * @property {boolean} [sellable]
424
- * @property {Object} [attributes]
425
- * @property {ProductVariantListingResponse[]} [variants]
426
- * @property {string} [discount]
427
- * @property {string[]} [tryouts]
428
- * @property {string[]} [identifiers]
429
- * @property {string} slug
461
+ * @property {string} [short_description] - Brief description of the product.
462
+ * @property {ProductBrand[]} [categories] - List of product categories
463
+ * associated with the product.
464
+ * @property {boolean} [sellable] - Indicates whether the product is available for sale.
465
+ * @property {Object} [attributes] - Additional attributes or characteristics of
466
+ * the product.
467
+ * @property {ProductVariantListingResponse[]} [variants] - List of product
468
+ * variants available for the product.
469
+ * @property {string} [discount] - Discount details or percentage applied to the product.
470
+ * @property {string[]} [tryouts] - List of tryout options available for the product.
471
+ * @property {string[]} [identifiers] - List of seller identifiers for the product.
472
+ * @property {string} slug - URL-friendly identifier for the product.
430
473
  * @property {ProductListingAction} [action]
431
- * @property {number} [rating]
432
- * @property {boolean} [is_dependent]
433
- * @property {string[]} [product_group_tag]
434
- * @property {string[]} [highlights]
474
+ * @property {number} [rating] - Rating of the product.
475
+ * @property {boolean} [is_dependent] - Indicates whether the product can be
476
+ * sold as an individual product.
477
+ * @property {string[]} [product_group_tag] - List of bundle/product grouping
478
+ * slugs mapped to the product.
479
+ * @property {string[]} [highlights] - Key highlights or features of the product.
435
480
  * @property {ProductListingPrice} [price]
436
481
  * @property {ProductBrand} [brand]
437
- * @property {string} [teaser_tag]
482
+ * @property {string} [teaser_tag] - Teaser tag or short promotional phrase for
483
+ * the product.
438
484
  */
439
485
 
440
486
  /**
441
487
  * @typedef ProductFiltersValue
442
- * @property {number} [min]
443
- * @property {string} [display_format]
444
- * @property {number} [selected_max]
445
- * @property {string} [value]
446
- * @property {string} [query_format]
447
- * @property {string} [currency_symbol]
448
- * @property {number} [selected_min]
449
- * @property {string} [currency_code]
450
- * @property {boolean} is_selected
451
- * @property {string} display
452
- * @property {number} [count]
453
- * @property {number} [max]
488
+ * @property {number} [min] - Minimum value for the range filter.
489
+ * @property {string} [display_format] - Format in which the filter value is displayed.
490
+ * @property {number} [selected_max] - The maximum value selected by the user
491
+ * for range filter.
492
+ * @property {string} [value] - Value associated with the filter option.
493
+ * @property {string} [query_format] - Format used for the filter value in queries.
494
+ * @property {string} [currency_symbol] - Currency symbol for the price type filters.
495
+ * @property {number} [selected_min] - The minimum value selected by the user
496
+ * for range filter.
497
+ * @property {string} [currency_code] - Currency code for the currency used for
498
+ * price type filters.
499
+ * @property {boolean} is_selected - Whether this filter value is currently selected.
500
+ * @property {string} display - Display name or label for the filter value.
501
+ * @property {number} [count] - Number of products that match this filter value.
502
+ * @property {number} [max] - Maximum value of the filter range.
454
503
  */
455
504
 
456
505
  /**
457
506
  * @typedef ProductFiltersKey
458
- * @property {string} [logo]
459
- * @property {string} name
460
- * @property {string} [kind]
461
- * @property {string} display
507
+ * @property {string} [logo] - URL or path to the logo associated with the filter key.
508
+ * @property {string} name - Name or identifier of the filter key.
509
+ * @property {string} [kind] - Type or category of the filter key (e.g., range,
510
+ * multivalued).
511
+ * @property {string} display - Display name or label for the filter key.
462
512
  */
463
513
 
464
514
  /**
465
515
  * @typedef ProductFilters
466
- * @property {ProductFiltersValue[]} values
516
+ * @property {ProductFiltersValue[]} values - List of filter values associated
517
+ * with the filter key.
467
518
  * @property {ProductFiltersKey} key
468
519
  */
469
520
 
470
521
  /**
471
522
  * @typedef ProductSortOn
472
- * @property {string} [logo]
473
- * @property {boolean} [is_selected]
474
- * @property {string} [name]
475
- * @property {string} [value]
476
- * @property {string} [display]
523
+ * @property {string} [logo] - URL or path to the logo associated with the sorting option.
524
+ * @property {boolean} [is_selected] - Indicates whether this sorting option is
525
+ * currently selected.
526
+ * @property {string} [name] - Name or identifier of the sorting option.
527
+ * @property {string} [value] - Value used to specify the sorting order (e.g.,
528
+ * price_asc, discount_dsc).
529
+ * @property {string} [display] - Display name or label for the sorting option.
477
530
  */
478
531
 
479
532
  /**
480
533
  * @typedef ProductListingResponse
481
- * @property {ProductListingDetail[]} [items]
482
- * @property {ProductFilters[]} [filters]
534
+ * @property {ProductListingDetail[]} [items] - List of product details included
535
+ * in the response.
536
+ * @property {ProductFilters[]} [filters] - List of filters available for
537
+ * refining the product listings.
483
538
  * @property {Page} page
484
- * @property {ProductSortOn[]} [sort_on]
539
+ * @property {ProductSortOn[]} [sort_on] - List of sorting options available for
540
+ * the product listings.
485
541
  */
486
542
 
487
543
  /**
@@ -492,31 +548,37 @@ const Joi = require("joi");
492
548
 
493
549
  /**
494
550
  * @typedef BrandItem
495
- * @property {number} [uid]
551
+ * @property {number} [uid] - The unique identifier for the brand.
496
552
  * @property {Media} [logo]
497
- * @property {string} [description]
553
+ * @property {string} [description] - Detailed description of the brand,
554
+ * including its history, values, product offerings, and other relevant information.
498
555
  * @property {ImageUrls} [banners]
499
- * @property {string[]} [departments]
500
- * @property {string} [discount]
501
- * @property {string} [name]
502
- * @property {string} [slug]
556
+ * @property {string[]} [departments] - Lists the departments or categories
557
+ * under which the brand's products are listed.
558
+ * @property {string} [discount] - Details about any discounts currently
559
+ * available on the brand's products.
560
+ * @property {string} [name] - Name of the brand.
561
+ * @property {string} [slug] - URL-friendly version of the brand's name, used in
562
+ * the web address to access the brand's page on the platform.
503
563
  * @property {ProductListingAction} [action]
504
564
  */
505
565
 
506
566
  /**
507
567
  * @typedef BrandListingResponse
508
- * @property {BrandItem[]} [items]
568
+ * @property {BrandItem[]} [items] - List of brand items included in the response.
509
569
  * @property {Page} page
510
570
  */
511
571
 
512
572
  /**
513
573
  * @typedef BrandDetailResponse
514
574
  * @property {Media} [logo]
515
- * @property {number} [uid]
516
- * @property {string} [description]
575
+ * @property {number} [uid] - The unique identifier for the brand.
576
+ * @property {string} [description] - Detailed description of the brand,
577
+ * including its history, values, product offerings, and other relevant information.
517
578
  * @property {ImageUrls} [banners]
518
- * @property {Object} [_custom_json]
519
- * @property {string} [name]
579
+ * @property {Object} [_custom_json] - Custom JSON data related to the brand,
580
+ * allowing for additional metadata.
581
+ * @property {string} [name] - Name of the brand.
520
582
  */
521
583
 
522
584
  /**
@@ -527,215 +589,263 @@ const Joi = require("joi");
527
589
 
528
590
  /**
529
591
  * @typedef ThirdLevelChild
530
- * @property {number} [uid]
592
+ * @property {number} [uid] - Unique identifier for the L3 category.
531
593
  * @property {ImageUrls} [banners]
532
- * @property {Object[]} [childs]
533
- * @property {Object} [_custom_json]
534
- * @property {string} [name]
535
- * @property {string} [slug]
594
+ * @property {Object[]} [childs] - List of categories under the L3 category.
595
+ * @property {Object} [_custom_json] - Custom JSON data related to the L3
596
+ * category, allowing for additional metadata.
597
+ * @property {string} [name] - Name of the L3 category.
598
+ * @property {string} [slug] - Slug or URL-friendly identifier for the L3 category.
536
599
  * @property {ProductListingAction} [action]
537
600
  */
538
601
 
539
602
  /**
540
603
  * @typedef SecondLevelChild
541
- * @property {number} [uid]
604
+ * @property {number} [uid] - Unique identifier for the L2 category.
542
605
  * @property {ImageUrls} [banners]
543
- * @property {ThirdLevelChild[]} [childs]
544
- * @property {Object} [_custom_json]
545
- * @property {string} [name]
546
- * @property {string} [slug]
606
+ * @property {ThirdLevelChild[]} [childs] - List of categories under the L2 category.
607
+ * @property {Object} [_custom_json] - Custom JSON data related to the L2
608
+ * category, allowing for additional metadata.
609
+ * @property {string} [name] - Name of the L2 category.
610
+ * @property {string} [slug] - Slug or URL-friendly identifier for the L2 category.
547
611
  * @property {ProductListingAction} [action]
548
612
  */
549
613
 
550
614
  /**
551
615
  * @typedef Child
552
- * @property {number} [uid]
616
+ * @property {number} [uid] - Unique identifier for the L1 category.
553
617
  * @property {ImageUrls} [banners]
554
- * @property {SecondLevelChild[]} [childs]
555
- * @property {Object} [_custom_json]
556
- * @property {string} [name]
557
- * @property {string} [slug]
618
+ * @property {SecondLevelChild[]} [childs] - List of categories under the L1 category.
619
+ * @property {Object} [_custom_json] - Custom JSON data related to the L1
620
+ * category, allowing for additional metadata.
621
+ * @property {string} [name] - Name of the L1 category.
622
+ * @property {string} [slug] - Slug or URL-friendly identifier for the L1 category.
558
623
  * @property {ProductListingAction} [action]
559
624
  */
560
625
 
561
626
  /**
562
627
  * @typedef CategoryItems
563
- * @property {number} uid
628
+ * @property {number} uid - Unique identifier for the category.
564
629
  * @property {CategoryBanner} banners
565
- * @property {Child[]} [childs]
566
- * @property {string} name
567
- * @property {string} slug
630
+ * @property {Child[]} [childs] - List of L1 categories under the main category.
631
+ * @property {string} name - Name of the category.
632
+ * @property {string} slug - Slug or URL-friendly identifier for the category.
568
633
  * @property {ProductListingAction} action
569
634
  */
570
635
 
571
636
  /**
572
637
  * @typedef DepartmentCategoryTree
573
- * @property {CategoryItems[]} [items]
574
- * @property {string} department
638
+ * @property {CategoryItems[]} [items] - List of categories within the department.
639
+ * @property {string} department - Name of the department.
575
640
  */
576
641
 
577
642
  /**
578
643
  * @typedef DepartmentIdentifier
579
- * @property {number} [uid]
580
- * @property {string} [slug]
644
+ * @property {number} [uid] - Unique identifier for the department.
645
+ * @property {string} [slug] - Slug or URL-friendly identifier for the department.
581
646
  */
582
647
 
583
648
  /**
584
649
  * @typedef CategoryListingResponse
585
- * @property {DepartmentCategoryTree[]} [data]
586
- * @property {DepartmentIdentifier[]} [departments]
650
+ * @property {DepartmentCategoryTree[]} [data] - List of department category trees.
651
+ * @property {DepartmentIdentifier[]} [departments] - List of departments.
587
652
  */
588
653
 
589
654
  /**
590
655
  * @typedef CategoryMetaResponse
591
656
  * @property {Media} [logo]
592
- * @property {number} [uid]
657
+ * @property {number} [uid] - Unique identifier for the category.
593
658
  * @property {ImageUrls} [banners]
594
- * @property {Object} [_custom_json]
595
- * @property {string} [name]
659
+ * @property {Object} [_custom_json] - Custom JSON data related to the category,
660
+ * allowing for additional metadata.
661
+ * @property {string} [name] - Name of the category.
596
662
  */
597
663
 
598
664
  /**
599
665
  * @typedef HomeListingResponse
600
- * @property {ProductListingDetail[]} [items]
666
+ * @property {ProductListingDetail[]} [items] - List of product details
667
+ * displayed on the home page.
601
668
  * @property {Page} page
602
- * @property {string} [message]
669
+ * @property {string} [message] - Message related to the home listing response.
603
670
  */
604
671
 
605
672
  /**
606
673
  * @typedef Department
607
- * @property {number} [uid]
674
+ * @property {number} [uid] - Unique identifier for the department.
608
675
  * @property {Media} [logo]
609
- * @property {number} [priority_order]
610
- * @property {string} [name]
611
- * @property {string} [slug]
676
+ * @property {number} [priority_order] - Specifies the display order of the
677
+ * department, determining its position in lists and navigation menus based on
678
+ * priority.
679
+ * @property {string} [name] - Name of the department.
680
+ * @property {string} [slug] - URL-friendly version of the department's name,
681
+ * used in the web address to access the department's page on the platform.
612
682
  */
613
683
 
614
684
  /**
615
685
  * @typedef DepartmentResponse
616
- * @property {Department[]} [items]
686
+ * @property {Department[]} [items] - List of department detail objects.
617
687
  */
618
688
 
619
689
  /**
620
690
  * @typedef AutocompleteItem
621
691
  * @property {Media} [logo]
622
- * @property {string} [display]
623
- * @property {string} [type]
624
- * @property {Object} [_custom_json]
692
+ * @property {string} [display] - Text or value displayed for the autocomplete item.
693
+ * @property {string} [type] - The type of action such as product, products,
694
+ * category, brand.
695
+ * @property {Object} [_custom_json] - Custom JSON data related to the
696
+ * autocomplete item, allowing for additional metadata.
625
697
  * @property {ProductListingAction} [action]
626
698
  */
627
699
 
628
700
  /**
629
701
  * @typedef AutoCompleteResponse
630
- * @property {AutocompleteItem[]} [items]
702
+ * @property {AutocompleteItem[]} [items] - List of autocomplete items suggested
703
+ * based on user input.
631
704
  */
632
705
 
633
706
  /**
634
707
  * @typedef CollectionQuery
635
- * @property {string} op
636
- * @property {Object[]} value
637
- * @property {string} attribute
708
+ * @property {string} op - The operator used for filtering the collection.
709
+ * @property {Object[]} value - The values used for filtering based on the attribute.
710
+ * @property {string} attribute - The attribute on which the filter is applied.
638
711
  */
639
712
 
640
713
  /**
641
714
  * @typedef GetCollectionDetailNest
642
- * @property {boolean} [is_active]
643
- * @property {string} [uid]
644
- * @property {string} [sort_on]
645
- * @property {Object} [meta]
715
+ * @property {boolean} [is_active] - Indicates whether the collection is currently active.
716
+ * @property {string} [uid] - The unique identifier for the collection.
717
+ * @property {string} [sort_on] - The attribute by which the collection items are sorted.
718
+ * @property {Object} [meta] - Additional metadata related to the collection.
646
719
  * @property {ImageUrls} [banners]
647
- * @property {Object} [cron]
648
- * @property {Object} [_schedule]
649
- * @property {CollectionQuery[]} [query]
650
- * @property {string} [description]
651
- * @property {string} [type]
652
- * @property {Object} [_custom_json]
653
- * @property {string} [name]
654
- * @property {boolean} [allow_sort]
655
- * @property {string[]} [visible_facets_keys]
656
- * @property {Object} [badge]
657
- * @property {string} [slug]
720
+ * @property {Object} [cron] - Cron details for scheduling related to the collection.
721
+ * @property {Object} [_schedule] - The `Schedule` schema defines the timing and
722
+ * details for recurring or one-time tasks. It includes information on when
723
+ * the job should start and end, the frequency of the task, and any additional
724
+ * metadata. This schema helps in scheduling jobs or tasks based on specified
725
+ * timings and durations.
726
+ * @property {CollectionQuery[]} [query] - A list of queries used to filter the
727
+ * collection.
728
+ * @property {string} [description] - A detailed description of the collection.
729
+ * @property {string} [type] - Type of collections e.g query, items.
730
+ * @property {Object} [_custom_json] - Custom JSON data associated with the collection.
731
+ * @property {string} [name] - The name of the collection.
732
+ * @property {boolean} [allow_sort] - Indicates if sorting is allowed for this collection.
733
+ * @property {string[]} [visible_facets_keys] - Keys of the facets visible for
734
+ * filtering within the collection.
735
+ * @property {Object} [badge] - Badge information associated with the collection.
736
+ * @property {string} [slug] - The URL-friendly identifier for the collection.
658
737
  * @property {ProductListingAction} [action]
659
- * @property {boolean} [allow_facets]
738
+ * @property {boolean} [allow_facets] - Indicates if facets are allowed for
739
+ * filtering within the collection.
660
740
  * @property {Media} [logo]
661
- * @property {number} [priority]
662
- * @property {string[]} [tags]
663
- * @property {string} [app_id]
741
+ * @property {number} [priority] - Priority level of the collection for sorting
742
+ * or display purposes.
743
+ * @property {string[]} [tags] - Tags associated with the collection.
744
+ * @property {string} [app_id] - Application ID associated with the collection.
664
745
  */
665
746
 
666
747
  /**
667
748
  * @typedef CollectionListingFilterTag
668
- * @property {string} [name]
669
- * @property {boolean} [is_selected]
670
- * @property {string} [display]
749
+ * @property {string} [name] - The name of the tag. This is typically used as a
750
+ * label for filtering purposes.
751
+ * @property {boolean} [is_selected] - A flag indicating whether the tag is
752
+ * currently selected as a filter option.
753
+ * @property {string} [display] - The display name of the tag. This may be a
754
+ * user-friendly version of the tag name shown in the UI.
671
755
  */
672
756
 
673
757
  /**
674
758
  * @typedef CollectionListingFilterType
675
- * @property {string} [name]
676
- * @property {boolean} [is_selected]
677
- * @property {string} [display]
759
+ * @property {string} [name] - The name of the filter type. This indicates the
760
+ * type of filtering being applied, such as items, query.
761
+ * @property {boolean} [is_selected] - A flag indicating whether this filter
762
+ * type is currently selected as a filter option.
763
+ * @property {string} [display] - The display name of the filter type. This is
764
+ * the user-friendly name shown in the UI for the filter type.
678
765
  */
679
766
 
680
767
  /**
681
768
  * @typedef CollectionListingFilter
682
- * @property {CollectionListingFilterTag[]} [tags]
683
- * @property {CollectionListingFilterType[]} [type]
769
+ * @property {CollectionListingFilterTag[]} [tags] - An array of tag filters
770
+ * available for the collection listings. Each tag allows for filtering based
771
+ * on specific attributes.
772
+ * @property {CollectionListingFilterType[]} [type] - An array of filter types
773
+ * available for the collection listings. Each type represents a different
774
+ * category or attribute for filtering.
684
775
  */
685
776
 
686
777
  /**
687
778
  * @typedef GetCollectionListingResponse
688
- * @property {GetCollectionDetailNest[]} [items]
779
+ * @property {GetCollectionDetailNest[]} [items] - An array of collection
780
+ * details. Each item in the array represents a collection with various
781
+ * attributes and configurations.
689
782
  * @property {CollectionListingFilter} [filters]
690
783
  * @property {Page} page
691
784
  */
692
785
 
693
786
  /**
694
787
  * @typedef CollectionDetailResponse
695
- * @property {boolean} [is_active]
696
- * @property {string} [sort_on]
697
- * @property {Object} [meta]
788
+ * @property {boolean} [is_active] - Indicates whether the collection is active.
789
+ * @property {string} [sort_on] - Criteria used to sort the items within the
790
+ * collection, such as price, popularity, or newest first.
791
+ * @property {Object} [meta] - Metadata associated with the collection.
698
792
  * @property {ImageUrls} [banners]
699
- * @property {Object} [cron]
700
- * @property {Object} [_schedule]
701
- * @property {CollectionQuery[]} [query]
702
- * @property {string} [description]
703
- * @property {string} [type]
704
- * @property {Object} [_custom_json]
705
- * @property {string} [name]
706
- * @property {boolean} [allow_sort]
707
- * @property {string[]} [visible_facets_keys]
708
- * @property {Object} [badge]
709
- * @property {string} [slug]
710
- * @property {boolean} [allow_facets]
793
+ * @property {Object} [cron] - Cron schedule details related to the collection,
794
+ * if applicable.
795
+ * @property {Object} [_schedule] - Schedule details for the collection,
796
+ * including timing and duration information.
797
+ * @property {CollectionQuery[]} [query] - Search or filter query used to
798
+ * dynamically generate the collection based on specific criteria or conditions.
799
+ * @property {string} [description] - Detailed description of the collection,.
800
+ * @property {string} [type] - Type of collection, specifying the nature or
801
+ * category of the collection.
802
+ * @property {Object} [_custom_json] - Custom JSON object containing additional
803
+ * properties specific to the collection.
804
+ * @property {string} [name] - The name of the collection.
805
+ * @property {boolean} [allow_sort] - Indicates if sorting is allowed for this collection.
806
+ * @property {string[]} [visible_facets_keys] - Keys of the facets visible for
807
+ * filtering within the collection.
808
+ * @property {Object} [badge] - Badge information associated with the collection.
809
+ * @property {string} [slug] - The URL-friendly identifier for the collection.
810
+ * @property {boolean} [allow_facets] - Indicates if facets are allowed for
811
+ * filtering within the collection.
711
812
  * @property {Media} [logo]
712
- * @property {number} [priority]
713
- * @property {string[]} [tag]
714
- * @property {string} [app_id]
813
+ * @property {number} [priority] - Priority level of the collection for sorting
814
+ * or display purposes.
815
+ * @property {string[]} [tag] - Tags associated with the collection.
816
+ * @property {string} [app_id] - Application ID associated with the collection.
715
817
  */
716
818
 
717
819
  /**
718
820
  * @typedef GetFollowListingResponse
719
- * @property {ProductListingDetail[]} items
821
+ * @property {ProductListingDetail[]} items - An array of product details that
822
+ * the user is following. Each item includes information such as the product
823
+ * name, price, and other attributes.
720
824
  * @property {Page} page
721
825
  */
722
826
 
723
827
  /**
724
828
  * @typedef FollowPostResponse
725
- * @property {string} message
726
- * @property {string} id
829
+ * @property {string} message - A message indicating the result of the follow or
830
+ * unfollow operation. This could be a confirmation message or an error message.
831
+ * @property {string} id - A unique identifier for the follow operation, which
832
+ * can be used to reference or track the follow status.
727
833
  */
728
834
 
729
835
  /**
730
836
  * @typedef FollowerCountResponse
731
- * @property {number} [count]
837
+ * @property {number} [count] - The number of followers for the item. This count
838
+ * indicates how many users are following the specified item.
732
839
  */
733
840
 
734
841
  /**
735
842
  * @typedef FollowIdsData
736
- * @property {number[]} [products]
737
- * @property {number[]} [collections]
738
- * @property {number[]} [brands]
843
+ * @property {number[]} [products] - An array of IDs representing the products
844
+ * that the user is following.
845
+ * @property {number[]} [collections] - An array of IDs representing the
846
+ * collections that the user is following.
847
+ * @property {number[]} [brands] - An array of IDs representing the brands that
848
+ * the user is following.
739
849
  */
740
850
 
741
851
  /**
@@ -745,119 +855,137 @@ const Joi = require("joi");
745
855
 
746
856
  /**
747
857
  * @typedef LatLong
748
- * @property {number[]} [coordinates]
749
- * @property {string} [type]
858
+ * @property {number[]} [coordinates] - An array containing the latitude and
859
+ * longitude values of the location.
860
+ * @property {string} [type] - The type of geographic coordinate system used.
861
+ * For example, "Point" indicates a single point in a geographic coordinate system.
750
862
  */
751
863
 
752
864
  /**
753
865
  * @typedef Store
754
- * @property {number} [uid]
755
- * @property {string} [store_email]
756
- * @property {string} [state]
757
- * @property {string} [country]
758
- * @property {number} [pincode]
759
- * @property {string} [city]
760
- * @property {string} [address]
761
- * @property {string} [store_code]
866
+ * @property {number} [uid] - A unique identifier for the store.
867
+ * @property {string} [store_email] - The manager's email address for the store.
868
+ * @property {string} [state] - The state or province where the store is located.
869
+ * @property {string} [country] - The country where the store is located.
870
+ * @property {number} [pincode] - The postal code or zip code for the store's location.
871
+ * @property {string} [city] - The city where the store is located.
872
+ * @property {string} [address] - The street address of the store.
873
+ * @property {string} [store_code] - A unique code or identifier for the store,
874
+ * often used for internal reference.
762
875
  * @property {LatLong} [lat_long]
763
- * @property {string} [name]
764
- * @property {string[]} [tags]
876
+ * @property {string} [name] - The name of the store.
877
+ * @property {string[]} [tags] - The list of tags mapped to the store.
765
878
  */
766
879
 
767
880
  /**
768
881
  * @typedef StoreListingResponse
769
- * @property {Store[]} items
882
+ * @property {Store[]} items - An array of store details. Each store includes
883
+ * information such as name, address, and geographic coordinates.
770
884
  * @property {Page} page
771
885
  */
772
886
 
773
887
  /**
774
888
  * @typedef StoreDepartments
775
- * @property {number} [uid]
776
- * @property {Object} [logo]
777
- * @property {number} [priority_order]
778
- * @property {string} [name]
779
- * @property {string} [slug]
889
+ * @property {number} [uid] - The unique identifier assigned to the store department.
890
+ * @property {Object} [logo] - An object containing information about the store
891
+ * department's logo, such as the URL or other related media details.
892
+ * @property {number} [priority_order] - The priority or ranking of the
893
+ * department within the store. This field is used to determine the order in
894
+ * which departments are displayed or processed.
895
+ * @property {string} [name] - The name of the store department, which is
896
+ * typically used for display and identification purposes.
897
+ * @property {string} [slug] - A URL-friendly identifier for the store
898
+ * department, often used in web addresses and routing to uniquely identify
899
+ * the department.
780
900
  */
781
901
 
782
902
  /**
783
903
  * @typedef CompanyStore
784
- * @property {number} [uid]
785
- * @property {string} [name]
786
- * @property {string} [company_type]
787
- * @property {string} [business_type]
904
+ * @property {number} [uid] - The unique identifier for the company store.
905
+ * @property {string} [name] - The name of the company store.
906
+ * @property {string} [company_type] - The type of company, which can be one of
907
+ * the following: - `distributor`: Distributor - `franchise`: Franchise -
908
+ * `mbo`: MBO (Managed Business Operations) - `manufacturer-owner`: Owner/Manufacturer.
909
+ * @property {string} [business_type] - The type of business structure, which
910
+ * can be one of the following: - `Private`: Private Limited Company -
911
+ * `LLP/Partnership`: Limited Liability Partnership or Partnership -
912
+ * `HUF/Proprietorship`: Hindu Undivided Family or Proprietorship.
788
913
  */
789
914
 
790
915
  /**
791
916
  * @typedef SellerPhoneNumber
792
- * @property {number} country_code
793
- * @property {string} number
917
+ * @property {number} country_code - The country code of the seller's phone number.
918
+ * @property {string} number - The seller's contact number.
794
919
  */
795
920
 
796
921
  /**
797
922
  * @typedef StoreManagerSerializer
798
- * @property {string} [name]
799
- * @property {string} [email]
923
+ * @property {string} [name] - The name of the store manager.
924
+ * @property {string} [email] - The email address of the store manager.
800
925
  * @property {SellerPhoneNumber} [mobile_no]
801
926
  */
802
927
 
803
928
  /**
804
929
  * @typedef StoreAddressSerializer
805
- * @property {number} [latitude]
806
- * @property {string} [state]
807
- * @property {string} [country]
808
- * @property {string} [landmark]
809
- * @property {string} [address1]
810
- * @property {number} [pincode]
811
- * @property {string} [city]
812
- * @property {number} [longitude]
813
- * @property {string} [address2]
930
+ * @property {number} [latitude] - The latitude of the store's location.
931
+ * @property {string} [state] - The state where the store is located.
932
+ * @property {string} [country] - The country where the store is located.
933
+ * @property {string} [landmark] - A landmark near the store.
934
+ * @property {string} [address1] - The address line 1 of the store.
935
+ * @property {number} [pincode] - The postal code for the store's location.
936
+ * @property {string} [city] - The city where the store is located.
937
+ * @property {number} [longitude] - The longitude of the store's location.
938
+ * @property {string} [address2] - The address line2 of the store.
814
939
  */
815
940
 
816
941
  /**
817
942
  * @typedef AppStore
818
- * @property {number} [uid]
819
- * @property {StoreDepartments[]} [departments]
943
+ * @property {number} [uid] - The unique identifier for the application store.
944
+ * @property {StoreDepartments[]} [departments] - A list of departments within the store.
820
945
  * @property {CompanyStore} [company]
821
946
  * @property {StoreManagerSerializer} [manager]
822
- * @property {string} [store_code]
947
+ * @property {string} [store_code] - A unique code for identifying the store.
823
948
  * @property {StoreAddressSerializer} [address]
824
- * @property {string} [name]
825
- * @property {SellerPhoneNumber[]} [contact_numbers]
949
+ * @property {string} [name] - The name of the store.
950
+ * @property {SellerPhoneNumber[]} [contact_numbers] - A list of contact numbers
951
+ * for the store.
826
952
  */
827
953
 
828
954
  /**
829
955
  * @typedef ApplicationStoreListing
830
- * @property {Object[]} [filters]
831
- * @property {AppStore[]} [items]
956
+ * @property {Object[]} [filters] - A list of filters applied to the store listing.
957
+ * @property {AppStore[]} [items] - A list of application stores.
832
958
  * @property {Page} [page]
833
959
  */
834
960
 
835
961
  /**
836
962
  * @typedef Time
837
- * @property {number} [hour]
838
- * @property {number} [minute]
963
+ * @property {number} [hour] - The hour part of the time.
964
+ * @property {number} [minute] - The minute part of the time.
839
965
  */
840
966
 
841
967
  /**
842
968
  * @typedef StoreTiming
843
- * @property {boolean} [open]
969
+ * @property {boolean} [open] - Indicates if the store is open on this day.
844
970
  * @property {Time} [closing]
845
- * @property {string} [weekday]
971
+ * @property {string} [weekday] - The day of the week.
846
972
  * @property {Time} [opening]
847
973
  */
848
974
 
849
975
  /**
850
976
  * @typedef StoreDetails
851
- * @property {number} [uid]
852
- * @property {StoreDepartments[]} [departments]
977
+ * @property {number} [uid] - The unique identifier for the store.
978
+ * @property {StoreDepartments[]} [departments] - A list of departments within the store.
853
979
  * @property {CompanyStore} [company]
854
980
  * @property {StoreManagerSerializer} [manager]
855
- * @property {string} [store_code]
856
- * @property {StoreTiming[]} [timing]
981
+ * @property {string} [store_code] - A unique code for identifying the store.
982
+ * @property {StoreTiming[]} [timing] - The opening and closing times for the
983
+ * store throughout the week.
857
984
  * @property {StoreAddressSerializer} [address]
858
- * @property {Object} [_custom_json]
859
- * @property {string} [name]
860
- * @property {SellerPhoneNumber[]} [contact_numbers]
985
+ * @property {Object} [_custom_json] - Custom JSON data for the store.
986
+ * @property {string} [name] - The name of the store.
987
+ * @property {SellerPhoneNumber[]} [contact_numbers] - A list of contact numbers
988
+ * for the store.
861
989
  */
862
990
 
863
991
  /**
@@ -870,10 +998,10 @@ const Joi = require("joi");
870
998
 
871
999
  /**
872
1000
  * @typedef Size
873
- * @property {number} [quantity] - The quantity of this size available
874
- * @property {Object} [value] - The value of the size
875
- * @property {Object} [display] - The display string for the size
876
- * @property {boolean} [is_available] - Whether or not this size is available
1001
+ * @property {number} [quantity] - The quantity of this size available.
1002
+ * @property {Object} [value] - The value of the size.
1003
+ * @property {Object} [display] - The display string for the size.
1004
+ * @property {boolean} [is_available] - Whether or not this size is available.
877
1005
  */
878
1006
 
879
1007
  /**
@@ -887,133 +1015,137 @@ const Joi = require("joi");
887
1015
 
888
1016
  /**
889
1017
  * @typedef ProductDetails
890
- * @property {Object} [template_tag] - The template tag of the product
891
- * @property {number} [rating_count] - The number of ratings the product has received
892
- * @property {Object} [image_nature] - The nature of the product's images
893
- * @property {boolean} [has_variant] - Whether or not the product has a variant
894
- * @property {Object} [description] - The long description of the product
895
- * @property {boolean} [out_of_stock] - Whether or not the product is out of stock
896
- * @property {number} [hsn_code] - The HSN code of the product
897
- * @property {Object} [grouped_attributes] - A dictionary of grouped product attributes
898
- * @property {Object} [item_code] - The item code of the product
899
- * @property {Object} [name] - The name of the product
900
- * @property {Object} [country_of_origin] - The country of origin for the product
901
- * @property {Object} [short_description] - The short description of the product
902
- * @property {Object[]} [media] - A list of media objects for the product
903
- * @property {Object} [attributes] - A dictionary of product attributes
904
- * @property {boolean} [is_set] - Whether or not the product is a set of items
905
- * @property {Object[]} [images] - A list of image URLs for the product
906
- * @property {Object} [slug] - The slug of the product
907
- * @property {number} [rating] - The rating of the product
908
- * @property {Object} [identifier] - A dictionary of product identifiers
909
- * @property {Object[]} [highlights] - A list of highlights for the product
910
- * @property {number} [brand_uid] - The unique ID of the product's brand
1018
+ * @property {Object} [template_tag] - The template tag of the product.
1019
+ * @property {number} [rating_count] - The number of ratings the product has received.
1020
+ * @property {Object} [image_nature] - The nature of the product's images.
1021
+ * @property {boolean} [has_variant] - Whether or not the product has a variant.
1022
+ * @property {Object} [description] - The long description of the product.
1023
+ * @property {boolean} [out_of_stock] - Whether or not the product is out of stock.
1024
+ * @property {number} [hsn_code] - The HSN code of the product.
1025
+ * @property {Object} [grouped_attributes] - A dictionary of grouped product attributes.
1026
+ * @property {Object} [item_code] - The item code of the product.
1027
+ * @property {Object} [name] - The name of the product.
1028
+ * @property {Object} [country_of_origin] - The country of origin for the product.
1029
+ * @property {Object} [short_description] - The short description of the product.
1030
+ * @property {Object[]} [media] - A list of media objects for the product.
1031
+ * @property {Object} [attributes] - A dictionary of product attributes.
1032
+ * @property {boolean} [is_set] - Whether or not the product is a set of items.
1033
+ * @property {Object[]} [images] - A list of image URLs for the product.
1034
+ * @property {Object} [slug] - The slug of the product.
1035
+ * @property {number} [rating] - The rating of the product.
1036
+ * @property {Object} [identifier] - A dictionary of product identifiers.
1037
+ * @property {Object[]} [highlights] - A list of highlights for the product.
1038
+ * @property {number} [brand_uid] - The unique ID of the product's brand.
911
1039
  */
912
1040
 
913
1041
  /**
914
1042
  * @typedef ProductInGroup
915
- * @property {boolean} [auto_add_to_cart] - A flag indicating whether the
916
- * product should be automatically added to the cart.
1043
+ * @property {boolean} [auto_add_to_cart] - Whether the product should be
1044
+ * automatically added to the cart.
917
1045
  * @property {number} max_quantity - The maximum quantity of the product that
918
1046
  * can be added to the cart.
919
1047
  * @property {Size[]} [sizes] - The available sizes for the product.
920
- * @property {ProductGroupPrice} [price] - The price details for the product group.
921
- * @property {boolean} [auto_select] - A flag indicating whether the product
922
- * should be automatically selected.
1048
+ * @property {ProductGroupPrice} [price] - The price details for the product.
1049
+ * @property {boolean} [auto_select] - Whether the product should be
1050
+ * automatically selected.
923
1051
  * @property {ProductDetails} [product_details] - The details of the product.
924
1052
  * @property {number} [min_quantity] - The minimum quantity of the product that
925
1053
  * can be added to the cart.
926
- * @property {boolean} [allow_remove] - A flag indicating whether the product
927
- * can be removed from the cart.
1054
+ * @property {boolean} [allow_remove] - Whether the product can be removed from the cart.
928
1055
  * @property {number} product_uid - The unique ID of the product in the group.
929
1056
  */
930
1057
 
931
1058
  /**
932
1059
  * @typedef ProductGroupingModel
933
- * @property {string} [logo] - The URL for the logo of the product grouping.
1060
+ * @property {string} [logo] - The URL for the logo of the product group.
934
1061
  * @property {boolean} [is_active] - Whether the product grouping is active.
935
1062
  * @property {Object} [meta] - A dictionary containing metadata information.
936
1063
  * @property {UserDetail} [verified_by] - User details of the verifier of the
937
- * document, if applicable
938
- * @property {string} created_on - Timestamp of the creation of the document
1064
+ * document, if applicable.
1065
+ * @property {string} created_on - Timestamp of the creation of the document.
939
1066
  * @property {number} [company_id] - The ID of the company that owns the product grouping.
940
1067
  * @property {Object[]} [page_visibility] - A list of page visibilities of the
941
1068
  * product grouping.
942
- * @property {string} modified_on - Timestamp of the last modification of the document
943
- * @property {UserDetail} [created_by] - User details of the creator of the document
1069
+ * @property {string} modified_on - Timestamp of the last modification of the document.
1070
+ * @property {UserDetail} [created_by] - User details of the creator of the document.
944
1071
  * @property {UserDetail} [modified_by] - User details of the last modifier of
945
- * the document
1072
+ * the document.
946
1073
  * @property {ProductInGroup[]} products - A list of products in the grouping.
947
1074
  * @property {boolean} [same_store_assignment] - Whether the products are
948
1075
  * assigned to the same store.
949
- * @property {Object} [_id]
1076
+ * @property {Object} [_id] - Unique identifier of the product grouping.
950
1077
  * @property {Object} name - The name of the product grouping.
951
1078
  * @property {Object} [choice] - The choice of the product grouping.
952
1079
  * @property {Object} [slug] - The unique identifier for the product grouping.
953
1080
  * @property {string} [verified_on] - Timestamp of when the document was
954
- * verified, if applicable
1081
+ * verified, if applicable.
955
1082
  */
956
1083
 
957
1084
  /**
958
1085
  * @typedef ProductBundle
959
- * @property {ProductGroupingModel[]} [items]
1086
+ * @property {ProductGroupingModel[]} [items] - Represents list of
1087
+ * bundles/product groupings.
960
1088
  */
961
1089
 
962
1090
  /**
963
1091
  * @typedef StoreV3
964
- * @property {number} [uid]
965
- * @property {string} [name]
966
- * @property {number} [count]
1092
+ * @property {number} [uid] - The unique identifier for the store.
1093
+ * @property {string} [name] - The name of the store.
1094
+ * @property {number} [count] - The count associated with the store.
967
1095
  */
968
1096
 
969
1097
  /**
970
1098
  * @typedef ArticleAssignmentV3
971
- * @property {string} [strategy]
972
- * @property {string} [level]
1099
+ * @property {string} [strategy] - Method used for article assignment, such as
1100
+ * optimal, fast-delivery, low-price, or manual.
1101
+ * @property {string} [level] - Scope of assignment, which can be
1102
+ * multi-companies, single-company, or single-store.
973
1103
  */
974
1104
 
975
1105
  /**
976
1106
  * @typedef StrategyWiseListingSchemaV3
977
- * @property {number} [distance]
978
- * @property {number} [pincode]
979
- * @property {number} [tat]
980
- * @property {number} [quantity]
1107
+ * @property {number} [distance] - Distance between bullfight location and
1108
+ * customer location in kilometers. .
1109
+ * @property {number} [pincode] - Pincode mapped based on strategy.
1110
+ * @property {number} [tat] - Turn around Time to deliver the product with this strategy.
1111
+ * @property {number} [quantity] - The quantity available for assigned store.
981
1112
  */
982
1113
 
983
1114
  /**
984
1115
  * @typedef DetailsSchemaV3
985
- * @property {string} [value]
986
- * @property {string} [type]
987
- * @property {string} [key]
1116
+ * @property {string} [value] - The value of the attribute.
1117
+ * @property {string} [type] - The type of detail e.g, text.
1118
+ * @property {string} [key] - The attribute key associated with the size.
988
1119
  */
989
1120
 
990
1121
  /**
991
1122
  * @typedef SellerGroupAttributes
992
- * @property {string} [title]
993
- * @property {DetailsSchemaV3[]} [details]
1123
+ * @property {string} [title] - The title of the attribute group.
1124
+ * @property {DetailsSchemaV3[]} [details] - Detail of the attribute.
994
1125
  */
995
1126
 
996
1127
  /**
997
1128
  * @typedef ReturnConfigSchemaV3
998
- * @property {string} [unit]
999
- * @property {boolean} [returnable]
1000
- * @property {number} [time]
1129
+ * @property {string} [unit] - The unit for the return configuration.
1130
+ * @property {boolean} [returnable] - Indicates if the item is returnable.
1131
+ * @property {number} [time] - The time duration for the return policy.
1001
1132
  */
1002
1133
 
1003
1134
  /**
1004
1135
  * @typedef ProductSetDistributionSizeV3
1005
- * @property {number} [pieces]
1006
- * @property {string} [size]
1136
+ * @property {number} [pieces] - The number of pieces available in this size.
1137
+ * @property {string} [size] - The size of the product.
1007
1138
  */
1008
1139
 
1009
1140
  /**
1010
1141
  * @typedef ProductSetDistributionV3
1011
- * @property {ProductSetDistributionSizeV3[]} [sizes]
1142
+ * @property {ProductSetDistributionSizeV3[]} [sizes] - A list of size
1143
+ * distributions in the product set.
1012
1144
  */
1013
1145
 
1014
1146
  /**
1015
1147
  * @typedef ProductSetV3
1016
- * @property {number} [quantity]
1148
+ * @property {number} [quantity] - The quantity of products in the set.
1017
1149
  * @property {ProductSetDistributionV3} [size_distribution]
1018
1150
  */
1019
1151
 
@@ -1022,7 +1154,7 @@ const Joi = require("joi");
1022
1154
  * @property {number} [effective] - The effective or final price for the product
1023
1155
  * at the given pincode.
1024
1156
  * @property {string} [currency_code] - The currency code for which the product
1025
- * is available
1157
+ * is available.
1026
1158
  * @property {string} [currency_symbol] - The currency symbol for the currency
1027
1159
  * in which the product is available.
1028
1160
  * @property {number} [marked] - The marked price of the product.
@@ -1031,70 +1163,88 @@ const Joi = require("joi");
1031
1163
 
1032
1164
  /**
1033
1165
  * @typedef ProductStockUnitPriceV3
1034
- * @property {string} [unit]
1035
- * @property {string} [currency_symbol]
1036
- * @property {string} [currency_code]
1037
- * @property {number} [price]
1166
+ * @property {string} [unit] - The unit of measure for the product.
1167
+ * @property {string} [currency_symbol] - The currency symbol for the unit price.
1168
+ * @property {string} [currency_code] - The currency code for the unit price.
1169
+ * @property {number} [price] - The unit price of the product.
1038
1170
  */
1039
1171
 
1040
1172
  /**
1041
1173
  * @typedef MarketPlaceSttributesSchemaV3
1042
- * @property {string} [title]
1043
- * @property {DetailsSchemaV3[]} [details]
1174
+ * @property {string} [title] - The title of the attribute.
1175
+ * @property {DetailsSchemaV3[]} [details] - Detail of the attribute.
1044
1176
  */
1045
1177
 
1046
1178
  /**
1047
1179
  * @typedef SellerV3
1048
- * @property {number} [uid]
1049
- * @property {string} [name]
1050
- * @property {number} [count]
1180
+ * @property {number} [uid] - The unique identifier for the seller.
1181
+ * @property {string} [name] - The name of the seller.
1182
+ * @property {number} [count] - The store count serviceable by this seller.
1051
1183
  */
1052
1184
 
1053
1185
  /**
1054
1186
  * @typedef PromiseSchema
1055
- * @property {string} [min]
1056
- * @property {string} [max]
1187
+ * @property {string} [min] - The minimum promise time.
1188
+ * @property {string} [max] - The maximum promise time.
1057
1189
  */
1058
1190
 
1059
1191
  /**
1060
1192
  * @typedef ProductSizePriceResponseV3
1061
1193
  * @property {StoreV3} [store]
1062
1194
  * @property {ArticleAssignmentV3} [article_assignment]
1063
- * @property {boolean} [is_cod]
1064
- * @property {StrategyWiseListingSchemaV3[]} [strategy_wise_listing]
1065
- * @property {number} [quantity]
1066
- * @property {string} [item_type]
1067
- * @property {SellerGroupAttributes[]} [grouped_attributes]
1195
+ * @property {boolean} [is_cod] - Whether Cash on Delivery (COD) is available
1196
+ * for this product. It is true if COD is available and false otherwise.
1197
+ * @property {StrategyWiseListingSchemaV3[]} [strategy_wise_listing] - Details
1198
+ * about serviceability attributes.
1199
+ * @property {number} [quantity] - Available quantity of the product in stock.
1200
+ * It shows the number of units available for purchase.
1201
+ * @property {string} [item_type] - Type of item, indicating the category or
1202
+ * nature of the product. Possible values are Standard, Composite, Wet, Digital.
1203
+ * @property {SellerGroupAttributes[]} [grouped_attributes] - Collection of
1204
+ * attributes grouped together, which provides detailed characteristics of the
1205
+ * product, such as color, size, material, etc.
1068
1206
  * @property {ReturnConfigSchemaV3} [return_config]
1069
- * @property {string} [article_id]
1070
- * @property {boolean} [is_gift]
1207
+ * @property {string} [article_id] - This unique identifier is assigned to the
1208
+ * specific article. This represents item x size x location.
1209
+ * @property {boolean} [is_gift] - Whether the product can be purchased as a
1210
+ * gift. It is true if the product is available for gifting and false otherwise.
1071
1211
  * @property {ProductSetV3} [set]
1072
- * @property {number} [seller_count]
1212
+ * @property {number} [seller_count] - Number of sellers offering this product.
1213
+ * It indicates the level of competition and availability from different sellers.
1073
1214
  * @property {ProductStockPriceV3} [price_per_piece]
1074
1215
  * @property {DiscountMeta} [discount_meta]
1075
- * @property {string} [discount]
1076
- * @property {number[]} [long_lat]
1077
- * @property {string} [special_badge]
1216
+ * @property {string} [discount] - Amount or percentage of discount applied to
1217
+ * the product's price, showing the savings for the customer.
1218
+ * @property {number[]} [long_lat] - Longitude and latitude coordinates,
1219
+ * possibly indicating the location of the store or warehouse where the
1220
+ * product is stocked.
1221
+ * @property {string} [special_badge] - Special badges or labels assigned to the
1222
+ * product, such as "Bestseller," "New Arrival," or "Limited Edition.".
1078
1223
  * @property {ProductStockPriceV3} [price]
1079
1224
  * @property {ProductStockUnitPriceV3} [price_per_unit]
1080
- * @property {number} [pincode]
1081
- * @property {MarketPlaceSttributesSchemaV3[]} [marketplace_attributes]
1225
+ * @property {number} [pincode] - Postal code or zip code for which the
1226
+ * product's availability and delivery options are being checked.
1227
+ * @property {MarketPlaceSttributesSchemaV3[]} [marketplace_attributes] -
1228
+ * Attributes specific to the marketplace, such as ratings, reviews, shipping
1229
+ * options, and other marketplace-specific details.
1082
1230
  * @property {SellerV3} [seller]
1083
1231
  * @property {PromiseSchema} [delivery_promise]
1084
1232
  */
1085
1233
 
1086
1234
  /**
1087
1235
  * @typedef ProductSizeSellerFilterSchemaV3
1088
- * @property {string} [name]
1089
- * @property {boolean} [is_selected]
1090
- * @property {string} [value]
1236
+ * @property {string} [name] - The name of the store/seller.
1237
+ * @property {boolean} [is_selected] - Whether this filter criterion is selected.
1238
+ * @property {string} [value] - The value associated with this store/seller.
1091
1239
  */
1092
1240
 
1093
1241
  /**
1094
1242
  * @typedef ProductSizeSellersResponseV3
1095
- * @property {ProductSizePriceResponseV3[]} [items]
1243
+ * @property {ProductSizePriceResponseV3[]} [items] - A list of products with
1244
+ * size and price details available from various sellers.
1096
1245
  * @property {Page} page
1097
- * @property {ProductSizeSellerFilterSchemaV3[]} [sort_on]
1246
+ * @property {ProductSizeSellerFilterSchemaV3[]} [sort_on] - A list of sorting
1247
+ * and filtering criteria applied to the sellers' data.
1098
1248
  */
1099
1249
 
1100
1250
  class CatalogApplicationModel {