Feed 错误代码(旧版)

Feed 错误通知

如果上传 Feed 时出现错误,Google 易购中心会发送自动通知电子邮件。电子邮件的收件人为合作伙伴的支持联系人/上级技术联系人,电子邮件还会附上下表中的错误代码。获得合作伙伴门户的访问权限后(请参阅指南),您可以在“账号和用户”页面中设置联系电子邮件地址(文档)。

行动中心发出的电子邮件将包含错误代码以及导致错误的 Feed 项的数据。如果数据中未列出具体字段,则意味着 Feed 中没有相应字段或为其使用的是默认值。

Feed 错误代码

  // A list of errors that may be thrown during feed ingestion.
  //
  // Next ID: 94
  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 a 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, PaymentOption, or event entity is
    // missing.
    MISSING_NAME = 11;

    // The address of a Merchant or Service-level location 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 not allowed 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;

    // The provided first_bookable_sec is later than the start_sec.
    FIRST_BOOKABLE_SEC_AFTER_START_SEC = 29;

    // The provided last_online_cancellable_sec is later than the start_sec.
    LAST_ONLINE_CANCELLABLE_SEC_AFTER_START_SEC = 49;

    // The supported_resources message on the merchant was invalid.
    INVALID_SUPPORTED_RESOURCES = 27;

    // Recurrences over 24h are not supported.
    RECURRENCE_TOO_LONG = 28;

    // An entity in TicketingVerticalSpecificData is invalid.
    INVALID_ENTITY = 43;

    // An invalid combination of ticketing entity type and event
    // category/entity role.
    INVALID_ENTITY_TYPE_COMBINATION = 30;

    // Indicates the incorrect prepayment type was set for the service's price
    // display type. E.g. Any service that uses PriceInterpretation.STARTS_AT
    // must use PrepaymentType.NOT_SUPPORTED.
    INVALID_PREPAYMENT_TYPE_FOR_PRICE_INTERPRETATION = 31;

    // The type provided on the service is invalid. The aggregator does not have
    // multiple booking transaction flows scheduling capability, and the type is
    // not supported by the aggregator vertical. E.g., An appointment-based
    // service is provided by an order-based aggregator.
    INVALID_SERVICE_TYPE = 32;

    // The provided service_name is invalid.
    INVALID_SERVICE_NAME = 54;

    // Indicates the provided prepayment terms is invalid.
    INVALID_PREPAYMENT_TERMS = 50;

    // Indicates the localized text message default value is empty.
    MISSING_TEXT = 33;

    // Indicates the locale of a localized text is missing.
    MISSING_TEXT_LOCALE = 34;

    // Indicates duplicate locales in a localized text.
    DUPLICATE_TEXT_LOCALE = 40;

    // Indicates the value of a localized text is missing.
    MISSING_TEXT_VALUE = 35;

    // Indicates a text value is over the max allowable length for that text.
    ABOVE_MAX_TEXT_LENGTH = 69;

    // Indicates that a service-level location does not contain enough
    // information. E.g., a service-level location must be supplied at least one
    // of fields below: place_id, geo_coordinates or description.
    MISSING_SERVICE_LOCATION = 36;

    // The type provided for the location is invalid.
    INVALID_LOCATION_TYPE = 37;

    // The location id has duplicates in the same service.
    DUPLICATE_LOCATION_ID = 38;

    // The location id is not valid.
    INVALID_LOCATION_ID = 39;

    // The refund condition provided on the scheduling rule is not valid.
    INVALID_REFUND_CONDITION = 41;

    // MusicBrainz ID provided for an entity is invalid.
    INVALID_MUSICBRAINZ_ID = 42;

    // Rating provided is not valid;
    INVALID_RATING = 44;

    // The intake form field is not valid. Some fields are only valid for
    // specific field types.
    INVALID_INTAKE_FORM_FIELDS = 45;

    // The target of a Review is missing.
    MISSING_TARGET = 46;

    // The content (i.e., both rating and text) of a Review is missing.
    MISSING_CONTENT = 47;

    // The type provided for the ticket redemption method is invalid.
    INVALID_TICKET_REDEMPTION_TYPE = 48;

    // ServiceType of a virtual service should always be set as
    // SERVICE_TYPE_ONLINE_APPOINTMENT.
    INVALID_VIRTUAL_SERVICE_TYPE = 51;

    // This error is shown when there is not valid payment option for the
    // virtual service.
    MISSING_VIRTUAL_SERVICE_PAYMENT_OPTION = 52;

    // Direct merchant payment is currently only allowed for virtual service and
    // not allowed for other service types. Also direct_merchant_payment is not
    // allowed for service with pre-payment as required.
    INVALID_DIRECT_MERCHANT_PAYMENT = 53;

    // [BEGIN Generic Feed error types]

    // The entity type could not be extracted from the chunked entity value.
    DATA_RECORD_ENTITY_EXTRACTION_FAILED = 55;

    // The extracted entity type is empty.
    DATA_RECORD_ENTITY_TYPE_EMPTY = 56;

    // The extracted entity type does not have a Key configuration.
    DATA_RECORD_MISSING_ENTITY_KEY = 57;

    // Key extractors could not be built from the rules specified in the feed
    // configuration.
    DATA_RECORD_INVALID_KEY_EXTRACTORS = 58;

    // The extracted entity type is not valid.
    DATA_RECORD_INVALID_ENTITY_TYPE = 59;

    // An entity key could not be extracted from the chunked entity value.
    DATA_RECORD_KEY_EXTRACTION_FAILED = 60;

    // The primary key could not be extracted from the entity value.
    PROTO_KEY_EXTRACTION_FAILED = 78;

    // Duplicate primary keys were detected in the feed.
    DUPLICATE_KEY_DETECTED = 79;

    // The CDS F2 write failed.
    F2_WRITE_FAILED = 80;

    // [END Generic Feed error types]
    // The merchant or service contains action links for an action type that //
    // may not support food ordering metadata.
    UNSUPPORTED_ACTION_TYPE_FOR_FOOD_ORDERING_METADATA = 61;

    // The merchant or service contains action links with invalid food ordering
    // metadata.
    INVALID_ACTION_LINK_FOOD_ORDERING_METADATA = 62;

    // The chunked entity value could not be parsed from the input file.
    DATA_RECORD_ENTITY_VALUE_PARSING_FAILED = 63;

    // The service ranking hint is invalid.
    INVALID_RANKING_HINT = 64;

    // Duplicate option of UnsupportedPartySizeOption has been set.
    DUPLICATE_UNSUPPORTED_PARTY_SIZE_OPTION = 65;

    // UnsupportedPartySizeOption must have a value.
    UNSUPPORTED_PARTY_SIZE_OPTION_KIND_EMPTY = 66;

    // Reservation linkout experience is not supported.
    UNSUPPORTED_RESERVATION_LINKOUT_TEMPLATE = 67;

    // Reservation linkout experience, which uses linkout_required_reason, is
    // not supported.
    UNSUPPORTED_LINKOUT_REQUIRED_REASON = 68;

    // A merchant has services with duplicate names within a locale.
    DUPLICATE_SERVICE_NAMES = 70;

    // A merchant is missing descriptions for many of its services.
    PROVIDED_SERVICE_DESCRIPTIONS_BELOW_THRESHOLD = 71;

    // A merchant has services with duplicate (name, duration, category, price).
    DUPLICATE_SERVICES = 72;

    // The entity type could not be extracted from a proto value in an input
    // file.
    PROTO_ENTITY_PARSING_FAILED = 73;

    // An ActionDetail has the same Entity ID as another
    DUPLICATE_ENTITY_ID = 74;

    // The action link is empty
    EMPTY_ACTION_LINK = 75;

    // The Action link does not contain any Actions
    MISSING_LINK_ACTIONS = 76;

    // The Entity is missing it's location field
    MISSING_ENTITY_LOCATION = 77;

    // The service_id is invalid.
    INVALID_SERVICE_ID = 81;

    // The text locale is invalid.
    INVALID_TEXT_LOCALE = 82;

    // The room description is missing default text field.
    ROOM_DESCRIPTION_MISSING_DEFAULT_VALUE = 83;

    // Indicates the provided prepayment is missing price info.
    MISSING_PRICE_INFO = 84;

    // Indicates the prepayment price range is invalid.
    PREPAYMENT_PRICE_RANGE_INVERSION = 85;

    // Indicates the prepayment price range is equal to the min price, in this
    // case single price should be used.
    PREPAYMENT_PRICE_RANGE_EQUAL = 86;

    // The URI template proto is provided but template string is missing.
    URI_TEMPLATE_MISSING = 87;

    // The URI template is missing required parameters.
    URI_TEMPLATE_MISSING_REQUIRED_PARAMETERS = 88;

    // The URI template has unsupported parameters.
    URI_TEMPLATE_UNSUPPORTED_PARAMS = 89;

    // The merchant or service contains action links with invalid dining
    // metadata.
    INVALID_ACTION_LINK_DINING_METADATA = 91;

    // The service contains uri template for redirect integration, but the
    // feature is not enabled for the environment.
    REDIRECT_NOT_ENABLED_FOR_ENVIRONMENT = 92;

    // The given URL is not canonical. For details on URL canonicalization, see
    // http://shortn/_VbL8UOdKSK.
    NON_CANONICAL_URL = 93;
  }