Reservation Workflow Documentation
This document is auto-generated from the code. Do not edit manually.
To update this document, run yarn workspace @adamondo/backend generate:docs.
State Diagram
Statuses
- inquiry: Initial contact from guest.
- preApproved: Host has pre-approved the trip.
- declined: Request has been declined.
- confirmed: Payment successful, booking is live.
- cancelledByGuest/Host: Booking was cancelled.
- expired: Request expired due to inactivity.
- completed: Trip has finished.
Actions Logic
The workflow is driven by actors (Guest, Host, System) performing actions that trigger state transitions.
Cancellation Claim Rules
- Cancelled reservations (
cancelledByGuest,cancelledByHost) allow the same host claim actions ascompleted:issueClaimsettleNoClaim
- Refund/claim/transaction finalization is handled at claim settlement (
claimSettled), not at cancellation time. - If a reservation is cancelled before trip start, it is automatically settled with no-claim and moved to
claimSettled.
Screens
This section describes what each actor sees in their inbox for each reservation status.
Status: inquiry
Actor: Guest
- Title:
inbox.actions.messageAction1You messaged {{displayName}} about their car
- Description:
inbox.actions.messageActionInfoMost owners respond within 24 hours.
Actor: Host
- Title:
inbox.actions.hostAction1Invite {{displayName}} to book by pre-approving this trip
- Description:
inbox.actions.hostAction3Let {{displayName}} know these dates are available by pre-approving them.
- Actions:
- preApproved
- Label:
inbox.actions.preApprove(Display: "Pre-approve") - Type:
primary
- Label:
- declinedByHost
- Label:
inbox.actions.decline(Display: "Decline") - Type:
danger
- Label:
- preApproved
Status: approved
Actor: Guest
- Title:
inbox.actions.requestApprovedAction1Your booking request approved by {{displayName}}
- Description:
inbox.actions.requestTimeInfo1You have to book within
- Actions:
- declinedByGuest
- Label:
inbox.actions.decline(Display: "Decline") - Type:
danger
- Label:
- paid
- Label:
inbox.actions.book(Display: "Book") - Type:
primary
- Label:
- declinedByGuest
Actor: Host
- Title:
inbox.actions.requestApprovedRequest Approved
- Description:
inbox.actions.timeToExpireYour renter have 24 hours to respond to this or it will get expired
- Actions:
- declinedByHost
- Label:
inbox.actions.decline(Display: "Decline") - Type:
danger
- Label:
- declinedByHost
Status: paid
Actor: Guest
- Title:
inbox.actions.bookingConfirmedInfo1Your booking is confirmed with {{displayName}}
- Description:
inbox.actions.bookingCanceledInfoYou can contact your car owner and do necessary arrangements or you can cancel your reservation.
- Actions:
- cancelledByGuest
- Label:
inbox.actions.cancelReservation(Display: "Cancel reservation") - Type:
danger
- Label:
- cancelledByGuest
Actor: Host
- Title:
inbox.actions.bookingIsConfirmedBooking is confirmed
- Description:
inbox.actions.contactGuestYou can contact your renter and do necessary arrangements or you can cancel.
- Actions:
- cancelledByHost
- Label:
inbox.actions.cancelReservation(Display: "Cancel reservation") - Type:
danger
- Label:
- cancelledByHost
Status: declined
Actor: Guest
- Title:
inbox.actions.requestDeclinedRequest declined
- Description:
inbox.actions.guestDeclinedInfoYour request is declined by owner. You can choose different dates or search for other car.
Actor: Host
- Title:
inbox.actions.requestDeclinedRequest declined
- Description:
inbox.actions.declinedInfoMake sure your calendar is up-to-date and that your vehicle page accurately reflects your car rules and requirements.
Status: cancelledByGuest
Actor: Guest
- Title:
inbox.actions.bookingRequestCancel1Booking request is cancelled
- Description:
inbox.actions.bookingRequestCancel2Your booking request is cancelled.
Actor: Host
- Title:
inbox.actions.bookingRequestCancel1Booking request is cancelled
- Description:
inbox.actions.bookingRequestCancel3{{displayName}}'s booking request is cancelled.
- Actions:
- issueClaim
- Label:
inbox.actions.issueClaim(Display: "Issue claim") - Type:
primary
- Label:
- settleNoClaim
- Label:
inbox.actions.noClaimSettle(Display: "No claim") - Type:
outline
- Label:
- issueClaim
Status: cancelledByHost
Actor: Guest
- Title:
inbox.actions.bookingRequestCancel1Booking request is cancelled
- Description:
inbox.actions.bookingRequestCancel2Your booking request is cancelled.
Actor: Host
- Title:
inbox.actions.bookingRequestCancel1Booking request is cancelled
- Description:
inbox.actions.bookingRequestCancel3{{displayName}}'s booking request is cancelled.
- Actions:
- issueClaim
- Label:
inbox.actions.issueClaim(Display: "Issue claim") - Type:
primary
- Label:
- settleNoClaim
- Label:
inbox.actions.noClaimSettle(Display: "No claim") - Type:
outline
- Label:
- issueClaim
Status: expired
Actor: Guest
- Title:
inbox.actions.bookingExpiredTitleYour booking request has expired.
- Description:
inbox.actions.bookingExpiredInfoTry sending request again or send an inquiry to get in touch with the owner
Actor: Host
- Title:
inbox.actions.bookingIsExpiredBooking request is expired
- Description:
inbox.actions.bookingIsExpired1{{displayName}}'s booking request is expired.
Status: completed
Actor: Guest
- Title:
inbox.actions.tripCompleted1Trip is completed
- Description:
inbox.actions.tripCompleted2Your trip is completed.
Actor: Host
- Title:
inbox.actions.reservationCompleted1Reservation is completed
- Description:
inbox.actions.reservationCompleted2Reservation of your car is completed.
- Actions:
- issueClaim
- Label:
inbox.actions.issueClaim(Display: "Issue claim") - Type:
primary
- Label:
- settleNoClaim
- Label:
inbox.actions.noClaimSettle(Display: "No claim") - Type:
outline
- Label:
- issueClaim
Status: claimUnderRenterReview
Actor: Guest
- Title:
inbox.actions.claimUnderReviewTitleGuestClaim pending your review
- Description:
inbox.actions.claimUnderReviewDescriptionGuestReview claim items and choose approve, return, or escalate.
- Actions:
- approveClaim
- Label:
inbox.actions.approveClaim(Display: "Approve claim") - Type:
primary
- Label:
- returnClaim
- Label:
inbox.actions.returnClaim(Display: "Return claim") - Type:
outline
- Label:
- escalateClaim
- Label:
inbox.actions.escalateClaim(Display: "Escalate to admin") - Type:
danger
- Label:
- approveClaim
Actor: Host
- Title:
inbox.actions.claimUnderReviewTitleHostClaim sent to renter
- Description:
inbox.actions.claimUnderReviewDescriptionHostYour claim is waiting for renter review.
Status: claimReturnedToOwner
Actor: Guest
- Title:
inbox.actions.claimReturnedToOwnerTitleGuestOwner is updating claim
- Description:
inbox.actions.claimReturnedToOwnerDescriptionGuestYou returned the claim. Waiting for owner update.
Actor: Host
- Title:
inbox.actions.claimReturnedToOwnerTitleClaim returned to you
- Description:
inbox.actions.claimReturnedToOwnerDescriptionUpdate your claim details and resubmit, or escalate to Adamondo admins.
- Actions:
- updateClaim
- Label:
inbox.actions.resubmitClaim(Display: "Resubmit claim") - Type:
primary
- Label:
- settleNoClaim
- Label:
inbox.actions.noClaimSettle(Display: "No claim") - Type:
outline
- Label:
- escalateClaim
- Label:
inbox.actions.escalateClaim(Display: "Escalate to admin") - Type:
danger
- Label:
- updateClaim
Status: claimReturnedToRenter
Actor: Guest
- Title:
inbox.actions.claimReturnedToRenterTitleClaim returned to renter
- Description:
inbox.actions.claimReturnedToRenterDescriptionGuestAdmin updated claim values and sent it back to you.
Actor: Host
- Title:
inbox.actions.claimReturnedToRenterTitleClaim returned to renter
- Description:
inbox.actions.claimReturnedToRenterDescriptionHostAdmin asked renter to review updated claim values.
Status: claimUnderAdminReview
Actor: Guest
- Title:
inbox.actions.claimEscalatedTitleClaim under admin review
- Description:
inbox.actions.claimEscalatedDescriptionGuestAdamondo admins are reviewing this claim.
Actor: Host
- Title:
inbox.actions.claimEscalatedTitleClaim under admin review
- Description:
inbox.actions.claimEscalatedDescriptionHostAdamondo admins are reviewing this claim.
Status: claimSettled
Actor: Guest
- Title:
inbox.actions.claimSettledTitleGuestClaim settled
- Description:
inbox.actions.claimSettledDescriptionGuestClaim settlement is complete and deposit adjustments are finalized.
Actor: Host
- Title:
inbox.actions.claimSettledTitleHostClaim settled
- Description:
inbox.actions.claimSettledDescriptionHostClaim settlement has been finalized.