Welcome. This page is a practical, task‑oriented guide to running your hotel on Aries PMS. It maps directly to this application’s modules and screens: Reservations, Guests, Rooms, Housekeeping, Billing, Reports, Admin, Front Desk operations, Key Cards, and Messaging.
Tip: You must be assigned to a hotel to access most features. If you see limited data, ask an admin to assign a hotel to your user.
Technical: Authentication uses signed JWT stored in an httpOnly cookie named access_token.
Back‑end: pms_reservations.py creates records; room availability computed via pms_rooms.search_rooms_with_availability.
Due check‑outs and currently checked‑in guests are available via pms_front_desk helpers and surfaces on the dashboard.
Select a guest when creating a reservation or search and attach afterwards. Guest data auto‑fills contact info for confirmations and billing.
Technical: points and status updates are handled server‑side; manual database edits are not required.
Back‑end: pms_rooms.py for inventory and availability queries.
Back‑end: pms_housekeeping.py. A test utility exists at tools/test_hk_sync.py.
UI: billing.html and billing_print.html. Back‑end: pms_billing.py; routes in src/routes/billing_routes.py.
Stored per hotel in hotels.vat_config
. The summary groups charges by mapped VAT rate and displays normalized percentages.
Payments are stored in the payments
table with method and timestamp; folio status flips to PAID once total ≤ sum of payments.
GET /api/reports?report_type=MEAL_PLANS&start_date=YYYY-MM-DD&end_date=YYYY-MM-DD
GET /api/reports/export?report_type=MEAL_PLANS&start_date=YYYY-MM-DD&end_date=YYYY-MM-DD
Implemented in src/routes/rms_routes.py using pms_rms_integration.get_combined_report; hotel selection via get_all_hotels(). Aliases accepted for meal plans: MEALS, MEAL, MEAL_PLAN, MEALPLANS.
Shows per-day counts of guests on Breakfast or Half-board and configured per-person amounts/currency for each date. CSV columns: date, breakfast_count, breakfast_amount, breakfast_currency, half_board_count, half_board_amount, half_board_currency
.
Meals Checklist: A printable list for the restaurant at /meals-list
with hotel and date filters. Also accessible from the Meal Plans report via the “Meals Checklist” button.
Template: admin.html; Back‑end: pms_hotels.py for hotel and categories.
Note: Housekeeping report restriction is enforced in the UI (dropdown shows only Meal Plans) and in the API (/api/reports, /api/reports/export return 403 for other types).
Email is the login username. Passwords are stored securely (hashed). Consider using strong passphrases.
MANAGER
and STAFF
are mapped to FRONT_DESK
.For deeper technical details, see docs/pms_documentation.md included in this project.
Configure a connection to rms.aries-software.net to pull Final Rates into PMS. Rates are stored in
category_daily_rates
and mapped to your hotel's Standard room category
(we pick the first category whose name starts with "Standard"; otherwise the first category).
https://rms.aries-software.net
),
RMS Hotel ID, and API Key (header X-API-Key
)./api/v1/hotels/{rms_hotel_id}/final-rates?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD
.POST /api/rms/final-rates/import
with the selected room_category_id
, which proxies to RMS
/api/v1/hotels/{rms_hotel_id}/room-categories/final-rates?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD&room_category_id=ID
.category_daily_rates
for the selected category. The table updates after import.curl -sS -D - \
-H "X-API-Key: YOUR_RMS_API_KEY" \
"https://rms.aries-software.net/api/v1/hotels/YOUR_RMS_HOTEL_ID/final-rates?start_date=2025-09-21&end_date=2025-09-30" | head -n 20
See also: docs/troubleshooting_rms.md for connectivity tips.
Aries PMS now exposes a Channel Manager API for connected partners to read availability and rates, and to create reservations. Access is gated: only hotels that purchased the CM_API module can use it, and API calls must include a valid API key with required scopes.
Authorization: Bearer <key_id>:<secret>
cm:inventory:read
– GET availabilitycm:rates:read
– GET ratescm:reservations:write
– POST reservationsGET /api/cm/v1/hotels/{hotel_id}/availability?start=YYYY-MM-DD&end=YYYY-MM-DD&mode=count|grid
curl -s \
-H "Authorization: Bearer <key_id>:<secret>" \
"http://localhost:8000/api/cm/v1/hotels/1/availability?start=2025-10-01&end=2025-10-03&mode=count"
GET /api/cm/v1/hotels/{hotel_id}/rates?start=YYYY-MM-DD&end=YYYY-MM-DD
curl -s \
-H "Authorization: Bearer <key_id>:<secret>" \
"http://localhost:8000/api/cm/v1/hotels/1/rates?start=2025-10-01&end=2025-10-03"
This endpoint fetches Final Rates from the remote RMS for the given date range, upserts them into PMS under the hotel's Standard room category, and returns the stored rates. If the remote call fails, it returns HTTP 502.
POST /api/cm/v1/hotels/{hotel_id}/reservations
curl -s -X POST \
-H "Authorization: Bearer <key_id>:<secret>" \
-H "Content-Type: application/json" \
-d '{
"guest": {"first_name": "API", "last_name": "Tester", "email": null, "phone": null},
"stay": {"check_in_date": "2025-10-01", "check_out_date": "2025-10-03", "adults": 2, "children": 0},
"special_requests": "Quiet room",
"preferred_room_id": null,
"client_reference": "ext-12345"
}' \
"http://localhost:8000/api/cm/v1/hotels/1/reservations"
Idempotency (best-effort): posting the same guest + dates again may return the existing reservation.
Authorization
example directly in your API client.ARIES_SKIP_DB_INIT=1 python tools/test_cm_api_readonly.py
ARIES_SKIP_DB_INIT=1 python tools/test_cm_api_write.py
python tools/seed_cm_api_key.py --hotel-id <ID>
CM_API
) for the property. Keys are hotel-bound and rate-limited.
Last updated: 2025-09-21 20:57
If you have other problems or questions, create a support ticket here.