// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/ads/googleads/v3/enums/real_estate_placeholder_field.proto

package enums

import (
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
	_ "google.golang.org/genproto/googleapis/api/annotations"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Possible values for Real Estate placeholder fields.
type RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField int32

const (
	// Not specified.
	RealEstatePlaceholderFieldEnum_UNSPECIFIED RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 0
	// Used for return value only. Represents value unknown in this version.
	RealEstatePlaceholderFieldEnum_UNKNOWN RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 1
	// Data Type: STRING. Unique ID.
	RealEstatePlaceholderFieldEnum_LISTING_ID RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 2
	// Data Type: STRING. Main headline with listing name to be shown in dynamic
	// ad.
	RealEstatePlaceholderFieldEnum_LISTING_NAME RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 3
	// Data Type: STRING. City name to be shown in dynamic ad.
	RealEstatePlaceholderFieldEnum_CITY_NAME RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 4
	// Data Type: STRING. Description of listing to be shown in dynamic ad.
	RealEstatePlaceholderFieldEnum_DESCRIPTION RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 5
	// Data Type: STRING. Complete listing address, including postal code.
	RealEstatePlaceholderFieldEnum_ADDRESS RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 6
	// Data Type: STRING. Price to be shown in the ad.
	// Example: "100.00 USD"
	RealEstatePlaceholderFieldEnum_PRICE RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 7
	// Data Type: STRING. Formatted price to be shown in the ad.
	// Example: "Starting at $100.00 USD", "$80 - $100"
	RealEstatePlaceholderFieldEnum_FORMATTED_PRICE RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 8
	// Data Type: URL. Image to be displayed in the ad.
	RealEstatePlaceholderFieldEnum_IMAGE_URL RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 9
	// Data Type: STRING. Type of property (house, condo, apartment, etc.) used
	// to group like items together for recommendation engine.
	RealEstatePlaceholderFieldEnum_PROPERTY_TYPE RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 10
	// Data Type: STRING. Type of listing (resale, rental, foreclosure, etc.)
	// used to group like items together for recommendation engine.
	RealEstatePlaceholderFieldEnum_LISTING_TYPE RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 11
	// Data Type: STRING_LIST. Keywords used for product retrieval.
	RealEstatePlaceholderFieldEnum_CONTEXTUAL_KEYWORDS RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 12
	// Data Type: URL_LIST. Final URLs to be used in ad when using Upgraded
	// URLs; the more specific the better (e.g. the individual URL of a specific
	// listing and its location).
	RealEstatePlaceholderFieldEnum_FINAL_URLS RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 13
	// Data Type: URL_LIST. Final mobile URLs for the ad when using Upgraded
	// URLs.
	RealEstatePlaceholderFieldEnum_FINAL_MOBILE_URLS RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 14
	// Data Type: URL. Tracking template for the ad when using Upgraded URLs.
	RealEstatePlaceholderFieldEnum_TRACKING_URL RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 15
	// Data Type: STRING. Android app link. Must be formatted as:
	// android-app://{package_id}/{scheme}/{host_path}.
	// The components are defined as follows:
	// package_id: app ID as specified in Google Play.
	// scheme: the scheme to pass to the application. Can be HTTP, or a custom
	//   scheme.
	// host_path: identifies the specific content within your application.
	RealEstatePlaceholderFieldEnum_ANDROID_APP_LINK RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 16
	// Data Type: STRING_LIST. List of recommended listing IDs to show together
	// with this item.
	RealEstatePlaceholderFieldEnum_SIMILAR_LISTING_IDS RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 17
	// Data Type: STRING. iOS app link.
	RealEstatePlaceholderFieldEnum_IOS_APP_LINK RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 18
	// Data Type: INT64. iOS app store ID.
	RealEstatePlaceholderFieldEnum_IOS_APP_STORE_ID RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField = 19
)

var RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField_name = map[int32]string{
	0:  "UNSPECIFIED",
	1:  "UNKNOWN",
	2:  "LISTING_ID",
	3:  "LISTING_NAME",
	4:  "CITY_NAME",
	5:  "DESCRIPTION",
	6:  "ADDRESS",
	7:  "PRICE",
	8:  "FORMATTED_PRICE",
	9:  "IMAGE_URL",
	10: "PROPERTY_TYPE",
	11: "LISTING_TYPE",
	12: "CONTEXTUAL_KEYWORDS",
	13: "FINAL_URLS",
	14: "FINAL_MOBILE_URLS",
	15: "TRACKING_URL",
	16: "ANDROID_APP_LINK",
	17: "SIMILAR_LISTING_IDS",
	18: "IOS_APP_LINK",
	19: "IOS_APP_STORE_ID",
}

var RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField_value = map[string]int32{
	"UNSPECIFIED":         0,
	"UNKNOWN":             1,
	"LISTING_ID":          2,
	"LISTING_NAME":        3,
	"CITY_NAME":           4,
	"DESCRIPTION":         5,
	"ADDRESS":             6,
	"PRICE":               7,
	"FORMATTED_PRICE":     8,
	"IMAGE_URL":           9,
	"PROPERTY_TYPE":       10,
	"LISTING_TYPE":        11,
	"CONTEXTUAL_KEYWORDS": 12,
	"FINAL_URLS":          13,
	"FINAL_MOBILE_URLS":   14,
	"TRACKING_URL":        15,
	"ANDROID_APP_LINK":    16,
	"SIMILAR_LISTING_IDS": 17,
	"IOS_APP_LINK":        18,
	"IOS_APP_STORE_ID":    19,
}

func (x RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField) String() string {
	return proto.EnumName(RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField_name, int32(x))
}

func (RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_e3d5f7d0d8a31d4c, []int{0, 0}
}

// Values for Real Estate placeholder fields.
// For more information about dynamic remarketing feeds, see
// https://support.google.com/google-ads/answer/6053288.
type RealEstatePlaceholderFieldEnum struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RealEstatePlaceholderFieldEnum) Reset()         { *m = RealEstatePlaceholderFieldEnum{} }
func (m *RealEstatePlaceholderFieldEnum) String() string { return proto.CompactTextString(m) }
func (*RealEstatePlaceholderFieldEnum) ProtoMessage()    {}
func (*RealEstatePlaceholderFieldEnum) Descriptor() ([]byte, []int) {
	return fileDescriptor_e3d5f7d0d8a31d4c, []int{0}
}

func (m *RealEstatePlaceholderFieldEnum) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RealEstatePlaceholderFieldEnum.Unmarshal(m, b)
}
func (m *RealEstatePlaceholderFieldEnum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RealEstatePlaceholderFieldEnum.Marshal(b, m, deterministic)
}
func (m *RealEstatePlaceholderFieldEnum) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RealEstatePlaceholderFieldEnum.Merge(m, src)
}
func (m *RealEstatePlaceholderFieldEnum) XXX_Size() int {
	return xxx_messageInfo_RealEstatePlaceholderFieldEnum.Size(m)
}
func (m *RealEstatePlaceholderFieldEnum) XXX_DiscardUnknown() {
	xxx_messageInfo_RealEstatePlaceholderFieldEnum.DiscardUnknown(m)
}

var xxx_messageInfo_RealEstatePlaceholderFieldEnum proto.InternalMessageInfo

func init() {
	proto.RegisterEnum("google.ads.googleads.v3.enums.RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField", RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField_name, RealEstatePlaceholderFieldEnum_RealEstatePlaceholderField_value)
	proto.RegisterType((*RealEstatePlaceholderFieldEnum)(nil), "google.ads.googleads.v3.enums.RealEstatePlaceholderFieldEnum")
}

func init() {
	proto.RegisterFile("google/ads/googleads/v3/enums/real_estate_placeholder_field.proto", fileDescriptor_e3d5f7d0d8a31d4c)
}

var fileDescriptor_e3d5f7d0d8a31d4c = []byte{
	// 511 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x8e, 0xda, 0x30,
	0x10, 0x86, 0x0b, 0x74, 0x77, 0x8b, 0x59, 0x16, 0x63, 0x5a, 0x55, 0x5a, 0x75, 0x5b, 0xed, 0x3e,
	0x40, 0x72, 0xc8, 0x2d, 0x3d, 0x99, 0xc4, 0x20, 0x8b, 0xe0, 0x58, 0xb6, 0x61, 0x4b, 0x85, 0x64,
	0xa5, 0x9b, 0x34, 0x45, 0x0a, 0x09, 0x22, 0xec, 0x3e, 0x42, 0x1f, 0xa4, 0xb7, 0xf6, 0x51, 0xfa,
	0x28, 0x3d, 0xf7, 0x01, 0x2a, 0x27, 0x05, 0x7a, 0xa1, 0x97, 0x68, 0xe6, 0x9f, 0xc9, 0xf7, 0x8f,
	0x3c, 0x03, 0x70, 0x5a, 0x14, 0x69, 0x96, 0xd8, 0x51, 0x5c, 0xda, 0x75, 0x68, 0xa2, 0x27, 0xc7,
	0x4e, 0xf2, 0xc7, 0x75, 0x69, 0x6f, 0x93, 0x28, 0xd3, 0x49, 0xb9, 0x8b, 0x76, 0x89, 0xde, 0x64,
	0xd1, 0x43, 0xf2, 0xa5, 0xc8, 0xe2, 0x64, 0xab, 0x3f, 0xaf, 0x92, 0x2c, 0xb6, 0x36, 0xdb, 0x62,
	0x57, 0xa0, 0x9b, 0xfa, 0x3f, 0x2b, 0x8a, 0x4b, 0xeb, 0x80, 0xb0, 0x9e, 0x1c, 0xab, 0x42, 0x5c,
	0xbf, 0xd9, 0x3b, 0x6c, 0x56, 0x76, 0x94, 0xe7, 0xc5, 0x2e, 0xda, 0xad, 0x8a, 0xbc, 0xac, 0x7f,
	0xbe, 0xfb, 0xde, 0x02, 0x6f, 0x45, 0x12, 0x65, 0xa4, 0xf2, 0xe0, 0x47, 0x8b, 0x91, 0x71, 0x20,
	0xf9, 0xe3, 0xfa, 0xee, 0x6b, 0x0b, 0x5c, 0x9f, 0x6e, 0x41, 0x3d, 0xd0, 0x99, 0x31, 0xc9, 0x89,
	0x47, 0x47, 0x94, 0xf8, 0xf0, 0x19, 0xea, 0x80, 0x8b, 0x19, 0x9b, 0xb0, 0xf0, 0x9e, 0xc1, 0x06,
	0xba, 0x02, 0x20, 0xa0, 0x52, 0x51, 0x36, 0xd6, 0xd4, 0x87, 0x4d, 0x04, 0xc1, 0xe5, 0x3e, 0x67,
	0x78, 0x4a, 0x60, 0x0b, 0x75, 0x41, 0xdb, 0xa3, 0x6a, 0x51, 0xa7, 0xcf, 0x0d, 0xce, 0x27, 0xd2,
	0x13, 0x94, 0x2b, 0x1a, 0x32, 0x78, 0x66, 0x70, 0xd8, 0xf7, 0x05, 0x91, 0x12, 0x9e, 0xa3, 0x36,
	0x38, 0xe3, 0x82, 0x7a, 0x04, 0x5e, 0xa0, 0x01, 0xe8, 0x8d, 0x42, 0x31, 0xc5, 0x4a, 0x11, 0x5f,
	0xd7, 0xe2, 0x0b, 0x03, 0xa3, 0x53, 0x3c, 0x26, 0x7a, 0x26, 0x02, 0xd8, 0x46, 0x7d, 0xd0, 0xe5,
	0x22, 0xe4, 0x44, 0xa8, 0x85, 0x56, 0x0b, 0x4e, 0x20, 0xf8, 0x77, 0x80, 0x4a, 0xe9, 0xa0, 0xd7,
	0x60, 0xe0, 0x85, 0x4c, 0x91, 0x0f, 0x6a, 0x86, 0x03, 0x3d, 0x21, 0x8b, 0xfb, 0x50, 0xf8, 0x12,
	0x5e, 0x9a, 0xd9, 0x47, 0x94, 0xe1, 0xc0, 0xc0, 0x24, 0xec, 0xa2, 0x57, 0xa0, 0x5f, 0xe7, 0xd3,
	0x70, 0x48, 0x03, 0x52, 0xcb, 0x57, 0x86, 0xa8, 0x04, 0xf6, 0x26, 0x06, 0x69, 0x6c, 0x7b, 0xe8,
	0x25, 0x80, 0x98, 0xf9, 0x22, 0xa4, 0xbe, 0xc6, 0x9c, 0xeb, 0x80, 0xb2, 0x09, 0x84, 0xc6, 0x47,
	0xd2, 0x29, 0x0d, 0xb0, 0xd0, 0xc7, 0x27, 0x91, 0xb0, 0x6f, 0x00, 0x34, 0x94, 0xc7, 0x56, 0x64,
	0x00, 0x7b, 0x45, 0xaa, 0x50, 0x10, 0xf3, 0x76, 0x83, 0xe1, 0xef, 0x06, 0xb8, 0x7d, 0x28, 0xd6,
	0xd6, 0x7f, 0xf7, 0x3d, 0x7c, 0x77, 0x7a, 0x57, 0xdc, 0xac, 0x9c, 0x37, 0x3e, 0x0e, 0xff, 0x12,
	0xd2, 0x22, 0x8b, 0xf2, 0xd4, 0x2a, 0xb6, 0xa9, 0x9d, 0x26, 0x79, 0x75, 0x10, 0xfb, 0x23, 0xdc,
	0xac, 0xca, 0x13, 0x37, 0xf9, 0xbe, 0xfa, 0x7e, 0x6b, 0xb6, 0xc6, 0x18, 0xff, 0x68, 0xde, 0x8c,
	0x6b, 0x14, 0x8e, 0x4b, 0xab, 0x0e, 0x4d, 0x34, 0x77, 0x2c, 0x73, 0x3a, 0xe5, 0xcf, 0x7d, 0x7d,
	0x89, 0xe3, 0x72, 0x79, 0xa8, 0x2f, 0xe7, 0xce, 0xb2, 0xaa, 0xff, 0x6a, 0xde, 0xd6, 0xa2, 0xeb,
	0xe2, 0xb8, 0x74, 0xdd, 0x43, 0x87, 0xeb, 0xce, 0x1d, 0xd7, 0xad, 0x7a, 0x3e, 0x9d, 0x57, 0x83,
	0x39, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x71, 0xac, 0x18, 0xe5, 0x2b, 0x03, 0x00, 0x00,
}
