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

syntax = "proto3";

package google.ads.googleads.v0.common;

import "google/ads/googleads/v0/enums/call_conversion_reporting_state.proto";
import "google/ads/googleads/v0/enums/display_ad_format_setting.proto";
import "google/ads/googleads/v0/enums/mime_type.proto";
import "google/protobuf/wrappers.proto";

option csharp_namespace = "Google.Ads.GoogleAds.V0.Common";
option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v0/common;common";
option java_multiple_files = true;
option java_outer_classname = "AdTypeInfosProto";
option java_package = "com.google.ads.googleads.v0.common";
option objc_class_prefix = "GAA";
option php_namespace = "Google\\Ads\\GoogleAds\\V0\\Common";
// Proto file containing info messages for specific ad types.

// A text ad.
message TextAdInfo {
  // The headline of the ad.
  google.protobuf.StringValue headline = 1;

  // The first line of the ad's description.
  google.protobuf.StringValue description1 = 2;

  // The second line of the ad's description.
  google.protobuf.StringValue description2 = 3;
}

// An expanded text ad.
message ExpandedTextAdInfo {
  // The first part of the ad's headline.
  google.protobuf.StringValue headline_part1 = 1;

  // The second part of the ad's headline.
  google.protobuf.StringValue headline_part2 = 2;

  // The third part of the ad's headline.
  google.protobuf.StringValue headline_part3 = 6;

  // The description of the ad.
  google.protobuf.StringValue description = 3;

  // The second description of the ad.
  google.protobuf.StringValue description2 = 7;

  // The text that can appear alongside the ad's displayed URL.
  google.protobuf.StringValue path1 = 4;

  // Additional text that can appear alongside the ad's displayed URL.
  google.protobuf.StringValue path2 = 5;
}

// A dynamic search ad.
message DynamicSearchAdInfo {
  // The first line of the ad's description.
  google.protobuf.StringValue description1 = 1;

  // The second line of the ad's description.
  google.protobuf.StringValue description2 = 2;
}

// A responsive display ad.
message ResponsiveDisplayAdInfo {
  // The short version of the ad's headline.
  google.protobuf.StringValue short_headline = 1;

  // The long version of the ad's headline.
  google.protobuf.StringValue long_headline = 2;

  // The description of the ad.
  google.protobuf.StringValue description = 3;

  // The business name in the ad.
  google.protobuf.StringValue business_name = 4;

  // Advertiser's consent to allow flexible color. When true, the ad may be
  // served with different color if necessary. When false, the ad will be served
  // with the specified colors or a neutral color.
  // The default value is true.
  // Must be true if main_color and accent_color are not set.
  google.protobuf.BoolValue allow_flexible_color = 5;

  // The accent color of the ad in hexadecimal, e.g. #ffffff for white.
  // If one of main_color and accent_color is set, the other is required as
  // well.
  google.protobuf.StringValue accent_color = 6;

  // The main color of the ad in hexadecimal, e.g. #ffffff for white.
  // If one of main_color and accent_color is set, the other is required as
  // well.
  google.protobuf.StringValue main_color = 7;

  // The call-to-action text for the ad.
  google.protobuf.StringValue call_to_action_text = 8;

  // The MediaFile resource name of the logo image used in the ad.
  google.protobuf.StringValue logo_image = 9;

  // The MediaFile resource name of the square logo image used in the ad.
  google.protobuf.StringValue square_logo_image = 10;

  // The MediaFile resource name of the marketing image used in the ad.
  google.protobuf.StringValue marketing_image = 11;

  // The MediaFile resource name of the square marketing image used in the ad.
  google.protobuf.StringValue square_marketing_image = 12;

  // Specifies which format the ad will be served in. Default is ALL_FORMATS.
  google.ads.googleads.v0.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting format_setting = 13;

  // Prefix before price. E.g. 'as low as'.
  google.protobuf.StringValue price_prefix = 14;

  // Promotion text used for dyanmic formats of responsive ads. For example
  // 'Free two-day shipping'.
  google.protobuf.StringValue promo_text = 15;
}

// A call-only ad.
message CallOnlyAdInfo {
  // The country code in the ad.
  google.protobuf.StringValue country_code = 1;

  // The phone number in the ad.
  google.protobuf.StringValue phone_number = 2;

  // The business name in the ad.
  google.protobuf.StringValue business_name = 3;

  // The first line of the ad's description.
  google.protobuf.StringValue description1 = 4;

  // The second line of the ad's description.
  google.protobuf.StringValue description2 = 5;

  // Whether to enable call tracking for the creative. Enabling call
  // tracking also enables call conversions.
  google.protobuf.BoolValue call_tracked = 6;

  // Whether to disable call conversion for the creative.
  // If set to `true`, disables call conversions even when `call_tracked` is
  // `true`.
  // If `call_tracked` is `false`, this field is ignored.
  google.protobuf.BoolValue disable_call_conversion = 7;

  // The URL to be used for phone number verification.
  google.protobuf.StringValue phone_number_verification_url = 8;

  // The conversion action to attribute a call conversion to. If not set a
  // default conversion action is used. This field only has effect if
  // call_tracked is set to true. Otherwise this field is ignored.
  google.protobuf.StringValue conversion_action = 9;

  // The call conversion behavior of this call only ad. It can use its own call
  // conversion setting, inherit the account level setting, or be disabled.
  google.ads.googleads.v0.enums.CallConversionReportingStateEnum.CallConversionReportingState conversion_reporting_state = 10;
}

// An expanded dynamic search ad.
message ExpandedDynamicSearchAdInfo {
  // The description of the ad.
  google.protobuf.StringValue description = 1;
}

// A hotel ad.
message HotelAdInfo {

}

// A Smart Shopping ad.
message ShoppingSmartAdInfo {

}

// A standard Shopping ad.
message ShoppingProductAdInfo {

}

// A Gmail ad.
message GmailAdInfo {
  // The Gmail teaser.
  GmailTeaser teaser = 1;

  // The MediaFile resource name of the header image. Valid image types are GIF,
  // JPEG and PNG. The minimum size is 300x100 pixels and the aspect ratio must
  // be between 3:1 and 5:1 (+-1%).
  google.protobuf.StringValue header_image = 2;

  // The MediaFile resource name of the marketing image. Valid image types are
  // GIF, JPEG and PNG. The image must either be landscape with a minimum size
  // of 600x314 pixels and aspect ratio of 600:314 (+-1%) or square with a
  // minimum size of 300x300 pixels and aspect ratio of 1:1 (+-1%)
  google.protobuf.StringValue marketing_image = 3;

  // Headline of the marketing image.
  google.protobuf.StringValue marketing_image_headline = 4;

  // Description of the marketing image.
  google.protobuf.StringValue marketing_image_description = 5;

  // Display-call-to-action of the marketing image.
  DisplayCallToAction marketing_image_display_call_to_action = 6;
}

// Gmail teaser data. The teaser is a small header that acts as an invitation
// to view the rest of the ad (the body).
message GmailTeaser {
  // Headline of the teaser.
  google.protobuf.StringValue headline = 1;

  // Description of the teaser.
  google.protobuf.StringValue description = 2;

  // Business name of the advertiser.
  google.protobuf.StringValue business_name = 3;

  // The MediaFile resource name of the logo image. Valid image types are GIF,
  // JPEG and PNG. The minimum size is 144x144 pixels and the aspect ratio must
  // be 1:1 (+-1%).
  google.protobuf.StringValue logo_image = 4;
}

// Data for display call to action. The call to action is a piece of the ad
// that prompts the user to do something. Like clicking a link or making a phone
// call.
message DisplayCallToAction {
  // Text for the display-call-to-action.
  google.protobuf.StringValue text = 1;

  // Text color for the display-call-to-action in hexadecimal, e.g. #ffffff for
  // white.
  google.protobuf.StringValue text_color = 2;
}

// An image ad.
message ImageAdInfo {
  // Width in pixels of the full size image.
  google.protobuf.Int64Value pixel_width = 4;

  // Height in pixels of the full size image.
  google.protobuf.Int64Value pixel_height = 5;

  // URL of the full size image.
  google.protobuf.StringValue image_url = 6;

  // Width in pixels of the preview size image.
  google.protobuf.Int64Value preview_pixel_width = 7;

  // Height in pixels of the preview size image.
  google.protobuf.Int64Value preview_pixel_height = 8;

  // URL of the preview size image.
  google.protobuf.StringValue preview_image_url = 9;

  // The mime type of the image.
  google.ads.googleads.v0.enums.MimeTypeEnum.MimeType mime_type = 10;

  // The name of the image. If the image was created from a MediaFile, this is
  // the MediaFile's name. If the image was created from bytes, this is empty.
  google.protobuf.StringValue name = 11;

  // The image to create the ImageAd from. This can be specified in one of
  // two ways.
  // 1. An existing MediaFile resource.
  // 2. The raw image data as bytes.
  oneof image {
    // The MediaFile resource to use for the image.
    google.protobuf.StringValue media_file = 1;

    // Raw image data as bytes.
    google.protobuf.BytesValue data = 2;
  }
}
