RSVP to a Ride

A user indicates their intention to join a ride and selects where they will join from.

Who Can Do This

  • Any user who can discover the ride:
  • Private ride: users with the ride link.
  • Public ride: any authenticated user.
  • Group ride: members of the group the ride was created in.

Steps

  1. Open the ride.
  2. Select an RSVP status: yes, no, or maybe.
  3. If status is yes or maybe, select a joining location — the breakpoint where you plan to join the ride.
  4. Submit the RSVP.

Rules

  • joiningLocationId is required when the status is yes or maybe. Any breakpoint type is valid as a joining location, including destination. A participant can update their joining location at any time while the ride is upcoming or on-going (subject to the end-time cutoff).
  • If the ride has Require RSVP Approval enabled, the RSVP is submitted as pending and must be approved by the creator or an admin before the participant gains full access.
  • If maxRiders is set and the current combined count of yes, maybe, and pending participants has reached the limit, no further yes or maybe RSVPs are accepted. All three statuses consume a slot. A pending RSVP holds the slot until it is approved (converting to yes) or rejected (freeing the slot). Lowering maxRiders after RSVPs are in place does not remove or invalidate any existing participant — it only tightens the gate for new submissions.
  • A maybe RSVP is automatically upgraded to yes when the participant starts the ride.
  • A user can RSVP or update their RSVP while the ride is upcoming or on-going. Late RSVPs on an on-going ride are allowed — the participant can join and start navigation immediately. Changing from yes or maybe to no — or withdrawing a pending RSVP by changing to no before it is approved — frees the slot immediately, allowing another rider to RSVP.
  • A no RSVP is reversible. A user who RSVPd no can change back to yes or maybe at any time while the ride is upcoming or on-going, subject to the same capacity and access rules as a new RSVP.

What Happens Next

  • yes: the participant has access to the ride's navigation and intercom features.
  • no: the participant is recorded as not attending. No access to navigation or intercom.
  • maybe: the participant is recorded as tentative. Access to navigation and intercom features is granted. Status upgrades to yes if the participant starts the ride.
  • Pending (approval required): the RSVP is queued until a creator or admin approves it.

Failure Cases

  • Ride has ended: RSVPs cannot be submitted or updated after the ride's scheduled end time has passed.
  • Ride is full: the combined count of yes, maybe, and pending participants has reached maxRiders; no more yes or maybe RSVPs are allowed.
  • No joining location selected: RSVP cannot be submitted without a joining location for yes or maybe status.
  • Not discoverable: the user does not have access to the ride (no link for private, not a group member for group rides).
  • Ride is a draft: draft rides are visible only to their creator. They cannot be shared, discovered, or RSVPed to by anyone else — including group members for group rides.
  • Blocked participant: a user on the ride's block list (previously removed or rejected by the creator or an admin) cannot re-RSVP. The ride is hidden from Discovery for that user. If they follow a direct link, the ride appears as unavailable. The creator can unblock them — see Remove a Participant.

Status: partially-live. Core yes/no/maybe selection with joining location is complete on both backend and frontend. Missing: RSVP approval queue — backend does not create a pending state when requireApproval is enabled; maxRiders capacity not enforced by backend; blocked-participant check absent; draft ride prevention not explicit in backend.