WaitlistEntry specification

A waitlist entry contains the information about a customer's position in the waitlist, including information about the number of parties ahead, wait time, etc.


enum WaitlistEntryState {
  WAITLIST_ENTRY_STATE_UNSPECIFIED = 0;
  // The waitlist entry was created and the user is currently waiting in the
  // waitlist.
  WAITING = 1;
  // The waitlist entry has been canceled. Cancellation for no-shows should use
  // the NO_SHOW state.
  CANCELED = 2;
  // The merchant is ready to serve the user.
  SERVICE_READY = 3;
  // The user has checked in with the host and is waiting to be seated.
  CHECKED_IN = 4;
  // The user has arrived and been seated by the merchant.
  SEATED = 5;
  // The user did not arrive at the merchant in time and lost their space.
  NO_SHOW = 6;
}

// The times at which the waitlist entry changed state.
message WaitlistEntryStateTimes {
  // Required. The time at which the waitlist entry was created.
  // In seconds since Unix epoch.
  int64 created_time_seconds = 1;

  // The time that the waitlist entry was cancelled. Must be populated
  // when the waitlist entry has been canceled but not before.
  // In seconds since Unix epoch.
  int64 canceled_time_seconds = 2;

  // The time the merchant was ready to serve the user.
  // service_readied_time_seconds must be populated after the merchant is
  // ready to serve the user but not before.
  // In seconds since Unix epoch.
  int64 service_readied_time_seconds = 3;

  // The actual time the user checked in with the host. checked_in_time must be
  // populated after the user has checked in with the merchant but not before.
  // In seconds since Unix epoch.
  int64 checked_in_time_seconds = 4;

  // The seated time for the user. seated_time_seconds must be populated
  // when the user has been seated but not before.
  // In seconds since Unix epoch.
  int64 seated_time_seconds = 5;

  // The time that the user was marked as a no-show. marked_no_show_time_seconds
  // must be populated when the user has been marked a no-show but not before.
  // In seconds since Unix epoch.
  int64 marked_no_show_time_seconds = 6;
}

// An entry in the waitlist.
message WaitlistEntry {
  // Required.
  WaitlistEntryState waitlist_entry_state = 1;

  // Required. The times at which the waitlist entry changed state.
  WaitlistEntryStateTimes waitlist_entry_state_times = 2;

  // Required. Contains fields measuring how long (in time or # of people) until
  // the user is ready to leave the waitlist and be seated.
  WaitEstimate wait_estimate = 3;
}