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

package resources

import (
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	enums "google.golang.org/genproto/googleapis/ads/googleads/v3/enums"
	_ "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

// A field or resource (artifact) used by GoogleAdsService.
type GoogleAdsField struct {
	// The resource name of the artifact.
	// Artifact resource names have the form:
	//
	// `googleAdsFields/{name}`
	ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
	// The name of the artifact.
	Name *wrappers.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// The category of the artifact.
	Category enums.GoogleAdsFieldCategoryEnum_GoogleAdsFieldCategory `protobuf:"varint,3,opt,name=category,proto3,enum=google.ads.googleads.v3.enums.GoogleAdsFieldCategoryEnum_GoogleAdsFieldCategory" json:"category,omitempty"`
	// Whether the artifact can be used in a SELECT clause in search
	// queries.
	Selectable *wrappers.BoolValue `protobuf:"bytes,4,opt,name=selectable,proto3" json:"selectable,omitempty"`
	// Whether the artifact can be used in a WHERE clause in search
	// queries.
	Filterable *wrappers.BoolValue `protobuf:"bytes,5,opt,name=filterable,proto3" json:"filterable,omitempty"`
	// Whether the artifact can be used in a ORDER BY clause in search
	// queries.
	Sortable *wrappers.BoolValue `protobuf:"bytes,6,opt,name=sortable,proto3" json:"sortable,omitempty"`
	// The names of all resources, segments, and metrics that are selectable with
	// the described artifact.
	SelectableWith []*wrappers.StringValue `protobuf:"bytes,7,rep,name=selectable_with,json=selectableWith,proto3" json:"selectable_with,omitempty"`
	// The names of all resources that are selectable with the described
	// artifact. Fields from these resources do not segment metrics when included
	// in search queries.
	//
	// This field is only set for artifacts whose category is RESOURCE.
	AttributeResources []*wrappers.StringValue `protobuf:"bytes,8,rep,name=attribute_resources,json=attributeResources,proto3" json:"attribute_resources,omitempty"`
	// At and beyond version V1 this field lists the names of all metrics that are
	// selectable with the described artifact when it is used in the FROM clause.
	// It is only set for artifacts whose category is RESOURCE.
	//
	// Before version V1 this field lists the names of all metrics that are
	// selectable with the described artifact. It is only set for artifacts whose
	// category is either RESOURCE or SEGMENT
	Metrics []*wrappers.StringValue `protobuf:"bytes,9,rep,name=metrics,proto3" json:"metrics,omitempty"`
	// At and beyond version V1 this field lists the names of all artifacts,
	// whether a segment or another resource, that segment metrics when included
	// in search queries and when the described artifact is used in the FROM
	// clause. It is only set for artifacts whose category is RESOURCE.
	//
	// Before version V1 this field lists the names of all artifacts, whether a
	// segment or another resource, that segment metrics when included in search
	// queries. It is only set for artifacts of category RESOURCE, SEGMENT or
	// METRIC.
	Segments []*wrappers.StringValue `protobuf:"bytes,10,rep,name=segments,proto3" json:"segments,omitempty"`
	// Values the artifact can assume if it is a field of type ENUM.
	//
	// This field is only set for artifacts of category SEGMENT or ATTRIBUTE.
	EnumValues []*wrappers.StringValue `protobuf:"bytes,11,rep,name=enum_values,json=enumValues,proto3" json:"enum_values,omitempty"`
	// This field determines the operators that can be used with the artifact
	// in WHERE clauses.
	DataType enums.GoogleAdsFieldDataTypeEnum_GoogleAdsFieldDataType `protobuf:"varint,12,opt,name=data_type,json=dataType,proto3,enum=google.ads.googleads.v3.enums.GoogleAdsFieldDataTypeEnum_GoogleAdsFieldDataType" json:"data_type,omitempty"`
	// The URL of proto describing the artifact's data type.
	TypeUrl *wrappers.StringValue `protobuf:"bytes,13,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
	// Whether the field artifact is repeated.
	IsRepeated           *wrappers.BoolValue `protobuf:"bytes,14,opt,name=is_repeated,json=isRepeated,proto3" json:"is_repeated,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

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

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

var xxx_messageInfo_GoogleAdsField proto.InternalMessageInfo

func (m *GoogleAdsField) GetResourceName() string {
	if m != nil {
		return m.ResourceName
	}
	return ""
}

func (m *GoogleAdsField) GetName() *wrappers.StringValue {
	if m != nil {
		return m.Name
	}
	return nil
}

func (m *GoogleAdsField) GetCategory() enums.GoogleAdsFieldCategoryEnum_GoogleAdsFieldCategory {
	if m != nil {
		return m.Category
	}
	return enums.GoogleAdsFieldCategoryEnum_UNSPECIFIED
}

func (m *GoogleAdsField) GetSelectable() *wrappers.BoolValue {
	if m != nil {
		return m.Selectable
	}
	return nil
}

func (m *GoogleAdsField) GetFilterable() *wrappers.BoolValue {
	if m != nil {
		return m.Filterable
	}
	return nil
}

func (m *GoogleAdsField) GetSortable() *wrappers.BoolValue {
	if m != nil {
		return m.Sortable
	}
	return nil
}

func (m *GoogleAdsField) GetSelectableWith() []*wrappers.StringValue {
	if m != nil {
		return m.SelectableWith
	}
	return nil
}

func (m *GoogleAdsField) GetAttributeResources() []*wrappers.StringValue {
	if m != nil {
		return m.AttributeResources
	}
	return nil
}

func (m *GoogleAdsField) GetMetrics() []*wrappers.StringValue {
	if m != nil {
		return m.Metrics
	}
	return nil
}

func (m *GoogleAdsField) GetSegments() []*wrappers.StringValue {
	if m != nil {
		return m.Segments
	}
	return nil
}

func (m *GoogleAdsField) GetEnumValues() []*wrappers.StringValue {
	if m != nil {
		return m.EnumValues
	}
	return nil
}

func (m *GoogleAdsField) GetDataType() enums.GoogleAdsFieldDataTypeEnum_GoogleAdsFieldDataType {
	if m != nil {
		return m.DataType
	}
	return enums.GoogleAdsFieldDataTypeEnum_UNSPECIFIED
}

func (m *GoogleAdsField) GetTypeUrl() *wrappers.StringValue {
	if m != nil {
		return m.TypeUrl
	}
	return nil
}

func (m *GoogleAdsField) GetIsRepeated() *wrappers.BoolValue {
	if m != nil {
		return m.IsRepeated
	}
	return nil
}

func init() {
	proto.RegisterType((*GoogleAdsField)(nil), "google.ads.googleads.v3.resources.GoogleAdsField")
}

func init() {
	proto.RegisterFile("google/ads/googleads/v3/resources/google_ads_field.proto", fileDescriptor_7843d52294d73b63)
}

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