// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.ads.googleads.v24.errors;

option csharp_namespace = "Google.Ads.GoogleAds.V24.Errors";
option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v24/errors;errors";
option java_multiple_files = true;
option java_outer_classname = "VideoReservationErrorProto";
option java_package = "com.google.ads.googleads.v24.errors";
option objc_class_prefix = "GAA";
option php_namespace = "Google\\Ads\\GoogleAds\\V24\\Errors";
option ruby_package = "Google::Ads::GoogleAds::V24::Errors";

// Container for enum describing possible video reservation errors.
message VideoReservationErrorEnum {
  // Enum describing possible video reservation errors.
  enum VideoReservationError {
    // Enum unspecified.
    UNSPECIFIED = 0;

    // The received error code is not known in this version.
    UNKNOWN = 1;

    // The quote has expired.
    NEW_QUOTE_REQUIRED = 2;

    // The campaign's end date has to be less than 120 days from now.
    CAMPAIGN_END_TIME_TOO_DISTANT = 3;

    // The campaign budget is too small. To get a quote, increase the budget.
    BUDGET_TOO_SMALL = 4;

    // The campaign must run for more than 24 hours.
    CAMPAIGN_DURATION_TOO_SHORT = 5;

    // The campaign must be enabled before booking.
    CAMPAIGN_NOT_ENABLED = 6;

    // There aren't enough impressions available for the campaigns settings and
    // targeting. Broaden the targeting or lower the budget of the campaign to
    // get a quote.
    NOT_ENOUGH_AVAILABLE_INVENTORY = 7;

    // There aren't enough impressions available for the campaign settings and
    // targeting.
    TARGETING_TOO_NARROW = 8;

    // The type of the enabled ad group of this campaign isn't supported.
    UNSUPPORTED_AD_GROUP_TYPE = 9;

    // Bid modifiers other than 0% or -100% aren't supported.
    UNSUPPORTED_BID_MODIFIER = 10;

    // The type of placement was changed. YouTube Select lineups can only be
    // paired with other YouTube Select lineups.
    CANNOT_CHANGE_PRICING_MODEL = 11;

    // More than one lineup was selected. Only one lineup per campaign can be
    // targeted.
    INCOMPATIBLE_TARGETING = 12;

    // Some options in this campaign aren't supported.
    UNSUPPORTED_FEATURE = 13;

    // The customer must be verified by Google to run election ads in the
    // targeted country.
    MISSING_ELECTION_CERTIFICATE = 14;

    // This campaign has ended. Select a campaign that hasn't reached its end
    // date.
    CAMPAIGN_ENDED = 15;

    // Daily budget isn't available for fixed CPM campaigns. To use fixed CPM,
    // enter a campaign total budget.
    UNSUPPORTED_BUDGET_PERIOD = 16;

    // The campaign must have exactly one enabled ad group for reservation.
    EXACTLY_ONE_ENABLED_ADGROUP_REQUIRED = 17;

    // The frequency cap is lower than the minimum allowed for an enabled
    // campaign. Update the frequency cap to either a daily cap or a weekly cap
    // with at least 3 impressions per week.
    FREQUENCY_CAP_TOO_NARROW = 18;

    // The targeted country requires either a deal or a market rate.
    TARGETED_PACK_NEEDS_DEAL = 19;

    // The account is set to a currency that doesn't match the currency of the
    // rate card for the targeted video lineups.
    DEAL_CURRENCY_MISMATCH = 20;

    // Quote holds are unavailable for this campaign configuration.
    CANNOT_HOLD_CONTRACT = 21;

    // The account is suspended. Contact support for more info.
    CUSTOMER_NOT_ENABLED = 22;

    // The customer doesn't have permission to request a quote. Contact the
    // account owner for more info.
    CUSTOMER_NOT_ALLOWED = 23;

    // This account type can't request quotes. Use a different account or
    // contact support for more info.
    INVALID_ACCOUNT_TYPE = 24;

    // Google Account Managers can't request quotes for reservation campaigns.
    ACCOUNT_IS_MANAGER = 25;

    // The booking window for this lineup is not open yet.
    SEASONAL_LINEUP_BOOKING_WINDOW_NOT_OPEN = 26;

    // The campaign end date is later than the allowable end date for this
    // lineup. To continue booking, choose an earlier end date.
    SEASONAL_LINEUP_END_DATE_OFF_SEASON = 27;

    // There aren't enough impressions available for the campaign settings and
    // targeting. Broaden the location targeting to get a quote.
    SEASONAL_LINEUP_GEO_TARGETING_TOO_NARROW = 28;

    // The market rate for the targeted product isn't available.
    NO_MARKET_RATE_CARD_OR_BASE_RATE = 29;

    // The quote is stale, get a new quote and try again.
    STALE_QUOTE = 30;

    // Some of the targeted video lineups aren't available for
    // reservation campaigns.
    LINEUP_NOT_ALLOWED = 31;

    // This bidding strategy is not supported for reservation.
    UNSUPPORTED_BIDDING_STRATEGY = 32;

    // The campaign settings contain a positive geo target type which is not
    // allowed, for example Audio ads support PRESENCE only.
    UNSUPPORTED_POSITIVE_GEO_TARGET_TYPE = 33;

    // Only validate_only requests are supported.
    VALIDATE_ONLY_REQUIRED = 34;

    // Too many campaigns in request.
    TOO_MANY_CAMPAIGNS = 35;
  }
}
