// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/ads/googleads/v3/resources/custom_interest.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 custom interest. This is a list of users by interest.
type CustomInterest struct {
	// Immutable. The resource name of the custom interest.
	// Custom interest resource names have the form:
	//
	// `customers/{customer_id}/customInterests/{custom_interest_id}`
	ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
	// Output only. Id of the custom interest.
	Id *wrappers.Int64Value `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	// Status of this custom interest. Indicates whether the custom interest is
	// enabled or removed.
	Status enums.CustomInterestStatusEnum_CustomInterestStatus `protobuf:"varint,3,opt,name=status,proto3,enum=google.ads.googleads.v3.enums.CustomInterestStatusEnum_CustomInterestStatus" json:"status,omitempty"`
	// Name of the custom interest. It should be unique across the same custom
	// affinity audience.
	// This field is required for create operations.
	Name *wrappers.StringValue `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// Type of the custom interest, CUSTOM_AFFINITY or CUSTOM_INTENT.
	// By default the type is set to CUSTOM_AFFINITY.
	Type enums.CustomInterestTypeEnum_CustomInterestType `protobuf:"varint,5,opt,name=type,proto3,enum=google.ads.googleads.v3.enums.CustomInterestTypeEnum_CustomInterestType" json:"type,omitempty"`
	// Description of this custom interest audience.
	Description *wrappers.StringValue `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
	// List of custom interest members that this custom interest is composed of.
	// Members can be added during CustomInterest creation. If members are
	// presented in UPDATE operation, existing members will be overridden.
	Members              []*CustomInterestMember `protobuf:"bytes,7,rep,name=members,proto3" json:"members,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
	XXX_unrecognized     []byte                  `json:"-"`
	XXX_sizecache        int32                   `json:"-"`
}

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

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

var xxx_messageInfo_CustomInterest proto.InternalMessageInfo

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

func (m *CustomInterest) GetId() *wrappers.Int64Value {
	if m != nil {
		return m.Id
	}
	return nil
}

func (m *CustomInterest) GetStatus() enums.CustomInterestStatusEnum_CustomInterestStatus {
	if m != nil {
		return m.Status
	}
	return enums.CustomInterestStatusEnum_UNSPECIFIED
}

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

func (m *CustomInterest) GetType() enums.CustomInterestTypeEnum_CustomInterestType {
	if m != nil {
		return m.Type
	}
	return enums.CustomInterestTypeEnum_UNSPECIFIED
}

func (m *CustomInterest) GetDescription() *wrappers.StringValue {
	if m != nil {
		return m.Description
	}
	return nil
}

func (m *CustomInterest) GetMembers() []*CustomInterestMember {
	if m != nil {
		return m.Members
	}
	return nil
}

// A member of custom interest audience. A member can be a keyword or url.
// It is immutable, that is, it can only be created or removed but not changed.
type CustomInterestMember struct {
	// The type of custom interest member, KEYWORD or URL.
	MemberType enums.CustomInterestMemberTypeEnum_CustomInterestMemberType `protobuf:"varint,1,opt,name=member_type,json=memberType,proto3,enum=google.ads.googleads.v3.enums.CustomInterestMemberTypeEnum_CustomInterestMemberType" json:"member_type,omitempty"`
	// Keyword text when member_type is KEYWORD or URL string when
	// member_type is URL.
	Parameter            *wrappers.StringValue `protobuf:"bytes,2,opt,name=parameter,proto3" json:"parameter,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *CustomInterestMember) Reset()         { *m = CustomInterestMember{} }
func (m *CustomInterestMember) String() string { return proto.CompactTextString(m) }
func (*CustomInterestMember) ProtoMessage()    {}
func (*CustomInterestMember) Descriptor() ([]byte, []int) {
	return fileDescriptor_440649afc3ab8fa9, []int{1}
}

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

var xxx_messageInfo_CustomInterestMember proto.InternalMessageInfo

func (m *CustomInterestMember) GetMemberType() enums.CustomInterestMemberTypeEnum_CustomInterestMemberType {
	if m != nil {
		return m.MemberType
	}
	return enums.CustomInterestMemberTypeEnum_UNSPECIFIED
}

func (m *CustomInterestMember) GetParameter() *wrappers.StringValue {
	if m != nil {
		return m.Parameter
	}
	return nil
}

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

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

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