// 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/v2/errors/resource_count_limit_exceeded_error.proto

package errors

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

// Enum describing possible resource count limit exceeded errors.
type ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError int32

const (
	// Enum unspecified.
	ResourceCountLimitExceededErrorEnum_UNSPECIFIED ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 0
	// The received error code is not known in this version.
	ResourceCountLimitExceededErrorEnum_UNKNOWN ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 1
	// Indicates that this request would exceed the number of allowed resources
	// for the Google Ads account. The exact resource type and limit being
	// checked can be inferred from accountLimitType.
	ResourceCountLimitExceededErrorEnum_ACCOUNT_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 2
	// Indicates that this request would exceed the number of allowed resources
	// in a Campaign. The exact resource type and limit being checked can be
	// inferred from accountLimitType, and the numeric id of the
	// Campaign involved is given by enclosingId.
	ResourceCountLimitExceededErrorEnum_CAMPAIGN_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 3
	// Indicates that this request would exceed the number of allowed resources
	// in an ad group. The exact resource type and limit being checked can be
	// inferred from accountLimitType, and the numeric id of the
	// ad group involved is given by enclosingId.
	ResourceCountLimitExceededErrorEnum_ADGROUP_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 4
	// Indicates that this request would exceed the number of allowed resources
	// in an ad group ad. The exact resource type and limit being checked can
	// be inferred from accountLimitType, and the enclosingId
	// contains the ad group id followed by the ad id, separated by a single
	// comma (,).
	ResourceCountLimitExceededErrorEnum_AD_GROUP_AD_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 5
	// Indicates that this request would exceed the number of allowed resources
	// in an ad group criterion. The exact resource type and limit being checked
	// can be inferred from accountLimitType, and the
	// enclosingId contains the ad group id followed by the
	// criterion id, separated by a single comma (,).
	ResourceCountLimitExceededErrorEnum_AD_GROUP_CRITERION_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 6
	// Indicates that this request would exceed the number of allowed resources
	// in this shared set. The exact resource type and limit being checked can
	// be inferred from accountLimitType, and the numeric id of the
	// shared set involved is given by enclosingId.
	ResourceCountLimitExceededErrorEnum_SHARED_SET_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 7
	// Exceeds a limit related to a matching function.
	ResourceCountLimitExceededErrorEnum_MATCHING_FUNCTION_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 8
	// The response for this request would exceed the maximum number of rows
	// that can be returned.
	ResourceCountLimitExceededErrorEnum_RESPONSE_ROW_LIMIT_EXCEEDED ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 9
	// This request would exceed a limit on the number of allowed resources.
	// The details of which type of limit was exceeded will eventually be
	// returned in ErrorDetails.
	ResourceCountLimitExceededErrorEnum_RESOURCE_LIMIT ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError = 10
)

// Enum value maps for ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError.
var (
	ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError_name = map[int32]string{
		0:  "UNSPECIFIED",
		1:  "UNKNOWN",
		2:  "ACCOUNT_LIMIT",
		3:  "CAMPAIGN_LIMIT",
		4:  "ADGROUP_LIMIT",
		5:  "AD_GROUP_AD_LIMIT",
		6:  "AD_GROUP_CRITERION_LIMIT",
		7:  "SHARED_SET_LIMIT",
		8:  "MATCHING_FUNCTION_LIMIT",
		9:  "RESPONSE_ROW_LIMIT_EXCEEDED",
		10: "RESOURCE_LIMIT",
	}
	ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError_value = map[string]int32{
		"UNSPECIFIED":                 0,
		"UNKNOWN":                     1,
		"ACCOUNT_LIMIT":               2,
		"CAMPAIGN_LIMIT":              3,
		"ADGROUP_LIMIT":               4,
		"AD_GROUP_AD_LIMIT":           5,
		"AD_GROUP_CRITERION_LIMIT":    6,
		"SHARED_SET_LIMIT":            7,
		"MATCHING_FUNCTION_LIMIT":     8,
		"RESPONSE_ROW_LIMIT_EXCEEDED": 9,
		"RESOURCE_LIMIT":              10,
	}
)

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

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

func (ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError) Descriptor() protoreflect.EnumDescriptor {
	return file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_enumTypes[0].Descriptor()
}

func (ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError) Type() protoreflect.EnumType {
	return &file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_enumTypes[0]
}

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

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

// Container for enum describing possible resource count limit exceeded errors.
type ResourceCountLimitExceededErrorEnum struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ResourceCountLimitExceededErrorEnum) ProtoMessage() {}

func (x *ResourceCountLimitExceededErrorEnum) ProtoReflect() protoreflect.Message {
	mi := &file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_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 ResourceCountLimitExceededErrorEnum.ProtoReflect.Descriptor instead.
func (*ResourceCountLimitExceededErrorEnum) Descriptor() ([]byte, []int) {
	return file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescGZIP(), []int{0}
}

var File_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto protoreflect.FileDescriptor

var file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDesc = []byte{
	0x0a, 0x48, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x64, 0x73, 0x2f, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x64, 0x73, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73,
	0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x5f, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x61, 0x64, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x64, 0x73,
	0x2e, 0x76, 0x32, 0x2e, 0x65, 0x72, 0x72, 0x6f, 0x72, 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, 0xbe, 0x02, 0x0a, 0x23, 0x52, 0x65, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45,
	0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x6e, 0x75, 0x6d,
	0x22, 0x96, 0x02, 0x0a, 0x1f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45,
	0x72, 0x72, 0x6f, 0x72, 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, 0x11, 0x0a, 0x0d, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4c, 0x49,
	0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x41, 0x4d, 0x50, 0x41, 0x49, 0x47,
	0x4e, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x44, 0x47,
	0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11,
	0x41, 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x44, 0x5f, 0x4c, 0x49, 0x4d, 0x49,
	0x54, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f,
	0x43, 0x52, 0x49, 0x54, 0x45, 0x52, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10,
	0x06, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x53, 0x45, 0x54, 0x5f,
	0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x07, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, 0x54, 0x43, 0x48,
	0x49, 0x4e, 0x47, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4d,
	0x49, 0x54, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45,
	0x5f, 0x52, 0x4f, 0x57, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45,
	0x44, 0x45, 0x44, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43,
	0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x0a, 0x42, 0xff, 0x01, 0x0a, 0x22, 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, 0x32, 0x2e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73,
	0x42, 0x24, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c,
	0x69, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x44, 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, 0x32,
	0x2f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x3b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xa2, 0x02,
	0x03, 0x47, 0x41, 0x41, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x41, 0x64,
	0x73, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x73, 0x2e, 0x56, 0x32, 0x2e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x73, 0xca, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x41,
	0x64, 0x73, 0x5c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x73, 0x5c, 0x56, 0x32, 0x5c,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0xea, 0x02, 0x22, 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, 0x32, 0x3a, 0x3a, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescOnce sync.Once
	file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescData = file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDesc
)

func file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescGZIP() []byte {
	file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescOnce.Do(func() {
		file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescData)
	})
	return file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDescData
}

var file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_goTypes = []interface{}{
	(ResourceCountLimitExceededErrorEnum_ResourceCountLimitExceededError)(0), // 0: google.ads.googleads.v2.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError
	(*ResourceCountLimitExceededErrorEnum)(nil),                              // 1: google.ads.googleads.v2.errors.ResourceCountLimitExceededErrorEnum
}
var file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_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_v2_errors_resource_count_limit_exceeded_error_proto_init() }
func file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_init() {
	if File_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ResourceCountLimitExceededErrorEnum); 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_v2_errors_resource_count_limit_exceeded_error_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_goTypes,
		DependencyIndexes: file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_depIdxs,
		EnumInfos:         file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_enumTypes,
		MessageInfos:      file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_msgTypes,
	}.Build()
	File_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto = out.File
	file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_rawDesc = nil
	file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_goTypes = nil
	file_google_ads_googleads_v2_errors_resource_count_limit_exceeded_error_proto_depIdxs = nil
}
