@gofynd/fdk-client-javascript 3.22.0 → 3.24.0

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 (38) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/sdk/application/Cart/CartApplicationClient.d.ts +14 -14
  4. package/sdk/application/Cart/CartApplicationClient.js +124 -35
  5. package/sdk/application/Common/CommonApplicationClient.js +1 -1
  6. package/sdk/application/Logistic/LogisticApplicationClient.js +4 -2
  7. package/sdk/platform/Cart/CartPlatformApplicationClient.d.ts +17 -17
  8. package/sdk/platform/Cart/CartPlatformApplicationClient.js +84 -13
  9. package/sdk/platform/Cart/CartPlatformApplicationValidator.d.ts +121 -0
  10. package/sdk/platform/Cart/CartPlatformApplicationValidator.js +52 -0
  11. package/sdk/platform/Catalog/CatalogPlatformModel.d.ts +7 -2
  12. package/sdk/platform/Catalog/CatalogPlatformModel.js +5 -2
  13. package/sdk/platform/Common/CommonPlatformClient.js +1 -1
  14. package/sdk/platform/Configuration/ConfigurationPlatformModel.d.ts +96 -1
  15. package/sdk/platform/Configuration/ConfigurationPlatformModel.js +61 -0
  16. package/sdk/platform/Content/ContentPlatformApplicationClient.d.ts +0 -12
  17. package/sdk/platform/Content/ContentPlatformApplicationClient.js +0 -81
  18. package/sdk/platform/Content/ContentPlatformApplicationValidator.d.ts +1 -10
  19. package/sdk/platform/Content/ContentPlatformApplicationValidator.js +0 -12
  20. package/sdk/platform/Order/OrderPlatformClient.d.ts +28 -0
  21. package/sdk/platform/Order/OrderPlatformClient.js +179 -3
  22. package/sdk/platform/Order/OrderPlatformModel.d.ts +155 -6
  23. package/sdk/platform/Order/OrderPlatformModel.js +105 -3
  24. package/sdk/platform/Order/OrderPlatformValidator.d.ts +33 -1
  25. package/sdk/platform/Order/OrderPlatformValidator.js +30 -0
  26. package/sdk/platform/Serviceability/ServiceabilityPlatformApplicationClient.d.ts +94 -0
  27. package/sdk/platform/Serviceability/ServiceabilityPlatformApplicationClient.js +574 -0
  28. package/sdk/platform/Serviceability/ServiceabilityPlatformApplicationValidator.d.ts +70 -1
  29. package/sdk/platform/Serviceability/ServiceabilityPlatformApplicationValidator.js +81 -0
  30. package/sdk/platform/Serviceability/ServiceabilityPlatformClient.d.ts +14 -0
  31. package/sdk/platform/Serviceability/ServiceabilityPlatformClient.js +85 -0
  32. package/sdk/platform/Serviceability/ServiceabilityPlatformModel.d.ts +1382 -187
  33. package/sdk/platform/Serviceability/ServiceabilityPlatformModel.js +955 -155
  34. package/sdk/platform/Serviceability/ServiceabilityPlatformValidator.d.ts +10 -1
  35. package/sdk/platform/Serviceability/ServiceabilityPlatformValidator.js +12 -0
  36. package/sdk/platform/User/UserPlatformModel.d.ts +14 -1
  37. package/sdk/platform/User/UserPlatformModel.js +16 -0
  38. package/sdk/public/Configuration/ConfigurationPublicClient.js +1 -1
@@ -1,5 +1,28 @@
1
1
  const Joi = require("joi");
2
2
 
3
+ /**
4
+ * @typedef GenerateShipmentsAndCourierPartnerResult
5
+ * @property {string} [journey] - Describes the shipment's journey or route.
6
+ * @property {CourierPartnerToServiceability} [to_serviceability]
7
+ * @property {CourierPartnerShipments[]} [shipments] - List of shipments
8
+ * generated for the courier partner.
9
+ * @property {string} [payment_mode] - Specifies the mode of payment for the shipment.
10
+ * @property {string} [to_city] - The destination city for the shipment.
11
+ * @property {boolean} [is_cod_available] - Indicates if cash on delivery (COD)
12
+ * is available.
13
+ */
14
+
15
+ /**
16
+ * @typedef CourierPartnerDetails
17
+ * @property {LocationDetailsServiceability} to_serviceability
18
+ * @property {CourierPartnerShipments[]} shipments - A list of shipments for the
19
+ * courier partner request.
20
+ * @property {string} journey - The journey details for the courier partner request.
21
+ * @property {string} [payment_mode] - The payment mode for the courier partner request.
22
+ * @property {boolean} [skip_delivery_rules] - This flag decided whether to run
23
+ * delivery rules configuration for delivery rule fetch or not.
24
+ */
25
+
3
26
  /**
4
27
  * @typedef PlatformShipmentsRequestSchema
5
28
  * @property {string} journey - The journey or route for the shipment.
@@ -35,6 +58,7 @@ const Joi = require("joi");
35
58
  * @property {boolean} [is_default] - Whether this is the default fulfillment option.
36
59
  * @property {string} [type] - Type of fulfillment option.
37
60
  * @property {string} [status] - Status of the fulfillment option.
61
+ * @property {FulfillmentOptionDefaultFor} [default_for]
38
62
  * @property {BusinessUnit[]} [business_unit] - Name of the ordering-channel or
39
63
  * business, e.g. storefront, storeos.
40
64
  * @property {FulfillmentStores} [fulfillment_stores]
@@ -1303,6 +1327,306 @@ const Joi = require("joi");
1303
1327
  * @property {string[]} [sort] - An array of strings specifying sorting preferences.
1304
1328
  */
1305
1329
 
1330
+ /**
1331
+ * @typedef StorePolygonServiceabilityRequestBody
1332
+ * @property {StorePolygonServiceabilityRequestData} data
1333
+ */
1334
+
1335
+ /**
1336
+ * @typedef StorePolygonServiceabilityResult
1337
+ * @property {boolean} success - Indicates whether the polygon serviceability
1338
+ * operation was successful.
1339
+ * @property {StorePolygonServiceabilityStoreSummary[]} data - List of stores
1340
+ * for which polygon serviceability was successfully processed.
1341
+ * @property {StorePolygonServiceabilityError[]} errors - List of errors
1342
+ * encountered while processing individual entries, if any.
1343
+ * @property {string} identifier - Unique identifier for the polygon
1344
+ * serviceability request.
1345
+ * @property {StorePolygonServiceabilityError[]} failed_entries - List of
1346
+ * entries that failed during polygon serviceability processing.
1347
+ */
1348
+
1349
+ /**
1350
+ * @typedef StorePolygonServiceabilityGetResult
1351
+ * @property {boolean} success - Indicates whether the polygon serviceability
1352
+ * fetch operation was successful.
1353
+ * @property {StorePolygonServiceabilityStore[]} data - List of stores with
1354
+ * their polygon-based serviceability details.
1355
+ * @property {StorePolygonServiceabilityError[]} errors - List of errors
1356
+ * encountered while processing individual entries, if any.
1357
+ * @property {string} identifier - Unique identifier for the polygon
1358
+ * serviceability request.
1359
+ * @property {StorePolygonServiceabilityError[]} failed_entries - List of
1360
+ * entries that failed during polygon serviceability processing.
1361
+ * @property {StorePolygonServiceabilityPagination} pagination - Pagination
1362
+ * details for the polygon serviceability result set.
1363
+ */
1364
+
1365
+ /**
1366
+ * @typedef ZoneProductsBulkPatchDetails
1367
+ * @property {string} file_url - URL of the CSV file containing the zone
1368
+ * products bulk patch data.
1369
+ */
1370
+
1371
+ /**
1372
+ * @typedef GetZoneProductsBulkPatchResult
1373
+ * @property {string} batch_id - A unique identifier for the performed batch operation.
1374
+ * @property {string} [file_path] - CDN path of the uploaded file.
1375
+ * @property {number} total - Total number of records in the batch.
1376
+ * @property {number} failed - Number of failed records in the batch.
1377
+ * @property {string} [error_file_url] - URL to the error file containing
1378
+ * details of failed records.
1379
+ * @property {string} action - The action performed during the bulk operation.
1380
+ * @property {string} updated_at - Timestamp when the batch was last updated.
1381
+ * @property {string} updated_by - User who last updated the batch.
1382
+ * @property {string} type - Type of the bulk operation.
1383
+ * @property {number} company_id - The unique identifier for the company.
1384
+ * @property {string} application_id - A unique identifier for the sales channel.
1385
+ * @property {string} stage - Current stage of the bulk operation.
1386
+ * @property {number} [partial] - Number of partially processed records.
1387
+ * @property {string} [result_file_url] - URL to the result file after
1388
+ * processing is complete.
1389
+ */
1390
+
1391
+ /**
1392
+ * @typedef CourierPartnerToServiceability
1393
+ * @property {ServiceabilityLocation} [location]
1394
+ * @property {string} [pincode] - The pincode of the serviceability location.
1395
+ * @property {string} [sector] - The sector of the serviceability location.
1396
+ * @property {string} [country] - The country where the serviceability location
1397
+ * is situated.
1398
+ * @property {string} [country_iso_code] - The ISO code for the country.
1399
+ * @property {string} [state] - The state of the serviceability location.
1400
+ * @property {string} [city] - The city of the serviceability location.
1401
+ */
1402
+
1403
+ /**
1404
+ * @typedef ServiceabilityLocation
1405
+ * @property {string} longitude - The longitude of the serviceability location.
1406
+ * @property {string} latitude - The latitude of the serviceability location.
1407
+ */
1408
+
1409
+ /**
1410
+ * @typedef CourierPartnerShipments
1411
+ * @property {PromiseObject} [promise]
1412
+ * @property {boolean} [is_cod_available] - Indicates if cash on delivery (COD)
1413
+ * is available.
1414
+ * @property {boolean} [is_auto_assign] - Specifies if the shipment should be
1415
+ * automatically assigned.
1416
+ * @property {CourierPartnerShipmentsMeta} [meta]
1417
+ * @property {number} [volumetric_weight] - The volumetric weight of the shipment.
1418
+ * @property {number} [weight] - The actual weight of the shipment.
1419
+ * @property {ShipmentCourierPartnersResult[]} [courier_partners] - List of
1420
+ * courier partners associated with the shipment.
1421
+ * @property {number} fulfillment_id - The fulfillment Id.
1422
+ * @property {string} fulfillment_type - Fulfillment Type
1423
+ * @property {string[]} fulfillment_tags - Fulfillment level tags
1424
+ * @property {LocationDetailsServiceability} from_serviceability
1425
+ * @property {CourierPartnerShipmentsArticles[]} articles - A list of articles
1426
+ * in the courier partner shipment.
1427
+ * @property {boolean} is_mto - A boolean indicating if the courier partner
1428
+ * supports Made to Order service.
1429
+ * @property {string[]} ignore_scheme_ids - A list of scheme_id which we want to
1430
+ * ignore in courier_partner assignment.
1431
+ * @property {Object} [error] - Error Details
1432
+ */
1433
+
1434
+ /**
1435
+ * @typedef PromiseObject
1436
+ * @property {string} [min] - The minimum promised delivery time in ISO 8601 format.
1437
+ * @property {string} [max] - The maximum promised delivery time in ISO 8601 format.
1438
+ * @property {PromiseData} customer_promise
1439
+ * @property {PromiseMeta} meta
1440
+ */
1441
+
1442
+ /**
1443
+ * @typedef PromiseData
1444
+ * @property {string} [min] - The minimum promised delivery time in ISO 8601 format.
1445
+ * @property {string} [max] - The maximum promised delivery time in ISO 8601 format.
1446
+ */
1447
+
1448
+ /**
1449
+ * @typedef PromiseMeta
1450
+ * @property {PromiseData} [seller_promise]
1451
+ * @property {CourierPartnerPromiseData} [courier_partner_promise]
1452
+ * @property {PromiseData} [customer_initial_promise]
1453
+ */
1454
+
1455
+ /**
1456
+ * @typedef CourierPartnerPromiseData
1457
+ * @property {string} [min] - The minimum promised delivery time in ISO 8601 format.
1458
+ * @property {string} [max] - The maximum promised delivery time in ISO 8601 format.
1459
+ * @property {DeliveryTat} [attributes]
1460
+ */
1461
+
1462
+ /**
1463
+ * @typedef DeliveryTat
1464
+ * @property {DeliveryTatSchema} [tat]
1465
+ */
1466
+
1467
+ /**
1468
+ * @typedef DeliveryTatSchema
1469
+ * @property {number} [min] - The minimum tat in integer.
1470
+ * @property {number} [max] - The maximum tat in integer.
1471
+ */
1472
+
1473
+ /**
1474
+ * @typedef CourierPartnerShipmentsMeta
1475
+ * @property {number} [shipment_cost] - The total cost associated with the
1476
+ * shipment, expressed as a floating-point number. This value includes all
1477
+ * applicable charges, such as transportation, handling, and any additional fees.
1478
+ */
1479
+
1480
+ /**
1481
+ * @typedef ShipmentCourierPartnersResult
1482
+ * @property {string} extension_id - The Id of the courier partner.
1483
+ * @property {string} scheme_id - The scheme Id of the courier partner.
1484
+ * @property {AreaCode} area_code
1485
+ * @property {TAT} tat
1486
+ * @property {string} display_name - The display name of the courier partner.
1487
+ * @property {boolean} is_qc_enabled - A boolean indicating quality control by
1488
+ * the courier partner.
1489
+ * @property {boolean} is_self_ship - A boolean indicating it is self delivery DP support.
1490
+ * @property {boolean} [is_own_account] - Specifies if the courier partner
1491
+ * operates on its own account.
1492
+ * @property {number} [ndr_attempts] - The number of non-delivery report (NDR) attempts.
1493
+ * @property {string} [forward_pickup_cutoff] - Cutoff time for forward pickup (nullable).
1494
+ * @property {string} [reverse_pickup_cutoff] - Cutoff time for reverse pickup (nullable).
1495
+ * @property {number} [qc_shipment_item_quantity] - Quantity of items under
1496
+ * quality control (nullable).
1497
+ * @property {number} [non_qc_shipment_item_quantity] - Quantity of items not
1498
+ * under quality control (nullable).
1499
+ * @property {boolean} [dangerous_goods] - Specifies if the courier partner
1500
+ * operates on dangerous goods.
1501
+ * @property {boolean} [restricted_goods] - Specifies if the courier partner
1502
+ * operates on restricted goods.
1503
+ * @property {boolean} [fragile_goods] - Specifies if the courier partner
1504
+ * operates on fragile goods.
1505
+ * @property {boolean} [cold_storage_goods] - Specifies if the courier partner
1506
+ * operates on cold storage goods.
1507
+ * @property {string} [delivery_type] - Specifies type of courier partner.
1508
+ * @property {boolean} [is_cod] - Specifies if the courier partner operates on
1509
+ * cash on delivery orders.
1510
+ * @property {string} [transport_type] - Mode of transport associated with the
1511
+ * courier partner scheme.
1512
+ */
1513
+
1514
+ /**
1515
+ * @typedef AreaCode
1516
+ * @property {string} [source] - The starting area code.
1517
+ * @property {string} [destination] - The ending area code.
1518
+ */
1519
+
1520
+ /**
1521
+ * @typedef TAT
1522
+ * @property {number} [min] - The minimum tat in integer.
1523
+ * @property {number} [max] - The maximum tat in integer.
1524
+ */
1525
+
1526
+ /**
1527
+ * @typedef LocationDetailsServiceability
1528
+ * @property {string} [pincode] - The pincode of the serviceability location.
1529
+ * @property {string} [sector] - The sector of the serviceability location.
1530
+ * @property {string} [state] - The state of the serviceability location.
1531
+ * @property {string} country - The country of the serviceability location.
1532
+ * @property {string} [city] - The city of the serviceability location.
1533
+ * @property {string} country_iso_code - The ISO code of the country.
1534
+ * @property {ServiceabilityLocation} [location]
1535
+ */
1536
+
1537
+ /**
1538
+ * @typedef CourierPartnerShipmentsArticles
1539
+ * @property {string} [id] - A string serving as the unique identifier.
1540
+ * @property {Object} [delivery_slots] - Represents the delivery date and time
1541
+ * slots available for an article.
1542
+ * @property {Error} [error]
1543
+ * @property {number} [fulfillment_id] - The fulfillment Id.
1544
+ * @property {string[]} [fulfillment_tags] - Fulfillment level tags
1545
+ * @property {string} [fulfillment_type] - Fulfillment Type
1546
+ * @property {string} [group_id] - The group Id of the article.
1547
+ * @property {boolean} [is_gift] - A boolean indicating if the courier partner
1548
+ * supports gift shipments.
1549
+ * @property {boolean} [is_mto] - Flag indicating whether the shipment is MTO
1550
+ * (Make to Order).
1551
+ * @property {boolean} [is_set] - A boolean indicating whether the article is a set.
1552
+ * @property {number} [manufacturing_time] - The manufacturing time of the article.
1553
+ * @property {string} [manufacturing_time_unit] - The unit of measurement for
1554
+ * manufacturing time.
1555
+ * @property {number} [mto_quantity] - The Made to Order quantity of the article.
1556
+ * @property {string} [sla] - Service level agreement (SLA) for the article,
1557
+ * represented as a date-time
1558
+ * @property {number} [price_marked] - Marked price before discounts.
1559
+ * @property {CourierPartnerArticlesPromise} [promise]
1560
+ * @property {Object} [set] - Additional properties related to sets.
1561
+ * @property {CourierPartnerArticlesReturnReasons} [return_reason]
1562
+ * @property {number} [set_quantity] - It represents the number of set of this article
1563
+ * @property {number} quantity - The quantity of the shipment article.
1564
+ * @property {ArticleWeight} weight
1565
+ * @property {ArticleAttributes} [attributes]
1566
+ * @property {number} category_id - The category Id of the article.
1567
+ * @property {ArticleDimension} dimension
1568
+ * @property {number} brand_id - The brand Id of the article.
1569
+ * @property {number} item_id - The Item Id of the article.
1570
+ * @property {string} size - The size of the article.
1571
+ * @property {string[]} tags - Tags assigned to Item
1572
+ * @property {number} department_id - Department of the item
1573
+ * @property {number} price - Final Price of the article after discounts
1574
+ */
1575
+
1576
+ /**
1577
+ * @typedef CourierPartnerArticlesPromise
1578
+ * @property {string} [min] - The minimum delivery promise date.
1579
+ * @property {string} [max] - The maximum delivery promise date.
1580
+ */
1581
+
1582
+ /**
1583
+ * @typedef CourierPartnerArticlesReturnReasons
1584
+ * @property {number} [id] - The unique identifier for the return reason entry.
1585
+ * @property {CourierPartnerArticlesReturnReasonsMeta} [meta]
1586
+ * @property {string[]} [qc_type] - A list of quality check types that apply to
1587
+ * the return reasons.
1588
+ * @property {string[]} [reasons] - A list of return reasons for the article.
1589
+ * @property {boolean} [is_active] - A boolean indicating whether the return
1590
+ * reason is currently active.
1591
+ * @property {string} [display_name] - The display name for the return reason.
1592
+ * @property {string[]} [question_set] - A list of questions associated with the
1593
+ * return reason.
1594
+ * @property {string} [reason_other_text] - Any additional text for other return reasons.
1595
+ */
1596
+
1597
+ /**
1598
+ * @typedef CourierPartnerArticlesReturnReasonsMeta
1599
+ * @property {boolean} [show_text_area] - A boolean indicating whether a text
1600
+ * area should be displayed for additional input regarding the return reason.
1601
+ */
1602
+
1603
+ /**
1604
+ * @typedef ArticleWeight
1605
+ * @property {number} shipping - The weight(grams) of the article for shipping
1606
+ * purposes, typically measured in a specified unit.
1607
+ * @property {string} unit - The unit of measurement used for the weight value.
1608
+ * @property {boolean} is_default - A boolean indicating whether this weight is
1609
+ * the default weight for the article.
1610
+ */
1611
+
1612
+ /**
1613
+ * @typedef ArticleAttributes
1614
+ * @property {string} battery_operated - Yes/no indicating whether the article
1615
+ * is powered by batteries.
1616
+ * @property {string} is_flammable - Yes/no indicating whether the article is
1617
+ * considered flammable or poses a fire hazard.
1618
+ */
1619
+
1620
+ /**
1621
+ * @typedef ArticleDimension
1622
+ * @property {number} height - The height of the article.
1623
+ * @property {boolean} is_default - A boolean indicating whether this dimension
1624
+ * is the default dimension.
1625
+ * @property {number} length - The length of the article.
1626
+ * @property {string} unit - The unit of measurement used for the dimensions.
1627
+ * @property {number} width - The width of the article.
1628
+ */
1629
+
1306
1630
  /**
1307
1631
  * @typedef PlatformLocationArticles
1308
1632
  * @property {PlatformLocationArticle[]} articles - List of articles for this
@@ -1519,15 +1843,11 @@ const Joi = require("joi");
1519
1843
  */
1520
1844
 
1521
1845
  /**
1522
- * @typedef AreaCode
1523
- * @property {string} [source] - The starting area code.
1524
- * @property {string} [destination] - The ending area code.
1525
- */
1526
-
1527
- /**
1528
- * @typedef TAT
1529
- * @property {number} [min] - The minimum tat in integer.
1530
- * @property {number} [max] - The maximum tat in integer.
1846
+ * @typedef FulfillmentOptionDefaultFor
1847
+ * @property {boolean} [storefront] - If set to true, this fulfillment option
1848
+ * will be default for storefront.
1849
+ * @property {boolean} [storeos] - If set to true, this fulfillment option will
1850
+ * be default for storeos.
1531
1851
  */
1532
1852
 
1533
1853
  /**
@@ -1780,6 +2100,9 @@ const Joi = require("joi");
1780
2100
  * zone, whether it's a list of categories, departments, tags, or item_ids.
1781
2101
  * @property {Object[]} values - List of values representing the products or the
1782
2102
  * type of products selected for the delivery zone.
2103
+ * @property {string} [action] - The action to perform on the product values -
2104
+ * 'add' to add values to the existing list, 'remove' to remove values from
2105
+ * the existing list.
1783
2106
  */
1784
2107
 
1785
2108
  /**
@@ -2182,33 +2505,6 @@ const Joi = require("joi");
2182
2505
  * @property {ArticleReturnReason} [return_reason]
2183
2506
  */
2184
2507
 
2185
- /**
2186
- * @typedef ArticleWeight
2187
- * @property {number} shipping - The weight(grams) of the article for shipping
2188
- * purposes, typically measured in a specified unit.
2189
- * @property {string} unit - The unit of measurement used for the weight value.
2190
- * @property {boolean} is_default - A boolean indicating whether this weight is
2191
- * the default weight for the article.
2192
- */
2193
-
2194
- /**
2195
- * @typedef ArticleAttributes
2196
- * @property {string} battery_operated - Yes/no indicating whether the article
2197
- * is powered by batteries.
2198
- * @property {string} is_flammable - Yes/no indicating whether the article is
2199
- * considered flammable or poses a fire hazard.
2200
- */
2201
-
2202
- /**
2203
- * @typedef ArticleDimension
2204
- * @property {number} height - The height of the article.
2205
- * @property {boolean} is_default - A boolean indicating whether this dimension
2206
- * is the default dimension.
2207
- * @property {number} length - The length of the article.
2208
- * @property {string} unit - The unit of measurement used for the dimensions.
2209
- * @property {number} width - The width of the article.
2210
- */
2211
-
2212
2508
  /**
2213
2509
  * @typedef ArticleSet
2214
2510
  * @property {string} [name] - The name of the article set.
@@ -2481,23 +2777,6 @@ const Joi = require("joi");
2481
2777
  * specify the desired approach or criteria for selecting optimal locations.
2482
2778
  */
2483
2779
 
2484
- /**
2485
- * @typedef LocationDetailsServiceability
2486
- * @property {string} [pincode] - The pincode of the serviceability location.
2487
- * @property {string} [sector] - The sector of the serviceability location.
2488
- * @property {string} [state] - The state of the serviceability location.
2489
- * @property {string} country - The country of the serviceability location.
2490
- * @property {string} [city] - The city of the serviceability location.
2491
- * @property {string} country_iso_code - The ISO code of the country.
2492
- * @property {ServiceabilityLocation} [location]
2493
- */
2494
-
2495
- /**
2496
- * @typedef ServiceabilityLocation
2497
- * @property {string} longitude - The longitude of the serviceability location.
2498
- * @property {string} latitude - The latitude of the serviceability location.
2499
- */
2500
-
2501
2780
  /**
2502
2781
  * @typedef OptimalLocationsArticles
2503
2782
  * @property {number} item_id - Unique identifier for the item.
@@ -2798,50 +3077,181 @@ const Joi = require("joi");
2798
3077
  * encountered errors during the batch processing.
2799
3078
  */
2800
3079
 
2801
- class ServiceabilityPlatformModel {
2802
- /** @returns {PlatformShipmentsRequestSchema} */
2803
- static PlatformShipmentsRequestSchema() {
2804
- return Joi.object({
2805
- journey: Joi.string().allow("").required(),
2806
- location_articles: Joi.array()
2807
- .items(ServiceabilityPlatformModel.PlatformLocationArticles())
2808
- .required(),
2809
- to_serviceability: ServiceabilityPlatformModel.PlatformShipmentsToServiceability().required(),
2810
- payment_mode: Joi.string().allow("").allow(null),
2811
- });
2812
- }
3080
+ /**
3081
+ * @typedef StorePolygonServiceabilityRequestData
3082
+ * @property {StorePolygonServiceabilityStore[]} stores - List of stores for
3083
+ * which polygon-based serviceability is being configured.
3084
+ */
2813
3085
 
2814
- /** @returns {PlatformShipmentsResponseSchema} */
2815
- static PlatformShipmentsResponseSchema() {
2816
- return Joi.object({
2817
- is_cod_available: Joi.boolean().required(),
2818
- shipments: Joi.array()
2819
- .items(ServiceabilityPlatformModel.PlatformShipmentsSchema())
2820
- .required(),
2821
- });
2822
- }
3086
+ /**
3087
+ * @typedef StorePolygonServiceabilityStore
3088
+ * @property {string} store_code - Unique identifier of the store.
3089
+ * @property {string} name - Name of the store.
3090
+ * @property {string} address - Address of the store.
3091
+ * @property {string} area_code - Area code associated with the store.
3092
+ * @property {boolean} is_active - Indicates whether the store is active.
3093
+ * @property {Object} [meta] - Additional metadata associated with the store.
3094
+ * @property {StorePolygonServiceabilityStoreCoordinates} coordinates
3095
+ * @property {StorePolygonServiceabilityConfig[]} serviceabilities - List of
3096
+ * polygon-based serviceability configurations for the store.
3097
+ * @property {string} [created_at] - Timestamp when the store entry was created.
3098
+ * @property {string} [updated_at] - Timestamp when the store entry was last updated.
3099
+ */
2823
3100
 
2824
- /** @returns {ShipmentsErrorResult} */
2825
- static ShipmentsErrorResult() {
2826
- return Joi.object({
2827
- message: Joi.string().allow("").allow(null),
2828
- type: Joi.string().allow("").required(),
2829
- value: Joi.string().allow("").required(),
2830
- });
2831
- }
3101
+ /**
3102
+ * @typedef StorePolygonServiceabilityStoreCoordinates
3103
+ * @property {number} lng - Longitude of the store.
3104
+ * @property {number} lat - Latitude of the store.
3105
+ */
2832
3106
 
2833
- /** @returns {FulfillmentOption} */
2834
- static FulfillmentOption() {
2835
- return Joi.object({
2836
- name: Joi.string().allow(""),
2837
- slug: Joi.string().allow(""),
2838
- company_id: Joi.number(),
2839
- application_id: Joi.string().allow(""),
2840
- description: Joi.string().allow(""),
2841
- is_default: Joi.boolean(),
2842
- type: Joi.string().allow(""),
2843
- status: Joi.string().allow(""),
2844
- business_unit: Joi.array().items(
3107
+ /**
3108
+ * @typedef StorePolygonServiceabilityConfig
3109
+ * @property {string} name - Name of the polygon-based serviceability configuration.
3110
+ * @property {string} serviceability_type - Type of serviceability
3111
+ * configuration. Currently supports quick_commerce.
3112
+ * @property {StorePolygonServiceabilityPolygon} polygon
3113
+ * @property {Object} [meta] - Additional metadata associated with the
3114
+ * serviceability configuration.
3115
+ * @property {boolean} is_active - Indicates whether the serviceability
3116
+ * configuration is active.
3117
+ * @property {string} [uid] - Unique identifier of the serviceability configuration.
3118
+ * @property {string} [created_at] - Timestamp when the serviceability
3119
+ * configuration was created.
3120
+ * @property {string} [updated_at] - Timestamp when the serviceability
3121
+ * configuration was last updated.
3122
+ */
3123
+
3124
+ /**
3125
+ * @typedef StorePolygonServiceabilityPolygon
3126
+ * @property {string} type - Type of the GeoJSON collection, typically FeatureCollection.
3127
+ * @property {StorePolygonServiceabilityFeature[]} features - List of GeoJSON
3128
+ * features defining the polygon.
3129
+ * @property {StorePolygonServiceabilityAttributes} [attributes]
3130
+ */
3131
+
3132
+ /**
3133
+ * @typedef StorePolygonServiceabilityFeature
3134
+ * @property {string} type - Type of the feature, typically Feature.
3135
+ * @property {Object} [properties] - Additional properties for the feature.
3136
+ * @property {StorePolygonServiceabilityGeometry} geometry
3137
+ */
3138
+
3139
+ /**
3140
+ * @typedef StorePolygonServiceabilityGeometry
3141
+ * @property {string} [type] - Type of geometry, typically Polygon.
3142
+ * @property {number[][][]} [coordinates] - List of polygon coordinates as
3143
+ * longitude and latitude pairs.
3144
+ */
3145
+
3146
+ /**
3147
+ * @typedef StorePolygonServiceabilityAttributes
3148
+ * @property {string} [contour_type] - Type of contour used for the polygon,
3149
+ * either distance-based or manually defined.
3150
+ * @property {number} [travel_distance] - Travel distance used to derive the
3151
+ * polygon contour, typically in meters.
3152
+ * @property {StorePolygonServiceabilityReferenceCoordinates} [reference_coordinates]
3153
+ */
3154
+
3155
+ /**
3156
+ * @typedef StorePolygonServiceabilityReferenceCoordinates
3157
+ * @property {number} lng - Longitude of the reference point.
3158
+ * @property {number} lat - Latitude of the reference point.
3159
+ */
3160
+
3161
+ /**
3162
+ * @typedef StorePolygonServiceabilityStoreSummary
3163
+ * @property {string} store_code - Unique identifier of the store.
3164
+ * @property {string} [name] - Name of the store.
3165
+ */
3166
+
3167
+ /**
3168
+ * @typedef StorePolygonServiceabilityError
3169
+ * @property {string} store_code - Store code identifier.
3170
+ * @property {string} message - Detailed error message describing the validation
3171
+ * failure for a specific record.
3172
+ * @property {string} [error_code] - Error code for the failure.
3173
+ */
3174
+
3175
+ /**
3176
+ * @typedef StorePolygonServiceabilityPagination
3177
+ * @property {number} page_size - Number of records per page.
3178
+ * @property {number} page_number - The current page number.
3179
+ * @property {boolean} has_next - Indicates whether more pages are available.
3180
+ * @property {number} total_records - Total number of records matching the criteria.
3181
+ */
3182
+
3183
+ class ServiceabilityPlatformModel {
3184
+ /** @returns {GenerateShipmentsAndCourierPartnerResult} */
3185
+ static GenerateShipmentsAndCourierPartnerResult() {
3186
+ return Joi.object({
3187
+ journey: Joi.string().allow(""),
3188
+ to_serviceability: ServiceabilityPlatformModel.CourierPartnerToServiceability(),
3189
+ shipments: Joi.array().items(
3190
+ ServiceabilityPlatformModel.CourierPartnerShipments()
3191
+ ),
3192
+ payment_mode: Joi.string().allow(""),
3193
+ to_city: Joi.string().allow(""),
3194
+ is_cod_available: Joi.boolean(),
3195
+ });
3196
+ }
3197
+
3198
+ /** @returns {CourierPartnerDetails} */
3199
+ static CourierPartnerDetails() {
3200
+ return Joi.object({
3201
+ to_serviceability: ServiceabilityPlatformModel.LocationDetailsServiceability().required(),
3202
+ shipments: Joi.array()
3203
+ .items(ServiceabilityPlatformModel.CourierPartnerShipments())
3204
+ .required(),
3205
+ journey: Joi.string().allow("").required(),
3206
+ payment_mode: Joi.string().allow(""),
3207
+ skip_delivery_rules: Joi.boolean(),
3208
+ });
3209
+ }
3210
+
3211
+ /** @returns {PlatformShipmentsRequestSchema} */
3212
+ static PlatformShipmentsRequestSchema() {
3213
+ return Joi.object({
3214
+ journey: Joi.string().allow("").required(),
3215
+ location_articles: Joi.array()
3216
+ .items(ServiceabilityPlatformModel.PlatformLocationArticles())
3217
+ .required(),
3218
+ to_serviceability: ServiceabilityPlatformModel.PlatformShipmentsToServiceability().required(),
3219
+ payment_mode: Joi.string().allow("").allow(null),
3220
+ });
3221
+ }
3222
+
3223
+ /** @returns {PlatformShipmentsResponseSchema} */
3224
+ static PlatformShipmentsResponseSchema() {
3225
+ return Joi.object({
3226
+ is_cod_available: Joi.boolean().required(),
3227
+ shipments: Joi.array()
3228
+ .items(ServiceabilityPlatformModel.PlatformShipmentsSchema())
3229
+ .required(),
3230
+ });
3231
+ }
3232
+
3233
+ /** @returns {ShipmentsErrorResult} */
3234
+ static ShipmentsErrorResult() {
3235
+ return Joi.object({
3236
+ message: Joi.string().allow("").allow(null),
3237
+ type: Joi.string().allow("").required(),
3238
+ value: Joi.string().allow("").required(),
3239
+ });
3240
+ }
3241
+
3242
+ /** @returns {FulfillmentOption} */
3243
+ static FulfillmentOption() {
3244
+ return Joi.object({
3245
+ name: Joi.string().allow(""),
3246
+ slug: Joi.string().allow(""),
3247
+ company_id: Joi.number(),
3248
+ application_id: Joi.string().allow(""),
3249
+ description: Joi.string().allow(""),
3250
+ is_default: Joi.boolean(),
3251
+ type: Joi.string().allow(""),
3252
+ status: Joi.string().allow(""),
3253
+ default_for: ServiceabilityPlatformModel.FulfillmentOptionDefaultFor(),
3254
+ business_unit: Joi.array().items(
2845
3255
  ServiceabilityPlatformModel.BusinessUnit()
2846
3256
  ),
2847
3257
  fulfillment_stores: ServiceabilityPlatformModel.FulfillmentStores(),
@@ -4193,6 +4603,329 @@ class ServiceabilityPlatformModel {
4193
4603
  });
4194
4604
  }
4195
4605
 
4606
+ /** @returns {StorePolygonServiceabilityRequestBody} */
4607
+ static StorePolygonServiceabilityRequestBody() {
4608
+ return Joi.object({
4609
+ data: ServiceabilityPlatformModel.StorePolygonServiceabilityRequestData().required(),
4610
+ });
4611
+ }
4612
+
4613
+ /** @returns {StorePolygonServiceabilityResult} */
4614
+ static StorePolygonServiceabilityResult() {
4615
+ return Joi.object({
4616
+ success: Joi.boolean().required(),
4617
+ data: Joi.array()
4618
+ .items(
4619
+ ServiceabilityPlatformModel.StorePolygonServiceabilityStoreSummary()
4620
+ )
4621
+ .required(),
4622
+ errors: Joi.array()
4623
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityError())
4624
+ .required(),
4625
+ identifier: Joi.string().allow("").required(),
4626
+ failed_entries: Joi.array()
4627
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityError())
4628
+ .required(),
4629
+ });
4630
+ }
4631
+
4632
+ /** @returns {StorePolygonServiceabilityGetResult} */
4633
+ static StorePolygonServiceabilityGetResult() {
4634
+ return Joi.object({
4635
+ success: Joi.boolean().required(),
4636
+ data: Joi.array()
4637
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityStore())
4638
+ .required(),
4639
+ errors: Joi.array()
4640
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityError())
4641
+ .required(),
4642
+ identifier: Joi.string().allow("").required(),
4643
+ failed_entries: Joi.array()
4644
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityError())
4645
+ .required(),
4646
+ pagination: ServiceabilityPlatformModel.StorePolygonServiceabilityPagination().required(),
4647
+ });
4648
+ }
4649
+
4650
+ /** @returns {ZoneProductsBulkPatchDetails} */
4651
+ static ZoneProductsBulkPatchDetails() {
4652
+ return Joi.object({
4653
+ file_url: Joi.string().allow("").required(),
4654
+ });
4655
+ }
4656
+
4657
+ /** @returns {GetZoneProductsBulkPatchResult} */
4658
+ static GetZoneProductsBulkPatchResult() {
4659
+ return Joi.object({
4660
+ batch_id: Joi.string().allow("").required(),
4661
+ file_path: Joi.string().allow("").allow(null),
4662
+ total: Joi.number().required(),
4663
+ failed: Joi.number().required(),
4664
+ error_file_url: Joi.string().allow("").allow(null),
4665
+ action: Joi.string().allow("").required(),
4666
+ updated_at: Joi.string().allow("").required(),
4667
+ updated_by: Joi.string().allow("").required(),
4668
+ type: Joi.string().allow("").required(),
4669
+ company_id: Joi.number().required(),
4670
+ application_id: Joi.string().allow("").required(),
4671
+ stage: Joi.string().allow("").required(),
4672
+ partial: Joi.number(),
4673
+ result_file_url: Joi.string().allow("").allow(null),
4674
+ });
4675
+ }
4676
+
4677
+ /** @returns {CourierPartnerToServiceability} */
4678
+ static CourierPartnerToServiceability() {
4679
+ return Joi.object({
4680
+ location: ServiceabilityPlatformModel.ServiceabilityLocation(),
4681
+ pincode: Joi.string().allow(""),
4682
+ sector: Joi.string().allow(""),
4683
+ country: Joi.string().allow(""),
4684
+ country_iso_code: Joi.string().allow(""),
4685
+ state: Joi.string().allow(""),
4686
+ city: Joi.string().allow(""),
4687
+ });
4688
+ }
4689
+
4690
+ /** @returns {ServiceabilityLocation} */
4691
+ static ServiceabilityLocation() {
4692
+ return Joi.object({
4693
+ longitude: Joi.string().allow("").required(),
4694
+ latitude: Joi.string().allow("").required(),
4695
+ });
4696
+ }
4697
+
4698
+ /** @returns {CourierPartnerShipments} */
4699
+ static CourierPartnerShipments() {
4700
+ return Joi.object({
4701
+ promise: ServiceabilityPlatformModel.PromiseObject(),
4702
+ is_cod_available: Joi.boolean(),
4703
+ is_auto_assign: Joi.boolean(),
4704
+ meta: ServiceabilityPlatformModel.CourierPartnerShipmentsMeta(),
4705
+ volumetric_weight: Joi.number(),
4706
+ weight: Joi.number(),
4707
+ courier_partners: Joi.array().items(
4708
+ ServiceabilityPlatformModel.ShipmentCourierPartnersResult()
4709
+ ),
4710
+ fulfillment_id: Joi.number().required(),
4711
+ fulfillment_type: Joi.string().allow("").required(),
4712
+ fulfillment_tags: Joi.array().items(Joi.string().allow("")).required(),
4713
+ from_serviceability: ServiceabilityPlatformModel.LocationDetailsServiceability().required(),
4714
+ articles: Joi.array()
4715
+ .items(ServiceabilityPlatformModel.CourierPartnerShipmentsArticles())
4716
+ .required(),
4717
+ is_mto: Joi.boolean().required(),
4718
+ ignore_scheme_ids: Joi.array().items(Joi.string().allow("")).required(),
4719
+ error: Joi.object().pattern(/\S/, Joi.any()),
4720
+ });
4721
+ }
4722
+
4723
+ /** @returns {PromiseObject} */
4724
+ static PromiseObject() {
4725
+ return Joi.object({
4726
+ min: Joi.string().allow(""),
4727
+ max: Joi.string().allow(""),
4728
+ customer_promise: ServiceabilityPlatformModel.PromiseData().required(),
4729
+ meta: ServiceabilityPlatformModel.PromiseMeta().required(),
4730
+ });
4731
+ }
4732
+
4733
+ /** @returns {PromiseData} */
4734
+ static PromiseData() {
4735
+ return Joi.object({
4736
+ min: Joi.string().allow(""),
4737
+ max: Joi.string().allow(""),
4738
+ });
4739
+ }
4740
+
4741
+ /** @returns {PromiseMeta} */
4742
+ static PromiseMeta() {
4743
+ return Joi.object({
4744
+ seller_promise: ServiceabilityPlatformModel.PromiseData(),
4745
+ courier_partner_promise: ServiceabilityPlatformModel.CourierPartnerPromiseData(),
4746
+ customer_initial_promise: ServiceabilityPlatformModel.PromiseData(),
4747
+ });
4748
+ }
4749
+
4750
+ /** @returns {CourierPartnerPromiseData} */
4751
+ static CourierPartnerPromiseData() {
4752
+ return Joi.object({
4753
+ min: Joi.string().allow("").allow(null),
4754
+ max: Joi.string().allow("").allow(null),
4755
+ attributes: ServiceabilityPlatformModel.DeliveryTat(),
4756
+ });
4757
+ }
4758
+
4759
+ /** @returns {DeliveryTat} */
4760
+ static DeliveryTat() {
4761
+ return Joi.object({
4762
+ tat: ServiceabilityPlatformModel.DeliveryTatSchema(),
4763
+ });
4764
+ }
4765
+
4766
+ /** @returns {DeliveryTatSchema} */
4767
+ static DeliveryTatSchema() {
4768
+ return Joi.object({
4769
+ min: Joi.number(),
4770
+ max: Joi.number(),
4771
+ });
4772
+ }
4773
+
4774
+ /** @returns {CourierPartnerShipmentsMeta} */
4775
+ static CourierPartnerShipmentsMeta() {
4776
+ return Joi.object({
4777
+ shipment_cost: Joi.number(),
4778
+ });
4779
+ }
4780
+
4781
+ /** @returns {ShipmentCourierPartnersResult} */
4782
+ static ShipmentCourierPartnersResult() {
4783
+ return Joi.object({
4784
+ extension_id: Joi.string().allow("").required(),
4785
+ scheme_id: Joi.string().allow("").required(),
4786
+ area_code: ServiceabilityPlatformModel.AreaCode().required(),
4787
+ tat: ServiceabilityPlatformModel.TAT().required(),
4788
+ display_name: Joi.string().allow("").required(),
4789
+ is_qc_enabled: Joi.boolean().required(),
4790
+ is_self_ship: Joi.boolean().required(),
4791
+ is_own_account: Joi.boolean(),
4792
+ ndr_attempts: Joi.number(),
4793
+ forward_pickup_cutoff: Joi.string().allow("").allow(null),
4794
+ reverse_pickup_cutoff: Joi.string().allow("").allow(null),
4795
+ qc_shipment_item_quantity: Joi.number().allow(null),
4796
+ non_qc_shipment_item_quantity: Joi.number().allow(null),
4797
+ dangerous_goods: Joi.boolean(),
4798
+ restricted_goods: Joi.boolean(),
4799
+ fragile_goods: Joi.boolean(),
4800
+ cold_storage_goods: Joi.boolean(),
4801
+ delivery_type: Joi.string().allow(""),
4802
+ is_cod: Joi.boolean(),
4803
+ transport_type: Joi.string().allow(""),
4804
+ });
4805
+ }
4806
+
4807
+ /** @returns {AreaCode} */
4808
+ static AreaCode() {
4809
+ return Joi.object({
4810
+ source: Joi.string().allow(""),
4811
+ destination: Joi.string().allow(""),
4812
+ });
4813
+ }
4814
+
4815
+ /** @returns {TAT} */
4816
+ static TAT() {
4817
+ return Joi.object({
4818
+ min: Joi.number(),
4819
+ max: Joi.number(),
4820
+ });
4821
+ }
4822
+
4823
+ /** @returns {LocationDetailsServiceability} */
4824
+ static LocationDetailsServiceability() {
4825
+ return Joi.object({
4826
+ pincode: Joi.string().allow(""),
4827
+ sector: Joi.string().allow(""),
4828
+ state: Joi.string().allow(""),
4829
+ country: Joi.string().allow("").required(),
4830
+ city: Joi.string().allow(""),
4831
+ country_iso_code: Joi.string().allow("").required(),
4832
+ location: ServiceabilityPlatformModel.ServiceabilityLocation(),
4833
+ });
4834
+ }
4835
+
4836
+ /** @returns {CourierPartnerShipmentsArticles} */
4837
+ static CourierPartnerShipmentsArticles() {
4838
+ return Joi.object({
4839
+ id: Joi.string().allow(""),
4840
+ delivery_slots: Joi.object().pattern(/\S/, Joi.any()),
4841
+ error: ServiceabilityPlatformModel.Error(),
4842
+ fulfillment_id: Joi.number(),
4843
+ fulfillment_tags: Joi.array().items(Joi.string().allow("")),
4844
+ fulfillment_type: Joi.string().allow(""),
4845
+ group_id: Joi.string().allow(""),
4846
+ is_gift: Joi.boolean(),
4847
+ is_mto: Joi.boolean(),
4848
+ is_set: Joi.boolean(),
4849
+ manufacturing_time: Joi.number(),
4850
+ manufacturing_time_unit: Joi.string().allow(""),
4851
+ mto_quantity: Joi.number(),
4852
+ sla: Joi.string().allow(""),
4853
+ price_marked: Joi.number(),
4854
+ promise: ServiceabilityPlatformModel.CourierPartnerArticlesPromise(),
4855
+ set: Joi.object().pattern(/\S/, Joi.any()),
4856
+ return_reason: ServiceabilityPlatformModel.CourierPartnerArticlesReturnReasons(),
4857
+ set_quantity: Joi.number(),
4858
+ quantity: Joi.number().required(),
4859
+ weight: ServiceabilityPlatformModel.ArticleWeight().required(),
4860
+ attributes: ServiceabilityPlatformModel.ArticleAttributes(),
4861
+ category_id: Joi.number().required(),
4862
+ dimension: ServiceabilityPlatformModel.ArticleDimension().required(),
4863
+ brand_id: Joi.number().required(),
4864
+ item_id: Joi.number().required(),
4865
+ size: Joi.string().allow("").required(),
4866
+ tags: Joi.array().items(Joi.string().allow("")).required(),
4867
+ department_id: Joi.number().required(),
4868
+ price: Joi.number().required(),
4869
+ });
4870
+ }
4871
+
4872
+ /** @returns {CourierPartnerArticlesPromise} */
4873
+ static CourierPartnerArticlesPromise() {
4874
+ return Joi.object({
4875
+ min: Joi.string().allow(""),
4876
+ max: Joi.string().allow(""),
4877
+ });
4878
+ }
4879
+
4880
+ /** @returns {CourierPartnerArticlesReturnReasons} */
4881
+ static CourierPartnerArticlesReturnReasons() {
4882
+ return Joi.object({
4883
+ id: Joi.number(),
4884
+ meta: ServiceabilityPlatformModel.CourierPartnerArticlesReturnReasonsMeta(),
4885
+ qc_type: Joi.array().items(Joi.string().allow("")),
4886
+ reasons: Joi.array().items(Joi.string().allow("")),
4887
+ is_active: Joi.boolean(),
4888
+ display_name: Joi.string().allow(""),
4889
+ question_set: Joi.array().items(Joi.string().allow("")),
4890
+ reason_other_text: Joi.string().allow(""),
4891
+ });
4892
+ }
4893
+
4894
+ /** @returns {CourierPartnerArticlesReturnReasonsMeta} */
4895
+ static CourierPartnerArticlesReturnReasonsMeta() {
4896
+ return Joi.object({
4897
+ show_text_area: Joi.boolean(),
4898
+ });
4899
+ }
4900
+
4901
+ /** @returns {ArticleWeight} */
4902
+ static ArticleWeight() {
4903
+ return Joi.object({
4904
+ shipping: Joi.number().required(),
4905
+ unit: Joi.string().allow("").required(),
4906
+ is_default: Joi.boolean().required(),
4907
+ });
4908
+ }
4909
+
4910
+ /** @returns {ArticleAttributes} */
4911
+ static ArticleAttributes() {
4912
+ return Joi.object({
4913
+ battery_operated: Joi.string().allow("").required(),
4914
+ is_flammable: Joi.string().allow("").required(),
4915
+ });
4916
+ }
4917
+
4918
+ /** @returns {ArticleDimension} */
4919
+ static ArticleDimension() {
4920
+ return Joi.object({
4921
+ height: Joi.number().required(),
4922
+ is_default: Joi.boolean().required(),
4923
+ length: Joi.number().required(),
4924
+ unit: Joi.string().allow("").required(),
4925
+ width: Joi.number().required(),
4926
+ });
4927
+ }
4928
+
4196
4929
  /** @returns {PlatformLocationArticles} */
4197
4930
  static PlatformLocationArticles() {
4198
4931
  return Joi.object({
@@ -4433,19 +5166,11 @@ class ServiceabilityPlatformModel {
4433
5166
  });
4434
5167
  }
4435
5168
 
4436
- /** @returns {AreaCode} */
4437
- static AreaCode() {
5169
+ /** @returns {FulfillmentOptionDefaultFor} */
5170
+ static FulfillmentOptionDefaultFor() {
4438
5171
  return Joi.object({
4439
- source: Joi.string().allow(""),
4440
- destination: Joi.string().allow(""),
4441
- });
4442
- }
4443
-
4444
- /** @returns {TAT} */
4445
- static TAT() {
4446
- return Joi.object({
4447
- min: Joi.number(),
4448
- max: Joi.number(),
5172
+ storefront: Joi.boolean(),
5173
+ storeos: Joi.boolean(),
4449
5174
  });
4450
5175
  }
4451
5176
 
@@ -4731,6 +5456,7 @@ class ServiceabilityPlatformModel {
4731
5456
  return Joi.object({
4732
5457
  type: Joi.string().allow("").required(),
4733
5458
  values: Joi.array().items(Joi.any()).required(),
5459
+ action: Joi.string().allow(""),
4734
5460
  });
4735
5461
  }
4736
5462
 
@@ -5170,34 +5896,6 @@ class ServiceabilityPlatformModel {
5170
5896
  });
5171
5897
  }
5172
5898
 
5173
- /** @returns {ArticleWeight} */
5174
- static ArticleWeight() {
5175
- return Joi.object({
5176
- shipping: Joi.number().required(),
5177
- unit: Joi.string().allow("").required(),
5178
- is_default: Joi.boolean().required(),
5179
- });
5180
- }
5181
-
5182
- /** @returns {ArticleAttributes} */
5183
- static ArticleAttributes() {
5184
- return Joi.object({
5185
- battery_operated: Joi.string().allow("").required(),
5186
- is_flammable: Joi.string().allow("").required(),
5187
- });
5188
- }
5189
-
5190
- /** @returns {ArticleDimension} */
5191
- static ArticleDimension() {
5192
- return Joi.object({
5193
- height: Joi.number().required(),
5194
- is_default: Joi.boolean().required(),
5195
- length: Joi.number().required(),
5196
- unit: Joi.string().allow("").required(),
5197
- width: Joi.number().required(),
5198
- });
5199
- }
5200
-
5201
5899
  /** @returns {ArticleSet} */
5202
5900
  static ArticleSet() {
5203
5901
  return Joi.object({
@@ -5513,27 +6211,6 @@ class ServiceabilityPlatformModel {
5513
6211
  });
5514
6212
  }
5515
6213
 
5516
- /** @returns {LocationDetailsServiceability} */
5517
- static LocationDetailsServiceability() {
5518
- return Joi.object({
5519
- pincode: Joi.string().allow(""),
5520
- sector: Joi.string().allow(""),
5521
- state: Joi.string().allow(""),
5522
- country: Joi.string().allow("").required(),
5523
- city: Joi.string().allow(""),
5524
- country_iso_code: Joi.string().allow("").required(),
5525
- location: ServiceabilityPlatformModel.ServiceabilityLocation(),
5526
- });
5527
- }
5528
-
5529
- /** @returns {ServiceabilityLocation} */
5530
- static ServiceabilityLocation() {
5531
- return Joi.object({
5532
- longitude: Joi.string().allow("").required(),
5533
- latitude: Joi.string().allow("").required(),
5534
- });
5535
- }
5536
-
5537
6214
  /** @returns {OptimalLocationsArticles} */
5538
6215
  static OptimalLocationsArticles() {
5539
6216
  return Joi.object({
@@ -5845,5 +6522,128 @@ class ServiceabilityPlatformModel {
5845
6522
  total_error_count: Joi.number(),
5846
6523
  });
5847
6524
  }
6525
+
6526
+ /** @returns {StorePolygonServiceabilityRequestData} */
6527
+ static StorePolygonServiceabilityRequestData() {
6528
+ return Joi.object({
6529
+ stores: Joi.array()
6530
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityStore())
6531
+ .required(),
6532
+ });
6533
+ }
6534
+
6535
+ /** @returns {StorePolygonServiceabilityStore} */
6536
+ static StorePolygonServiceabilityStore() {
6537
+ return Joi.object({
6538
+ store_code: Joi.string().allow("").required(),
6539
+ name: Joi.string().allow("").required(),
6540
+ address: Joi.string().allow("").required(),
6541
+ area_code: Joi.string().allow("").required(),
6542
+ is_active: Joi.boolean().required(),
6543
+ meta: Joi.object().pattern(/\S/, Joi.any()),
6544
+ coordinates: ServiceabilityPlatformModel.StorePolygonServiceabilityStoreCoordinates().required(),
6545
+ serviceabilities: Joi.array()
6546
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityConfig())
6547
+ .required(),
6548
+ created_at: Joi.string().allow(""),
6549
+ updated_at: Joi.string().allow(""),
6550
+ });
6551
+ }
6552
+
6553
+ /** @returns {StorePolygonServiceabilityStoreCoordinates} */
6554
+ static StorePolygonServiceabilityStoreCoordinates() {
6555
+ return Joi.object({
6556
+ lng: Joi.number().required(),
6557
+ lat: Joi.number().required(),
6558
+ });
6559
+ }
6560
+
6561
+ /** @returns {StorePolygonServiceabilityConfig} */
6562
+ static StorePolygonServiceabilityConfig() {
6563
+ return Joi.object({
6564
+ name: Joi.string().allow("").required(),
6565
+ serviceability_type: Joi.string().allow("").required(),
6566
+ polygon: ServiceabilityPlatformModel.StorePolygonServiceabilityPolygon().required(),
6567
+ meta: Joi.object().pattern(/\S/, Joi.any()),
6568
+ is_active: Joi.boolean().required(),
6569
+ uid: Joi.string().allow(""),
6570
+ created_at: Joi.string().allow(""),
6571
+ updated_at: Joi.string().allow(""),
6572
+ });
6573
+ }
6574
+
6575
+ /** @returns {StorePolygonServiceabilityPolygon} */
6576
+ static StorePolygonServiceabilityPolygon() {
6577
+ return Joi.object({
6578
+ type: Joi.string().allow("").required(),
6579
+ features: Joi.array()
6580
+ .items(ServiceabilityPlatformModel.StorePolygonServiceabilityFeature())
6581
+ .required(),
6582
+ attributes: ServiceabilityPlatformModel.StorePolygonServiceabilityAttributes(),
6583
+ });
6584
+ }
6585
+
6586
+ /** @returns {StorePolygonServiceabilityFeature} */
6587
+ static StorePolygonServiceabilityFeature() {
6588
+ return Joi.object({
6589
+ type: Joi.string().allow("").required(),
6590
+ properties: Joi.object().pattern(/\S/, Joi.any()),
6591
+ geometry: ServiceabilityPlatformModel.StorePolygonServiceabilityGeometry().required(),
6592
+ });
6593
+ }
6594
+
6595
+ /** @returns {StorePolygonServiceabilityGeometry} */
6596
+ static StorePolygonServiceabilityGeometry() {
6597
+ return Joi.object({
6598
+ type: Joi.string().allow(""),
6599
+ coordinates: Joi.array().items(
6600
+ Joi.array().items(Joi.array().items(Joi.number()))
6601
+ ),
6602
+ });
6603
+ }
6604
+
6605
+ /** @returns {StorePolygonServiceabilityAttributes} */
6606
+ static StorePolygonServiceabilityAttributes() {
6607
+ return Joi.object({
6608
+ contour_type: Joi.string().allow(""),
6609
+ travel_distance: Joi.number(),
6610
+ reference_coordinates: ServiceabilityPlatformModel.StorePolygonServiceabilityReferenceCoordinates(),
6611
+ });
6612
+ }
6613
+
6614
+ /** @returns {StorePolygonServiceabilityReferenceCoordinates} */
6615
+ static StorePolygonServiceabilityReferenceCoordinates() {
6616
+ return Joi.object({
6617
+ lng: Joi.number().required(),
6618
+ lat: Joi.number().required(),
6619
+ });
6620
+ }
6621
+
6622
+ /** @returns {StorePolygonServiceabilityStoreSummary} */
6623
+ static StorePolygonServiceabilityStoreSummary() {
6624
+ return Joi.object({
6625
+ store_code: Joi.string().allow("").required(),
6626
+ name: Joi.string().allow(""),
6627
+ });
6628
+ }
6629
+
6630
+ /** @returns {StorePolygonServiceabilityError} */
6631
+ static StorePolygonServiceabilityError() {
6632
+ return Joi.object({
6633
+ store_code: Joi.string().allow("").required(),
6634
+ message: Joi.string().allow("").required(),
6635
+ error_code: Joi.string().allow(""),
6636
+ });
6637
+ }
6638
+
6639
+ /** @returns {StorePolygonServiceabilityPagination} */
6640
+ static StorePolygonServiceabilityPagination() {
6641
+ return Joi.object({
6642
+ page_size: Joi.number().required(),
6643
+ page_number: Joi.number().required(),
6644
+ has_next: Joi.boolean().required(),
6645
+ total_records: Joi.number().required(),
6646
+ });
6647
+ }
5848
6648
  }
5849
6649
  module.exports = ServiceabilityPlatformModel;