// Copyright 2018 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.


// Proto file describing the BiddingStrategy resource
syntax = "proto3";

package google.ads.googleads.v0.resources;

import "google/ads/googleads/v0/common/bidding.proto";
import "google/ads/googleads/v0/enums/bidding_strategy_type.proto";
import "google/protobuf/wrappers.proto";

option java_package = "com.google.ads.googleads.v0.resources";
option java_outer_classname = "BiddingStrategyProto";
option java_multiple_files = true;

// Objective-C prefix. Google Ads API.
option objc_class_prefix = "GAA";
option csharp_namespace = "Google.Ads.GoogleAds.V0.Resources";
option php_namespace = "Google\\Ads\\GoogleAds\\V0\\Resources";
option php_metadata_namespace = "Google\\Ads\\GoogleAds\\V0\\Resources";

// A bidding strategy.
message BiddingStrategy {

  // The resource name of the bidding strategy.
  // Bidding strategy resource names have the form:
  //
  // `customers/{customer_id}/biddingStrategies/{bidding_strategy_id}`
  string resource_name = 1;

  // The ID of the bidding strategy.
  google.protobuf.Int64Value id = 3;

  // The name of the bidding strategy.
  // All bidding strategies within an account must be named distinctly.
  //
  // The length of this string should be between 1 and 255, inclusive,
  // in UTF-8 bytes, (trimmed).
  google.protobuf.StringValue name = 4;

  // The type of the bidding strategy.
  // Create a bidding strategy by setting the bidding scheme.
  //
  // This field is read-only.
  enums.BiddingStrategyTypeEnum.BiddingStrategyType type = 5;

  // The bidding scheme.
  //
  // Only one can be set.
  oneof scheme {

    // A bidding strategy that raises bids for clicks that seem more likely to
    // lead to a conversion and lowers them for clicks where they seem less
    // likely.
    common.EnhancedCpc enhanced_cpc = 7;

    // A bidding strategy that sets max CPC bids to target impressions on
    // page one or page one promoted slots on google.com.
    common.PageOnePromoted page_one_promoted = 8;

    // A bidding strategy that sets bids to help get as many conversions as
    // possible at the target cost-per-acquisition (CPA) you set.
    common.TargetCpa target_cpa = 9;

    // A bidding strategy that sets bids based on the target fraction of
    // auctions where the advertiser should outrank a specific competitor.
    common.TargetOutrankShare target_outrank_share = 10;

    // A bidding strategy that helps you maximize revenue while averaging a
    // specific target Return On Ad Spend (ROAS).
    common.TargetRoas target_roas = 11;

    // A bid strategy that sets your bids to help get as many clicks as
    // possible within your budget.
    common.TargetSpend target_spend = 12;
  }
}
