Files
TrisolarisServer/docs/API_REFERENCE.md
androidlover5842 35680287d4
All checks were successful
build-and-deploy / build-deploy (push) Successful in 17s
Generate behavior-first API catalog from controllers
2026-02-04 12:21:48 +05:30

53 KiB

API Reference

Generated from controller source.

  • Total endpoints: 125
  • Auth: Firebase Bearer token unless endpoint is public.
  • Regenerate: python scripts/generate_api_docs.py

Usage Template

curl -X <METHOD> "https://api.hoteltrisolaris.in<PATH>" \
  -H "Authorization: Bearer <FIREBASE_ID_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '<REQUEST_BODY_JSON>'
Method Path Path Params Query Params Body Type Response Type Status Auth Common Errors Behavior Handler
GET / - - - Map<String, String> 200 Public/unspecified - Root. src/main/kotlin/com/android/trisolarisserver/controller/system/Health.kt:14 (root)
GET /amenities - - - List<AmenityResponse> 200 Authenticated user (Firebase) 401 (Missing principal) List resources (list amenities). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomAmenities.kt:40 (listAmenities)
POST /amenities - - AmenityUpsertRequest AmenityResponse 201 SUPER_ADMIN 401 (User not found), 403 (Super admin only), 400 (Icon key not found), 409 (Amenity already exists) Create resource (create amenity). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomAmenities.kt:49 (createAmenity)
DELETE /amenities/{amenityId} amenityId:UUID - - Unit 204 SUPER_ADMIN 401 (User not found), 403 (Super admin only), 404 (Amenity not found) Delete resource (delete amenity). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomAmenities.kt:92 (deleteAmenity)
PUT /amenities/{amenityId} amenityId:UUID - AmenityUpsertRequest AmenityResponse 200 SUPER_ADMIN 401 (User not found), 403 (Super admin only), 404 (Amenity not found), 400 (Icon key not found), 409 (Amenity already exists) Update resource (update amenity). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomAmenities.kt:68 (updateAmenity)
GET /auth/me - - - ResponseEntity<AuthResponse> 200 Authenticated user (Firebase) - Me. src/main/kotlin/com/android/trisolarisserver/controller/auth/Auth.kt:44 (me)
PUT /auth/me - - UpdateMeRequest ResponseEntity<AuthResponse> 200 Authenticated user (Firebase) 401 (User not found) Update resource (update me). src/main/kotlin/com/android/trisolarisserver/controller/auth/Auth.kt:54 (updateMe)
POST /auth/verify - - - ResponseEntity<AuthResponse> 200 Authenticated user (Firebase) - Verify. src/main/kotlin/com/android/trisolarisserver/controller/auth/Auth.kt:33 (verify)
GET /health - - - Map<String, String> 200 Public/unspecified - Health. src/main/kotlin/com/android/trisolarisserver/controller/system/Health.kt:9 (health)
GET /icons/png - - - List<String> 200 Public/unspecified - List resources (list png). src/main/kotlin/com/android/trisolarisserver/controller/assets/IconFiles.kt:23 (listPng)
GET /icons/png/{filename} filename:String - - ResponseEntity<FileSystemResource> 200 Public/unspecified - Get resource (get png). src/main/kotlin/com/android/trisolarisserver/controller/assets/IconFiles.kt:39 (getPng)
GET /image-tags - - - List<RoomImageTagResponse> 200 Authenticated user (Firebase) - List resources (list tags). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImageTags.kt:35 (listTags)
POST /image-tags - - RoomImageTagUpsertRequest RoomImageTagResponse 201 SUPER_ADMIN 401 (User not found), 403 (Super admin only), 409 (Tag already exists) Create resource (create tag). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImageTags.kt:43 (createTag)
DELETE /image-tags/{tagId} tagId:UUID - - Unit 204 SUPER_ADMIN 401 (User not found), 403 (Super admin only), 404 (Tag not found) Delete resource (delete tag). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImageTags.kt:74 (deleteTag)
PUT /image-tags/{tagId} tagId:UUID - RoomImageTagUpsertRequest RoomImageTagResponse 200 SUPER_ADMIN 401 (User not found), 403 (Super admin only), 404 (Tag not found), 409 (Tag already exists) Update resource (update tag). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImageTags.kt:56 (updateTag)
GET /properties - - - List<PropertyResponse> 200 Authenticated user (Firebase) 401 (User not found) List resources (list properties). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:92 (listProperties)
POST /properties - - PropertyCreateRequest PropertyResponse 201 Roles: ADMIN 401 (User id missing; User not found), 400 (Unknown transport mode; $fieldName must be HH:mm), 409 (Unable to generate property code) Create resource (create property). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:53 (createProperty)
POST /properties/access-codes/join - - PropertyAccessCodeJoinRequest PropertyUserResponse 200 Authenticated user (Firebase) 401 (User not found; Missing principal), 404 (Invalid code; Property not found), 400 (Property code required), 409 (User already a member) Join with access code. src/main/kotlin/com/android/trisolarisserver/controller/property/PropertyAccessCodes.kt:91 (joinWithAccessCode)
PUT /properties/{propertyId} propertyId:UUID - PropertyUpdateRequest PropertyResponse 200 Roles: ADMIN 401 (Missing principal), 403 (Property membership required), 404 (Property not found), 400 (Unknown transport mode; $fieldName must be HH:mm), 409 (Property code already exists) Update resource (update property). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:306 (updateProperty)
POST /properties/{propertyId}/access-codes propertyId:UUID - PropertyAccessCodeCreateRequest PropertyAccessCodeResponse 201 Roles: ADMIN 401 (User not found; Missing principal), 403 (Property membership required), 404 (Property not found), 400 (ADMIN cannot be invited by code; At least one role is required), 409 (Unable to generate code, try again) Create resource (create access code). src/main/kotlin/com/android/trisolarisserver/controller/property/PropertyAccessCodes.kt:45 (createAccessCode)
GET /properties/{propertyId}/billing-policy propertyId:UUID - - PropertyBillingPolicyResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property not found) Get resource (get billing policy). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:118 (getBillingPolicy)
PUT /properties/{propertyId}/billing-policy propertyId:UUID - PropertyBillingPolicyRequest PropertyBillingPolicyResponse 200 Roles: ADMIN 401 (Missing principal), 403 (Property membership required), 404 (Property not found), 400 ($fieldName must be HH:mm) Update resource (update billing policy). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:135 (updateBillingPolicy)
GET /properties/{propertyId}/bookings propertyId:UUID status:String? (optional) - List<BookingListItem> 200 Roles: ADMIN, FINANCE, HOUSEKEEPING, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Property not found), 400 (Invalid status: $value) List resources (list bookings). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:187 (listBookings)
POST /properties/{propertyId}/bookings propertyId:UUID - BookingCreateRequest BookingCreateResponse 201 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Property not found), 400 (expectedCheckInAt required; expectedCheckOutAt required) Create resource (create booking). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:99 (createBooking)
GET /properties/{propertyId}/bookings/{bookingId} propertyId:UUID, bookingId:UUID - - BookingDetailResponse 200 Roles: ADMIN, FINANCE, HOUSEKEEPING, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property) Get resource (get booking). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:282 (getBooking)
GET /properties/{propertyId}/bookings/{bookingId}/balance propertyId:UUID, bookingId:UUID - - BookingBalanceResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Booking not found; Booking not found for property) Get resource (get balance). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingBalances.kt:32 (getBalance)
POST /properties/{propertyId}/bookings/{bookingId}/billing-policy propertyId:UUID, bookingId:UUID - BookingBillingPolicyUpdateRequest Unit 204 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 ($fieldName required; $fieldName must be HH:mm), 409 (Booking closed) Update resource (update billing policy). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:476 (updateBillingPolicy)
POST /properties/{propertyId}/bookings/{bookingId}/cancel propertyId:UUID, bookingId:UUID - BookingCancelRequest Unit 204 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 409 (Cannot cancel checked-in booking) Cancel flow (cancel). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:695 (cancel)
GET /properties/{propertyId}/bookings/{bookingId}/charges propertyId:UUID, bookingId:UUID - - List<ChargeResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Booking not found; Booking not found for property) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/payment/Charges.kt:80 (list)
POST /properties/{propertyId}/bookings/{bookingId}/charges propertyId:UUID, bookingId:UUID - ChargeCreateRequest ChargeResponse 201 Roles: ADMIN, FINANCE, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (amount must be > 0; Invalid timestamp) Create resource (create). src/main/kotlin/com/android/trisolarisserver/controller/payment/Charges.kt:44 (create)
POST /properties/{propertyId}/bookings/{bookingId}/check-in/bulk propertyId:UUID, bookingId:UUID - BookingBulkCheckInRequest Unit 201 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Room not found; Booking not found), 400 (stays required; Duplicate roomId in stays), 409 (Booking not open; Room not available) Bulk check in. src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:353 (bulkCheckIn)
POST /properties/{propertyId}/bookings/{bookingId}/check-out propertyId:UUID, bookingId:UUID - BookingCheckOutRequest Unit 204 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Invalid timestamp), 409 (Booking not checked in; Room stay amount is outside allowed range) Check out flow (check out). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:527 (checkOut)
POST /properties/{propertyId}/bookings/{bookingId}/expected-dates propertyId:UUID, bookingId:UUID - BookingExpectedDatesUpdateRequest Unit 204 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Invalid date range; Invalid timestamp), 409 (Cannot change expected check-in after check-in; Booking closed) Update resource (update expected dates). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:430 (updateExpectedDates)
POST /properties/{propertyId}/bookings/{bookingId}/link-guest propertyId:UUID, bookingId:UUID - BookingLinkGuestRequest Unit 204 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Guest not found; Booking not found), 400 (Guest not in property) Link guest. src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:326 (linkGuest)
POST /properties/{propertyId}/bookings/{bookingId}/no-show propertyId:UUID, bookingId:UUID - BookingNoShowRequest Unit 204 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 409 (Booking not open) No-show flow (no show). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:720 (noShow)
GET /properties/{propertyId}/bookings/{bookingId}/payments propertyId:UUID, bookingId:UUID - - List<PaymentResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Booking not found; Booking not found for property) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/payment/Payments.kt:86 (list)
POST /properties/{propertyId}/bookings/{bookingId}/payments propertyId:UUID, bookingId:UUID - PaymentCreateRequest PaymentResponse 201 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Property not found; Booking not found), 400 (amount must be > 0; Invalid timestamp) Create resource (create). src/main/kotlin/com/android/trisolarisserver/controller/payment/Payments.kt:47 (create)
POST /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/close propertyId:UUID, bookingId:UUID - RazorpayPaymentRequestCloseRequest RazorpayPaymentRequestCloseResponse 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Provide exactly one of qrId or paymentLinkId; Razorpay settings not configured), 502 (Razorpay close request failed; Razorpay cancel request failed) Close request. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayPaymentRequestsController.kt:93 (closeRequest)
POST /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/payment-link propertyId:UUID, bookingId:UUID - RazorpayPaymentLinkCreateRequest RazorpayPaymentLinkCreateResponse 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Booking is not active; Razorpay settings not configured), 502 (Razorpay request failed) Create resource (create payment link). src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayPaymentLinksController.kt:47 (createPaymentLink)
GET /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/qr propertyId:UUID, bookingId:UUID - - List<RazorpayQrRecordResponse> 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property) List resources (list qr). src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayQrPayments.kt:292 (listQr)
POST /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/qr propertyId:UUID, bookingId:UUID - RazorpayQrGenerateRequest RazorpayQrGenerateResponse 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Booking is not active; Razorpay settings not configured), 502 (Razorpay request failed) Create resource (create qr). src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayQrPayments.kt:56 (createQr)
GET /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/qr/active propertyId:UUID, bookingId:UUID - - RazorpayQrGenerateResponse? 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property) Get resource (get active qr). src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayQrPayments.kt:157 (getActiveQr)
POST /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/qr/close propertyId:UUID, bookingId:UUID - - RazorpayQrGenerateResponse? 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Razorpay settings not configured; Razorpay test keys not configured), 502 (Razorpay close request failed) Close active qr. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayQrPayments.kt:180 (closeActiveQr)
POST /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/qr/{qrId}/close propertyId:UUID, bookingId:UUID, qrId:String - - RazorpayQrGenerateResponse? 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Razorpay settings not configured; Razorpay test keys not configured), 502 (Razorpay close request failed) Close qr by id. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayQrPayments.kt:212 (closeQrById)
GET /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/qr/{qrId}/events propertyId:UUID, qrId:String - - List<RazorpayQrEventResponse> 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted) Qr events. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayQrPayments.kt:244 (qrEvents)
GET /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/qr/{qrId}/events/stream propertyId:UUID, bookingId:UUID, qrId:String - - SseEmitter 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted) Stream events/data (stream qr events). src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayQrPayments.kt:273 (streamQrEvents)
POST /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/refund propertyId:UUID, bookingId:UUID - RazorpayRefundRequest RazorpayRefundResponse 200 Roles: ADMIN, FINANCE, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (paymentId is required; amount must be <= payment amount), 502 (Razorpay refund request failed) Refund. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayRefundsController.kt:42 (refund)
GET /properties/{propertyId}/bookings/{bookingId}/payments/razorpay/requests propertyId:UUID, bookingId:UUID - - List<RazorpayPaymentRequestResponse> 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property) List resources (list requests). src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayPaymentRequestsController.kt:45 (listRequests)
DELETE /properties/{propertyId}/bookings/{bookingId}/payments/{paymentId} propertyId:UUID, bookingId:UUID, paymentId:UUID - - Unit 204 Roles: ADMIN 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (Cash payments can only be deleted for OPEN or CHECKED_IN bookings; Only CASH payments can be deleted) Delete resource (delete). src/main/kotlin/com/android/trisolarisserver/controller/payment/Payments.kt:103 (delete)
GET /properties/{propertyId}/bookings/{bookingId}/room-requests propertyId:UUID, bookingId:UUID - - List<BookingRoomRequestResponse> 200 Roles: ADMIN, FINANCE, HOUSEKEEPING, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingRoomRequests.kt:103 (list)
POST /properties/{propertyId}/bookings/{bookingId}/room-requests propertyId:UUID, bookingId:UUID - BookingRoomRequestCreateRequest BookingRoomRequestResponse 201 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 400 (quantity must be > 0; fromAt required), 409 (Booking closed; Insufficient room type availability) Create resource (create). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingRoomRequests.kt:48 (create)
DELETE /properties/{propertyId}/bookings/{bookingId}/room-requests/{requestId} propertyId:UUID, bookingId:UUID, requestId:UUID - - Unit 204 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property), 409 (Cannot cancel fulfilled room request) Cancel flow (cancel). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingRoomRequests.kt:121 (cancel)
POST /properties/{propertyId}/bookings/{bookingId}/room-stays/{roomStayId}/check-out propertyId:UUID, bookingId:UUID, roomStayId:UUID - BookingCheckOutRequest Unit 204 Roles: ADMIN, MANAGER, STAFF 401 (User not found; Missing principal), 403 (Required property role not granted), 404 (Room stay not found for booking; Booking not found), 400 (Invalid timestamp), 409 (Booking not checked in; Room stay amount is outside allowed range) Check out flow (check out room stay). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:583 (checkOutRoomStay)
GET /properties/{propertyId}/bookings/{bookingId}/stream propertyId:UUID, bookingId:UUID - - org.springframework.web.servlet.mvc.method.annotation.SseEmitter 200 Roles: ADMIN, FINANCE, HOUSEKEEPING, MANAGER, STAFF 401 (Missing principal), 403 (Required property role not granted), 404 (Booking not found; Booking not found for property) Stream events/data (stream booking). src/main/kotlin/com/android/trisolarisserver/controller/booking/BookingFlow.kt:302 (streamBooking)
GET /properties/{propertyId}/cancellation-policy propertyId:UUID - - CancellationPolicyResponse 200 Authenticated user (Firebase) - Get resource (get). src/main/kotlin/com/android/trisolarisserver/controller/property/CancellationPolicies.kt:34 (get)
PUT /properties/{propertyId}/cancellation-policy propertyId:UUID - CancellationPolicyUpsertRequest CancellationPolicyResponse 200 Roles: ADMIN 401 (Missing principal), 403 (Required property role not granted), 404 (Property not found), 400 (freeDaysBeforeCheckin must be >= 0; Unknown penaltyMode) Upsert. src/main/kotlin/com/android/trisolarisserver/controller/property/CancellationPolicies.kt:53 (upsert)
GET /properties/{propertyId}/code propertyId:UUID - - PropertyCodeResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property not found) Get resource (get property code). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:105 (getPropertyCode)
GET /properties/{propertyId}/guests/search propertyId:UUID phone:String? (optional), vehicleNumber:String? (optional) - List<GuestResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property not found), 400 (phone or vehicleNumber required) Search. src/main/kotlin/com/android/trisolarisserver/controller/guest/Guests.kt:75 (search)
GET /properties/{propertyId}/guests/visit-count propertyId:UUID phone:String (required) - GuestVisitCountResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property not found), 400 (phone required) Get resource (get visit count). src/main/kotlin/com/android/trisolarisserver/controller/guest/Guests.kt:113 (getVisitCount)
GET /properties/{propertyId}/guests/{guestId} propertyId:UUID, guestId:UUID - - GuestResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property or guest not found), 400 (Guest not in property) Get resource (get guest). src/main/kotlin/com/android/trisolarisserver/controller/guest/Guests.kt:102 (getGuest)
PUT /properties/{propertyId}/guests/{guestId} propertyId:UUID, guestId:UUID - GuestUpdateRequest GuestResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property or guest not found), 400 (Guest not in property), 409 (Phone number already exists) Update resource (update guest). src/main/kotlin/com/android/trisolarisserver/controller/guest/Guests.kt:45 (updateGuest)
GET /properties/{propertyId}/guests/{guestId}/documents propertyId:UUID, guestId:UUID - - List<GuestDocumentResponse> 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted) List resources (list documents). src/main/kotlin/com/android/trisolarisserver/controller/guest/GuestDocuments.kt:125 (listDocuments)
POST /properties/{propertyId}/guests/{guestId}/documents propertyId:UUID, guestId:UUID bookingId:UUID (required) - GuestDocumentResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal; User not found), 403 (Property membership required), 404 (Booking not found; Property or guest not found), 400 (File is empty; Video files are not allowed), 409 (Duplicate document) Upload document. src/main/kotlin/com/android/trisolarisserver/controller/guest/GuestDocuments.kt:65 (uploadDocument)
GET /properties/{propertyId}/guests/{guestId}/documents/stream propertyId:UUID, guestId:UUID - - org.springframework.web.servlet.mvc.method.annotation.SseEmitter 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted) Stream events/data (stream documents). src/main/kotlin/com/android/trisolarisserver/controller/guest/GuestDocuments.kt:138 (streamDocuments)
DELETE /properties/{propertyId}/guests/{guestId}/documents/{documentId} propertyId:UUID, guestId:UUID, documentId:UUID - - Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Document not found), 400 (Documents can only be deleted for OPEN or CHECKED_IN bookings), 500 (Failed to delete file) Delete resource (delete document). src/main/kotlin/com/android/trisolarisserver/controller/guest/GuestDocuments.kt:184 (deleteDocument)
GET /properties/{propertyId}/guests/{guestId}/documents/{documentId}/file propertyId:UUID, guestId:UUID, documentId:UUID token:String? (optional) - ResponseEntity<FileSystemResource> 200 Roles: ADMIN, MANAGER 401 (Invalid token; Missing principal), 403 (Required property role not granted), 404 (Document not found; File missing) Download document. src/main/kotlin/com/android/trisolarisserver/controller/guest/GuestDocuments.kt:152 (downloadDocument)
GET /properties/{propertyId}/guests/{guestId}/ratings propertyId:UUID, guestId:UUID - - List<GuestRatingResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property or guest not found), 400 (Guest not in property) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/guest/GuestRatings.kt:79 (list)
POST /properties/{propertyId}/guests/{guestId}/ratings propertyId:UUID, guestId:UUID - GuestRatingCreateRequest GuestRatingResponse 201 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Booking not found; Property or guest not found), 400 (Booking not in property; Booking not linked to guest), 409 (Rating already exists for booking) Create resource (create). src/main/kotlin/com/android/trisolarisserver/controller/guest/GuestRatings.kt:42 (create)
POST /properties/{propertyId}/guests/{guestId}/signature propertyId:UUID, guestId:UUID - - GuestResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Property or guest not found), 400 (File is empty; Only SVG allowed) Upload signature. src/main/kotlin/com/android/trisolarisserver/controller/guest/Guests.kt:170 (uploadSignature)
GET /properties/{propertyId}/guests/{guestId}/signature/file propertyId:UUID, guestId:UUID - - ResponseEntity<FileSystemResource> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Signature not found; Property or guest not found), 400 (Guest not in property) Download signature. src/main/kotlin/com/android/trisolarisserver/controller/guest/Guests.kt:194 (downloadSignature)
POST /properties/{propertyId}/guests/{guestId}/vehicles propertyId:UUID, guestId:UUID - GuestVehicleRequest GuestResponse 201 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Booking not found; Property or guest not found), 400 (Booking not in property; Guest not in property), 409 (Booking linked to different guest; Vehicle number already exists) Add vehicle. src/main/kotlin/com/android/trisolarisserver/controller/guest/Guests.kt:130 (addVehicle)
POST /properties/{propertyId}/inbound-emails/manual propertyId:UUID file:MultipartFile (required) - ManualInboundResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Property not found), 400 (File is empty; Only PDF is supported) Upload manual pdf. src/main/kotlin/com/android/trisolarisserver/controller/email/InboundEmailManual.kt:41 (uploadManualPdf)
GET /properties/{propertyId}/inbound-emails/{emailId}/file propertyId:UUID, emailId:UUID - - ResponseEntity<FileSystemResource> 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Email not found; Email PDF missing) Download email pdf. src/main/kotlin/com/android/trisolarisserver/controller/email/InboundEmails.kt:32 (downloadEmailPdf)
GET /properties/{propertyId}/rate-plans propertyId:UUID roomTypeCode:String? (optional) - List<RatePlanResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/rate/RatePlans.kt:79 (list)
POST /properties/{propertyId}/rate-plans propertyId:UUID - RatePlanCreateRequest RatePlanResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Property not found; Room type not found), 409 (Rate plan code already exists for room type) Create resource (create). src/main/kotlin/com/android/trisolarisserver/controller/rate/RatePlans.kt:51 (create)
DELETE /properties/{propertyId}/rate-plans/{ratePlanId} propertyId:UUID, ratePlanId:UUID - - Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Rate plan not found) Delete resource (delete). src/main/kotlin/com/android/trisolarisserver/controller/rate/RatePlans.kt:114 (delete)
PUT /properties/{propertyId}/rate-plans/{ratePlanId} propertyId:UUID, ratePlanId:UUID - RatePlanUpdateRequest RatePlanResponse 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Rate plan not found) Update resource (update). src/main/kotlin/com/android/trisolarisserver/controller/rate/RatePlans.kt:95 (update)
GET /properties/{propertyId}/rate-plans/{ratePlanId}/calendar propertyId:UUID, ratePlanId:UUID from:String (required), to:String (required) - RateCalendarAverageResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Rate plan not found), 400 (to must be on/after from; Invalid date format) List resources (list calendar). src/main/kotlin/com/android/trisolarisserver/controller/rate/RatePlans.kt:170 (listCalendar)
POST /properties/{propertyId}/rate-plans/{ratePlanId}/calendar propertyId:UUID, ratePlanId:UUID - RateCalendarRangeUpsertRequest List<RateCalendarResponse> 201 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Rate plan not found), 400 (to must be on/after from; Invalid date format) Upsert calendar. src/main/kotlin/com/android/trisolarisserver/controller/rate/RatePlans.kt:129 (upsertCalendar)
DELETE /properties/{propertyId}/rate-plans/{ratePlanId}/calendar/{rateDate} propertyId:UUID, ratePlanId:UUID, rateDate:String - - Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Rate plan not found), 400 (Invalid date format) Delete resource (delete calendar). src/main/kotlin/com/android/trisolarisserver/controller/rate/RatePlans.kt:206 (deleteCalendar)
GET /properties/{propertyId}/razorpay-settings propertyId:UUID - - RazorpaySettingsResponse 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted) Get resource (get settings). src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpaySettingsController.kt:33 (getSettings)
PUT /properties/{propertyId}/razorpay-settings propertyId:UUID - RazorpaySettingsUpsertRequest RazorpaySettingsResponse 200 Roles: ADMIN 401 (Missing principal), 403 (Required property role not granted), 404 (Property not found), 400 (keyId and keySecret must be provided together; keyIdTest and keySecretTest must be provided together) Upsert settings. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpaySettingsController.kt:57 (upsertSettings)
POST /properties/{propertyId}/razorpay/return/failure propertyId:UUID - - Unit 204 Public/unspecified - Failure. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayReturnController.kt:22 (failure)
POST /properties/{propertyId}/razorpay/return/success propertyId:UUID - - Unit 204 Public/unspecified - Success. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayReturnController.kt:16 (success)
POST /properties/{propertyId}/razorpay/webhook propertyId:UUID - String? Unit 204 Public/unspecified 401 (Missing signature; Invalid signature), 404 (Property not found), 400 (Razorpay settings not configured; Webhook secret not configured) Capture. src/main/kotlin/com/android/trisolarisserver/controller/razorpay/RazorpayWebhookCapture.kt:53 (capture)
GET /properties/{propertyId}/room-stays/active propertyId:UUID - - List<ActiveRoomStayResponse> 200 Roles: ADMIN, AGENT, FINANCE, GUIDE, HOUSEKEEPING, MANAGER, STAFF, SUPERVISOR 401 (Missing principal), 403 (Agents cannot view active stays; Property membership required) List resources (list active room stays). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomStays.kt:42 (listActiveRoomStays)
GET /properties/{propertyId}/room-stays/cards/{cardIndex} propertyId:UUID, cardIndex:Int - - IssuedCardResponse 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Card not found) Get resource (get card by index). src/main/kotlin/com/android/trisolarisserver/controller/card/IssuedCards.kt:158 (getCardByIndex)
POST /properties/{propertyId}/room-stays/cards/{cardIndex}/revoke propertyId:UUID, cardIndex:Int - - CardRevokeResponse 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Card not found) Revoke. src/main/kotlin/com/android/trisolarisserver/controller/card/IssuedCards.kt:138 (revoke)
GET /properties/{propertyId}/room-stays/{roomStayId}/cards propertyId:UUID, roomStayId:UUID - - List<IssuedCardResponse> 200 Roles: ADMIN, MANAGER, STAFF, SUPERVISOR 401 (Missing principal), 404 (Room stay not found for property) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/card/IssuedCards.kt:125 (list)
POST /properties/{propertyId}/room-stays/{roomStayId}/cards propertyId:UUID, roomStayId:UUID - IssueCardRequest IssuedCardResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal; User not found), 403 (Property membership required), 404 (Room stay not found for property), 400 (cardId required; cardIndex required), 409 (Active card already exists for room stay; Active card already exists for room) Issue. src/main/kotlin/com/android/trisolarisserver/controller/card/IssuedCards.kt:83 (issue)
POST /properties/{propertyId}/room-stays/{roomStayId}/cards/prepare propertyId:UUID, roomStayId:UUID - CardPrepareRequest CardPrepareResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal; User not found), 403 (Property membership required), 404 (Room stay not found for property; Property not found), 400 (expiresAt required; expiresAt must be after issuedAt), 409 (Room stay is already closed) Prepare. src/main/kotlin/com/android/trisolarisserver/controller/card/IssuedCards.kt:50 (prepare)
POST /properties/{propertyId}/room-stays/{roomStayId}/void propertyId:UUID, roomStayId:UUID - RoomStayVoidRequest Unit 200 Roles: ADMIN, MANAGER, STAFF 401 (Missing principal), 403 (Missing role; Cannot void stay after first payment), 404 (Room stay not found for property), 409 (Cannot void checked-out room stay) Void room stay. src/main/kotlin/com/android/trisolarisserver/controller/room/RoomStays.kt:78 (voidRoomStay)
GET /properties/{propertyId}/room-types propertyId:UUID - - List<RoomTypeResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required) List resources (list room types). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomTypes.kt:49 (listRoomTypes)
POST /properties/{propertyId}/room-types propertyId:UUID - RoomTypeUpsertRequest RoomTypeResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Property not found; Amenity not found), 409 (Room type code already exists for property) Create resource (create room type). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomTypes.kt:107 (createRoomType)
GET /properties/{propertyId}/room-types/{roomTypeCode}/images propertyId:UUID, roomTypeCode:String - - List<RoomImageResponse> 200 Public/unspecified 404 (Room type not found) List resources (list by room type). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomTypeImages.kt:29 (listByRoomType)
GET /properties/{propertyId}/room-types/{roomTypeCode}/rate propertyId:UUID, roomTypeCode:String date:String (required), ratePlanCode:String? (optional) - RateResolveResponse 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property not found; Room type not found), 400 (Rate plan not for room type; Invalid date format) Resolve rate. src/main/kotlin/com/android/trisolarisserver/controller/room/RoomTypes.kt:60 (resolveRate)
DELETE /properties/{propertyId}/room-types/{roomTypeId} propertyId:UUID, roomTypeId:UUID - - Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Room type not found) Delete resource (delete room type). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomTypes.kt:189 (deleteRoomType)
PUT /properties/{propertyId}/room-types/{roomTypeId} propertyId:UUID, roomTypeId:UUID - RoomTypeUpsertRequest RoomTypeResponse 200 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Room type not found; Amenity not found), 409 (Room type code already exists for property) Update resource (update room type). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomTypes.kt:153 (updateRoomType)
GET /properties/{propertyId}/rooms propertyId:UUID - - List<RoomResponse> 200 Roles: ADMIN, AGENT, FINANCE, HOUSEKEEPING, MANAGER, STAFF 401 (Missing principal), 403 (Property membership required) List resources (list rooms). src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:66 (listRooms)
POST /properties/{propertyId}/rooms propertyId:UUID - RoomUpsertRequest RoomResponse 201 Roles: ADMIN 401 (Missing principal), 403 (Required property role not granted), 404 (Property not found; Room type not found), 400 (roomTypeCode required), 409 (Room number already exists for property) Create resource (create room). src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:278 (createRoom)
GET /properties/{propertyId}/rooms/availability propertyId:UUID - - List<RoomAvailabilityResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required) Room availability. src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:126 (roomAvailability)
GET /properties/{propertyId}/rooms/availability-range propertyId:UUID - - List<RoomAvailabilityRangeResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property not found), 400 (Invalid date range; Invalid date format) Room availability range. src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:184 (roomAvailabilityRange)
GET /properties/{propertyId}/rooms/available propertyId:UUID - - List<RoomResponse> 200 Authenticated user (Firebase) - Available rooms. src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:147 (availableRooms)
GET /properties/{propertyId}/rooms/available-range-with-rate propertyId:UUID - - List<RoomAvailabilityWithRateResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Property not found), 400 (Invalid date range; Invalid date format) Available rooms with rate. src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:221 (availableRoomsWithRate)
GET /properties/{propertyId}/rooms/board propertyId:UUID - - List<RoomBoardResponse> 200 Roles: ADMIN, AGENT, FINANCE, HOUSEKEEPING, MANAGER, STAFF 401 (Missing principal), 403 (Property membership required) Room board. src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:86 (roomBoard)
GET /properties/{propertyId}/rooms/board/stream propertyId:UUID - - SseEmitter 200 Any property member 401 (Missing principal), 403 (Property membership required) Room board stream. src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:114 (roomBoardStream)
GET /properties/{propertyId}/rooms/by-type/{roomTypeCode} propertyId:UUID, roomTypeCode:String - - List<RoomResponse> 200 Roles: ADMIN, AGENT, FINANCE, HOUSEKEEPING, MANAGER, STAFF 404 (Room type not found) Rooms by type. src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:160 (roomsByType)
DELETE /properties/{propertyId}/rooms/{roomId} propertyId:UUID, roomId:UUID - - Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Property membership required), 404 (Room not found for property), 409 (Cannot delete room with stays), 500 (Failed to delete room image files) Delete resource (delete room). src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:367 (deleteRoom)
PUT /properties/{propertyId}/rooms/{roomId} propertyId:UUID, roomId:UUID - RoomUpsertRequest RoomResponse 200 Roles: ADMIN 401 (Missing principal), 403 (Required property role not granted), 404 (Room not found for property; Room type not found), 400 (roomTypeCode required), 409 (Room number already exists for property) Update resource (update room). src/main/kotlin/com/android/trisolarisserver/controller/room/Rooms.kt:323 (updateRoom)
POST /properties/{propertyId}/rooms/{roomId}/cards/prepare-temp propertyId:UUID, roomId:UUID - - CardPrepareResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal; User not found), 403 (Property membership required), 404 (Room not found; Property not found) Prepare temporary. src/main/kotlin/com/android/trisolarisserver/controller/card/TemporaryRoomCards.kt:46 (prepareTemporary)
POST /properties/{propertyId}/rooms/{roomId}/cards/temp propertyId:UUID, roomId:UUID - IssueTempCardRequest IssuedCardResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal; User not found), 403 (Property membership required), 404 (Room not found), 400 (cardId required; cardIndex required), 409 (Active card already exists for room) Issue temporary. src/main/kotlin/com/android/trisolarisserver/controller/card/TemporaryRoomCards.kt:74 (issueTemporary)
GET /properties/{propertyId}/rooms/{roomId}/images propertyId:UUID, roomId:UUID - - List<RoomImageResponse> 200 Authenticated user (Firebase) 404 (Room not found) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImages.kt:55 (list)
POST /properties/{propertyId}/rooms/{roomId}/images propertyId:UUID, roomId:UUID file:MultipartFile (required), tagIds:List<UUID>? (optional) - RoomImageResponse 201 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Tag not found; Room not found), 400 (File is empty), 409 (Duplicate image for room) Upload. src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImages.kt:85 (upload)
PUT /properties/{propertyId}/rooms/{roomId}/images/reorder-room propertyId:UUID, roomId:UUID - RoomImageReorderRequest Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Image not found; Room not found), 400 (Images do not belong to room) Reorder room images. src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImages.kt:199 (reorderRoomImages)
PUT /properties/{propertyId}/rooms/{roomId}/images/reorder-room-type propertyId:UUID, roomId:UUID - RoomImageReorderRequest Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Image not found; Room not found), 400 (Images do not belong to room type; Images do not belong to property) Reorder room type images. src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImages.kt:227 (reorderRoomTypeImages)
DELETE /properties/{propertyId}/rooms/{roomId}/images/{imageId} propertyId:UUID, roomId:UUID, imageId:UUID - - Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Image not found; Room not found), 500 (Failed to delete image files) Delete resource (delete). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImages.kt:129 (delete)
GET /properties/{propertyId}/rooms/{roomId}/images/{imageId}/file propertyId:UUID, roomId:UUID, imageId:UUID size:String (optional) - ResponseEntity<FileSystemResource> 200 Any property member 401 (Missing principal), 403 (Property membership required), 404 (Image not found; File missing) File. src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImages.kt:257 (file)
PUT /properties/{propertyId}/rooms/{roomId}/images/{imageId}/tags propertyId:UUID, roomId:UUID, imageId:UUID - RoomImageTagUpdateRequest Unit 204 Roles: ADMIN, MANAGER 401 (Missing principal), 403 (Required property role not granted), 404 (Image not found; Tag not found) Update resource (update tags). src/main/kotlin/com/android/trisolarisserver/controller/room/RoomImages.kt:180 (updateTags)
GET /properties/{propertyId}/transport-modes propertyId:UUID - - List<TransportModeStatusResponse> 200 Any property member 401 (Missing principal), 403 (Property membership required) List resources (list). src/main/kotlin/com/android/trisolarisserver/controller/transport/TransportModes.kt:26 (list)
GET /properties/{propertyId}/users propertyId:UUID - - List<PropertyUserResponse> 200 Roles: ADMIN, AGENT, FINANCE, GUIDE, HOUSEKEEPING, MANAGER, STAFF, SUPERVISOR 401 (Missing principal), 403 (Property membership required) List resources (list property users). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:165 (listPropertyUsers)
GET /properties/{propertyId}/users/search propertyId:UUID phone:String? (optional) - List<PropertyUserDetailsResponse> 200 Roles: ADMIN, AGENT, FINANCE, GUIDE, HOUSEKEEPING, MANAGER, STAFF, SUPERVISOR 401 (Missing principal), 403 (Property membership required) Search property users. src/main/kotlin/com/android/trisolarisserver/controller/property/UserDirectory.kt:50 (searchPropertyUsers)
DELETE /properties/{propertyId}/users/{userId} propertyId:UUID, userId:UUID - - Unit 204 Roles: ADMIN 401 (Missing principal), 403 (Property membership required) Delete resource (delete property user). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:290 (deletePropertyUser)
PUT /properties/{propertyId}/users/{userId}/disabled propertyId:UUID, userId:UUID - PropertyUserDisableRequest PropertyUserResponse 200 Roles: ADMIN, AGENT, FINANCE, GUIDE, HOUSEKEEPING, MANAGER, STAFF, SUPERVISOR 401 (Missing principal), 403 (Role not allowed; Property membership required), 404 (User not found in property) Update resource (update property user disabled). src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:240 (updatePropertyUserDisabled)
PUT /properties/{propertyId}/users/{userId}/roles propertyId:UUID, userId:UUID - PropertyUserRoleRequest PropertyUserResponse 200 Roles: ADMIN, AGENT, MANAGER, STAFF 401 (Missing principal), 403 (Missing role; Role not allowed), 404 (Property not found; User not found), 400 (Unknown role) Upsert property user roles. src/main/kotlin/com/android/trisolarisserver/controller/property/Properties.kt:189 (upsertPropertyUserRoles)
GET /users - phone:String? (optional) - List<AppUserSummaryResponse> 200 SUPER_ADMIN 401 (User not found), 403 (Super admin only) List resources (list app users). src/main/kotlin/com/android/trisolarisserver/controller/property/UserDirectory.kt:27 (listAppUsers)