Feed Errors

Feed Error Notifications

Reserve with Google sends automatic notification emails if a feed is uploaded with errors. These are sent to the support/escalation technical contact for a partner and will include error codes from the table below.

The emails that Reserve with Google sends out will contain the error codes and the data from the feed item that is causing the error. If the specified field is not listed in the data, that means that the field was either left out of the feed or had its default value.

Feed Error Codes

  // A list of errors that may be thrown during feed ingestion.
  enum Error {
    // Unused.
    ERROR_UNSPECIFIED = 0;

    // Timestamp represents either a time too early in the past, or too far in
    // the future to represent a valid value. This error is mainly intended to
    // catch errors with units, like microseconds vs. milliseconds, or seconds.
    TIMESTAMP_OUT_OF_RANGE = 1;

    // Duration is either negative, or too large, or too small to represent a
    // valid duration. This error is mainly intended to catch errors with units,
    // like microseconds vs. milliseconds, or seconds.
    DURATION_OUT_OF_RANGE = 2;

    // Start time is earlier than end time, or the individual timestamps which
    // make-up the timerange are themselves out of valid range.
    INVALID_TIME_RANGE = 3;

    // The price is either too small a fraction to be useful (e.g. one millionth
    // of a dollar), or too large (e.g. one million dollars) to represent a
    // correct price. Note that zero dollars is accepted and means "free".
    // This error is mainly intended to catch errors with units, like
    // microdollars vs. whole dollars.
    PRICE_OUT_OF_RANGE = 4;

    // The currency code is not supported.
    INVALID_CURRENCY_CODE = 5;

    // The tax rate is either too small a fraction to be useful (e.g. one
    // millionth of a percent), or to large to be an correct tax rate
    // (e.g. 1000%). Note that zero is accepted and means no tax. This error is
    // mainly intended to catch errors with units, like micro-percent vs.
    // percent.
    TAX_RATE_OUT_OF_RANGE = 6;

    // A record was sent within a restriction, but does not belong within that
    // restriction. e.g. service_availability restrict between Jan 1st 2017 and
    // Jan 2nd 2017, with an availability slot for Jan 3rd 2017.
    RECORD_OUT_OF_RESTRICTION = 7;

    // The total or open spot count of an availability slot is either negative,
    // or too large to represent a correct spot count (e.g. 1 million spots).
    AVAILABILITY_SPOT_COUNT_OUT_OF_RANGE = 8;

    // Restricts are only useful to remove availability slots, and incremental
    // feeds don’t ever remove slots. Using both together is always a mistake.
    AVAILABILITY_RESTRICT_IN_INCREMENTAL_FEED = 9;

    // The id of a Merchant, Service or PaymentOption is missing.
    MISSING_ID = 10;

    // The name of a Merchant, Service or PaymentOption is missing.
    MISSING_NAME = 11;

    // The address of a Merchant is missing.
    MISSING_ADDRESS = 12;

    // The price of a PaymentOption is missing.
    MISSING_PRICE = 13;

    // Multiple payment options with the same payment_option_id are present in
    // the Merchant feed, and are not identical.
    CONFLICTING_PAYMENT_OPTION = 14;

    // Used when schedule exceptions are present but no recurrence.
    MISSING_RECURRENCE = 15;

    // The start of an exception must not exceed the duration of the final
    // slot. The end of an exception must not terminate before the beginning
    // of the first slot.
    SCHEDULE_EXCEPTION_OUT_OF_RECURRENCE = 16;

    // More than one payment option id override was found in an availability
    // slot. Only one is allowed.
    TOO_MANY_PAYMENT_OPTIONS = 17;

    // Used when staff_id or room_id is provided and the corresponding name
    // field is empty.
    MISSING_RESOURCES = 18;

    // The tokenization configuration is malformed.
    TOKENIZATION_CONFIG = 19;

    // Used when a required field is not set.
    MISSING_REQUIRED_FIELD = 20;

    // The provided MerchantMatchingHints message is invalid.
    INVALID_MATCHING_HINTS = 21;

    // The given URL is considered harmful and therefore blacklisted by Google,
    // or it is not allowed to be served on Google domains due to FTC Opt-out
    // regulation.
    BAD_OR_INELIGIBLE_URL = 22;

    // The service attribute provided on the merchant was invalid.
    INVALID_SERVICE_ATTRIBUTE = 23;

    // The scheduling rules provided on the service was invalid.
    INVALID_SCHEDULING_RULES = 24;

    // The waitlist rules message provided on the service was invalid.
    INVALID_WAITLIST_RULES = 25;

    // The provided last_bookable_sec is later than the start_sec.
    LAST_BOOKABLE_SEC_AFTER_START_SEC = 26;
  }