@atzentis/booking-sdk 0.1.8 → 0.1.10
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.
- package/dist/index.cjs +669 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1736 -63
- package/dist/index.d.ts +1736 -63
- package/dist/index.js +660 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1039,6 +1039,78 @@ var CategoriesService = class extends BaseService {
|
|
|
1039
1039
|
}
|
|
1040
1040
|
};
|
|
1041
1041
|
|
|
1042
|
+
// src/services/discounts.ts
|
|
1043
|
+
var DiscountsService = class extends BaseService {
|
|
1044
|
+
constructor() {
|
|
1045
|
+
super(...arguments);
|
|
1046
|
+
this.basePath = "/guest/v1";
|
|
1047
|
+
}
|
|
1048
|
+
// ---------------------------------------------------------------------------
|
|
1049
|
+
// Rule CRUD
|
|
1050
|
+
// ---------------------------------------------------------------------------
|
|
1051
|
+
/** Create a discount rule */
|
|
1052
|
+
createRule(input) {
|
|
1053
|
+
return this._post(this._buildPath("discounts"), input);
|
|
1054
|
+
}
|
|
1055
|
+
/** Get a discount rule by ID */
|
|
1056
|
+
getRule(ruleId) {
|
|
1057
|
+
return this._get(this._buildPath("discounts", ruleId));
|
|
1058
|
+
}
|
|
1059
|
+
/** List discount rules with optional filters */
|
|
1060
|
+
listRules(params) {
|
|
1061
|
+
const query = {};
|
|
1062
|
+
query.propertyId = params.propertyId;
|
|
1063
|
+
if (params.type !== void 0) query.type = params.type;
|
|
1064
|
+
if (params.status !== void 0) query.status = params.status;
|
|
1065
|
+
if (params.enabled !== void 0) query.enabled = params.enabled;
|
|
1066
|
+
if (params.validOn !== void 0) query.validOn = params.validOn;
|
|
1067
|
+
if (params.sortBy !== void 0) query.sortBy = params.sortBy;
|
|
1068
|
+
if (params.sortOrder !== void 0) query.sortOrder = params.sortOrder;
|
|
1069
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
1070
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
1071
|
+
return this._get(this._buildPath("discounts"), query);
|
|
1072
|
+
}
|
|
1073
|
+
/** Update a discount rule */
|
|
1074
|
+
updateRule(ruleId, input) {
|
|
1075
|
+
return this._patch(this._buildPath("discounts", ruleId), input);
|
|
1076
|
+
}
|
|
1077
|
+
/** Delete a discount rule */
|
|
1078
|
+
deleteRule(ruleId) {
|
|
1079
|
+
return this._delete(this._buildPath("discounts", ruleId));
|
|
1080
|
+
}
|
|
1081
|
+
// ---------------------------------------------------------------------------
|
|
1082
|
+
// Coupons
|
|
1083
|
+
// ---------------------------------------------------------------------------
|
|
1084
|
+
/** Generate coupon codes for a discount rule */
|
|
1085
|
+
generateCoupons(ruleId, input) {
|
|
1086
|
+
return this._post(this._buildPath("discounts", ruleId, "coupons"), input ?? {});
|
|
1087
|
+
}
|
|
1088
|
+
/** Validate a coupon code against booking context */
|
|
1089
|
+
validateCoupon(input) {
|
|
1090
|
+
return this._post(this._buildPath("discounts", "validate"), input);
|
|
1091
|
+
}
|
|
1092
|
+
// ---------------------------------------------------------------------------
|
|
1093
|
+
// Application
|
|
1094
|
+
// ---------------------------------------------------------------------------
|
|
1095
|
+
/** Apply a discount to a booking */
|
|
1096
|
+
applyDiscount(input) {
|
|
1097
|
+
return this._post(this._buildPath("discounts", "apply"), input);
|
|
1098
|
+
}
|
|
1099
|
+
// ---------------------------------------------------------------------------
|
|
1100
|
+
// Usage tracking
|
|
1101
|
+
// ---------------------------------------------------------------------------
|
|
1102
|
+
/** Get usage statistics and redemption history for a discount rule */
|
|
1103
|
+
getUsage(ruleId, params) {
|
|
1104
|
+
if (!params) return this._get(this._buildPath("discounts", ruleId, "usage"));
|
|
1105
|
+
const query = {};
|
|
1106
|
+
if (params.from !== void 0) query.from = params.from;
|
|
1107
|
+
if (params.to !== void 0) query.to = params.to;
|
|
1108
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
1109
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
1110
|
+
return this._get(this._buildPath("discounts", ruleId, "usage"), query);
|
|
1111
|
+
}
|
|
1112
|
+
};
|
|
1113
|
+
|
|
1042
1114
|
// src/services/distribution.ts
|
|
1043
1115
|
var DistributionService = class extends BaseService {
|
|
1044
1116
|
constructor() {
|
|
@@ -1270,6 +1342,94 @@ var FinanceService = class extends BaseService {
|
|
|
1270
1342
|
if (params.propertyId !== void 0) query.propertyId = params.propertyId;
|
|
1271
1343
|
return this._get(this._buildPath("accounting", "vat"), query);
|
|
1272
1344
|
}
|
|
1345
|
+
// ---------------------------------------------------------------------------
|
|
1346
|
+
// POS Bridge operations (P13)
|
|
1347
|
+
// ---------------------------------------------------------------------------
|
|
1348
|
+
/** Post a POS charge to a guest folio */
|
|
1349
|
+
folioPost(input) {
|
|
1350
|
+
return this._post(this._buildPath("folio-post"), input);
|
|
1351
|
+
}
|
|
1352
|
+
/** List POS charges on a folio */
|
|
1353
|
+
listFolioPostCharges(folioId, params) {
|
|
1354
|
+
if (!params) {
|
|
1355
|
+
return this._get(this._buildPath("folio-post", folioId));
|
|
1356
|
+
}
|
|
1357
|
+
const query = {};
|
|
1358
|
+
if (params.posTerminalId !== void 0) query.posTerminalId = params.posTerminalId;
|
|
1359
|
+
if (params.from !== void 0) query.from = params.from;
|
|
1360
|
+
if (params.to !== void 0) query.to = params.to;
|
|
1361
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
1362
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
1363
|
+
return this._get(this._buildPath("folio-post", folioId), query);
|
|
1364
|
+
}
|
|
1365
|
+
};
|
|
1366
|
+
|
|
1367
|
+
// src/services/groups.ts
|
|
1368
|
+
var GroupsService = class extends BaseService {
|
|
1369
|
+
constructor() {
|
|
1370
|
+
super(...arguments);
|
|
1371
|
+
this.basePath = "/booking/v1/groups";
|
|
1372
|
+
}
|
|
1373
|
+
// ---------------------------------------------------------------------------
|
|
1374
|
+
// Group CRUD
|
|
1375
|
+
// ---------------------------------------------------------------------------
|
|
1376
|
+
/** Create a group booking */
|
|
1377
|
+
create(input) {
|
|
1378
|
+
return this._post(this.basePath, input);
|
|
1379
|
+
}
|
|
1380
|
+
/** Get a group booking by ID */
|
|
1381
|
+
get(groupId) {
|
|
1382
|
+
return this._get(this._buildPath(groupId));
|
|
1383
|
+
}
|
|
1384
|
+
/** List group bookings with filters */
|
|
1385
|
+
list(params) {
|
|
1386
|
+
const query = {};
|
|
1387
|
+
query.propertyId = params.propertyId;
|
|
1388
|
+
if (params.status !== void 0) {
|
|
1389
|
+
query.status = Array.isArray(params.status) ? params.status.join(",") : params.status;
|
|
1390
|
+
}
|
|
1391
|
+
if (params.type !== void 0) {
|
|
1392
|
+
query.type = Array.isArray(params.type) ? params.type.join(",") : params.type;
|
|
1393
|
+
}
|
|
1394
|
+
if (params.search !== void 0) query.search = params.search;
|
|
1395
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
1396
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
1397
|
+
return this._get(this.basePath, query);
|
|
1398
|
+
}
|
|
1399
|
+
/** Update a group booking */
|
|
1400
|
+
update(groupId, input) {
|
|
1401
|
+
return this._patch(this._buildPath(groupId), input);
|
|
1402
|
+
}
|
|
1403
|
+
/** Delete a group booking */
|
|
1404
|
+
delete(groupId) {
|
|
1405
|
+
return this._delete(this._buildPath(groupId));
|
|
1406
|
+
}
|
|
1407
|
+
// ---------------------------------------------------------------------------
|
|
1408
|
+
// Block management
|
|
1409
|
+
// ---------------------------------------------------------------------------
|
|
1410
|
+
/** Create a room block for a group */
|
|
1411
|
+
createBlock(groupId, input) {
|
|
1412
|
+
return this._post(this._buildPath(groupId, "blocks"), input);
|
|
1413
|
+
}
|
|
1414
|
+
/** List blocks for a group */
|
|
1415
|
+
listBlocks(groupId) {
|
|
1416
|
+
return this._get(this._buildPath(groupId, "blocks"));
|
|
1417
|
+
}
|
|
1418
|
+
// ---------------------------------------------------------------------------
|
|
1419
|
+
// Pickup, release, and folio
|
|
1420
|
+
// ---------------------------------------------------------------------------
|
|
1421
|
+
/** Get pickup tracking data for a group */
|
|
1422
|
+
getPickup(groupId) {
|
|
1423
|
+
return this._get(this._buildPath(groupId, "pickup"));
|
|
1424
|
+
}
|
|
1425
|
+
/** Release blocks back to inventory */
|
|
1426
|
+
release(groupId, input) {
|
|
1427
|
+
return this._post(this._buildPath(groupId, "release"), input ?? {});
|
|
1428
|
+
}
|
|
1429
|
+
/** Create a master folio for a group */
|
|
1430
|
+
createFolio(groupId, input) {
|
|
1431
|
+
return this._post(this._buildPath(groupId, "folio"), input ?? {});
|
|
1432
|
+
}
|
|
1273
1433
|
};
|
|
1274
1434
|
|
|
1275
1435
|
// src/services/guests.ts
|
|
@@ -1551,6 +1711,89 @@ var GuestsService = class extends BaseService {
|
|
|
1551
1711
|
}
|
|
1552
1712
|
};
|
|
1553
1713
|
|
|
1714
|
+
// src/services/housekeeping.ts
|
|
1715
|
+
var HousekeepingService = class extends BaseService {
|
|
1716
|
+
constructor() {
|
|
1717
|
+
super(...arguments);
|
|
1718
|
+
this.basePath = "/operations/v1/housekeeping";
|
|
1719
|
+
}
|
|
1720
|
+
// ---------------------------------------------------------------------------
|
|
1721
|
+
// Board and space status
|
|
1722
|
+
// ---------------------------------------------------------------------------
|
|
1723
|
+
/** Get the housekeeping board with optional filters */
|
|
1724
|
+
getBoard(params) {
|
|
1725
|
+
if (!params) return this._get(this._buildPath("board"));
|
|
1726
|
+
const query = {};
|
|
1727
|
+
if (params.propertyId !== void 0) query.propertyId = params.propertyId;
|
|
1728
|
+
if (params.floor !== void 0) query.floor = params.floor;
|
|
1729
|
+
if (params.status !== void 0) query.status = params.status;
|
|
1730
|
+
if (params.assignedTo !== void 0) query.assignedTo = params.assignedTo;
|
|
1731
|
+
return this._get(this._buildPath("board"), query);
|
|
1732
|
+
}
|
|
1733
|
+
/** Update the housekeeping status of a space */
|
|
1734
|
+
updateSpaceStatus(spaceId, input) {
|
|
1735
|
+
return this._patch(this._buildPath("spaces", spaceId), input);
|
|
1736
|
+
}
|
|
1737
|
+
// ---------------------------------------------------------------------------
|
|
1738
|
+
// Task CRUD
|
|
1739
|
+
// ---------------------------------------------------------------------------
|
|
1740
|
+
/** Create a housekeeping task */
|
|
1741
|
+
createTask(input) {
|
|
1742
|
+
return this._post(this._buildPath("tasks"), input);
|
|
1743
|
+
}
|
|
1744
|
+
/** List housekeeping tasks with optional filters */
|
|
1745
|
+
listTasks(params) {
|
|
1746
|
+
if (!params) return this._get(this._buildPath("tasks"));
|
|
1747
|
+
const query = {};
|
|
1748
|
+
if (params.spaceId !== void 0) query.spaceId = params.spaceId;
|
|
1749
|
+
if (params.status !== void 0) query.status = params.status;
|
|
1750
|
+
if (params.type !== void 0) query.type = params.type;
|
|
1751
|
+
if (params.assignedTo !== void 0) query.assignedTo = params.assignedTo;
|
|
1752
|
+
if (params.priority !== void 0) query.priority = params.priority;
|
|
1753
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
1754
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
1755
|
+
return this._get(this._buildPath("tasks"), query);
|
|
1756
|
+
}
|
|
1757
|
+
/** Update a housekeeping task */
|
|
1758
|
+
updateTask(taskId, input) {
|
|
1759
|
+
return this._patch(this._buildPath("tasks", taskId), input);
|
|
1760
|
+
}
|
|
1761
|
+
};
|
|
1762
|
+
|
|
1763
|
+
// src/services/night-audit.ts
|
|
1764
|
+
var NightAuditService = class extends BaseService {
|
|
1765
|
+
constructor() {
|
|
1766
|
+
super(...arguments);
|
|
1767
|
+
this.basePath = "/operations/v1/night-audit";
|
|
1768
|
+
}
|
|
1769
|
+
// ---------------------------------------------------------------------------
|
|
1770
|
+
// Run and history
|
|
1771
|
+
// ---------------------------------------------------------------------------
|
|
1772
|
+
/** Run a night audit for a property */
|
|
1773
|
+
run(input) {
|
|
1774
|
+
return this._post(this._buildPath("run"), input);
|
|
1775
|
+
}
|
|
1776
|
+
/** Get night audit history with optional filters */
|
|
1777
|
+
getHistory(params) {
|
|
1778
|
+
if (!params) return this._get(this._buildPath("history"));
|
|
1779
|
+
const query = {};
|
|
1780
|
+
if (params.propertyId !== void 0) query.propertyId = params.propertyId;
|
|
1781
|
+
if (params.status !== void 0) query.status = params.status;
|
|
1782
|
+
if (params.fromDate !== void 0) query.fromDate = params.fromDate;
|
|
1783
|
+
if (params.toDate !== void 0) query.toDate = params.toDate;
|
|
1784
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
1785
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
1786
|
+
return this._get(this._buildPath("history"), query);
|
|
1787
|
+
}
|
|
1788
|
+
// ---------------------------------------------------------------------------
|
|
1789
|
+
// Report
|
|
1790
|
+
// ---------------------------------------------------------------------------
|
|
1791
|
+
/** Get the detailed report for a completed night audit */
|
|
1792
|
+
getReport(auditId) {
|
|
1793
|
+
return this._get(this._buildPath(auditId, "report"));
|
|
1794
|
+
}
|
|
1795
|
+
};
|
|
1796
|
+
|
|
1554
1797
|
// src/services/payments.ts
|
|
1555
1798
|
var PaymentsService = class extends BaseService {
|
|
1556
1799
|
constructor() {
|
|
@@ -1719,6 +1962,185 @@ var PropertiesService = class extends BaseService {
|
|
|
1719
1962
|
}
|
|
1720
1963
|
};
|
|
1721
1964
|
|
|
1965
|
+
// src/services/rate-plans.ts
|
|
1966
|
+
var RatePlansService = class extends BaseService {
|
|
1967
|
+
constructor() {
|
|
1968
|
+
super(...arguments);
|
|
1969
|
+
this.basePath = "/rate/v1";
|
|
1970
|
+
}
|
|
1971
|
+
// ---------------------------------------------------------------------------
|
|
1972
|
+
// Rate plan CRUD
|
|
1973
|
+
// ---------------------------------------------------------------------------
|
|
1974
|
+
/** List rate plans with optional filters */
|
|
1975
|
+
list(params) {
|
|
1976
|
+
if (!params) return this._get(this._buildPath("plans"));
|
|
1977
|
+
const query = {};
|
|
1978
|
+
if (params.propertyId !== void 0) query.propertyId = params.propertyId;
|
|
1979
|
+
if (params.categoryId !== void 0) query.categoryId = params.categoryId;
|
|
1980
|
+
if (params.status !== void 0) query.status = params.status;
|
|
1981
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
1982
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
1983
|
+
return this._get(this._buildPath("plans"), query);
|
|
1984
|
+
}
|
|
1985
|
+
/** Get a rate plan by ID */
|
|
1986
|
+
get(planId) {
|
|
1987
|
+
return this._get(this._buildPath("plans", planId));
|
|
1988
|
+
}
|
|
1989
|
+
/** Create a new rate plan */
|
|
1990
|
+
create(input) {
|
|
1991
|
+
return this._post(this._buildPath("plans"), input);
|
|
1992
|
+
}
|
|
1993
|
+
/** Update a rate plan */
|
|
1994
|
+
update(planId, input) {
|
|
1995
|
+
return this._patch(this._buildPath("plans", planId), input);
|
|
1996
|
+
}
|
|
1997
|
+
/** Delete a rate plan */
|
|
1998
|
+
delete(planId) {
|
|
1999
|
+
return this._delete(this._buildPath("plans", planId));
|
|
2000
|
+
}
|
|
2001
|
+
// ---------------------------------------------------------------------------
|
|
2002
|
+
// Rate period management
|
|
2003
|
+
// ---------------------------------------------------------------------------
|
|
2004
|
+
/** List rate periods for a plan */
|
|
2005
|
+
listPeriods(planId, params) {
|
|
2006
|
+
if (!params) {
|
|
2007
|
+
return this._get(this._buildPath("plans", planId, "periods"));
|
|
2008
|
+
}
|
|
2009
|
+
const query = {};
|
|
2010
|
+
if (params.fromDate !== void 0) query.fromDate = params.fromDate;
|
|
2011
|
+
if (params.toDate !== void 0) query.toDate = params.toDate;
|
|
2012
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2013
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2014
|
+
return this._get(this._buildPath("plans", planId, "periods"), query);
|
|
2015
|
+
}
|
|
2016
|
+
/** Get a rate period by ID */
|
|
2017
|
+
getPeriod(planId, periodId) {
|
|
2018
|
+
return this._get(this._buildPath("plans", planId, "periods", periodId));
|
|
2019
|
+
}
|
|
2020
|
+
/** Create a rate period */
|
|
2021
|
+
createPeriod(planId, input) {
|
|
2022
|
+
return this._post(this._buildPath("plans", planId, "periods"), input);
|
|
2023
|
+
}
|
|
2024
|
+
/** Update a rate period */
|
|
2025
|
+
updatePeriod(planId, periodId, input) {
|
|
2026
|
+
return this._patch(this._buildPath("plans", planId, "periods", periodId), input);
|
|
2027
|
+
}
|
|
2028
|
+
// ---------------------------------------------------------------------------
|
|
2029
|
+
// Restrictions
|
|
2030
|
+
// ---------------------------------------------------------------------------
|
|
2031
|
+
/** Get restrictions for a rate plan */
|
|
2032
|
+
getRestrictions(planId) {
|
|
2033
|
+
return this._get(this._buildPath("plans", planId, "restrictions"));
|
|
2034
|
+
}
|
|
2035
|
+
/** Update restrictions for a rate plan */
|
|
2036
|
+
updateRestrictions(planId, input) {
|
|
2037
|
+
return this._patch(this._buildPath("plans", planId, "restrictions"), input);
|
|
2038
|
+
}
|
|
2039
|
+
// ---------------------------------------------------------------------------
|
|
2040
|
+
// Price calculation
|
|
2041
|
+
// ---------------------------------------------------------------------------
|
|
2042
|
+
/** Calculate price for a stay */
|
|
2043
|
+
calculate(input) {
|
|
2044
|
+
return this._post(this._buildPath("calculate"), input);
|
|
2045
|
+
}
|
|
2046
|
+
// ---------------------------------------------------------------------------
|
|
2047
|
+
// Portfolio operations
|
|
2048
|
+
// ---------------------------------------------------------------------------
|
|
2049
|
+
/** Push rates to portfolio properties */
|
|
2050
|
+
pushToPortfolio(input) {
|
|
2051
|
+
return this._post(this._buildPath("portfolio", "push"), input);
|
|
2052
|
+
}
|
|
2053
|
+
/** Compare rates across portfolio properties */
|
|
2054
|
+
comparePortfolioRates(input) {
|
|
2055
|
+
return this._post(this._buildPath("portfolio", "compare"), input);
|
|
2056
|
+
}
|
|
2057
|
+
};
|
|
2058
|
+
|
|
2059
|
+
// src/services/reviews.ts
|
|
2060
|
+
var ReviewsService = class extends BaseService {
|
|
2061
|
+
constructor() {
|
|
2062
|
+
super(...arguments);
|
|
2063
|
+
this.basePath = "/guest/v1";
|
|
2064
|
+
}
|
|
2065
|
+
// ---------------------------------------------------------------------------
|
|
2066
|
+
// Review CRUD
|
|
2067
|
+
// ---------------------------------------------------------------------------
|
|
2068
|
+
/** Create a review */
|
|
2069
|
+
createReview(input) {
|
|
2070
|
+
return this._post(this._buildPath("reviews"), input);
|
|
2071
|
+
}
|
|
2072
|
+
/** Get a review by ID */
|
|
2073
|
+
getReview(reviewId) {
|
|
2074
|
+
return this._get(this._buildPath("reviews", reviewId));
|
|
2075
|
+
}
|
|
2076
|
+
/** List reviews with optional filters */
|
|
2077
|
+
listReviews(params) {
|
|
2078
|
+
const query = {};
|
|
2079
|
+
query.propertyId = params.propertyId;
|
|
2080
|
+
if (params.status !== void 0) query.status = params.status;
|
|
2081
|
+
if (params.guestId !== void 0) query.guestId = params.guestId;
|
|
2082
|
+
if (params.bookingId !== void 0) query.bookingId = params.bookingId;
|
|
2083
|
+
if (params.minRating !== void 0) query.minRating = params.minRating;
|
|
2084
|
+
if (params.maxRating !== void 0) query.maxRating = params.maxRating;
|
|
2085
|
+
if (params.from !== void 0) query.from = params.from;
|
|
2086
|
+
if (params.to !== void 0) query.to = params.to;
|
|
2087
|
+
if (params.sortBy !== void 0) query.sortBy = params.sortBy;
|
|
2088
|
+
if (params.sortOrder !== void 0) query.sortOrder = params.sortOrder;
|
|
2089
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2090
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2091
|
+
return this._get(this._buildPath("reviews"), query);
|
|
2092
|
+
}
|
|
2093
|
+
/** Update a review */
|
|
2094
|
+
updateReview(reviewId, input) {
|
|
2095
|
+
return this._patch(this._buildPath("reviews", reviewId), input);
|
|
2096
|
+
}
|
|
2097
|
+
/** Delete a review */
|
|
2098
|
+
deleteReview(reviewId) {
|
|
2099
|
+
return this._delete(this._buildPath("reviews", reviewId));
|
|
2100
|
+
}
|
|
2101
|
+
// ---------------------------------------------------------------------------
|
|
2102
|
+
// Moderation
|
|
2103
|
+
// ---------------------------------------------------------------------------
|
|
2104
|
+
/** Moderate a review (approve, reject, or flag) */
|
|
2105
|
+
moderateReview(reviewId, input) {
|
|
2106
|
+
return this._post(this._buildPath("reviews", reviewId, "moderate"), input);
|
|
2107
|
+
}
|
|
2108
|
+
// ---------------------------------------------------------------------------
|
|
2109
|
+
// Owner responses
|
|
2110
|
+
// ---------------------------------------------------------------------------
|
|
2111
|
+
/** Create an owner response to a review */
|
|
2112
|
+
createResponse(reviewId, input) {
|
|
2113
|
+
return this._post(this._buildPath("reviews", reviewId, "response"), input);
|
|
2114
|
+
}
|
|
2115
|
+
/** Update an owner response */
|
|
2116
|
+
updateResponse(reviewId, input) {
|
|
2117
|
+
return this._patch(this._buildPath("reviews", reviewId, "response"), input);
|
|
2118
|
+
}
|
|
2119
|
+
/** Delete an owner response */
|
|
2120
|
+
deleteResponse(reviewId) {
|
|
2121
|
+
return this._delete(this._buildPath("reviews", reviewId, "response"));
|
|
2122
|
+
}
|
|
2123
|
+
// ---------------------------------------------------------------------------
|
|
2124
|
+
// Analytics
|
|
2125
|
+
// ---------------------------------------------------------------------------
|
|
2126
|
+
/** Get review analytics for a property */
|
|
2127
|
+
getAnalytics(params) {
|
|
2128
|
+
const query = {};
|
|
2129
|
+
query.propertyId = params.propertyId;
|
|
2130
|
+
if (params.from !== void 0) query.from = params.from;
|
|
2131
|
+
if (params.to !== void 0) query.to = params.to;
|
|
2132
|
+
if (params.period !== void 0) query.period = params.period;
|
|
2133
|
+
return this._get(this._buildPath("reviews", "analytics"), query);
|
|
2134
|
+
}
|
|
2135
|
+
// ---------------------------------------------------------------------------
|
|
2136
|
+
// Review requests
|
|
2137
|
+
// ---------------------------------------------------------------------------
|
|
2138
|
+
/** Send a review request to a guest */
|
|
2139
|
+
sendReviewRequest(input) {
|
|
2140
|
+
return this._post(this._buildPath("reviews", "request"), input);
|
|
2141
|
+
}
|
|
2142
|
+
};
|
|
2143
|
+
|
|
1722
2144
|
// src/services/spaces.ts
|
|
1723
2145
|
var SpacesService = class extends BaseService {
|
|
1724
2146
|
constructor() {
|
|
@@ -1848,6 +2270,190 @@ var SpacesService = class extends BaseService {
|
|
|
1848
2270
|
}
|
|
1849
2271
|
};
|
|
1850
2272
|
|
|
2273
|
+
// src/services/staff.ts
|
|
2274
|
+
var StaffService = class extends BaseService {
|
|
2275
|
+
constructor() {
|
|
2276
|
+
super(...arguments);
|
|
2277
|
+
this.basePath = "/operations/v1/staff";
|
|
2278
|
+
}
|
|
2279
|
+
// ---------------------------------------------------------------------------
|
|
2280
|
+
// Staff CRUD
|
|
2281
|
+
// ---------------------------------------------------------------------------
|
|
2282
|
+
/** Create a staff member */
|
|
2283
|
+
create(input) {
|
|
2284
|
+
return this._post(this.basePath, input);
|
|
2285
|
+
}
|
|
2286
|
+
/** Get a staff member by ID */
|
|
2287
|
+
get(staffId) {
|
|
2288
|
+
return this._get(this._buildPath(staffId));
|
|
2289
|
+
}
|
|
2290
|
+
/** List staff members with optional filters */
|
|
2291
|
+
list(params) {
|
|
2292
|
+
const query = {};
|
|
2293
|
+
query.propertyId = params.propertyId;
|
|
2294
|
+
if (params.department !== void 0) {
|
|
2295
|
+
query.department = Array.isArray(params.department) ? params.department.join(",") : params.department;
|
|
2296
|
+
}
|
|
2297
|
+
if (params.role !== void 0) {
|
|
2298
|
+
query.role = Array.isArray(params.role) ? params.role.join(",") : params.role;
|
|
2299
|
+
}
|
|
2300
|
+
if (params.status !== void 0) query.status = params.status;
|
|
2301
|
+
if (params.search !== void 0) query.search = params.search;
|
|
2302
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2303
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2304
|
+
return this._get(this.basePath, query);
|
|
2305
|
+
}
|
|
2306
|
+
/** Update a staff member */
|
|
2307
|
+
update(staffId, input) {
|
|
2308
|
+
return this._patch(this._buildPath(staffId), input);
|
|
2309
|
+
}
|
|
2310
|
+
/** Delete a staff member */
|
|
2311
|
+
delete(staffId) {
|
|
2312
|
+
return this._delete(this._buildPath(staffId));
|
|
2313
|
+
}
|
|
2314
|
+
// ---------------------------------------------------------------------------
|
|
2315
|
+
// Shift management
|
|
2316
|
+
// ---------------------------------------------------------------------------
|
|
2317
|
+
/** Create a shift for a staff member */
|
|
2318
|
+
createShift(staffId, input) {
|
|
2319
|
+
return this._post(this._buildPath(staffId, "shifts"), input);
|
|
2320
|
+
}
|
|
2321
|
+
/** List shifts for a staff member */
|
|
2322
|
+
listShifts(staffId, params) {
|
|
2323
|
+
if (!params) return this._get(this._buildPath(staffId, "shifts"));
|
|
2324
|
+
const query = {};
|
|
2325
|
+
if (params.startDate !== void 0) query.startDate = params.startDate;
|
|
2326
|
+
if (params.endDate !== void 0) query.endDate = params.endDate;
|
|
2327
|
+
if (params.shiftType !== void 0) {
|
|
2328
|
+
query.shiftType = Array.isArray(params.shiftType) ? params.shiftType.join(",") : params.shiftType;
|
|
2329
|
+
}
|
|
2330
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2331
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2332
|
+
return this._get(this._buildPath(staffId, "shifts"), query);
|
|
2333
|
+
}
|
|
2334
|
+
};
|
|
2335
|
+
|
|
2336
|
+
// src/services/supply.ts
|
|
2337
|
+
var SupplyService = class extends BaseService {
|
|
2338
|
+
constructor() {
|
|
2339
|
+
super(...arguments);
|
|
2340
|
+
this.basePath = "/operations/v1";
|
|
2341
|
+
}
|
|
2342
|
+
// ---------------------------------------------------------------------------
|
|
2343
|
+
// Item CRUD
|
|
2344
|
+
// ---------------------------------------------------------------------------
|
|
2345
|
+
/** Create a supply item */
|
|
2346
|
+
createItem(input) {
|
|
2347
|
+
return this._post(this._buildPath("supply-items"), input);
|
|
2348
|
+
}
|
|
2349
|
+
/** Get a supply item by ID */
|
|
2350
|
+
getItem(itemId) {
|
|
2351
|
+
return this._get(this._buildPath("supply-items", itemId));
|
|
2352
|
+
}
|
|
2353
|
+
/** List supply items with optional filters */
|
|
2354
|
+
listItems(params) {
|
|
2355
|
+
const query = {};
|
|
2356
|
+
query.propertyId = params.propertyId;
|
|
2357
|
+
if (params.category !== void 0) query.category = params.category;
|
|
2358
|
+
if (params.search !== void 0) query.search = params.search;
|
|
2359
|
+
if (params.lowStockOnly !== void 0) query.lowStockOnly = params.lowStockOnly;
|
|
2360
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2361
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2362
|
+
return this._get(this._buildPath("supply-items"), query);
|
|
2363
|
+
}
|
|
2364
|
+
/** Update a supply item */
|
|
2365
|
+
updateItem(itemId, input) {
|
|
2366
|
+
return this._patch(this._buildPath("supply-items", itemId), input);
|
|
2367
|
+
}
|
|
2368
|
+
/** Delete a supply item */
|
|
2369
|
+
deleteItem(itemId) {
|
|
2370
|
+
return this._delete(this._buildPath("supply-items", itemId));
|
|
2371
|
+
}
|
|
2372
|
+
// ---------------------------------------------------------------------------
|
|
2373
|
+
// Stock levels
|
|
2374
|
+
// ---------------------------------------------------------------------------
|
|
2375
|
+
/** Get the current stock level for a supply item */
|
|
2376
|
+
getLevel(itemId) {
|
|
2377
|
+
return this._get(this._buildPath("supply-levels", itemId));
|
|
2378
|
+
}
|
|
2379
|
+
/** List stock levels with optional filters */
|
|
2380
|
+
listLevels(params) {
|
|
2381
|
+
const query = {};
|
|
2382
|
+
query.propertyId = params.propertyId;
|
|
2383
|
+
if (params.category !== void 0) query.category = params.category;
|
|
2384
|
+
if (params.lowStockOnly !== void 0) query.lowStockOnly = params.lowStockOnly;
|
|
2385
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2386
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2387
|
+
return this._get(this._buildPath("supply-levels"), query);
|
|
2388
|
+
}
|
|
2389
|
+
/** Update a stock level manually */
|
|
2390
|
+
updateLevel(itemId, input) {
|
|
2391
|
+
return this._patch(this._buildPath("supply-levels", itemId), input);
|
|
2392
|
+
}
|
|
2393
|
+
// ---------------------------------------------------------------------------
|
|
2394
|
+
// Movements
|
|
2395
|
+
// ---------------------------------------------------------------------------
|
|
2396
|
+
/** Record a stock movement */
|
|
2397
|
+
createMovement(input) {
|
|
2398
|
+
return this._post(this._buildPath("supply-movements"), input);
|
|
2399
|
+
}
|
|
2400
|
+
/** List supply movements with optional filters */
|
|
2401
|
+
listMovements(params) {
|
|
2402
|
+
const query = {};
|
|
2403
|
+
query.propertyId = params.propertyId;
|
|
2404
|
+
if (params.itemId !== void 0) query.itemId = params.itemId;
|
|
2405
|
+
if (params.type !== void 0) query.type = params.type;
|
|
2406
|
+
if (params.from !== void 0) query.from = params.from;
|
|
2407
|
+
if (params.to !== void 0) query.to = params.to;
|
|
2408
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2409
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2410
|
+
return this._get(this._buildPath("supply-movements"), query);
|
|
2411
|
+
}
|
|
2412
|
+
// ---------------------------------------------------------------------------
|
|
2413
|
+
// Low-stock alerts
|
|
2414
|
+
// ---------------------------------------------------------------------------
|
|
2415
|
+
/** List items whose stock is at or below reorder threshold */
|
|
2416
|
+
listLowStock(params) {
|
|
2417
|
+
const query = {};
|
|
2418
|
+
query.propertyId = params.propertyId;
|
|
2419
|
+
if (params.category !== void 0) query.category = params.category;
|
|
2420
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2421
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2422
|
+
return this._get(this._buildPath("supply-items", "low-stock"), query);
|
|
2423
|
+
}
|
|
2424
|
+
};
|
|
2425
|
+
|
|
2426
|
+
// src/services/tasks.ts
|
|
2427
|
+
var TasksService = class extends BaseService {
|
|
2428
|
+
constructor() {
|
|
2429
|
+
super(...arguments);
|
|
2430
|
+
this.basePath = "/operations/v1/tasks";
|
|
2431
|
+
}
|
|
2432
|
+
/** Create an operational task */
|
|
2433
|
+
create(input) {
|
|
2434
|
+
return this._post(this.basePath, input);
|
|
2435
|
+
}
|
|
2436
|
+
/** List operational tasks with optional filters */
|
|
2437
|
+
list(params) {
|
|
2438
|
+
if (!params) return this._get(this.basePath);
|
|
2439
|
+
const query = {};
|
|
2440
|
+
if (params.propertyId !== void 0) query.propertyId = params.propertyId;
|
|
2441
|
+
if (params.status !== void 0) query.status = params.status;
|
|
2442
|
+
if (params.priority !== void 0) query.priority = params.priority;
|
|
2443
|
+
if (params.assignedTo !== void 0) query.assignedTo = params.assignedTo;
|
|
2444
|
+
if (params.category !== void 0) query.category = params.category;
|
|
2445
|
+
if (params.from !== void 0) query.from = params.from;
|
|
2446
|
+
if (params.to !== void 0) query.to = params.to;
|
|
2447
|
+
if (params.limit !== void 0) query.limit = params.limit;
|
|
2448
|
+
if (params.cursor !== void 0) query.cursor = params.cursor;
|
|
2449
|
+
return this._get(this.basePath, query);
|
|
2450
|
+
}
|
|
2451
|
+
/** Update an operational task */
|
|
2452
|
+
update(taskId, input) {
|
|
2453
|
+
return this._patch(this._buildPath(taskId), input);
|
|
2454
|
+
}
|
|
2455
|
+
};
|
|
2456
|
+
|
|
1851
2457
|
// src/client.ts
|
|
1852
2458
|
var BookingClient = class {
|
|
1853
2459
|
constructor(config) {
|
|
@@ -1885,11 +2491,26 @@ var BookingClient = class {
|
|
|
1885
2491
|
this._finance ?? (this._finance = new FinanceService(this.httpClient));
|
|
1886
2492
|
return this._finance;
|
|
1887
2493
|
}
|
|
2494
|
+
/** Groups service — lazy-initialized on first access */
|
|
2495
|
+
get groups() {
|
|
2496
|
+
this._groups ?? (this._groups = new GroupsService(this.httpClient));
|
|
2497
|
+
return this._groups;
|
|
2498
|
+
}
|
|
1888
2499
|
/** Guests service — lazy-initialized on first access */
|
|
1889
2500
|
get guests() {
|
|
1890
2501
|
this._guests ?? (this._guests = new GuestsService(this.httpClient));
|
|
1891
2502
|
return this._guests;
|
|
1892
2503
|
}
|
|
2504
|
+
/** Housekeeping service — lazy-initialized on first access */
|
|
2505
|
+
get housekeeping() {
|
|
2506
|
+
this._housekeeping ?? (this._housekeeping = new HousekeepingService(this.httpClient));
|
|
2507
|
+
return this._housekeeping;
|
|
2508
|
+
}
|
|
2509
|
+
/** Night audit service — lazy-initialized on first access */
|
|
2510
|
+
get nightAudit() {
|
|
2511
|
+
this._nightAudit ?? (this._nightAudit = new NightAuditService(this.httpClient));
|
|
2512
|
+
return this._nightAudit;
|
|
2513
|
+
}
|
|
1893
2514
|
/** Payments service — lazy-initialized on first access */
|
|
1894
2515
|
get payments() {
|
|
1895
2516
|
this._payments ?? (this._payments = new PaymentsService(this.httpClient));
|
|
@@ -1900,16 +2521,46 @@ var BookingClient = class {
|
|
|
1900
2521
|
this._properties ?? (this._properties = new PropertiesService(this.httpClient));
|
|
1901
2522
|
return this._properties;
|
|
1902
2523
|
}
|
|
2524
|
+
/** Rate plans service — lazy-initialized on first access */
|
|
2525
|
+
get ratePlans() {
|
|
2526
|
+
this._ratePlans ?? (this._ratePlans = new RatePlansService(this.httpClient));
|
|
2527
|
+
return this._ratePlans;
|
|
2528
|
+
}
|
|
1903
2529
|
/** Categories service — lazy-initialized on first access */
|
|
1904
2530
|
get categories() {
|
|
1905
2531
|
this._categories ?? (this._categories = new CategoriesService(this.httpClient));
|
|
1906
2532
|
return this._categories;
|
|
1907
2533
|
}
|
|
2534
|
+
/** Discounts service — lazy-initialized on first access */
|
|
2535
|
+
get discounts() {
|
|
2536
|
+
this._discounts ?? (this._discounts = new DiscountsService(this.httpClient));
|
|
2537
|
+
return this._discounts;
|
|
2538
|
+
}
|
|
2539
|
+
/** Reviews service — lazy-initialized on first access */
|
|
2540
|
+
get reviews() {
|
|
2541
|
+
this._reviews ?? (this._reviews = new ReviewsService(this.httpClient));
|
|
2542
|
+
return this._reviews;
|
|
2543
|
+
}
|
|
1908
2544
|
/** Spaces service — lazy-initialized on first access */
|
|
1909
2545
|
get spaces() {
|
|
1910
2546
|
this._spaces ?? (this._spaces = new SpacesService(this.httpClient));
|
|
1911
2547
|
return this._spaces;
|
|
1912
2548
|
}
|
|
2549
|
+
/** Staff service — lazy-initialized on first access */
|
|
2550
|
+
get staff() {
|
|
2551
|
+
this._staff ?? (this._staff = new StaffService(this.httpClient));
|
|
2552
|
+
return this._staff;
|
|
2553
|
+
}
|
|
2554
|
+
/** Supply service — lazy-initialized on first access */
|
|
2555
|
+
get supply() {
|
|
2556
|
+
this._supply ?? (this._supply = new SupplyService(this.httpClient));
|
|
2557
|
+
return this._supply;
|
|
2558
|
+
}
|
|
2559
|
+
/** Tasks service — lazy-initialized on first access */
|
|
2560
|
+
get tasks() {
|
|
2561
|
+
this._tasks ?? (this._tasks = new TasksService(this.httpClient));
|
|
2562
|
+
return this._tasks;
|
|
2563
|
+
}
|
|
1913
2564
|
setApiKey(key) {
|
|
1914
2565
|
if (!key || key.trim().length === 0) {
|
|
1915
2566
|
throw new Error("apiKey must be a non-empty string");
|
|
@@ -2027,21 +2678,30 @@ export {
|
|
|
2027
2678
|
CategoriesService,
|
|
2028
2679
|
ConflictError,
|
|
2029
2680
|
DEFAULT_MODULES,
|
|
2681
|
+
DiscountsService,
|
|
2030
2682
|
DistributionService,
|
|
2031
2683
|
FinanceService,
|
|
2032
2684
|
ForbiddenError,
|
|
2685
|
+
GroupsService,
|
|
2033
2686
|
GuestsService,
|
|
2687
|
+
HousekeepingService,
|
|
2034
2688
|
HttpClient,
|
|
2689
|
+
NightAuditService,
|
|
2035
2690
|
NotFoundError,
|
|
2036
2691
|
PROPERTY_MODULES,
|
|
2037
2692
|
PaymentError,
|
|
2038
2693
|
PaymentsService,
|
|
2039
2694
|
PropertiesService,
|
|
2040
2695
|
RateLimitError,
|
|
2696
|
+
RatePlansService,
|
|
2697
|
+
ReviewsService,
|
|
2041
2698
|
SPACE_STATUSES,
|
|
2042
2699
|
SPACE_TYPES,
|
|
2043
2700
|
ServerError,
|
|
2044
2701
|
SpacesService,
|
|
2702
|
+
StaffService,
|
|
2703
|
+
SupplyService,
|
|
2704
|
+
TasksService,
|
|
2045
2705
|
TimeoutError,
|
|
2046
2706
|
VERSION,
|
|
2047
2707
|
ValidationError,
|