@atzentis/booking-sdk 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +286 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +579 -1
- package/dist/index.d.ts +579 -1
- package/dist/index.js +285 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1197,6 +1197,581 @@ declare class CategoriesService extends BaseService {
|
|
|
1197
1197
|
delete(categoryId: string): Promise<void>;
|
|
1198
1198
|
}
|
|
1199
1199
|
|
|
1200
|
+
/** Guest address */
|
|
1201
|
+
interface GuestAddress {
|
|
1202
|
+
/** Street address */
|
|
1203
|
+
street: string | null;
|
|
1204
|
+
/** City */
|
|
1205
|
+
city: string | null;
|
|
1206
|
+
/** State or province */
|
|
1207
|
+
state: string | null;
|
|
1208
|
+
/** Postal/ZIP code */
|
|
1209
|
+
postalCode: string | null;
|
|
1210
|
+
/** ISO 3166-1 alpha-2 country code */
|
|
1211
|
+
country: string | null;
|
|
1212
|
+
}
|
|
1213
|
+
/** A guest profile in the Atzentis system */
|
|
1214
|
+
interface Guest {
|
|
1215
|
+
/** Guest identifier */
|
|
1216
|
+
id: string;
|
|
1217
|
+
/** First name */
|
|
1218
|
+
firstName: string;
|
|
1219
|
+
/** Last name */
|
|
1220
|
+
lastName: string;
|
|
1221
|
+
/** Email address */
|
|
1222
|
+
email: string | null;
|
|
1223
|
+
/** Phone number */
|
|
1224
|
+
phone: string | null;
|
|
1225
|
+
/** Date of birth in YYYY-MM-DD format */
|
|
1226
|
+
dateOfBirth: string | null;
|
|
1227
|
+
/** ISO 3166-1 alpha-2 nationality code */
|
|
1228
|
+
nationality: string | null;
|
|
1229
|
+
/** ISO 639-1 language code */
|
|
1230
|
+
language: string | null;
|
|
1231
|
+
/** Guest address */
|
|
1232
|
+
address: GuestAddress | null;
|
|
1233
|
+
/** Company name */
|
|
1234
|
+
company: string | null;
|
|
1235
|
+
/** Passport number */
|
|
1236
|
+
passportNumber: string | null;
|
|
1237
|
+
/** National ID number */
|
|
1238
|
+
idNumber: string | null;
|
|
1239
|
+
/** Free-text notes */
|
|
1240
|
+
notes: string | null;
|
|
1241
|
+
/** Tags for categorization */
|
|
1242
|
+
tags: string[];
|
|
1243
|
+
/** How the guest was acquired */
|
|
1244
|
+
source: string | null;
|
|
1245
|
+
/** Open bag for custom data */
|
|
1246
|
+
metadata: Record<string, unknown> | null;
|
|
1247
|
+
/** Record creation timestamp */
|
|
1248
|
+
createdAt: string;
|
|
1249
|
+
/** Record last-update timestamp */
|
|
1250
|
+
updatedAt: string;
|
|
1251
|
+
/** Soft-delete timestamp, null if active */
|
|
1252
|
+
deletedAt: string | null;
|
|
1253
|
+
}
|
|
1254
|
+
/** Input for creating a new guest */
|
|
1255
|
+
interface CreateGuestInput {
|
|
1256
|
+
/** First name (required) */
|
|
1257
|
+
firstName: string;
|
|
1258
|
+
/** Last name (required) */
|
|
1259
|
+
lastName: string;
|
|
1260
|
+
/** Email address */
|
|
1261
|
+
email?: string;
|
|
1262
|
+
/** Phone number */
|
|
1263
|
+
phone?: string;
|
|
1264
|
+
/** Date of birth in YYYY-MM-DD format */
|
|
1265
|
+
dateOfBirth?: string;
|
|
1266
|
+
/** ISO 3166-1 alpha-2 nationality code */
|
|
1267
|
+
nationality?: string;
|
|
1268
|
+
/** ISO 639-1 language code */
|
|
1269
|
+
language?: string;
|
|
1270
|
+
/** Guest address */
|
|
1271
|
+
address?: GuestAddress;
|
|
1272
|
+
/** Company name */
|
|
1273
|
+
company?: string;
|
|
1274
|
+
/** Passport number */
|
|
1275
|
+
passportNumber?: string;
|
|
1276
|
+
/** National ID number */
|
|
1277
|
+
idNumber?: string;
|
|
1278
|
+
/** Free-text notes */
|
|
1279
|
+
notes?: string;
|
|
1280
|
+
/** Tags for categorization */
|
|
1281
|
+
tags?: string[];
|
|
1282
|
+
/** How the guest was acquired */
|
|
1283
|
+
source?: string;
|
|
1284
|
+
/** Custom metadata */
|
|
1285
|
+
metadata?: Record<string, unknown>;
|
|
1286
|
+
}
|
|
1287
|
+
/** Input for updating an existing guest — all fields optional */
|
|
1288
|
+
interface UpdateGuestInput {
|
|
1289
|
+
/** Update first name */
|
|
1290
|
+
firstName?: string;
|
|
1291
|
+
/** Update last name */
|
|
1292
|
+
lastName?: string;
|
|
1293
|
+
/** Update email */
|
|
1294
|
+
email?: string | null;
|
|
1295
|
+
/** Update phone */
|
|
1296
|
+
phone?: string | null;
|
|
1297
|
+
/** Update date of birth */
|
|
1298
|
+
dateOfBirth?: string | null;
|
|
1299
|
+
/** Update nationality */
|
|
1300
|
+
nationality?: string | null;
|
|
1301
|
+
/** Update language */
|
|
1302
|
+
language?: string | null;
|
|
1303
|
+
/** Update address */
|
|
1304
|
+
address?: GuestAddress | null;
|
|
1305
|
+
/** Update company */
|
|
1306
|
+
company?: string | null;
|
|
1307
|
+
/** Update passport number */
|
|
1308
|
+
passportNumber?: string | null;
|
|
1309
|
+
/** Update ID number */
|
|
1310
|
+
idNumber?: string | null;
|
|
1311
|
+
/** Update notes */
|
|
1312
|
+
notes?: string | null;
|
|
1313
|
+
/** Update tags */
|
|
1314
|
+
tags?: string[];
|
|
1315
|
+
/** Update source */
|
|
1316
|
+
source?: string | null;
|
|
1317
|
+
/** Update metadata */
|
|
1318
|
+
metadata?: Record<string, unknown> | null;
|
|
1319
|
+
}
|
|
1320
|
+
/** Sort configuration for guest list queries */
|
|
1321
|
+
interface GuestSort {
|
|
1322
|
+
/** Field to sort by */
|
|
1323
|
+
field: "firstName" | "lastName" | "email" | "createdAt" | "updatedAt";
|
|
1324
|
+
/** Sort direction */
|
|
1325
|
+
direction: "asc" | "desc";
|
|
1326
|
+
}
|
|
1327
|
+
/** Query parameters for listing guests */
|
|
1328
|
+
interface ListGuestsParams {
|
|
1329
|
+
/** Filter by tags (guests matching any of these tags) */
|
|
1330
|
+
tags?: string[];
|
|
1331
|
+
/** Filter by source */
|
|
1332
|
+
source?: string;
|
|
1333
|
+
/** Filter by creation date (from) */
|
|
1334
|
+
createdFrom?: string;
|
|
1335
|
+
/** Filter by creation date (to) */
|
|
1336
|
+
createdTo?: string;
|
|
1337
|
+
/** Sort configuration */
|
|
1338
|
+
sort?: GuestSort;
|
|
1339
|
+
/** Maximum results per page */
|
|
1340
|
+
limit?: number;
|
|
1341
|
+
/** Pagination cursor */
|
|
1342
|
+
cursor?: string;
|
|
1343
|
+
}
|
|
1344
|
+
/** Paginated list of guests */
|
|
1345
|
+
interface PaginatedGuests {
|
|
1346
|
+
/** Guests in this page */
|
|
1347
|
+
data: Guest[];
|
|
1348
|
+
/** Total number of matching guests */
|
|
1349
|
+
totalCount: number;
|
|
1350
|
+
/** Cursor for next page, null if no more results */
|
|
1351
|
+
cursor: string | null;
|
|
1352
|
+
/** Whether more results are available */
|
|
1353
|
+
hasMore: boolean;
|
|
1354
|
+
}
|
|
1355
|
+
/** Parameters for searching guests */
|
|
1356
|
+
interface SearchGuestsParams {
|
|
1357
|
+
/** Maximum results to return */
|
|
1358
|
+
limit?: number;
|
|
1359
|
+
/** Fields to search in (e.g., ["firstName", "lastName", "email"]) */
|
|
1360
|
+
fields?: string[];
|
|
1361
|
+
}
|
|
1362
|
+
/** A guest match from a search, includes relevance score */
|
|
1363
|
+
interface GuestMatch extends Guest {
|
|
1364
|
+
/** Relevance score between 0 and 1 (1 = exact match) */
|
|
1365
|
+
score: number;
|
|
1366
|
+
}
|
|
1367
|
+
/** Result of a guest search */
|
|
1368
|
+
interface GuestSearchResult {
|
|
1369
|
+
/** Matching guests sorted by score (highest first) */
|
|
1370
|
+
data: GuestMatch[];
|
|
1371
|
+
/** Total number of matches */
|
|
1372
|
+
totalCount: number;
|
|
1373
|
+
}
|
|
1374
|
+
/** A potential duplicate candidate */
|
|
1375
|
+
interface DuplicateCandidate {
|
|
1376
|
+
/** The potential duplicate guest */
|
|
1377
|
+
guest: Guest;
|
|
1378
|
+
/** Confidence score between 0 and 1 (1 = certain duplicate) */
|
|
1379
|
+
confidence: number;
|
|
1380
|
+
/** Fields that matched (e.g., ["email", "phone"]) */
|
|
1381
|
+
matchedFields: string[];
|
|
1382
|
+
}
|
|
1383
|
+
/** Result of duplicate detection */
|
|
1384
|
+
interface GuestDuplicateResult {
|
|
1385
|
+
/** Potential duplicates sorted by confidence (highest first) */
|
|
1386
|
+
data: DuplicateCandidate[];
|
|
1387
|
+
}
|
|
1388
|
+
/** Input for merging duplicate guests into a primary profile */
|
|
1389
|
+
interface MergeGuestsInput {
|
|
1390
|
+
/** IDs of duplicate guests to merge into the primary (required, non-empty) */
|
|
1391
|
+
duplicateIds: string[];
|
|
1392
|
+
}
|
|
1393
|
+
/**
|
|
1394
|
+
* Guest preferences with typed common fields and a custom catch-all.
|
|
1395
|
+
*
|
|
1396
|
+
* Common fields cover typical hospitality preferences.
|
|
1397
|
+
* Use `custom` for vertical-specific or property-specific data.
|
|
1398
|
+
*/
|
|
1399
|
+
interface GuestPreferences {
|
|
1400
|
+
/** Preferred room type (e.g., "single", "double", "suite") */
|
|
1401
|
+
roomType: string | null;
|
|
1402
|
+
/** Preferred floor (e.g., "high", "low", "ground") */
|
|
1403
|
+
floorPreference: string | null;
|
|
1404
|
+
/** Preferred bed type (e.g., "king", "twin", "queen") */
|
|
1405
|
+
bedType: string | null;
|
|
1406
|
+
/** Dietary requirements (e.g., "vegetarian", "vegan", "gluten-free") */
|
|
1407
|
+
dietary: string[];
|
|
1408
|
+
/** Known allergies */
|
|
1409
|
+
allergies: string[];
|
|
1410
|
+
/** Preferred communication channel (e.g., "email", "sms", "whatsapp") */
|
|
1411
|
+
communicationChannel: string | null;
|
|
1412
|
+
/** Preferred language for communication */
|
|
1413
|
+
language: string | null;
|
|
1414
|
+
/** Smoking preference */
|
|
1415
|
+
smoking: boolean | null;
|
|
1416
|
+
/** Accessibility requirements */
|
|
1417
|
+
accessibility: string[];
|
|
1418
|
+
/** Free-text special requests */
|
|
1419
|
+
specialRequests: string | null;
|
|
1420
|
+
/** Catch-all for vertical-specific preferences */
|
|
1421
|
+
custom: Record<string, unknown>;
|
|
1422
|
+
}
|
|
1423
|
+
/** Input for updating guest preferences — all fields optional, partial merge */
|
|
1424
|
+
interface UpdateGuestPreferences {
|
|
1425
|
+
/** Update room type preference */
|
|
1426
|
+
roomType?: string | null;
|
|
1427
|
+
/** Update floor preference */
|
|
1428
|
+
floorPreference?: string | null;
|
|
1429
|
+
/** Update bed type preference */
|
|
1430
|
+
bedType?: string | null;
|
|
1431
|
+
/** Update dietary requirements */
|
|
1432
|
+
dietary?: string[];
|
|
1433
|
+
/** Update allergies */
|
|
1434
|
+
allergies?: string[];
|
|
1435
|
+
/** Update communication channel */
|
|
1436
|
+
communicationChannel?: string | null;
|
|
1437
|
+
/** Update language preference */
|
|
1438
|
+
language?: string | null;
|
|
1439
|
+
/** Update smoking preference */
|
|
1440
|
+
smoking?: boolean | null;
|
|
1441
|
+
/** Update accessibility requirements */
|
|
1442
|
+
accessibility?: string[];
|
|
1443
|
+
/** Update special requests */
|
|
1444
|
+
specialRequests?: string | null;
|
|
1445
|
+
/** Update custom preferences (merged, not replaced) */
|
|
1446
|
+
custom?: Record<string, unknown>;
|
|
1447
|
+
}
|
|
1448
|
+
/** Parameters for guest history queries */
|
|
1449
|
+
interface GuestHistoryParams {
|
|
1450
|
+
/** Maximum results per page */
|
|
1451
|
+
limit?: number;
|
|
1452
|
+
/** Pagination cursor */
|
|
1453
|
+
cursor?: string;
|
|
1454
|
+
/** Filter from date in YYYY-MM-DD format */
|
|
1455
|
+
from?: string;
|
|
1456
|
+
/** Filter to date in YYYY-MM-DD format */
|
|
1457
|
+
to?: string;
|
|
1458
|
+
}
|
|
1459
|
+
/** Lightweight booking summary for guest history */
|
|
1460
|
+
interface GuestBookingSummary {
|
|
1461
|
+
/** Booking identifier */
|
|
1462
|
+
id: string;
|
|
1463
|
+
/** Property identifier */
|
|
1464
|
+
propertyId: string;
|
|
1465
|
+
/** Property display name */
|
|
1466
|
+
propertyName: string;
|
|
1467
|
+
/** Booking type */
|
|
1468
|
+
type: BookingType;
|
|
1469
|
+
/** Booking status */
|
|
1470
|
+
status: BookingStatus;
|
|
1471
|
+
/** Check-in date */
|
|
1472
|
+
checkIn: string;
|
|
1473
|
+
/** Check-out date */
|
|
1474
|
+
checkOut: string;
|
|
1475
|
+
/** Total amount in cents */
|
|
1476
|
+
totalAmount: number;
|
|
1477
|
+
/** ISO 4217 currency code */
|
|
1478
|
+
currency: string;
|
|
1479
|
+
}
|
|
1480
|
+
/** Lightweight folio summary for guest history */
|
|
1481
|
+
interface GuestFolioSummary {
|
|
1482
|
+
/** Folio identifier */
|
|
1483
|
+
id: string;
|
|
1484
|
+
/** Associated booking ID */
|
|
1485
|
+
bookingId: string;
|
|
1486
|
+
/** Property identifier */
|
|
1487
|
+
propertyId: string;
|
|
1488
|
+
/** Folio status */
|
|
1489
|
+
status: string;
|
|
1490
|
+
/** Total charges in cents */
|
|
1491
|
+
totalCharges: number;
|
|
1492
|
+
/** Total payments in cents */
|
|
1493
|
+
totalPayments: number;
|
|
1494
|
+
/** Outstanding balance in cents */
|
|
1495
|
+
balance: number;
|
|
1496
|
+
/** ISO 4217 currency code */
|
|
1497
|
+
currency: string;
|
|
1498
|
+
/** When the folio was closed, null if open */
|
|
1499
|
+
closedAt: string | null;
|
|
1500
|
+
}
|
|
1501
|
+
/** Lightweight order summary for guest history */
|
|
1502
|
+
interface GuestOrderSummary {
|
|
1503
|
+
/** Order identifier */
|
|
1504
|
+
id: string;
|
|
1505
|
+
/** Property identifier */
|
|
1506
|
+
propertyId: string;
|
|
1507
|
+
/** Order type */
|
|
1508
|
+
type: string;
|
|
1509
|
+
/** Order status */
|
|
1510
|
+
status: string;
|
|
1511
|
+
/** Total amount in cents */
|
|
1512
|
+
totalAmount: number;
|
|
1513
|
+
/** ISO 4217 currency code */
|
|
1514
|
+
currency: string;
|
|
1515
|
+
/** Number of items in the order */
|
|
1516
|
+
items: number;
|
|
1517
|
+
/** Order creation timestamp */
|
|
1518
|
+
createdAt: string;
|
|
1519
|
+
}
|
|
1520
|
+
/** Paginated list of guest booking summaries */
|
|
1521
|
+
interface PaginatedGuestBookings {
|
|
1522
|
+
/** Booking summaries in this page */
|
|
1523
|
+
data: GuestBookingSummary[];
|
|
1524
|
+
/** Total number of bookings */
|
|
1525
|
+
totalCount: number;
|
|
1526
|
+
/** Cursor for next page, null if no more results */
|
|
1527
|
+
cursor: string | null;
|
|
1528
|
+
/** Whether more results are available */
|
|
1529
|
+
hasMore: boolean;
|
|
1530
|
+
}
|
|
1531
|
+
/** Paginated list of guest folio summaries */
|
|
1532
|
+
interface PaginatedGuestFolios {
|
|
1533
|
+
/** Folio summaries in this page */
|
|
1534
|
+
data: GuestFolioSummary[];
|
|
1535
|
+
/** Total number of folios */
|
|
1536
|
+
totalCount: number;
|
|
1537
|
+
/** Cursor for next page, null if no more results */
|
|
1538
|
+
cursor: string | null;
|
|
1539
|
+
/** Whether more results are available */
|
|
1540
|
+
hasMore: boolean;
|
|
1541
|
+
}
|
|
1542
|
+
/** Paginated list of guest order summaries */
|
|
1543
|
+
interface PaginatedGuestOrders {
|
|
1544
|
+
/** Order summaries in this page */
|
|
1545
|
+
data: GuestOrderSummary[];
|
|
1546
|
+
/** Total number of orders */
|
|
1547
|
+
totalCount: number;
|
|
1548
|
+
/** Cursor for next page, null if no more results */
|
|
1549
|
+
cursor: string | null;
|
|
1550
|
+
/** Whether more results are available */
|
|
1551
|
+
hasMore: boolean;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
/**
|
|
1555
|
+
* Service for managing guest profiles in the Atzentis Booking API.
|
|
1556
|
+
*
|
|
1557
|
+
* Provides full CRUD, search with scoring, duplicate detection,
|
|
1558
|
+
* profile merging, preferences management, and cross-domain history
|
|
1559
|
+
* (bookings, folios, orders).
|
|
1560
|
+
*
|
|
1561
|
+
* @example
|
|
1562
|
+
* ```typescript
|
|
1563
|
+
* const booking = new BookingClient({ apiKey: "atz_io_live_xxxxx" });
|
|
1564
|
+
*
|
|
1565
|
+
* // Create a guest
|
|
1566
|
+
* const guest = await booking.guests.create({
|
|
1567
|
+
* firstName: "John",
|
|
1568
|
+
* lastName: "Doe",
|
|
1569
|
+
* email: "john@example.com",
|
|
1570
|
+
* });
|
|
1571
|
+
*
|
|
1572
|
+
* // Search for guests
|
|
1573
|
+
* const results = await booking.guests.search("Doe");
|
|
1574
|
+
*
|
|
1575
|
+
* // Get booking history
|
|
1576
|
+
* const history = await booking.guests.getBookings(guest.id);
|
|
1577
|
+
* ```
|
|
1578
|
+
*/
|
|
1579
|
+
declare class GuestsService extends BaseService {
|
|
1580
|
+
protected readonly basePath = "/guest/v1/profiles";
|
|
1581
|
+
/**
|
|
1582
|
+
* Create a new guest profile.
|
|
1583
|
+
*
|
|
1584
|
+
* @example
|
|
1585
|
+
* ```typescript
|
|
1586
|
+
* const guest = await client.guests.create({
|
|
1587
|
+
* firstName: "Maria",
|
|
1588
|
+
* lastName: "Papadopoulou",
|
|
1589
|
+
* email: "maria@example.com",
|
|
1590
|
+
* phone: "+30 210 1234567",
|
|
1591
|
+
* nationality: "GR",
|
|
1592
|
+
* });
|
|
1593
|
+
* ```
|
|
1594
|
+
*/
|
|
1595
|
+
create(input: CreateGuestInput): Promise<Guest>;
|
|
1596
|
+
/**
|
|
1597
|
+
* Get a single guest by ID.
|
|
1598
|
+
*
|
|
1599
|
+
* @example
|
|
1600
|
+
* ```typescript
|
|
1601
|
+
* const guest = await client.guests.get("guest_42");
|
|
1602
|
+
* ```
|
|
1603
|
+
*/
|
|
1604
|
+
get(guestId: string): Promise<Guest>;
|
|
1605
|
+
/**
|
|
1606
|
+
* List guests with optional filters and cursor-based pagination.
|
|
1607
|
+
*
|
|
1608
|
+
* @example
|
|
1609
|
+
* ```typescript
|
|
1610
|
+
* const page = await client.guests.list({
|
|
1611
|
+
* tags: ["vip", "returning"],
|
|
1612
|
+
* sort: { field: "lastName", direction: "asc" },
|
|
1613
|
+
* limit: 20,
|
|
1614
|
+
* });
|
|
1615
|
+
* ```
|
|
1616
|
+
*/
|
|
1617
|
+
list(params?: ListGuestsParams): Promise<PaginatedGuests>;
|
|
1618
|
+
/**
|
|
1619
|
+
* Update an existing guest profile.
|
|
1620
|
+
*
|
|
1621
|
+
* @example
|
|
1622
|
+
* ```typescript
|
|
1623
|
+
* const updated = await client.guests.update("guest_42", {
|
|
1624
|
+
* email: "maria.new@example.com",
|
|
1625
|
+
* tags: ["vip"],
|
|
1626
|
+
* });
|
|
1627
|
+
* ```
|
|
1628
|
+
*/
|
|
1629
|
+
update(guestId: string, input: UpdateGuestInput): Promise<Guest>;
|
|
1630
|
+
/**
|
|
1631
|
+
* Delete a guest profile (soft-delete).
|
|
1632
|
+
*
|
|
1633
|
+
* @example
|
|
1634
|
+
* ```typescript
|
|
1635
|
+
* await client.guests.delete("guest_42");
|
|
1636
|
+
* ```
|
|
1637
|
+
*/
|
|
1638
|
+
delete(guestId: string): Promise<void>;
|
|
1639
|
+
/**
|
|
1640
|
+
* Search guests by name, email, phone, or passport number.
|
|
1641
|
+
*
|
|
1642
|
+
* Returns results sorted by relevance score (highest first).
|
|
1643
|
+
*
|
|
1644
|
+
* @param query - Search query string
|
|
1645
|
+
* @param params - Optional search parameters (limit, fields)
|
|
1646
|
+
*
|
|
1647
|
+
* @example
|
|
1648
|
+
* ```typescript
|
|
1649
|
+
* // Search by name
|
|
1650
|
+
* const results = await client.guests.search("Papadopoulos");
|
|
1651
|
+
*
|
|
1652
|
+
* // Search by email with field filter
|
|
1653
|
+
* const results2 = await client.guests.search("maria@", {
|
|
1654
|
+
* fields: ["email"],
|
|
1655
|
+
* limit: 5,
|
|
1656
|
+
* });
|
|
1657
|
+
* ```
|
|
1658
|
+
*/
|
|
1659
|
+
search(query: string, params?: SearchGuestsParams): Promise<GuestSearchResult>;
|
|
1660
|
+
/**
|
|
1661
|
+
* Find potential duplicate profiles for a guest.
|
|
1662
|
+
*
|
|
1663
|
+
* Returns candidates sorted by confidence score (highest first).
|
|
1664
|
+
*
|
|
1665
|
+
* @throws {NotFoundError} 404 if the guest is not found
|
|
1666
|
+
*
|
|
1667
|
+
* @example
|
|
1668
|
+
* ```typescript
|
|
1669
|
+
* const duplicates = await client.guests.findDuplicates("guest_42");
|
|
1670
|
+
* for (const dup of duplicates.data) {
|
|
1671
|
+
* console.log(`${dup.guest.firstName} — ${dup.confidence} (${dup.matchedFields})`);
|
|
1672
|
+
* }
|
|
1673
|
+
* ```
|
|
1674
|
+
*/
|
|
1675
|
+
findDuplicates(guestId: string): Promise<GuestDuplicateResult>;
|
|
1676
|
+
/**
|
|
1677
|
+
* Merge duplicate guest profiles into a primary profile.
|
|
1678
|
+
*
|
|
1679
|
+
* **Warning: This operation is irreversible.** All history from duplicate
|
|
1680
|
+
* profiles is transferred to the primary. Duplicate profiles are soft-deleted.
|
|
1681
|
+
*
|
|
1682
|
+
* @throws {NotFoundError} 404 if primary or any duplicate is not found
|
|
1683
|
+
* @throws {ConflictError} 409 if attempting to merge a guest into itself
|
|
1684
|
+
* @throws {ValidationError} 400 if duplicateIds is empty
|
|
1685
|
+
*
|
|
1686
|
+
* @example
|
|
1687
|
+
* ```typescript
|
|
1688
|
+
* const merged = await client.guests.merge("guest_primary", {
|
|
1689
|
+
* duplicateIds: ["guest_dup1", "guest_dup2"],
|
|
1690
|
+
* });
|
|
1691
|
+
* ```
|
|
1692
|
+
*/
|
|
1693
|
+
merge(primaryId: string, input: MergeGuestsInput): Promise<Guest>;
|
|
1694
|
+
/**
|
|
1695
|
+
* Get guest preferences.
|
|
1696
|
+
*
|
|
1697
|
+
* Returns default/empty preferences if none have been set (does not throw 404).
|
|
1698
|
+
*
|
|
1699
|
+
* @throws {NotFoundError} 404 if the guest is not found
|
|
1700
|
+
*
|
|
1701
|
+
* @example
|
|
1702
|
+
* ```typescript
|
|
1703
|
+
* const prefs = await client.guests.getPreferences("guest_42");
|
|
1704
|
+
* console.log(prefs.dietary, prefs.roomType);
|
|
1705
|
+
* ```
|
|
1706
|
+
*/
|
|
1707
|
+
getPreferences(guestId: string): Promise<GuestPreferences>;
|
|
1708
|
+
/**
|
|
1709
|
+
* Update guest preferences (partial merge).
|
|
1710
|
+
*
|
|
1711
|
+
* Only provided fields are updated; unspecified fields retain their values.
|
|
1712
|
+
*
|
|
1713
|
+
* @throws {NotFoundError} 404 if the guest is not found
|
|
1714
|
+
*
|
|
1715
|
+
* @example
|
|
1716
|
+
* ```typescript
|
|
1717
|
+
* const updated = await client.guests.updatePreferences("guest_42", {
|
|
1718
|
+
* dietary: ["vegetarian"],
|
|
1719
|
+
* roomType: "suite",
|
|
1720
|
+
* custom: { pillow: "firm" },
|
|
1721
|
+
* });
|
|
1722
|
+
* ```
|
|
1723
|
+
*/
|
|
1724
|
+
updatePreferences(guestId: string, input: UpdateGuestPreferences): Promise<GuestPreferences>;
|
|
1725
|
+
/**
|
|
1726
|
+
* Get a guest's booking history.
|
|
1727
|
+
*
|
|
1728
|
+
* Returns lightweight booking summaries with pagination support.
|
|
1729
|
+
*
|
|
1730
|
+
* @throws {NotFoundError} 404 if the guest is not found
|
|
1731
|
+
*
|
|
1732
|
+
* @example
|
|
1733
|
+
* ```typescript
|
|
1734
|
+
* const bookings = await client.guests.getBookings("guest_42", {
|
|
1735
|
+
* from: "2025-01-01",
|
|
1736
|
+
* to: "2025-12-31",
|
|
1737
|
+
* limit: 10,
|
|
1738
|
+
* });
|
|
1739
|
+
* ```
|
|
1740
|
+
*/
|
|
1741
|
+
getBookings(guestId: string, params?: GuestHistoryParams): Promise<PaginatedGuestBookings>;
|
|
1742
|
+
/**
|
|
1743
|
+
* Get a guest's folio history.
|
|
1744
|
+
*
|
|
1745
|
+
* Returns lightweight folio summaries with pagination support.
|
|
1746
|
+
*
|
|
1747
|
+
* @throws {NotFoundError} 404 if the guest is not found
|
|
1748
|
+
*
|
|
1749
|
+
* @example
|
|
1750
|
+
* ```typescript
|
|
1751
|
+
* const folios = await client.guests.getFolios("guest_42");
|
|
1752
|
+
* ```
|
|
1753
|
+
*/
|
|
1754
|
+
getFolios(guestId: string, params?: GuestHistoryParams): Promise<PaginatedGuestFolios>;
|
|
1755
|
+
/**
|
|
1756
|
+
* Get a guest's order history.
|
|
1757
|
+
*
|
|
1758
|
+
* Returns lightweight order summaries with pagination support.
|
|
1759
|
+
*
|
|
1760
|
+
* @throws {NotFoundError} 404 if the guest is not found
|
|
1761
|
+
*
|
|
1762
|
+
* @example
|
|
1763
|
+
* ```typescript
|
|
1764
|
+
* const orders = await client.guests.getOrders("guest_42", {
|
|
1765
|
+
* limit: 5,
|
|
1766
|
+
* cursor: "next_page",
|
|
1767
|
+
* });
|
|
1768
|
+
* ```
|
|
1769
|
+
*/
|
|
1770
|
+
getOrders(guestId: string, params?: GuestHistoryParams): Promise<PaginatedGuestOrders>;
|
|
1771
|
+
/** Build query params from GuestHistoryParams, omitting undefined values */
|
|
1772
|
+
private _buildHistoryQuery;
|
|
1773
|
+
}
|
|
1774
|
+
|
|
1200
1775
|
/**
|
|
1201
1776
|
* Service for managing properties in the Atzentis Booking API.
|
|
1202
1777
|
*
|
|
@@ -1418,6 +1993,7 @@ declare class BookingClient {
|
|
|
1418
1993
|
readonly httpClient: HttpClient;
|
|
1419
1994
|
private _availability?;
|
|
1420
1995
|
private _bookings?;
|
|
1996
|
+
private _guests?;
|
|
1421
1997
|
private _properties?;
|
|
1422
1998
|
private _categories?;
|
|
1423
1999
|
private _spaces?;
|
|
@@ -1426,6 +2002,8 @@ declare class BookingClient {
|
|
|
1426
2002
|
get availability(): AvailabilityService;
|
|
1427
2003
|
/** Bookings service — lazy-initialized on first access */
|
|
1428
2004
|
get bookings(): BookingsService;
|
|
2005
|
+
/** Guests service — lazy-initialized on first access */
|
|
2006
|
+
get guests(): GuestsService;
|
|
1429
2007
|
/** Properties service — lazy-initialized on first access */
|
|
1430
2008
|
get properties(): PropertiesService;
|
|
1431
2009
|
/** Categories service — lazy-initialized on first access */
|
|
@@ -1514,4 +2092,4 @@ declare function firstPage<T>(fetcher: PageFetcher<T>, options?: PaginationOptio
|
|
|
1514
2092
|
|
|
1515
2093
|
declare const VERSION = "0.1.0";
|
|
1516
2094
|
|
|
1517
|
-
export { type AssignSpaceInput, AuthenticationError, type AvailabilityCheckParams, type AvailabilityPricing, type AvailabilityRestrictions, type AvailabilityResult, type AvailabilitySearchParams, type AvailabilitySearchResult, type AvailabilitySearchResultEntry, AvailabilityService, type AvailableSpace, BOOKING_STATUSES, BOOKING_TYPES, type Booking, BookingClient, type BookingClientConfig, BookingError, type BookingErrorOptions, type BookingGuest, type BookingPricing, type BookingSort, type BookingSpace, type BookingStatus, type BookingType, BookingsService, type BulkUpdateSpaceInput, type CalendarDay, type CalendarParams, type CancelBookingInput, CategoriesService, type CheckInInput, type CheckOutInput, ConflictError, type Coordinates, type CreateBookingInput, type CreateCategoryInput, type CreatePropertyInput, type CreateSpaceInput, DEFAULT_MODULES, ForbiddenError, HttpClient, type HttpClientOptions, type HttpMethod, type HttpResponse, type LinkPosTableInput, type ListBookingsParams, type ListCategoriesParams, type ListPropertiesParams, type ListSpacesParams, type Logger, type NoShowInput, NotFoundError, PROPERTY_MODULES, type PageFetcher, type Paginated, type PaginatedBookings, type PaginationOptions, PaymentError, type PriceRange, type PricingParams, type PricingResult, PropertiesService, type Property, type PropertyAddress, type PropertyModules, type PropertyStatus, type PropertyType, RateLimitError, type RequestOptions, type ResolvedBookingClientConfig, type RetryConfig, type RetryOptions, SPACE_STATUSES, SPACE_TYPES, ServerError, type ServiceSlotParams, type ServiceTimeSlot, type Space, type SpaceCategory, type SpaceStatus, type SpaceType, SpacesService, type TableSlotParams, type TimeSlot, TimeoutError, type UpdateBookingInput, type UpdateCategoryInput, type UpdatePropertyInput, type UpdateSpaceInput, VERSION, ValidationError, bookingClientConfigSchema, createErrorFromResponse, firstPage, paginate };
|
|
2095
|
+
export { type AssignSpaceInput, AuthenticationError, type AvailabilityCheckParams, type AvailabilityPricing, type AvailabilityRestrictions, type AvailabilityResult, type AvailabilitySearchParams, type AvailabilitySearchResult, type AvailabilitySearchResultEntry, AvailabilityService, type AvailableSpace, BOOKING_STATUSES, BOOKING_TYPES, type Booking, BookingClient, type BookingClientConfig, BookingError, type BookingErrorOptions, type BookingGuest, type BookingPricing, type BookingSort, type BookingSpace, type BookingStatus, type BookingType, BookingsService, type BulkUpdateSpaceInput, type CalendarDay, type CalendarParams, type CancelBookingInput, CategoriesService, type CheckInInput, type CheckOutInput, ConflictError, type Coordinates, type CreateBookingInput, type CreateCategoryInput, type CreateGuestInput, type CreatePropertyInput, type CreateSpaceInput, DEFAULT_MODULES, type DuplicateCandidate, ForbiddenError, type Guest, type GuestAddress, type GuestBookingSummary, type GuestDuplicateResult, type GuestFolioSummary, type GuestHistoryParams, type GuestMatch, type GuestOrderSummary, type GuestPreferences, type GuestSearchResult, type GuestSort, GuestsService, HttpClient, type HttpClientOptions, type HttpMethod, type HttpResponse, type LinkPosTableInput, type ListBookingsParams, type ListCategoriesParams, type ListGuestsParams, type ListPropertiesParams, type ListSpacesParams, type Logger, type MergeGuestsInput, type NoShowInput, NotFoundError, PROPERTY_MODULES, type PageFetcher, type Paginated, type PaginatedBookings, type PaginatedGuestBookings, type PaginatedGuestFolios, type PaginatedGuestOrders, type PaginatedGuests, type PaginationOptions, PaymentError, type PriceRange, type PricingParams, type PricingResult, PropertiesService, type Property, type PropertyAddress, type PropertyModules, type PropertyStatus, type PropertyType, RateLimitError, type RequestOptions, type ResolvedBookingClientConfig, type RetryConfig, type RetryOptions, SPACE_STATUSES, SPACE_TYPES, type SearchGuestsParams, ServerError, type ServiceSlotParams, type ServiceTimeSlot, type Space, type SpaceCategory, type SpaceStatus, type SpaceType, SpacesService, type TableSlotParams, type TimeSlot, TimeoutError, type UpdateBookingInput, type UpdateCategoryInput, type UpdateGuestInput, type UpdateGuestPreferences, type UpdatePropertyInput, type UpdateSpaceInput, VERSION, ValidationError, bookingClientConfigSchema, createErrorFromResponse, firstPage, paginate };
|