adcenter_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/README.md +57 -0
  2. data/lib/adcenter_api.rb +180 -0
  3. data/lib/adcenter_api/api_config.rb +163 -0
  4. data/lib/adcenter_api/client_login_header_handler.rb +70 -0
  5. data/lib/adcenter_api/credential_handler.rb +104 -0
  6. data/lib/adcenter_api/errors.rb +565 -0
  7. data/lib/adcenter_api/report_header_handler.rb +46 -0
  8. data/lib/adcenter_api/report_utils.rb +203 -0
  9. data/lib/adcenter_api/v7/administration_service.rb +38 -0
  10. data/lib/adcenter_api/v7/administration_service_registry.rb +30 -0
  11. data/lib/adcenter_api/v7/campaign_management_service.rb +398 -0
  12. data/lib/adcenter_api/v7/campaign_management_service_registry.rb +30 -0
  13. data/lib/adcenter_api/v7/customer_billing_service.rb +58 -0
  14. data/lib/adcenter_api/v7/customer_billing_service_registry.rb +30 -0
  15. data/lib/adcenter_api/v7/customer_management_service.rb +98 -0
  16. data/lib/adcenter_api/v7/customer_management_service_registry.rb +30 -0
  17. data/lib/adcenter_api/v7/notification_service.rb +38 -0
  18. data/lib/adcenter_api/v7/notification_service_registry.rb +30 -0
  19. data/lib/adcenter_api/v7/reporting_service.rb +38 -0
  20. data/lib/adcenter_api/v7/reporting_service_registry.rb +30 -0
  21. data/lib/adcenter_api/v8/ad_intelligence_service.rb +86 -0
  22. data/lib/adcenter_api/v8/ad_intelligence_service_registry.rb +30 -0
  23. data/lib/adcenter_api/v8/administration_service.rb +38 -0
  24. data/lib/adcenter_api/v8/administration_service_registry.rb +30 -0
  25. data/lib/adcenter_api/v8/bulk_service.rb +42 -0
  26. data/lib/adcenter_api/v8/bulk_service_registry.rb +30 -0
  27. data/lib/adcenter_api/v8/campaign_management_service.rb +390 -0
  28. data/lib/adcenter_api/v8/campaign_management_service_registry.rb +30 -0
  29. data/lib/adcenter_api/v8/customer_billing_service.rb +62 -0
  30. data/lib/adcenter_api/v8/customer_billing_service_registry.rb +30 -0
  31. data/lib/adcenter_api/v8/customer_management_service.rb +162 -0
  32. data/lib/adcenter_api/v8/customer_management_service_registry.rb +30 -0
  33. data/lib/adcenter_api/v8/notification_service.rb +38 -0
  34. data/lib/adcenter_api/v8/notification_service_registry.rb +30 -0
  35. data/lib/adcenter_api/v8/optimizer_service.rb +46 -0
  36. data/lib/adcenter_api/v8/optimizer_service_registry.rb +30 -0
  37. data/lib/adcenter_api/v8/reporting_service.rb +38 -0
  38. data/lib/adcenter_api/v8/reporting_service_registry.rb +30 -0
  39. data/lib/adcenter_api/version.rb +5 -0
  40. data/lib/ads_common/api_config_decorator.rb +43 -0
  41. data/lib/ads_common/auth/client_login_handler_decorator.rb +168 -0
  42. data/lib/ads_common/build/savon_registry_decorator.rb +16 -0
  43. data/lib/ads_common/parameters_validator_decorator.rb +37 -0
  44. data/lib/ads_common/savon_headers_base_header_handler_decorator.rb +23 -0
  45. data/lib/ads_common/savon_service_decorator.rb +109 -0
  46. data/rakefile.rb +54 -0
  47. metadata +157 -0
@@ -0,0 +1,104 @@
1
+ require 'ads_common/credential_handler'
2
+ require 'adcenter_api/api_config'
3
+
4
+ module AdcenterApi
5
+ class CredentialHandler < AdsCommon::CredentialHandler
6
+ # Whether we're making MCC-level requests.
7
+ attr_accessor :use_mcc
8
+ # Whether we're making validate-only requests.
9
+ attr_accessor :validate_only
10
+ # Whether we're making partial failure requests.
11
+ attr_accessor :partial_failure
12
+
13
+ def initialize(config)
14
+ super(config)
15
+ @use_mcc = false
16
+ @validate_only = false
17
+ @partial_failure = false
18
+ end
19
+
20
+ # Create the list of credentials to be used by the auth handler for header
21
+ # generation.
22
+ def credentials(credentials_override = nil)
23
+ result = super(credentials_override)
24
+ #puts "credentials result=\n#{result}"
25
+ validate_headers_for_server(result)
26
+
27
+ extra_headers = {
28
+ 'userAgent' => generate_soap_user_agent(),
29
+ 'developerToken' => result[:developer_token]
30
+ }
31
+ if !@use_mcc and result[:client_customer_id]
32
+ extra_headers['clientCustomerId'] = result[:client_customer_id]
33
+ end
34
+ extra_headers['validateOnly'] = 'true' if @validate_only
35
+ extra_headers['partialFailure'] = 'true' if @partial_failure
36
+ result[:extra_headers] = extra_headers
37
+ #puts "credentials result2=\n#{result}"
38
+ return result
39
+ end
40
+
41
+ # Generates string to user as user agent in HTTP headers.
42
+ def generate_http_user_agent(extra_ids = [])
43
+ extra_ids, agent_app = get_user_agent_data(extra_ids)
44
+ super(extra_ids, agent_app)
45
+ end
46
+
47
+ # Generates string to user as user agent in SOAP headers.
48
+ def generate_soap_user_agent(extra_ids = [])
49
+ extra_ids, agent_app = get_user_agent_data(extra_ids)
50
+ super(extra_ids, agent_app)
51
+ end
52
+
53
+ private
54
+
55
+ # Returns agent name and data for user-agent string generation.
56
+ def get_user_agent_data(extra_ids)
57
+ agent_app = @config.read('authentication.user_agent')
58
+ extra_ids << ['AwApi-Ruby/%s' % AdcenterApi::ApiConfig::CLIENT_LIB_VERSION]
59
+ return [extra_ids, agent_app]
60
+ end
61
+
62
+ # Validates that the right credentials are being used for the chosen
63
+ # environment.
64
+ #
65
+ # Raises:
66
+ # - AdsCommon::Error::EnvironmentMismatchError if sandbox credentials are
67
+ # being used for production or vice-versa.
68
+ # - AdcenterApi::Errors:BadCredentialsError if supplied credentials are not
69
+ # valid.
70
+ #
71
+ def validate_headers_for_server(credentials)
72
+ if credentials[:client_email]
73
+ raise AdcenterApi::Errors::BadCredentialsError, 'Deprecated header ' +
74
+ 'clientEmail is no longer supported, please use clientCustomerId'
75
+ end
76
+
77
+ client_customer_id = credentials[:client_customer_id]
78
+ if client_customer_id and
79
+ !(client_customer_id.is_a?(Integer) or
80
+ (client_customer_id =~ /^\d+(-\d+-\d+)?$/))
81
+ raise AdcenterApi::Errors::BadCredentialsError,
82
+ 'Invalid client customer ID: %s' % client_customer_id.to_s
83
+ end
84
+
85
+ token = credentials[:developer_token]
86
+ #sandbox_token = (token =~ /[a-zA-Z0-9]{12,}/)
87
+ #environment = @config.read('service.environment')
88
+ #case environment
89
+ # when :PRODUCTION
90
+ # if sandbox_token
91
+ # raise AdsCommon::Errors::EnvironmentMismatchError,
92
+ # 'Attempting to connect to production with sandbox credentials.'
93
+ # end
94
+ # when :SANDBOX
95
+ # if (!sandbox_token)
96
+ # raise AdsCommon::Errors::EnvironmentMismatchError,
97
+ # 'Attempting to connect to the sandbox with malformatted ' +
98
+ # 'credentials. Please check http://msdn.microsoft.com/en-US/library/aa983013 for details.'
99
+ # end
100
+ #end
101
+ return nil
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,565 @@
1
+ # Specific error handling for the Adcenter API.
2
+
3
+ require 'ads_common/errors'
4
+
5
+ module AdcenterApi
6
+ module Errors
7
+
8
+ # This class encapsulates base class for API exceptions. More specific
9
+ # exceptions are generated based on Service WSDL.
10
+ class ApiException < AdsCommon::Errors::ApiException
11
+ attr_reader :array_fields
12
+
13
+ def initialize(exception_fault)
14
+ @array_fields ||= []
15
+ exception_fault.each { |key, value| set_field(key, value) }
16
+ end
17
+
18
+ private
19
+
20
+ # Sets instance's property to a value if it is defined
21
+ def set_field(field, value)
22
+ if respond_to?(field)
23
+ value = arrayize(value) if is_array_field(field)
24
+ instance_variable_set("@#{field}", value)
25
+ end
26
+ end
27
+
28
+ # Makes sure object is an array
29
+ def arrayize(object)
30
+ return [] if object.nil?
31
+ return object.is_a?(Array) ? object : [object]
32
+ end
33
+
34
+ # Should a field be forced to be an array
35
+ def is_array_field(field)
36
+ return @array_fields.include?(field.to_s)
37
+ end
38
+ end
39
+
40
+ # Error for invalid credentials sush as malformed ID.
41
+ class BadCredentialsError < AdsCommon::Errors::ApiException
42
+ end
43
+
44
+ # Error for malformed report definition.
45
+ class InvalidReportDefinitionError < AdsCommon::Errors::ApiException
46
+ end
47
+
48
+ # Error for server-side report error.
49
+ class ReportError < AdsCommon::Errors::ApiException
50
+ attr_reader :http_code
51
+
52
+ def initialize(http_code, message)
53
+ super(message)
54
+ @http_code = http_code
55
+ end
56
+ end
57
+
58
+ CODES = {
59
+ # Common Error Codes
60
+ # http://msdn.microsoft.com/en-us/library/bb672016.aspx
61
+ "0" => "InternalError",
62
+ "100" => "NullRequest",
63
+ "105" => "InvalidCredentials",
64
+ "106" => "UserIsNotAuthorized",
65
+ "107" => "QuotaNotAvailable",
66
+ "113" => "InvalidDateObject",
67
+ "116" => "RequestMissingHeaders",
68
+ "201" => "ApiInputValidationError",
69
+ "202" => "ApiExecutionError",
70
+ "203" => "NullParameter",
71
+ "204" => "OperationNotSupported",
72
+ "205" => "InvalidVersion",
73
+ "206" => "NullArrayArgument",
74
+ "207" => "ConcurrentRequestOverLimit",
75
+ "208" => "InvalidAccount",
76
+ "209" => "TimestampNotMatch",
77
+ "210" => "EntityNotExistent",
78
+ "211" => "NameTooLong",
79
+ "512" => "FilterListOverLimit",
80
+ # Campaign Management Error Codes
81
+ # http://msdn.microsoft.com/en-us/library/bb671735.aspx
82
+ "1001" => "CampaignServiceCannotChangeStatusOnUpdate",
83
+ "1003" => "CampaignServiceCannotSpecifyStatusOnAdd",
84
+ "1004" => "CampaignServiceIdShouldBeNullOnAdd",
85
+ "1005" => "CampaignServiceInvalidNegativeKeyword",
86
+ "1006" => "CampaignServiceNegativeKeywordsTotalLengthExceeded",
87
+ "1007" => "CampaignServiceNegativeKeywordMatchesKeyword",
88
+ "1008" => "CampaignServiceInvalidAccountStatus",
89
+ "1009" => "CampaignServiceAccountIdMissingInRequestHeader",
90
+ "1010" => "CampaignServiceSystemInReadOnlyMode",
91
+ "1011" => "CampaignServiceFutureFeatureCode",
92
+ "1012" => "CampaignServiceInvalidNegativeSiteURL",
93
+ "1013" => "CampaignServiceNegativeSiteURLExceededMaxCount",
94
+ "1014" => "CampaignServiceTimeZoneValueInvalid",
95
+ "1015" => "CampaignServiceCurrencyValueInvalid",
96
+ "1016" => "CampaignServiceInvalidEntityState",
97
+ "1017" => "CampaignServiceInvalidSearchBids",
98
+ "1018" => "CampaignServiceInvalidContentBid",
99
+ "1019" => "CampaignServiceCashbackAllowedOnlyForSearchMedium",
100
+ "1020" => "CampaignServiceCashbackNotAllowedForAdgroupsDistributionChannel",
101
+ "1021" => "CampaignServiceAccountNotEligbleForKeywordLevelCashback",
102
+ "1022" => "CampaignServiceCampaignCashbackNeedToBeEnabledBeforeEnablingAdgroup",
103
+ "1023" => "CampaignServiceAccountNotEligibleToModifyCashBack",
104
+ "1024" => "CampaignServiceAccountNotEligibleToSetCashbackAmount",
105
+ "1025" => "CampaignServiceInvalidCashbackAmount",
106
+ "1026" => "CampaignServiceCashbackTextTooLong",
107
+ "1027" => "CampaignServiceCashBackStatusRequired",
108
+ "1028" => "CampaignServiceCashbackInfoShouldBeNullForBackwardCompatability",
109
+ "1029" => "CampaignServiceCustomerIdHasToBeSpecified",
110
+ "1033" => "CampaignServiceAccountIdHasToBeSpecified",
111
+ "1031" => "CampaignServiceCannotPerformCurrentOperation",
112
+ "2928" => "CampaignServiceCustomerDataBeingMigrated",
113
+ "1032" => "CampaignServiceNegativeKeywordsLimitExceeded",
114
+ "1033" => "CampaignServiceNegativeKeywordsEntityLimitExceeded",
115
+ "1034" => "CampaignServiceNegativeKeywordsNotPassed",
116
+ "1100" => "CampaignServiceInvalidCampaignId",
117
+ "1101" => "CampaignServiceInvalidCampaignName",
118
+ "1102" => "CampaignServiceInvalidAccountId",
119
+ "1103" => "CampaignServiceNullCampaign",
120
+ "1104" => "CampaignServiceInvalidCampaignDescription",
121
+ "1105" => "CampaignServiceInvalidMonthlyBudget",
122
+ "1106" => "CampaignServiceInvalidDailyBudget",
123
+ "1107" => "CampaignServiceDuplicateCampaignIds",
124
+ "1108" => "CampaignServiceInvalidConversionTrackingEnabled",
125
+ "1109" => "CampaignServiceTimeZoneNotEnabled",
126
+ "1110" => "CampaignServiceDaylightSavingNotEnabled",
127
+ "1111" => "CampaignServiceInvalidConversionTrackingScriptSet",
128
+ "1113" => "CampaignServiceCampaignsArrayShouldNotBeNullOrEmpty",
129
+ "1114" => "CampaignServiceCampaignsArrayExceedsLimit",
130
+ "1115" => "CampaignServiceCannotCreateDuplicateCampaign",
131
+ "1117" => "CampaignServiceMaximumCampaignsReached",
132
+ "1118" => "CampaignServiceCampaignIdsArrayShouldNotBeNullOrEmpty",
133
+ "1119" => "CampaignServiceCampaignIdsArrayExceedsLimit",
134
+ "1120" => "CampaignServiceInvalidCampaignStatus",
135
+ "1121" => "CampaignServiceInvalidBudgetType",
136
+ "1122" => "CampaignServiceCampaignNotEligibleForCashBack",
137
+ "1123" => "CampaignServiceCampaignBudgetAmountIsLessThanSpendAmount",
138
+ "1129" => "CampaignServiceCampaignAlreadyExists",
139
+ "1130" => "CampaignServiceNullCampaignNegativeKeywords",
140
+ "1200" => "CampaignServiceNullAdGroup",
141
+ "1201" => "CampaignServiceInvalidAdGroupId",
142
+ "1202" => "CampaignServiceInvalidAdGroupName",
143
+ "1203" => "CampaignServiceDuplicateInAdGroupIds",
144
+ "1204" => "CampaignServiceAdGroupEndDateShouldBeAfterStartDate",
145
+ "1205" => "CampaignServiceCannotUpdateLanguageAndRegion",
146
+ "1208" => "CampaignServiceCampaignBudgetLessThanAdGroupBudget",
147
+ "1209" => "CampaignServiceAdGroupsArrayShouldNotBeNullOrEmpty",
148
+ "1210" => "CampaignServiceAdGroupsArrayExceedsLimit",
149
+ "1211" => "CampaignServiceAdGroupUserNotAllowedContentMedium",
150
+ "1212" => "CampaignServiceAdGroupStartDateLessThanCurrentDate",
151
+ "1213" => "CampaignServiceMaximumAdGroupsReached",
152
+ "1214" => "CampaignServiceCannotCreateDuplicateAdGroup",
153
+ "1215" => "CampaignServiceCannotUpdateAdGroupInExpiredState",
154
+ "1216" => "CampaignServiceCannotUpdateAdGroupInSubmittedState",
155
+ "1217" => "CampaignServiceCannotOperateOnAdGroupInCurrentState",
156
+ "1218" => "CampaignServiceAdGroupIdsArrayShouldNotBeNullOrEmpty",
157
+ "1219" => "CampaignServiceAdGroupIdsArrayExceedsLimit",
158
+ "1220" => "CampaignServiceMissingDistributionChannel",
159
+ "1221" => "CampaignServiceAdGroupInvalidDistributionChannel",
160
+ "1222" => "CampaignServiceAdGroupInvalidMedium",
161
+ "1223" => "CampaignServiceAdGroupMediumNotAllowedForDistributionChannel",
162
+ "1224" => "CampaignServiceAdGroupMissingAdMedium",
163
+ "1225" => "CampaignServiceUserNotAuthorizedForDistributionChannel",
164
+ "1226" => "CampaignServiceNeedAtleastOneAdAndOneKeywordToSubmit",
165
+ "1227" => "CampaignServiceAdGroupStartDateCannotBeEarlierThanSubmitDate",
166
+ "1228" => "CampaignServiceCannotSetPricingModelOnAdGroup",
167
+ "1229" => "CampaignServiceCannotSetSearchBidOnAdGroup",
168
+ "1230" => "CampaignServiceCannotSetContentBidOnAdGroup",
169
+ "1231" => "CampaignServiceAdGroupExpired",
170
+ "1232" => "CampaignServiceAdGroupInvalidStartDate",
171
+ "1233" => "CampaignServiceAdGroupInvalidEndDate",
172
+ "1234" => "CampaignServiceAdGroupPricingModelCpmRequiresContentMedium",
173
+ "1235" => "CampaignServiceAdGroupInvalidMediumForCustomer",
174
+ "1236" => "CampaignServiceAdGroupPricingModelCpmIsNotEnabledForCustomer",
175
+ "1237" => "CampaignServiceAdGroupPricingModelIsNull",
176
+ "1239" => "CampaignServiceTypeCanBeBehavioralBidOnlyForContentAdGroups",
177
+ "1240" => "CampaignServiceTypeCanBeSitePlacementOnlyForContentAdGroups",
178
+ "1241" => "CampaignServiceCannotUpdateBiddingModel",
179
+ "1242" => "CampaignServiceCannotUpdateAdDistributionForThisType",
180
+ "1243" => "CampaignServiceTooManyAdGroupsInAccount",
181
+ "1244" => "AdGroupServiceNullAdGroupNegativeKeywords",
182
+ "1245" => "AdGroupServiceNegativeSiteUrlsNotPassed",
183
+ "1300" => "CampaignServiceNullAd",
184
+ "1301" => "CampaignServiceInvalidAdTitle",
185
+ "1302" => "CampaignServiceInvalidAdDestinationUrl",
186
+ "1303" => "CampaignServiceAdIdIsNull",
187
+ "1304" => "CampaignServiceAdIdIsNonNull",
188
+ "1305" => "CampaignServiceAdTypeIsNonNull",
189
+ "1306" => "CampaignServiceInvalidAdText",
190
+ "1307" => "CampaignServiceInvalidAdDisplayUrl",
191
+ "1308" => "CampaignServiceInvalidAdId",
192
+ "1309" => "CampaignServiceDuplicateInAdIds",
193
+ "1310" => "CampaignServiceAdsArrayShouldNotBeNullOrEmpty",
194
+ "1311" => "CampaignServiceAdsArrayExceedsLimit",
195
+ "1312" => "CampaignServiceMaxAdsReached",
196
+ "1313" => "CampaignServiceDuplicateAd",
197
+ "1314" => "CampaignServiceDefaultAdExists",
198
+ "1315" => "CampaignServiceSyntaxErrorInAdTitle",
199
+ "1316" => "CampaignServiceSyntaxErrorInAdText",
200
+ "1317" => "CampaignServiceSyntaxErrorInAdDisplayUrl",
201
+ "1318" => "CampaignServiceForbiddenTextInAdTitle",
202
+ "1319" => "CampaignServiceForbiddenTextInAdText",
203
+ "1320" => "CampaignServiceForbiddenTextInAdDisplayUrl",
204
+ "1321" => "CampaignServiceIncorrectAdFormatInTitle",
205
+ "1322" => "CampaignServiceIncorrectAdFormatInText",
206
+ "1323" => "CampaignServiceIncorrectAdFormatInDisplayUrl",
207
+ "1324" => "CampaignServiceTooMuchAdTextInTitle",
208
+ "1325" => "CampaignServiceTooMuchAdTextInText",
209
+ "1326" => "CampaignServiceTooMuchAdTextInDisplayUrl",
210
+ "1327" => "CampaignServiceTooMuchAdTextInDestinationUrl",
211
+ "1328" => "CampaignServiceNotEnoughAdText",
212
+ "1329" => "CampaignServiceExclusiveWordInAdTitle",
213
+ "1330" => "CampaignServiceExclusiveWordInAdText",
214
+ "1331" => "CampaignServiceExclusiveWordInAdDisplayUrl",
215
+ "1332" => "CampaignServiceInvalidAdDisplayUrlFormat",
216
+ "1333" => "CampaignServiceDefaultAdSyntaxErrorInTitle",
217
+ "1334" => "CampaignServiceDefaultAdSyntaxErrorInText",
218
+ "1335" => "CampaignServiceDefaultAdSyntaxErrorInDisplayUrl",
219
+ "1336" => "CampaignServiceDefaultAdForbiddenWordInTitle",
220
+ "1337" => "CampaignServiceDefaultAdForbiddenWordInText",
221
+ "1338" => "CampaignServiceDefaultAdForbiddenWordInDisplayUrl",
222
+ "1339" => "CampaignServiceDefaultAdIncorrectAdFormatInTitle",
223
+ "1340" => "CampaignServiceDefaultAdIncorrectAdFormatInText",
224
+ "1341" => "CampaignServiceDefaultAdIncorrectAdFormatInDisplayUrl",
225
+ "1342" => "CampaignServiceDefaultAdTooMuchTextInTitle",
226
+ "1343" => "CampaignServiceDefaultAdTooMuchTextInText",
227
+ "1344" => "CampaignServiceDefaultAdTooMuchTextInDisplayUrl",
228
+ "1345" => "CampaignServiceDefaultAdTooMuchTextInDestinationUrl",
229
+ "1346" => "CampaignServiceDefaultAdNotEnoughAdText",
230
+ "1347" => "CampaignServiceDefaultAdExclusiveWordInTitle",
231
+ "1348" => "CampaignServiceDefaultAdExclusiveWordInText",
232
+ "1349" => "CampaignServiceDefaultAdExclusiveWordInDisplayUrl",
233
+ "1350" => "CampaignServiceDefaultAdInvalidDisplayUrlFormat",
234
+ "1351" => "CampaignServiceAdIdsArrayShouldNotBeNullOrEmpty",
235
+ "1352" => "CampaignServiceAdIdsArrayExceedsLimit",
236
+ "1353" => "CampaignServiceTooMuchTextInTitleAcrossAllAssociations",
237
+ "1354" => "CampaignServiceTooMuchTextInTextAcrossAllAssociations",
238
+ "1355" => "CampaignServiceTooMuchTextInDisplayUrlAcrossAllAssociations",
239
+ "1356" => "CampaignServiceNothingToUpdateInAdRequest",
240
+ "1357" => "CampaignServiceCannotOperateOnAdInCurrentState",
241
+ "1358" => "CampaignServiceDefaultAdInvalidDestinationUrlFormat",
242
+ "1359" => "CampaignServiceInvalidAdDestinationUrlFormat",
243
+ "1360" => "CampaignServiceAdTypeDoesNotMatch",
244
+ "1361" => "CampaignServiceInvalidBusinessName",
245
+ "1362" => "CampaignServiceInvalidPhoneNumber",
246
+ "1363" => "CampaignServiceMobileAdRequiredDataMissing",
247
+ "1364" => "CampaignServiceMobileAdSupportedForSearchOnlyAdGroups",
248
+ "1365" => "CampaignServiceMobileAdNotSupportedForThisMarket",
249
+ "1366" => "CampaignServiceAdTypeInvalidForCustomer",
250
+ "1367" => "CampaignServiceTooMuchAdTextInBusinessName",
251
+ "1368" => "CampaignServiceTooMuchAdTextInPhoneNumber",
252
+ "1370" => "CampaignServicePhoneNumberNotAllowedForCountry",
253
+ "1371" => "CampaignServiceBlockedPhoneNumber",
254
+ "1372" => "CampaignServicePhoneNumberNotAllowedInAdTitle",
255
+ "1373" => "CampaignServicePhoneNumberNotAllowedInAdText",
256
+ "1374" => "CampaignServicePhoneNumberNotAllowedInAdDisplayUrl",
257
+ "1375" => "CampaignServicePhoneNumberNotAllowedInAdBusinessName",
258
+ "1376" => "CampaignServiceEditorialErrorInAdTitle",
259
+ "1377" => "CampaignServiceEditorialErrorInAdText",
260
+ "1378" => "CampaignServiceEditorialErrorInAdDisplayUrl",
261
+ "1379" => "CampaignServiceEditorialErrorInAdDestinationUrl",
262
+ "1380" => "CampaignServiceEditorialErrorInAdBusinessName",
263
+ "1381" => "CampaignServiceEditorialErrorInAdPhoneNumber",
264
+ "1382" => "CampaignServiceInvalidAdStatus",
265
+ "1383" => "CampaignServiceInvalidAdEditorialStatus",
266
+ "1384" => "CampaignServiceCannotSetExemptionRequestOnAd",
267
+ "1385" => "CampaignServiceUpdateAdEmpty",
268
+ "1386" => "CampaignServiceAdTypeDoesNotMatchExistingValue",
269
+ "1387" => "CampaignServiceEditorialAdTitleBlankAcrossAllAssociations",
270
+ "1388" => "CampaignServiceEditorialAdTitleBlank",
271
+ "1389" => "CampaignServiceEditorialAdTextBlankAcrossAllAssociations",
272
+ "1390" => "CampaignServiceEditorialAdTextBlank",
273
+ "1391" => "CampaignServiceEditorialAdDisplayUrlBlankAcrossAllAssociations",
274
+ "1392" => "CampaignServiceEditorialAdDisplayUrlBlank",
275
+ "1393" => "CampaignServiceEditorialAdDestinationUrlBlank",
276
+ "1394" => "CampaignServiceAdDeleted",
277
+ "1395" => "CampaignServiceAdInInvalidStatus",
278
+ "1396" => "CampaignServiceDefaultAdTooMuchTextInBusniessName",
279
+ "1397" => "CampaignServiceEditorialGenericError",
280
+ "2802" => "CampaignServiceCannotChangeImageUrlOnUpdate",
281
+ "2803" => "CampaignServiceDefaultAdTooMuchTextInAltText",
282
+ "1400" => "CampaignServiceNullTarget",
283
+ "1401" => "CampaignServiceInvalidTargetId",
284
+ "1402" => "CampaignServiceNoBidsInTarget",
285
+ "1403" => "CampaignServiceInvalidDayTarget",
286
+ "1404" => "CampaignServiceInvalidHourTarget",
287
+ "1405" => "CampaignServiceInvalidLocationTarget",
288
+ "1406" => "CampaignServiceInvalidGenderTarget",
289
+ "1407" => "CampaignServiceInvalidAgeTarget",
290
+ "1408" => "CampaignServiceDuplicateDayTarget",
291
+ "1409" => "CampaignServiceDuplicateHourTarget",
292
+ "1410" => "CampaignServiceDuplicateMetroAreaLocationTarget",
293
+ "1411" => "CampaignServiceDuplicateCountryLocationTarget",
294
+ "1412" => "CampaignServiceDuplicateGenderTarget",
295
+ "1413" => "CampaignServiceDuplicateAgeTarget",
296
+ "1414" => "CampaignServiceCountryAndMetroAreaTargetsExclusive",
297
+ "1415" => "CampaignServiceMetroTargetsFromMultipleCountries",
298
+ "1416" => "CampaignServiceIncrementalBudgetAmountRequiredForDayTarget",
299
+ "1417" => "CampaignServiceGeoTargetsInAdGroupExceedsLimit",
300
+ "1418" => "CampaignServiceDuplicateInTargetIds",
301
+ "1419" => "CampaignServiceTargetGroupAssignedEntitiesPermissionMismatch",
302
+ "1420" => "CampaignServiceTargetsNotPassed",
303
+ "1421" => "CampaignServiceTargetAlreadyExists",
304
+ "1422" => "CampaignServiceTargetsLimitReached",
305
+ "1423" => "CampaignServiceInvalidGeoLocationLevel",
306
+ "1424" => "CampaignServiceAdGroupMediumInvalidWithBusinessTargets",
307
+ "1425" => "CampaignServiceTargetsArrayExceedsLimit",
308
+ "1426" => "CampaignServiceTargetNotAssociatedWithEntity",
309
+ "1427" => "CampaignServiceTargetAlreadyAssociatedWithEntity",
310
+ "1428" => "CampaignServiceTargetHasActiveAssociations",
311
+ "1429" => "CampaignServiceInvalidTarget",
312
+ "1430" => "CampaignServiceBTTargettingNotEnabledForPilot",
313
+ "1431" => "CampaignServiceInvalidBehaviorTarget",
314
+ "1432" => "CampaignServiceDuplicateBehaviorTarget",
315
+ "1433" => "CampaignServiceInvalidSegmentTarget",
316
+ "1434" => "CampaignServiceDuplicateSegmentTarget",
317
+ "1435" => "CampaignServiceNegativeBiddingNotAllowedForThisTargetType",
318
+ "1436" => "CampaignServiceInvalidCashbackTextinSegmentTarget",
319
+ "1437" => "CampaignServiceInvalidParam1inSegmentTarget",
320
+ "1438" => "CampaignServiceInvalidParam2inSegmentTarget",
321
+ "1439" => "CampaignServiceInvalidParam3inSegmentTarget",
322
+ "1440" => "CampaignServiceInvalidSegmentParam1inSegmentTarget",
323
+ "1441" => "CampaignServiceInvalidSegmentParam2inSegmentTarget",
324
+ "1442" => "CampaignServiceCannotSpecifySegmentTargetsWithAnyOtherTarget",
325
+ "1443" => "CampaignServiceBusinessLocationsNotPassed",
326
+ "1444" => "CampaignServiceInvalidBusinessLocationHours",
327
+ "1445" => "CampaignServiceInvalidAddress",
328
+ "1446" => "CampaignServiceBusinessLocationTargetsLimitReachedForCustomer",
329
+ "1447" => "CampaignServiceBusinessLocationTargetsLimitReachedForAdGroup",
330
+ "1448" => "CampaignServiceBusinessLocationTargetsLimitReachedForCampaign",
331
+ "1449" => "CampaignServiceTargetsAgeBidsBatchLimitExceeded",
332
+ "1450" => "CampaignServiceTargetsDayBidsBatchLimitExceeded",
333
+ "1451" => "CampaignServiceTargetsHourBidsBatchLimitExceeded",
334
+ "1452" => "CampaignServiceTargetsGenderBidsBatchLimitExceeded",
335
+ "1453" => "CampaignServiceTargetsLocationBidsBatchLimitExceeded",
336
+ "1454" => "CampaignServiceTargetsSegmentBidsBatchLimitExceeded",
337
+ "1455" => "CampaignServiceTargetsBehaviorBidsBatchLimitExceeded",
338
+ "1456" => "CampaignServiceInvalidBusinessLocationId",
339
+ "1457" => "CampaignServiceInvalidTargetRadius",
340
+ "1458" => "CampaignServiceInvalidLatitude",
341
+ "1459" => "CampaignServiceInvalidLongitude",
342
+ "1460" => "CampaignServiceDuplicateSubGeographyTarget",
343
+ "1461" => "CampaignServiceDuplicateCityTarget",
344
+ "1462" => "CampaignServiceDuplicateBusinessLocationTarget",
345
+ "1463" => "CampaignServiceDuplicateCustomLocationTarget",
346
+ "1464" => "CampaignServiceInvalidLocationId",
347
+ "1465" => "CampaignServiceGeoLocationOptionsRequired",
348
+ "1466" => "CampaignServiceUnsupportedCombinationOfLocationIdAndOptions",
349
+ "1467" => "CampaignServiceInvalidGeographicalLocationSearchString",
350
+ "1468" => "CampaignServiceGeoTargetsAndBusinessTargetsMutuallyExclusive",
351
+ "1469" => "CampaignServiceBusinessLocationNotSet",
352
+ "1470" => "CampaignServiceBusinessNameRequired",
353
+ "1471" => "CampaignServiceLattitudeLongitudeRequired",
354
+ "1472" => "CampaignServiceBusinessNameTooLong",
355
+ "1473" => "CampaignServiceDomainNameAlreadyTaken",
356
+ "1474" => "CampaignServiceBusinessDescriptionTooLong",
357
+ "1475" => "CampaignServiceInvalidBusinessTypeId",
358
+ "1476" => "CampaignServiceInvalidPaymentTypeId",
359
+ "1477" => "CampaignServiceInvalidBusinessHoursEntry",
360
+ "1478" => "CampaignServiceAddressRequired",
361
+ "1479" => "CampaignServiceAddressTooLong",
362
+ "1480" => "CampaignServiceCityNameRequired",
363
+ "1481" => "CampaignServiceCityNameTooLong",
364
+ "1482" => "CampaignServiceCountryCodeRequired",
365
+ "1483" => "CampaignServiceCountryCodeTooLong",
366
+ "1484" => "CampaignServiceStateOrProvinceRequired",
367
+ "1485" => "CampaignServiceStateOrProvinceTooLong",
368
+ "1486" => "CampaignServiceLocationIsNotSpecified",
369
+ "1487" => "CampaignServiceOpen24HoursAndBusinessHoursMutuallyExclusive",
370
+ "1488" => "CampaignServiceBusinessNameAndAddressAlreadyExists",
371
+ "1489" => "CampaignServiceBusinessLocationListTooLong",
372
+ "1490" => "CampaignServiceInvalidCustomerId",
373
+ "1491" => "InvalidDomainName",
374
+ "1492" => "CampaignServiceBusinessDomainNameNotSet",
375
+ "1493" => "CampaignServiceBusinessDomainTimestampMismatch",
376
+ "1494" => "CampaignServiceTimestampRequiredForBusinessDomainNameModification",
377
+ "1495" => "CampaignServiceBusinessDomainAlreadySet",
378
+ "1496" => "CampaignServiceDomainNameUnknown",
379
+ "1497" => "CampaignServiceOnlyOneBusinessLocationPerCustomerIsAllowed",
380
+ "1498" => "CampaignServiceBiddingOtherThanZeroNotAllowedForThisTargetType",
381
+ "1499" => "CampaignServiceTargetingShouldBeExclusiveForThisTargetType",
382
+ "2900" => "CampaignServiceInvalidCashbackAmountInSegmentTarget",
383
+ "2902" => "CampaignServiceInvalidTargetName",
384
+ "2904" => "CampaignServiceTargetInvalidForCustomer",
385
+ "2909" => "CampaignServiceIsLibraryTargetNotNull",
386
+ "2918" => "CampaignServiceBusinessAndRadiusTargetsAllowedOnlyForSearchMedium",
387
+ "2919" => "CampaignServiceAssociatingNonLibraryTargetNotAllowed",
388
+ "1500" => "CampaignServiceNullKeyword",
389
+ "1501" => "CampaignServiceInvalidKeywordId",
390
+ "1502" => "CampaignServiceDuplicateInKeywordIds",
391
+ "1503" => "CampaignServiceInvalidKeywordText",
392
+ "1504" => "CampaignServiceCannotChangeTextOnUpdate",
393
+ "1505" => "CampaignServiceKeywordsArrayShouldNotBeNullOrEmpty",
394
+ "1506" => "CampaignServiceKeywordsArrayExceedsLimit",
395
+ "1507" => "CampaignServiceInvalidBidAmounts",
396
+ "1508" => "CampaignServiceInvalidBidAmountForSearchAdGroup",
397
+ "1509" => "CampaignServiceInvalidBidAmountForContentAdGroup",
398
+ "1510" => "CampaignServiceInvalidBidAmountForHybridAdGroup",
399
+ "1511" => "CampaignServiceInvalidParam1",
400
+ "1512" => "CampaignServiceInvalidParam2",
401
+ "1513" => "CampaignServiceInvalidParam3",
402
+ "1514" => "CampaignServiceNegativeKeywordRequiresPartialMatchBid",
403
+ "1515" => "CampaignServiceBidAmountsLessThanFloorPrice",
404
+ "1516" => "CampaignServiceBidAmountsGreaterThanCeilingPrice",
405
+ "1517" => "CampaignServiceDuplicateKeyword",
406
+ "1518" => "CampaignServiceMaxKeywordsReachedForAccount",
407
+ "1519" => "CampaignServiceMaxKeywordsReachedForAdGroup",
408
+ "1520" => "CampaignServiceForbiddenWordInKeywordText",
409
+ "1521" => "CampaignServiceForbiddenWordInParam1",
410
+ "1522" => "CampaignServiceForbiddenWordInParam2",
411
+ "1523" => "CampaignServiceForbiddenWordInParam3",
412
+ "1524" => "CampaignServiceExclusiveWordInKeywordText",
413
+ "1525" => "CampaignServiceExclusiveWordInParam1",
414
+ "1526" => "CampaignServiceExclusiveWordInParam2",
415
+ "1527" => "CampaignServiceExclusiveWordInParam3",
416
+ "1528" => "CampaignServiceKeywordDoesNotBelongToAdGroupId",
417
+ "1529" => "CampaignServiceKeywordIdsArrayShouldNotBeNullOrEmpty",
418
+ "1530" => "CampaignServiceKeywordIdsArrayExceedsLimit",
419
+ "1531" => "CampaignServiceInvalidKeywordStatus",
420
+ "1532" => "CampaignServiceInvalidKeywordEditorialStatus",
421
+ "1533" => "CampaignServiceCannotSetExemptionRequestOnKeyword",
422
+ "1534" => "CampaignServiceUpdateKeywordEmpty",
423
+ "1535" => "CampaignServiceKeywordQualityScoreOperationNotEnabledForCustomer",
424
+ "1536" => "CampaignServiceDuplicateKeywordIdInRequest",
425
+ "1537" => "CampaignServiceCCannotAddKeywordToSpecifiedAdGroup",
426
+ "1700" => "CampaignServiceNullKeywordBid",
427
+ "1701" => "CampaignServiceKeywordBidsArrayShouldNotBeNullOrEmpty",
428
+ "1702" => "CampaignServiceKeywordBidsArrayExceedsLimit",
429
+ "1703" => "CampaignServiceKeywordBidsInvalidKeyword",
430
+ "1704" => "CampaignServiceAtleastOneKeywordBidShouldBeSpecified",
431
+ "1705" => "CampaignServiceInvalidLanguageAndRegionValue",
432
+ "1900" => "CampaignServiceNullSegment",
433
+ "1901" => "CampaignServiceInvalidSegmentId",
434
+ "1902" => "CampaignServiceDuplicateInSegmentIds",
435
+ "1903" => "CampaignServiceInvalidSegmentName",
436
+ "1904" => "CampaignServiceInvalidUserHash",
437
+ "1905" => "CampaignServiceSegmentsArrayShouldNotBeNullOrEmpty",
438
+ "1906" => "CampaignServiceSegmentsArrayExceedsLimit",
439
+ "1907" => "CampaignServiceDuplicateSegmentName",
440
+ "1908" => "CampaignServiceSegmentOperationNotAllowedForPilot",
441
+ "1909" => "CampaignServiceUserHashArrayShouldNotBeNullOrEmpty",
442
+ "1910" => "CampaignServiceUserHashArrayExceedsLimit",
443
+ "1911" => "CampaignServiceSegmentIdsArrayShouldNotBeNullOrEmpty",
444
+ "1912" => "CampaignServiceSegmentIdsArrayExceedsLimit",
445
+ "1913" => "CampaignServiceMaxSegmentsForCustomerHasBeenReached",
446
+ "1914" => "CampaignServiceSegmentNotAllowedForDistributionChannel",
447
+ "2500" => "CampaignServiceNullBusiness",
448
+ "2501" => "CampaignServiceInvalidBusinessId",
449
+ "2502" => "CampaignServiceDuplicateInBusinessIds",
450
+ "2503" => "CampaignServiceBusinessesArrayShouldNotBeNullOrEmpty",
451
+ "2504" => "CampaignServiceBusinessesArrayExceedsLimit",
452
+ "2505" => "CampaignServiceBusinessIdsArrayShouldNotBeNullOrEmpty",
453
+ "2506" => "CampaignServiceBusinessIdsArrayExceedsLimit",
454
+ "2507" => "CampaignServiceInvalidBusinessStatus",
455
+ "2508" => "CampaignServiceInvalidBusinessGeoCodeStatus",
456
+ "2509" => "CampaignServiceInvalidBusinessLatitude",
457
+ "2510" => "CampaignServiceInvalidBusinessLongitude",
458
+ "2511" => "CampaignServiceInvalidCustomIconAssetId",
459
+ "2901" => "CampaignServiceBusinessLocationBeginAndEndHoursMismatch",
460
+ "2903" => "CampaignServiceDuplicatePaymentTypes",
461
+ "2905" => "CampaignServiceInvalidEmail",
462
+ "2906" => "CampaignServiceEmailTooLong",
463
+ "2907" => "CampaignServiceBusinessPhoneNumberInvalid",
464
+ "2908" => "CampaignServicePhoneNumberTooLong",
465
+ "2910" => "CampaignServiceInvalidLatitudeLongitudeForBusinessLocation",
466
+ "2914" => "CampaignServiceZipOrPostalCodeTooLong",
467
+ "2915" => "CampaignServiceBusinessDescriptionRequired",
468
+ "2916" => "CampaignServiceDuplicateBusinessHours",
469
+ "2917" => "CampaignServiceAddressInvalid",
470
+ "2920" => "CampaignServiceBusinessAddressShouldBeValidForUpdate",
471
+ "2921" => "CampaignServiceBusinessHasActiveAssociations",
472
+ "2600" => "CampaignServiceNullSitePlacement",
473
+ "2601" => "CampaignServiceInvalidSitePlacementId",
474
+ "2602" => "CampaignServiceDuplicateInSitePlacementIds",
475
+ "2603" => "CampaignServiceSitePlacementsArrayShouldNotBeNullOrEmpty",
476
+ "2604" => "CampaignServiceSitePlacementsArrayExceedsLimit",
477
+ "2605" => "CampaignServiceSitePlacementOperationNotAllowedForPilot",
478
+ "2606" => "CampaignServiceSitePlacementIdsArrayShouldNotBeNullOrEmpty",
479
+ "2607" => "CampaignServiceSitePlacementIdsArrayExceedsLimit",
480
+ "2608" => "CampaignServiceUrlsArrayShouldNotBeNullOrEmpty",
481
+ "2609" => "CampaignServiceUrlsArrayExceedsLimit",
482
+ "2610" => "CampaignServiceNullUrl",
483
+ "2611" => "CampaignServiceInvalidUrl",
484
+ "2612" => "CampaignServiceInvalidPlacementId",
485
+ "2613" => "CampaignServiceCannotChangeUrlOnUpdate",
486
+ "2614" => "CampaignServiceCannotChangePlacementIdOnUpdate",
487
+ "2615" => "CampaignServiceNothingToUpdateInSitePlacementRequest",
488
+ "2616" => "CampaignServiceCannotAddSitePlacementToSpecifiedAdGroup",
489
+ "2617" => "CampaignServiceInvalidSitePlacementStatus",
490
+ "2618" => "CampaignServiceDuplicateSitePlacement",
491
+ "2700" => "CampaignServiceNullBehavioralBid",
492
+ "2701" => "CampaignServiceInvalidBehavioralBidId",
493
+ "2702" => "CampaignServiceDuplicateInBehavioralBidIds",
494
+ "2703" => "CampaignServiceBehavioralBidsArrayShouldNotBeNullOrEmpty",
495
+ "2704" => "CampaignServiceBehavioralBidsArrayExceedsLimit",
496
+ "2705" => "CampaignServiceBehavioralBidOperationNotAllowedForPilot",
497
+ "2706" => "CampaignServiceBehavioralBidIdsArrayShouldNotBeNullOrEmpty",
498
+ "2707" => "CampaignServiceBehavioralBidIdsArrayExceedsLimit",
499
+ "2708" => "CampaignServiceInvalidBehavioralBidName",
500
+ "2709" => "CampaignServiceCannotChangeBehavioralName",
501
+ "2710" => "CampaignServiceNothingToUpdateInBehavioralBidRequest",
502
+ "2711" => "CampaignServiceCannotAddBehavioralBidToSpecifiedAdGroup",
503
+ "2712" => "CampaignServiceBTBiddingNotEnabledForPilot",
504
+ "2713" => "CampaignServiceDuplicateBehavioralBid",
505
+ "2714" => "CampaignServiceInvalidBehavioralBidStatus",
506
+ "2715" => "CampaignServiceInvalidMediumAndBiddingStrategyCombination",
507
+ # Reporting API Error Codes
508
+ # http://msdn.microsoft.com/en-US/library/bb672083(v=msads.70)
509
+ "2001" => "ReportingServiceNullReportRequest",
510
+ "2002" => "ReportingServiceUnknownReportType",
511
+ "2003" => "ReportingServiceAccountNotAuthorized",
512
+ "2004" => "ReportingServiceNoCompleteDataAvaliable",
513
+ "2005" => "ReportingServiceInvalidDataAvailabilityAndTimePeriodCombination",
514
+ "2006" => "ReportingServiceInvalidReportName",
515
+ "2007" => "ReportingServiceInvalidReportAggregation",
516
+ "2008" => "ReportingServiceInvalidReportTimeSelection",
517
+ "2009" => "ReportingServiceInvalidCustomDateRangeStart",
518
+ "2010" => "ReportingServiceInvalidCustomDateRangeEnd",
519
+ "2011" => "ReportingServiceEndDateBeforeStartDate",
520
+ "2012" => "ReportingServiceEmptyCustomDates",
521
+ "2013" => "ReportingServiceCustomDatesOverlimit",
522
+ "2014" => "ReportingServiceNullColumns",
523
+ "2015" => "ReportingServiceRequiredColumnsNotSelected",
524
+ "2016" => "ReportingServiceDuplicateColumns",
525
+ "2017" => "ReportingServiceNoMeasureSelected",
526
+ "2018" => "ReportingServiceInvalidAccountIdInCampaignReportScope",
527
+ "2019" => "ReportingServiceInvalidCampaignIdInCampaignReportScope",
528
+ "2020" => "ReportingServiceInvalidAccountIdInAdGroupReportScope",
529
+ "2021" => "ReportingServiceInvalidCampaignIdInAdGroupReportScope",
530
+ "2022" => "ReportingServiceInvalidAdGroupIdInAdGroupReportScope",
531
+ "2023" => "ReportingServiceInvalidAccountIdInAccountReportScope",
532
+ "2024" => "ReportingServiceNullCampaignReportScope",
533
+ "2025" => "ReportingServiceNullAdGroupReportScope",
534
+ "2026" => "ReportingServiceInvalidAccountReportScope",
535
+ "2027" => "ReportingServiceInvalidAccountThruCampaignReportScope",
536
+ "2028" => "ReportingServiceInvalidAccountThruAdGroupReportScope",
537
+ "2029" => "ReportingServiceAccountsOverLimit",
538
+ "2030" => "ReportingServiceMaximumCampaignsLimitReached",
539
+ "2031" => "ReportingServiceAdGroupsOverLimit",
540
+ "2032" => "ReportingServiceCrossSiteScriptNotAllowed",
541
+ "2033" => "ReportingServiceInvalidKeywordFilterValue",
542
+ "2034" => "ReportingServiceInvalidTimePeriodColumnForSummaryReport",
543
+ "2035" => "ReportingServiceInvalidAccountIds",
544
+ "2036" => "ReportingServiceBehavioralIdMaxArraySizeReached",
545
+ "2037" => "ReportingServiceInvalidBehavioralIdValue",
546
+ "2038" => "ReportingServiceSiteIdMaxArraySizeReached",
547
+ "2039" => "ReportingServiceInvalidSiteIdValue",
548
+ "2040" => "ReportingServiceInvalidCustomDateRange",
549
+ "2041" => "ReportingServiceInvalidFutureStartDate",
550
+ "2042" => "ReportingServiceInvalidSearchQueryFilterValue",
551
+ "2043" => "ReportingServiceSearchQueryFilterValueLengthExceeded",
552
+ "2044" => "ReportingServiceSearchQueryOverLimit",
553
+ "2045" => "ReportingServiceKeywordFilterValueLengthExceeded",
554
+ "2046" => "ReportingServiceKeywordOverLimit",
555
+ "2100" => "ReportingServiceInvalidReportId",
556
+ "2101" => "ReportingServiceReportNotFound",
557
+ }
558
+ CODES.each do |_, constant|
559
+ unless const_defined?(constant)
560
+ const_set(constant,Class.new(AdsCommon::Errors::ApiException))
561
+ end
562
+ end
563
+
564
+ end
565
+ end