Upload / PMS Sync
Business date 2026-08-09 — external process posts to /api/pms/sync; use this helper to test and inspect state changesTest upload (paste Hyatt roomMatrix or PMS payload JSON)
The API accepts either format. https://ca.hyatt.com/... matrix or {hotelCode,businessDate,rooms:[]}. On real deploys, your external process will POST to /api/pms/sync.
Hotel code hint: MEMZW
What happens on subsequent uploads
- If a serviced/checked-out room becomes vacant dirty → a new follow-up task is created (reason
EARLY_DEPARTUREorREDIRTY_AFTER_COMPLETION). - If a new workload appears after assignment, the task keeps its housekeeper until a manager explicitly returns it to the pool.
- PMS/board mismatches create discrepancies (visible on Reconciliation & All Rooms).
- If the board is locked, the sync is recorded but board rows aren't changed — unlock the board first.
- Old PMS snapshots are rejected if
generatedAtis older than last sync.
Tip: run
npm run db:seed to generate realistic rooms (156 from sample), 6 housekeepers, a board and two PMS uploads — the second one simulates redirty state changes.Current PMS snapshot
Open board →Latest received: 8/10/2026, 1:08:17 AM • 126 rooms in DB snapshot
126 new follow-ups ever8 active discrepancies
Recent import issues (0)
No issues for this date.
Recent follow-up tasks (from PMS changes)
0101INITIAL_BOARD
VACANT_READY0105INITIAL_BOARD
VACANT_READY0107INITIAL_BOARD
VACANT_READY0125INITIAL_BOARD
VACANT_READY0218INITIAL_BOARD
VACANT_READY0219INITIAL_BOARD
VACANT_READY0220INITIAL_BOARD
VACANT_READY0221INITIAL_BOARD
VACANT_READY0223INITIAL_BOARD
VACANT_READY0225INITIAL_BOARD
VACANT_READY0306INITIAL_BOARD
VACANT_READY0308INITIAL_BOARD
VACANT_READY0310INITIAL_BOARD
VACANT_READY0312INITIAL_BOARD
VACANT_READY0313INITIAL_BOARD
VACANT_READY0318INITIAL_BOARD
VACANT_READY0319INITIAL_BOARD
VACANT_READY0321INITIAL_BOARD
VACANT_READY0323INITIAL_BOARD
VACANT_READY0401INITIAL_BOARD
VACANT_READY0402INITIAL_BOARD
VACANT_READY0404INITIAL_BOARD
VACANT_READY0405INITIAL_BOARD
VACANT_READY0406INITIAL_BOARD
VACANT_READY0407INITIAL_BOARD
VACANT_READY0408INITIAL_BOARD
VACANT_READY0409INITIAL_BOARD
VACANT_READY0410INITIAL_BOARD
VACANT_READY0411INITIAL_BOARD
VACANT_READY0413INITIAL_BOARD
VACANT_READY0414INITIAL_BOARD
VACANT_READY0417INITIAL_BOARD
VACANT_READY0418INITIAL_BOARD
VACANT_READY0420INITIAL_BOARD
VACANT_READY0421INITIAL_BOARD
VACANT_READY0422INITIAL_BOARD
VACANT_READY0423INITIAL_BOARD
VACANT_READY0501INITIAL_BOARD
VACANT_READY0503INITIAL_BOARD
VACANT_READY0504INITIAL_BOARD
VACANT_READY0506INITIAL_BOARD
VACANT_READY0516INITIAL_BOARD
VACANT_READY0517INITIAL_BOARD
VACANT_READY0518INITIAL_BOARD
VACANT_READY0521INITIAL_BOARD
VACANT_READY0522INITIAL_BOARD
VACANT_READY0523INITIAL_BOARD
VACANT_READY0604INITIAL_BOARD
VACANT_READY0606INITIAL_BOARD
VACANT_READY0607INITIAL_BOARD
VACANT_READY0612INITIAL_BOARD
VACANT_READY0613INITIAL_BOARD
VACANT_READY0614INITIAL_BOARD
VACANT_READY0616INITIAL_BOARD
VACANT_READY0618INITIAL_BOARD
VACANT_READY0619INITIAL_BOARD
VACANT_READY0621INITIAL_BOARD
VACANT_READY0622INITIAL_BOARD
VACANT_READY0617INITIAL_BOARD
OCCUPIED_NO_SERVICE0625INITIAL_BOARD
OCCUPIED_NO_SERVICE0512INITIAL_BOARD
OUT_OF_ORDER0513INITIAL_BOARD
OUT_OF_ORDER0510INITIAL_BOARD
OUT_OF_ORDER0511INITIAL_BOARD
OCCUPIED_NO_SERVICE0519INITIAL_BOARD
STAYOVER_SERVICE0419INITIAL_BOARD
OCCUPIED_NO_SERVICE0415INITIAL_BOARD
OCCUPIED_NO_SERVICE0416INITIAL_BOARD
STAYOVER_SERVICE0303INITIAL_BOARD
OCCUPIED_NO_SERVICE0304INITIAL_BOARD
OCCUPIED_NO_SERVICE0425INITIAL_BOARD
OCCUPIED_NO_SERVICE0301INITIAL_BOARD
OCCUPIED_NO_SERVICE0302INITIAL_BOARD
OCCUPIED_NO_SERVICE0309INITIAL_BOARD
OCCUPIED_NO_SERVICE0307INITIAL_BOARD
OCCUPIED_NO_SERVICE0212INITIAL_BOARD
OUT_OF_ORDER0210INITIAL_BOARD
OUT_OF_ORDER0123INITIAL_BOARD
STAYOVER_SERVICE0122INITIAL_BOARD
OCCUPIED_NO_SERVICE0508INITIAL_BOARD
OUT_OF_ORDER0505INITIAL_BOARD
OUT_OF_ORDER0514INITIAL_BOARD
OCCUPIED_NO_SERVICE0515INITIAL_BOARD
OCCUPIED_NO_SERVICE0403INITIAL_BOARD
OUT_OF_ORDER0520INITIAL_BOARD
FULL_SERVICE0525INITIAL_BOARD
STAYOVER_SERVICE0412INITIAL_BOARD
OCCUPIED_NO_SERVICE0601INITIAL_BOARD
OCCUPIED_NO_SERVICE0608INITIAL_BOARD
OCCUPIED_NO_SERVICE0609INITIAL_BOARD
OUT_OF_ORDER0605INITIAL_BOARD
OUT_OF_ORDER0602INITIAL_BOARD
OCCUPIED_NO_SERVICE0603INITIAL_BOARD
OCCUPIED_NO_SERVICE0611INITIAL_BOARD
OCCUPIED_NO_SERVICE0610INITIAL_BOARD
OUT_OF_ORDER0305INITIAL_BOARD
OCCUPIED_NO_SERVICE0314INITIAL_BOARD
OCCUPIED_NO_SERVICE0315INITIAL_BOARD
OCCUPIED_NO_SERVICE0311INITIAL_BOARD
OCCUPIED_NO_SERVICE0316INITIAL_BOARD
OCCUPIED_NO_SERVICE0317INITIAL_BOARD
OCCUPIED_NO_SERVICE0204INITIAL_BOARD
OUT_OF_ORDER0325INITIAL_BOARD
OCCUPIED_NO_SERVICE0205INITIAL_BOARD
OUT_OF_ORDER0202INITIAL_BOARD
STAYOVER_SERVICE0203INITIAL_BOARD
OUT_OF_ORDER0201INITIAL_BOARD
STAYOVER_SERVICE0322INITIAL_BOARD
OCCUPIED_NO_SERVICE0320INITIAL_BOARD
OCCUPIED_NO_SERVICE0208INITIAL_BOARD
OUT_OF_ORDER0103INITIAL_BOARD
STAYOVER_SERVICE0104INITIAL_BOARD
STAYOVER_SERVICE0222INITIAL_BOARD
OUT_OF_ORDER0102INITIAL_BOARD
OCCUPIED_NO_SERVICE0615INITIAL_BOARD
OCCUPIED_NO_SERVICE0502INITIAL_BOARD
OCCUPIED_NO_SERVICE0623INITIAL_BOARD
OCCUPIED_NO_SERVICE0620INITIAL_BOARD
STAYOVER_SERVICE0509INITIAL_BOARD
OUT_OF_ORDER0507INITIAL_BOARD
OUT_OF_ORDER0209INITIAL_BOARD
OUT_OF_ORDER0206INITIAL_BOARD
OUT_OF_ORDER0207INITIAL_BOARD
OCCUPIED_NO_SERVICE0216INITIAL_BOARD
STAYOVER_SERVICE0214INITIAL_BOARD
OUT_OF_ORDER0211INITIAL_BOARD
OUT_OF_ORDERActive discrepancies
0519
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: STAYOVER_SERVICE
0416
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: STAYOVER_SERVICE
0123
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: STAYOVER_SERVICE
0520
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: FULL_SERVICE
0525
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: STAYOVER_SERVICE
0103
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: STAYOVER_SERVICE
0620
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: STAYOVER_SERVICE
0216
PMS_CLEAN_BOARD_REQUIRES_CLEANING
PMS: Clean • Board: STAYOVER_SERVICE