Skip to main content

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 as completed:
    • issueClaim
    • settleNoClaim
  • 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.messageAction1

    You messaged {{displayName}} about their car

  • Description: inbox.actions.messageActionInfo

    Most owners respond within 24 hours.

Actor: Host

  • Title: inbox.actions.hostAction1

    Invite {{displayName}} to book by pre-approving this trip

  • Description: inbox.actions.hostAction3

    Let {{displayName}} know these dates are available by pre-approving them.

  • Actions:
    • preApproved
      • Label: inbox.actions.preApprove (Display: "Pre-approve")
      • Type: primary
    • declinedByHost
      • Label: inbox.actions.decline (Display: "Decline")
      • Type: danger

Status: approved

Actor: Guest

  • Title: inbox.actions.requestApprovedAction1

    Your booking request approved by {{displayName}}

  • Description: inbox.actions.requestTimeInfo1

    You have to book within

  • Actions:
    • declinedByGuest
      • Label: inbox.actions.decline (Display: "Decline")
      • Type: danger
    • paid
      • Label: inbox.actions.book (Display: "Book")
      • Type: primary

Actor: Host

  • Title: inbox.actions.requestApproved

    Request Approved

  • Description: inbox.actions.timeToExpire

    Your renter have 24 hours to respond to this or it will get expired

  • Actions:
    • declinedByHost
      • Label: inbox.actions.decline (Display: "Decline")
      • Type: danger

Status: paid

Actor: Guest

  • Title: inbox.actions.bookingConfirmedInfo1

    Your booking is confirmed with {{displayName}}

  • Description: inbox.actions.bookingCanceledInfo

    You 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

Actor: Host

  • Title: inbox.actions.bookingIsConfirmed

    Booking is confirmed

  • Description: inbox.actions.contactGuest

    You can contact your renter and do necessary arrangements or you can cancel.

  • Actions:
    • cancelledByHost
      • Label: inbox.actions.cancelReservation (Display: "Cancel reservation")
      • Type: danger

Status: declined

Actor: Guest

  • Title: inbox.actions.requestDeclined

    Request declined

  • Description: inbox.actions.guestDeclinedInfo

    Your request is declined by owner. You can choose different dates or search for other car.

Actor: Host

  • Title: inbox.actions.requestDeclined

    Request declined

  • Description: inbox.actions.declinedInfo

    Make 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.bookingRequestCancel1

    Booking request is cancelled

  • Description: inbox.actions.bookingRequestCancel2

    Your booking request is cancelled.

Actor: Host

  • Title: inbox.actions.bookingRequestCancel1

    Booking request is cancelled

  • Description: inbox.actions.bookingRequestCancel3

    {{displayName}}'s booking request is cancelled.

  • Actions:
    • issueClaim
      • Label: inbox.actions.issueClaim (Display: "Issue claim")
      • Type: primary
    • settleNoClaim
      • Label: inbox.actions.noClaimSettle (Display: "No claim")
      • Type: outline

Status: cancelledByHost

Actor: Guest

  • Title: inbox.actions.bookingRequestCancel1

    Booking request is cancelled

  • Description: inbox.actions.bookingRequestCancel2

    Your booking request is cancelled.

Actor: Host

  • Title: inbox.actions.bookingRequestCancel1

    Booking request is cancelled

  • Description: inbox.actions.bookingRequestCancel3

    {{displayName}}'s booking request is cancelled.

  • Actions:
    • issueClaim
      • Label: inbox.actions.issueClaim (Display: "Issue claim")
      • Type: primary
    • settleNoClaim
      • Label: inbox.actions.noClaimSettle (Display: "No claim")
      • Type: outline

Status: expired

Actor: Guest

  • Title: inbox.actions.bookingExpiredTitle

    Your booking request has expired.

  • Description: inbox.actions.bookingExpiredInfo

    Try sending request again or send an inquiry to get in touch with the owner

Actor: Host

  • Title: inbox.actions.bookingIsExpired

    Booking request is expired

  • Description: inbox.actions.bookingIsExpired1

    {{displayName}}'s booking request is expired.


Status: completed

Actor: Guest

  • Title: inbox.actions.tripCompleted1

    Trip is completed

  • Description: inbox.actions.tripCompleted2

    Your trip is completed.

Actor: Host

  • Title: inbox.actions.reservationCompleted1

    Reservation is completed

  • Description: inbox.actions.reservationCompleted2

    Reservation of your car is completed.

  • Actions:
    • issueClaim
      • Label: inbox.actions.issueClaim (Display: "Issue claim")
      • Type: primary
    • settleNoClaim
      • Label: inbox.actions.noClaimSettle (Display: "No claim")
      • Type: outline

Status: claimUnderRenterReview

Actor: Guest

  • Title: inbox.actions.claimUnderReviewTitleGuest

    Claim pending your review

  • Description: inbox.actions.claimUnderReviewDescriptionGuest

    Review claim items and choose approve, return, or escalate.

  • Actions:
    • approveClaim
      • Label: inbox.actions.approveClaim (Display: "Approve claim")
      • Type: primary
    • returnClaim
      • Label: inbox.actions.returnClaim (Display: "Return claim")
      • Type: outline
    • escalateClaim
      • Label: inbox.actions.escalateClaim (Display: "Escalate to admin")
      • Type: danger

Actor: Host

  • Title: inbox.actions.claimUnderReviewTitleHost

    Claim sent to renter

  • Description: inbox.actions.claimUnderReviewDescriptionHost

    Your claim is waiting for renter review.


Status: claimReturnedToOwner

Actor: Guest

  • Title: inbox.actions.claimReturnedToOwnerTitleGuest

    Owner is updating claim

  • Description: inbox.actions.claimReturnedToOwnerDescriptionGuest

    You returned the claim. Waiting for owner update.

Actor: Host

  • Title: inbox.actions.claimReturnedToOwnerTitle

    Claim returned to you

  • Description: inbox.actions.claimReturnedToOwnerDescription

    Update your claim details and resubmit, or escalate to Adamondo admins.

  • Actions:
    • updateClaim
      • Label: inbox.actions.resubmitClaim (Display: "Resubmit claim")
      • Type: primary
    • settleNoClaim
      • Label: inbox.actions.noClaimSettle (Display: "No claim")
      • Type: outline
    • escalateClaim
      • Label: inbox.actions.escalateClaim (Display: "Escalate to admin")
      • Type: danger

Status: claimReturnedToRenter

Actor: Guest

  • Title: inbox.actions.claimReturnedToRenterTitle

    Claim returned to renter

  • Description: inbox.actions.claimReturnedToRenterDescriptionGuest

    Admin updated claim values and sent it back to you.

Actor: Host

  • Title: inbox.actions.claimReturnedToRenterTitle

    Claim returned to renter

  • Description: inbox.actions.claimReturnedToRenterDescriptionHost

    Admin asked renter to review updated claim values.


Status: claimUnderAdminReview

Actor: Guest

  • Title: inbox.actions.claimEscalatedTitle

    Claim under admin review

  • Description: inbox.actions.claimEscalatedDescriptionGuest

    Adamondo admins are reviewing this claim.

Actor: Host

  • Title: inbox.actions.claimEscalatedTitle

    Claim under admin review

  • Description: inbox.actions.claimEscalatedDescriptionHost

    Adamondo admins are reviewing this claim.


Status: claimSettled

Actor: Guest

  • Title: inbox.actions.claimSettledTitleGuest

    Claim settled

  • Description: inbox.actions.claimSettledDescriptionGuest

    Claim settlement is complete and deposit adjustments are finalized.

Actor: Host

  • Title: inbox.actions.claimSettledTitleHost

    Claim settled

  • Description: inbox.actions.claimSettledDescriptionHost

    Claim settlement has been finalized.