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

import "google/ads/googleads/v0/common/custom_parameter.proto";
import "google/ads/googleads/v0/common/feed_common.proto";
import "google/ads/googleads/v0/enums/feed_item_status.proto";
import "google/ads/googleads/v0/enums/geo_targeting_restriction.proto";
import "google/protobuf/wrappers.proto";

option csharp_namespace = "Google.Ads.GoogleAds.V0.Resources";
option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v0/resources;resources";
option java_multiple_files = true;
option java_outer_classname = "FeedItemProto";
option java_package = "com.google.ads.googleads.v0.resources";
option objc_class_prefix = "GAA";
option php_namespace = "Google\\Ads\\GoogleAds\\V0\\Resources";
// Proto file describing the FeedItem resource.

// A feed item.
message FeedItem {
  // The resource name of the feed item.
  // Feed item resource names have the form:
  //
  // `customers/{customer_id}/feedItems/{feed_id}_{feed_item_id}`
  string resource_name = 1;

  // The feed to which this feed item belongs.
  google.protobuf.StringValue feed = 2;

  // The ID of this feed item.
  google.protobuf.Int64Value id = 3;

  // Start time in which this feed item is effective and can begin serving.
  // The format is "YYYY-MM-DD HH:MM:SS".
  // Examples: "2018-03-05 09:15:00" or "2018-02-01 14:34:30"
  google.protobuf.StringValue start_date_time = 4;

  // End time in which this feed item is no longer effective and will stop
  // The format is "YYYY-MM-DD HH:MM:SS".
  // Examples: "2018-03-05 09:15:00" or "2018-02-01 14:34:30"
  google.protobuf.StringValue end_date_time = 5;

  // The feed item's attribute values.
  repeated FeedItemAttributeValue attribute_values = 6;

  // Geo targeting restriction specifies the type of location that can be used
  // for targeting.
  google.ads.googleads.v0.enums.GeoTargetingRestrictionEnum.GeoTargetingRestriction geo_targeting_restriction = 7;

  // The list of mappings used to substitute custom parameter tags in a
  // `tracking_url_template`, `final_urls`, or `mobile_final_urls`.
  repeated google.ads.googleads.v0.common.CustomParameter url_custom_parameters = 8;

  // Status of the feed item.
  // This field is read-only.
  google.ads.googleads.v0.enums.FeedItemStatusEnum.FeedItemStatus status = 9;
}

// A feed item attribute value.
message FeedItemAttributeValue {
  // Id of the feed attribute for which the value is associated with.
  google.protobuf.Int64Value feed_attribute_id = 1;

  // Int64 value. Should be set if feed_attribute_id refers to a feed attribute
  // of type INT64.
  google.protobuf.Int64Value integer_value = 2;

  // Bool value. Should be set if feed_attribute_id refers to a feed attribute
  // of type BOOLEAN.
  google.protobuf.BoolValue boolean_value = 3;

  // String value. Should be set if feed_attribute_id refers to a feed attribute
  // of type STRING, URL or DATE_TIME.
  // For STRING the maximum length is 1500 characters. For URL the maximum
  // length is 2076 characters. For DATE_TIME the format of the string must
  // be the same as start and end time for the feed item.
  google.protobuf.StringValue string_value = 4;

  // Double value. Should be set if feed_attribute_id refers to a feed attribute
  // of type DOUBLE.
  google.protobuf.DoubleValue double_value = 5;

  // Price value. Should be set if feed_attribute_id refers to a feed attribute
  // of type PRICE.
  google.ads.googleads.v0.common.Price price_value = 6;

  // Repeated int64 value. Should be set if feed_attribute_id refers to a feed
  // attribute of type INT64_LIST.
  repeated google.protobuf.Int64Value integer_values = 7;

  // Repeated bool value. Should be set if feed_attribute_id refers to a feed
  // attribute of type BOOLEAN_LIST.
  repeated google.protobuf.BoolValue boolean_values = 8;

  // Repeated string value. Should be set if feed_attribute_id refers to a feed
  // attribute of type STRING_LIST, URL_LIST or DATE_TIME_LIST.
  // For STRING_LIST and URL_LIST the total size of the list in bytes may not
  // exceed 3000. For DATE_TIME_LIST the number of elements may not exceed 200.
  //
  // For STRING_LIST the maximum length of each string element is 1500
  // characters. For URL_LIST the maximum length is 2076 characters. For
  // DATE_TIME the format of the string must be the same as start and end time
  // for the feed item.
  repeated google.protobuf.StringValue string_values = 9;

  // Repeated double value. Should be set if feed_attribute_id refers to a feed
  // attribute of type DOUBLE_LIST.
  repeated google.protobuf.DoubleValue double_values = 10;
}
