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

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.22.0
// 	protoc        v3.12.2
// source: google/ads/googleads/v1/enums/job_placeholder_field.proto

package enums

import (
	reflect "reflect"
	sync "sync"

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

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

// Possible values for Job placeholder fields.
type JobPlaceholderFieldEnum_JobPlaceholderField int32

const (
	// Not specified.
	JobPlaceholderFieldEnum_UNSPECIFIED JobPlaceholderFieldEnum_JobPlaceholderField = 0
	// Used for return value only. Represents value unknown in this version.
	JobPlaceholderFieldEnum_UNKNOWN JobPlaceholderFieldEnum_JobPlaceholderField = 1
	// Data Type: STRING. Required. If only JOB_ID is specified, then it must be
	// unique. If both JOB_ID and LOCATION_ID are specified, then the
	// pair must be unique.
	// ID) pair must be unique.
	JobPlaceholderFieldEnum_JOB_ID JobPlaceholderFieldEnum_JobPlaceholderField = 2
	// Data Type: STRING. Combination of JOB_ID and LOCATION_ID must be unique
	// per offer.
	JobPlaceholderFieldEnum_LOCATION_ID JobPlaceholderFieldEnum_JobPlaceholderField = 3
	// Data Type: STRING. Required. Main headline with job title to be shown in
	// dynamic ad.
	JobPlaceholderFieldEnum_TITLE JobPlaceholderFieldEnum_JobPlaceholderField = 4
	// Data Type: STRING. Job subtitle to be shown in dynamic ad.
	JobPlaceholderFieldEnum_SUBTITLE JobPlaceholderFieldEnum_JobPlaceholderField = 5
	// Data Type: STRING. Description of job to be shown in dynamic ad.
	JobPlaceholderFieldEnum_DESCRIPTION JobPlaceholderFieldEnum_JobPlaceholderField = 6
	// Data Type: URL. Image to be displayed in the ad. Highly recommended for
	// image ads.
	JobPlaceholderFieldEnum_IMAGE_URL JobPlaceholderFieldEnum_JobPlaceholderField = 7
	// Data Type: STRING. Category of property used to group like items together
	// for recommendation engine.
	JobPlaceholderFieldEnum_CATEGORY JobPlaceholderFieldEnum_JobPlaceholderField = 8
	// Data Type: STRING_LIST. Keywords used for product retrieval.
	JobPlaceholderFieldEnum_CONTEXTUAL_KEYWORDS JobPlaceholderFieldEnum_JobPlaceholderField = 9
	// Data Type: STRING. Complete property address, including postal code.
	JobPlaceholderFieldEnum_ADDRESS JobPlaceholderFieldEnum_JobPlaceholderField = 10
	// Data Type: STRING. Salary or salary range of job to be shown in dynamic
	// ad.
	JobPlaceholderFieldEnum_SALARY JobPlaceholderFieldEnum_JobPlaceholderField = 11
	// Data Type: URL_LIST. Required. Final URLs to be used in ad when using
	// Upgraded URLs; the more specific the better (e.g. the individual URL of a
	// specific job and its location).
	JobPlaceholderFieldEnum_FINAL_URLS JobPlaceholderFieldEnum_JobPlaceholderField = 12
	// Data Type: URL_LIST. Final mobile URLs for the ad when using Upgraded
	// URLs.
	JobPlaceholderFieldEnum_FINAL_MOBILE_URLS JobPlaceholderFieldEnum_JobPlaceholderField = 14
	// Data Type: URL. Tracking template for the ad when using Upgraded URLs.
	JobPlaceholderFieldEnum_TRACKING_URL JobPlaceholderFieldEnum_JobPlaceholderField = 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.
	JobPlaceholderFieldEnum_ANDROID_APP_LINK JobPlaceholderFieldEnum_JobPlaceholderField = 16
	// Data Type: STRING_LIST. List of recommended job IDs to show together with
	// this item.
	JobPlaceholderFieldEnum_SIMILAR_JOB_IDS JobPlaceholderFieldEnum_JobPlaceholderField = 17
	// Data Type: STRING. iOS app link.
	JobPlaceholderFieldEnum_IOS_APP_LINK JobPlaceholderFieldEnum_JobPlaceholderField = 18
	// Data Type: INT64. iOS app store ID.
	JobPlaceholderFieldEnum_IOS_APP_STORE_ID JobPlaceholderFieldEnum_JobPlaceholderField = 19
)

// Enum value maps for JobPlaceholderFieldEnum_JobPlaceholderField.
var (
	JobPlaceholderFieldEnum_JobPlaceholderField_name = map[int32]string{
		0:  "UNSPECIFIED",
		1:  "UNKNOWN",
		2:  "JOB_ID",
		3:  "LOCATION_ID",
		4:  "TITLE",
		5:  "SUBTITLE",
		6:  "DESCRIPTION",
		7:  "IMAGE_URL",
		8:  "CATEGORY",
		9:  "CONTEXTUAL_KEYWORDS",
		10: "ADDRESS",
		11: "SALARY",
		12: "FINAL_URLS",
		14: "FINAL_MOBILE_URLS",
		15: "TRACKING_URL",
		16: "ANDROID_APP_LINK",
		17: "SIMILAR_JOB_IDS",
		18: "IOS_APP_LINK",
		19: "IOS_APP_STORE_ID",
	}
	JobPlaceholderFieldEnum_JobPlaceholderField_value = map[string]int32{
		"UNSPECIFIED":         0,
		"UNKNOWN":             1,
		"JOB_ID":              2,
		"LOCATION_ID":         3,
		"TITLE":               4,
		"SUBTITLE":            5,
		"DESCRIPTION":         6,
		"IMAGE_URL":           7,
		"CATEGORY":            8,
		"CONTEXTUAL_KEYWORDS": 9,
		"ADDRESS":             10,
		"SALARY":              11,
		"FINAL_URLS":          12,
		"FINAL_MOBILE_URLS":   14,
		"TRACKING_URL":        15,
		"ANDROID_APP_LINK":    16,
		"SIMILAR_JOB_IDS":     17,
		"IOS_APP_LINK":        18,
		"IOS_APP_STORE_ID":    19,
	}
)

func (x JobPlaceholderFieldEnum_JobPlaceholderField) Enum() *JobPlaceholderFieldEnum_JobPlaceholderField {
	p := new(JobPlaceholderFieldEnum_JobPlaceholderField)
	*p = x
	return p
}

func (x JobPlaceholderFieldEnum_JobPlaceholderField) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (JobPlaceholderFieldEnum_JobPlaceholderField) Descriptor() protoreflect.EnumDescriptor {
	return file_google_ads_googleads_v1_enums_job_placeholder_field_proto_enumTypes[0].Descriptor()
}

func (JobPlaceholderFieldEnum_JobPlaceholderField) Type() protoreflect.EnumType {
	return &file_google_ads_googleads_v1_enums_job_placeholder_field_proto_enumTypes[0]
}

func (x JobPlaceholderFieldEnum_JobPlaceholderField) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use JobPlaceholderFieldEnum_JobPlaceholderField.Descriptor instead.
func (JobPlaceholderFieldEnum_JobPlaceholderField) EnumDescriptor() ([]byte, []int) {
	return file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescGZIP(), []int{0, 0}
}

// Values for Job placeholder fields.
// For more information about dynamic remarketing feeds, see
// https://support.google.com/google-ads/answer/6053288.
type JobPlaceholderFieldEnum struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *JobPlaceholderFieldEnum) Reset() {
	*x = JobPlaceholderFieldEnum{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_ads_googleads_v1_enums_job_placeholder_field_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *JobPlaceholderFieldEnum) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*JobPlaceholderFieldEnum) ProtoMessage() {}

func (x *JobPlaceholderFieldEnum) ProtoReflect() protoreflect.Message {
	mi := &file_google_ads_googleads_v1_enums_job_placeholder_field_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use JobPlaceholderFieldEnum.ProtoReflect.Descriptor instead.
func (*JobPlaceholderFieldEnum) Descriptor() ([]byte, []int) {
	return file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescGZIP(), []int{0}
}

var File_google_ads_googleads_v1_enums_job_placeholder_field_proto protoreflect.FileDescriptor

var file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDesc = []byte{
	0x0a, 0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x64, 0x73, 0x2f, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f,
	0x6a, 0x6f, 0x62, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x61, 0x64, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x64,
	0x73, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf1, 0x02, 0x0a, 0x17, 0x4a, 0x6f, 0x62,
	0x50, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64,
	0x45, 0x6e, 0x75, 0x6d, 0x22, 0xd5, 0x02, 0x0a, 0x13, 0x4a, 0x6f, 0x62, 0x50, 0x6c, 0x61, 0x63,
	0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x0f, 0x0a, 0x0b,
	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a,
	0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4a, 0x4f,
	0x42, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x49, 0x54, 0x4c, 0x45,
	0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x55, 0x42, 0x54, 0x49, 0x54, 0x4c, 0x45, 0x10, 0x05,
	0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10,
	0x06, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x07,
	0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0x08, 0x12, 0x17,
	0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x4b, 0x45, 0x59,
	0x57, 0x4f, 0x52, 0x44, 0x53, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x44, 0x44, 0x52, 0x45,
	0x53, 0x53, 0x10, 0x0a, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x41, 0x4c, 0x41, 0x52, 0x59, 0x10, 0x0b,
	0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x55, 0x52, 0x4c, 0x53, 0x10, 0x0c,
	0x12, 0x15, 0x0a, 0x11, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x4d, 0x4f, 0x42, 0x49, 0x4c, 0x45,
	0x5f, 0x55, 0x52, 0x4c, 0x53, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x52, 0x41, 0x43, 0x4b,
	0x49, 0x4e, 0x47, 0x5f, 0x55, 0x52, 0x4c, 0x10, 0x0f, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x4e, 0x44,
	0x52, 0x4f, 0x49, 0x44, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x10, 0x12,
	0x13, 0x0a, 0x0f, 0x53, 0x49, 0x4d, 0x49, 0x4c, 0x41, 0x52, 0x5f, 0x4a, 0x4f, 0x42, 0x5f, 0x49,
	0x44, 0x53, 0x10, 0x11, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4f, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x5f,
	0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x12, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4f, 0x53, 0x5f, 0x41, 0x50,
	0x50, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x13, 0x42, 0xee, 0x01, 0x0a,
	0x21, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x64, 0x73, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x6e, 0x75,
	0x6d, 0x73, 0x42, 0x19, 0x4a, 0x6f, 0x62, 0x73, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c,
	0x64, 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
	0x42, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
	0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x61, 0x64, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x61, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x3b, 0x65, 0x6e,
	0x75, 0x6d, 0x73, 0xa2, 0x02, 0x03, 0x47, 0x41, 0x41, 0xaa, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x41, 0x64, 0x73, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x73,
	0x2e, 0x56, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0xca, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x5c, 0x41, 0x64, 0x73, 0x5c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x73,
	0x5c, 0x56, 0x31, 0x5c, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0xea, 0x02, 0x21, 0x47, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x3a, 0x3a, 0x41, 0x64, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41,
	0x64, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x3a, 0x3a, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescOnce sync.Once
	file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescData = file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDesc
)

func file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescGZIP() []byte {
	file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescOnce.Do(func() {
		file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescData)
	})
	return file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDescData
}

var file_google_ads_googleads_v1_enums_job_placeholder_field_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_google_ads_googleads_v1_enums_job_placeholder_field_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_google_ads_googleads_v1_enums_job_placeholder_field_proto_goTypes = []interface{}{
	(JobPlaceholderFieldEnum_JobPlaceholderField)(0), // 0: google.ads.googleads.v1.enums.JobPlaceholderFieldEnum.JobPlaceholderField
	(*JobPlaceholderFieldEnum)(nil),                  // 1: google.ads.googleads.v1.enums.JobPlaceholderFieldEnum
}
var file_google_ads_googleads_v1_enums_job_placeholder_field_proto_depIdxs = []int32{
	0, // [0:0] is the sub-list for method output_type
	0, // [0:0] is the sub-list for method input_type
	0, // [0:0] is the sub-list for extension type_name
	0, // [0:0] is the sub-list for extension extendee
	0, // [0:0] is the sub-list for field type_name
}

func init() { file_google_ads_googleads_v1_enums_job_placeholder_field_proto_init() }
func file_google_ads_googleads_v1_enums_job_placeholder_field_proto_init() {
	if File_google_ads_googleads_v1_enums_job_placeholder_field_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_google_ads_googleads_v1_enums_job_placeholder_field_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JobPlaceholderFieldEnum); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_ads_googleads_v1_enums_job_placeholder_field_proto_goTypes,
		DependencyIndexes: file_google_ads_googleads_v1_enums_job_placeholder_field_proto_depIdxs,
		EnumInfos:         file_google_ads_googleads_v1_enums_job_placeholder_field_proto_enumTypes,
		MessageInfos:      file_google_ads_googleads_v1_enums_job_placeholder_field_proto_msgTypes,
	}.Build()
	File_google_ads_googleads_v1_enums_job_placeholder_field_proto = out.File
	file_google_ads_googleads_v1_enums_job_placeholder_field_proto_rawDesc = nil
	file_google_ads_googleads_v1_enums_job_placeholder_field_proto_goTypes = nil
	file_google_ads_googleads_v1_enums_job_placeholder_field_proto_depIdxs = nil
}
