@apifreaks/openapi-specs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/dist/index.cjs +44663 -0
  4. package/dist/index.d.cts +30 -0
  5. package/dist/index.d.ts +30 -0
  6. package/dist/index.js +44631 -0
  7. package/package.json +81 -0
  8. package/specs/commodity/commodity-fluctuation.json +301 -0
  9. package/specs/commodity/commodity-prices.json +317 -0
  10. package/specs/commodity/commodity-symbols.json +215 -0
  11. package/specs/commodity/commodity-time-series.json +329 -0
  12. package/specs/commodity/historical-commodity-prices.json +273 -0
  13. package/specs/currency/currency-converter.json +261 -0
  14. package/specs/currency/currency-fluctuation.json +282 -0
  15. package/specs/currency/currency-historical-data-limit.json +158 -0
  16. package/specs/currency/currency-rate.json +229 -0
  17. package/specs/currency/currency-supported.json +234 -0
  18. package/specs/currency/currency-symbols.json +161 -0
  19. package/specs/currency/currency-time-series.json +325 -0
  20. package/specs/currency/geolocalized-currency-conversion.json +287 -0
  21. package/specs/currency/historical-currency-converter.json +269 -0
  22. package/specs/currency/historical-currency-rate.json +246 -0
  23. package/specs/dns/bulk-dns-lookup.json +624 -0
  24. package/specs/dns/dns-history-lookup.json +579 -0
  25. package/specs/dns/dns-lookup.json +466 -0
  26. package/specs/dns/reverse-dns-lookup.json +414 -0
  27. package/specs/domain/bulk-domain-checker.json +284 -0
  28. package/specs/domain/domain-search-with-suggestions.json +280 -0
  29. package/specs/domain/domain-search.json +206 -0
  30. package/specs/domain/subdomain-lookup.json +343 -0
  31. package/specs/email-validation/bulk-email-validation.json +534 -0
  32. package/specs/email-validation/email-checker.json +586 -0
  33. package/specs/financial/bulk-vat-rates-country.json +341 -0
  34. package/specs/financial/financial-apis-supported-countries.json +204 -0
  35. package/specs/financial/iban-validation.json +328 -0
  36. package/specs/financial/swift-code-finder.json +192 -0
  37. package/specs/financial/swift-code-lookup.json +220 -0
  38. package/specs/financial/vat-number-validation.json +283 -0
  39. package/specs/financial/vat-rates-by-ip.json +275 -0
  40. package/specs/financial/vat-rates-country.json +288 -0
  41. package/specs/general/usage-credits.json +218 -0
  42. package/specs/geocoding/forward-geocoding.json +402 -0
  43. package/specs/geocoding/reverse-geocoding.json +326 -0
  44. package/specs/geodb/administrative-units-details.json +250 -0
  45. package/specs/geodb/administrative-units-levels.json +198 -0
  46. package/specs/geodb/administrative-units.json +237 -0
  47. package/specs/geodb/cities.json +288 -0
  48. package/specs/geodb/countries-details.json +274 -0
  49. package/specs/geodb/countries.json +276 -0
  50. package/specs/geodb/flags-supported.json +166 -0
  51. package/specs/geodb/flags.json +227 -0
  52. package/specs/geodb/regions.json +109 -0
  53. package/specs/geodb/subregions.json +217 -0
  54. package/specs/ip-intelligence/bulk-ip-lookup.json +1162 -0
  55. package/specs/ip-intelligence/bulk-ip-threat-intelligence.json +417 -0
  56. package/specs/ip-intelligence/ip-locator.json +941 -0
  57. package/specs/ip-intelligence/ip-threat-intelligence.json +316 -0
  58. package/specs/other/astronomy-data.json +803 -0
  59. package/specs/pdf/delete-pdf-page.json +286 -0
  60. package/specs/pdf/linearize-pdf.json +277 -0
  61. package/specs/pdf/merge-pdf.json +285 -0
  62. package/specs/pdf/pdf-compress.json +304 -0
  63. package/specs/pdf/pdf-decrypt.json +297 -0
  64. package/specs/pdf/pdf-encrypt.json +314 -0
  65. package/specs/pdf/pdf-extract-pages.json +295 -0
  66. package/specs/pdf/pdf-file-status.json +208 -0
  67. package/specs/pdf/pdf-file.json +190 -0
  68. package/specs/pdf/pdf-files.json +126 -0
  69. package/specs/pdf/pdf-resource-download.json +168 -0
  70. package/specs/pdf/pdf-resource-upload-binary.json +218 -0
  71. package/specs/pdf/pdf-resource-upload.json +248 -0
  72. package/specs/pdf/pdf-restrict.json +343 -0
  73. package/specs/pdf/pdf-split-pages.json +281 -0
  74. package/specs/pdf/pdf-task-status.json +252 -0
  75. package/specs/pdf/pdf-to-image.json +1219 -0
  76. package/specs/pdf/pdf-unrestrict.json +324 -0
  77. package/specs/pdf/rotate-pdf-pages.json +305 -0
  78. package/specs/phone-validation/bulk-phone-number-validation.json +518 -0
  79. package/specs/phone-validation/phone-number-validation.json +456 -0
  80. package/specs/scraper/web-scraper.json +674 -0
  81. package/specs/screenshot/bulk-screenshot.json +949 -0
  82. package/specs/screenshot/website-screenshot.json +1147 -0
  83. package/specs/ssl/ssl-certificate-chain-lookup.json +756 -0
  84. package/specs/ssl/ssl-certificate-lookup.json +634 -0
  85. package/specs/timezone/timezone-converter.json +362 -0
  86. package/specs/timezone/timezone-lookup.json +910 -0
  87. package/specs/user-agent/bulk-user-agent-parser.json +441 -0
  88. package/specs/user-agent/user-agent-parser.json +346 -0
  89. package/specs/weather/air-quality.json +779 -0
  90. package/specs/weather/bulk-live-weather.json +834 -0
  91. package/specs/weather/flood-forecast.json +693 -0
  92. package/specs/weather/historical-weather.json +1019 -0
  93. package/specs/weather/live-weather.json +789 -0
  94. package/specs/weather/marine-weather.json +940 -0
  95. package/specs/weather/time-series-weather.json +1056 -0
  96. package/specs/weather/weather-forecast.json +1202 -0
  97. package/specs/whois/asn-lookup.json +729 -0
  98. package/specs/whois/bulk-whois-lookup.json +698 -0
  99. package/specs/whois/domain-whois-history-lookup.json +500 -0
  100. package/specs/whois/reverse-whois.json +625 -0
  101. package/specs/whois/whois-domain-lookup.json +533 -0
  102. package/specs/whois/whois-ip-lookup.json +1110 -0
  103. package/specs/zip-code/bulk-zip-code-lookup.json +318 -0
  104. package/specs/zip-code/zip-code-api.json +299 -0
  105. package/specs/zip-code/zip-code-distance-match.json +311 -0
  106. package/specs/zip-code/zip-code-distance.json +307 -0
  107. package/specs/zip-code/zip-codes-by-city.json +279 -0
  108. package/specs/zip-code/zip-codes-by-region.json +278 -0
  109. package/specs/zip-code/zip-codes-radius-search.json +349 -0
@@ -0,0 +1,534 @@
1
+ {
2
+ "openapi": "3.1.1",
3
+ "info": {
4
+ "title": "Bulk Email Validation API - Validate and Verify Emails in Bulk",
5
+ "version": "1.0.0",
6
+ "description": "Validate up to 100 email addresses in a single POST request. Each email is processed independently. Returns an array of validation results with deliverability assessment per email, plus per-item error objects for failed validations. Maximum 100 email addresses per request.",
7
+ "contact": {
8
+ "name": "APIFreaks Support",
9
+ "url": "https://apifreaks.com/contact",
10
+ "email": "support@apifreaks.com"
11
+ }
12
+ },
13
+ "servers": [
14
+ {
15
+ "url": "https://api.apifreaks.com/v1.0",
16
+ "description": "Bulk Email Validation API Server"
17
+ }
18
+ ],
19
+ "paths": {
20
+ "/email-validation/bulk": {
21
+ "post": {
22
+ "tags": ["Email Validation APIs"],
23
+ "summary": "Validate multiple email addresses",
24
+ "description": "Validates a bulk of email addresses and returns result for each. Maximum `100` email addresses per request.",
25
+ "parameters": [
26
+ {
27
+ "name": "format",
28
+ "in": "query",
29
+ "required": false,
30
+ "schema": {
31
+ "type": "string",
32
+ "enum": ["json", "xml"],
33
+ "default": "json"
34
+ },
35
+ "description": "Format of the response"
36
+ }
37
+ ],
38
+ "requestBody": {
39
+ "required": true,
40
+ "content": {
41
+ "application/json": {
42
+ "schema": {
43
+ "$ref": "#/components/schemas/BulkEmailRequest"
44
+ }
45
+ }
46
+ }
47
+ },
48
+ "responses": {
49
+ "200": {
50
+ "description": "Successful response. Each item corresponds to one requested email, in the same order as the request; invalid emails are reflected via validEmail/validSyntax on that item, not as a separate error object — every item has success=true regardless of validation outcome.",
51
+ "content": {
52
+ "application/json": {
53
+ "schema": {
54
+ "$ref": "#/components/schemas/BulkEmailValidationResponse"
55
+ },
56
+ "examples": {
57
+ "bulkEmailsValidated": {
58
+ "summary": "Mix of a valid and a syntactically invalid email",
59
+ "value": {
60
+ "emailValidationResponses": [
61
+ {
62
+ "success": true,
63
+ "email": "abc.def@gmail.com",
64
+ "validEmail": "valid",
65
+ "validSyntax": true,
66
+ "domain": {
67
+ "name": "gmail.com",
68
+ "disposable": false,
69
+ "spam": false,
70
+ "free": true,
71
+ "validDomain": true,
72
+ "catchAll": false
73
+ },
74
+ "account": {
75
+ "role": false,
76
+ "fullMailBox": false
77
+ },
78
+ "dns": {
79
+ "mxRecords": [
80
+ "gmail-smtp-in.l.google.com.",
81
+ "alt1.gmail-smtp-in.l.google.com.",
82
+ "alt2.gmail-smtp-in.l.google.com.",
83
+ "alt3.gmail-smtp-in.l.google.com.",
84
+ "alt4.gmail-smtp-in.l.google.com."
85
+ ]
86
+ }
87
+ },
88
+ {
89
+ "success": true,
90
+ "email": "not-an-email",
91
+ "validEmail": "INVALID_EMAIL",
92
+ "validSyntax": false,
93
+ "domain": {
94
+ "name": "not-an-email",
95
+ "validDomain": false
96
+ }
97
+ }
98
+ ]
99
+ }
100
+ }
101
+ }
102
+ }
103
+ }
104
+ },
105
+ "400": {
106
+ "description": "Bad Request – Invalid request body",
107
+ "content": {
108
+ "application/json": {
109
+ "schema": {
110
+ "$ref": "#/components/schemas/ErrorResponse"
111
+ },
112
+ "examples": {
113
+ "invalidBody": {
114
+ "summary": "emailData field missing or malformed",
115
+ "value": {
116
+ "timestamp": "2026-07-27T12:53:14.628Z",
117
+ "path": "/v1.0/email-validation/bulk",
118
+ "status": 400,
119
+ "error": "Invalid request body Exception",
120
+ "message": "Please provide data in required format in request body"
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ },
127
+ "408": {
128
+ "description": "Request Timeout",
129
+ "content": {
130
+ "application/json": {
131
+ "schema": {
132
+ "$ref": "#/components/schemas/ErrorResponse"
133
+ },
134
+ "examples": {
135
+ "Request Timeout": {
136
+ "value": {
137
+ "timestamp": "2026-06-06T13:00:00.000Z",
138
+ "path": "/v1.0/email-validation/bulk",
139
+ "status": 408,
140
+ "error": "Request Timeout",
141
+ "message": "Timed out while connecting to the remote URL."
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+ },
148
+ "429": {
149
+ "description": "Rate Limit Exceeded",
150
+ "content": {
151
+ "application/json": {
152
+ "schema": {
153
+ "$ref": "#/components/schemas/ErrorResponse"
154
+ },
155
+ "examples": {
156
+ "Rate Limit Exceeded": {
157
+ "value": {
158
+ "timestamp": "2026-06-06T13:00:00.000Z",
159
+ "path": "/v1.0/email-validation/bulk",
160
+ "status": 429,
161
+ "error": "Too Many Requests",
162
+ "message": "API rate limit exceeded."
163
+ }
164
+ }
165
+ }
166
+ }
167
+ }
168
+ }
169
+ },
170
+ "operationId": "bulkCheckEmail"
171
+ }
172
+ }
173
+ },
174
+ "components": {
175
+ "securitySchemes": {
176
+ "ApiKeyAuthHeader": {
177
+ "type": "apiKey",
178
+ "in": "header",
179
+ "name": "X-apiKey",
180
+ "description": "Pass your API key via the X-apiKey request header."
181
+ },
182
+ "ApiKeyAuthQuery": {
183
+ "type": "apiKey",
184
+ "in": "query",
185
+ "name": "apiKey",
186
+ "description": "Pass your API key via the apiKey query parameter."
187
+ }
188
+ },
189
+ "schemas": {
190
+ "BulkEmailValidationResponse": {
191
+ "type": "object",
192
+ "description": "Wrapper containing the per-email results array.",
193
+ "required": ["emailValidationResponses"],
194
+ "properties": {
195
+ "emailValidationResponses": {
196
+ "type": "array",
197
+ "description": "Array of per-email results, one entry per requested email, in the same order as the request. Invalid emails are reflected via validEmail/validSyntax, not a separate error shape.",
198
+ "items": {
199
+ "$ref": "#/components/schemas/SingleEmailValidationResponse"
200
+ }
201
+ }
202
+ }
203
+ },
204
+ "SingleEmailValidationResponse": {
205
+ "type": "object",
206
+ "required": ["success", "email", "validEmail", "validSyntax", "domain"],
207
+ "properties": {
208
+ "success": {
209
+ "type": "boolean",
210
+ "description": "Indicates the processing status of the validation request. true: completed successfully."
211
+ },
212
+ "email": {
213
+ "type": "string",
214
+ "format": "email",
215
+ "description": "The email address submitted for validation."
216
+ },
217
+ "name": {
218
+ "type": "string",
219
+ "description": "Optional identifier or label provided in the request for record tracking."
220
+ },
221
+ "reason": {
222
+ "type": "string",
223
+ "description": "Detailed explanation returned when validEmail is not valid."
224
+ },
225
+ "validEmail": {
226
+ "type": "string",
227
+ "enum": ["valid", "invalid", "INVALID_EMAIL", "unknown", "risky"],
228
+ "description": "Comprehensive deliverability assessment. Casing is inconsistent in the live API: syntactically invalid addresses return INVALID_EMAIL, while semantically invalid (undeliverable) addresses return lowercase invalid. unknown/risky are documented possibilities not observed during testing."
229
+ },
230
+ "validSyntax": {
231
+ "type": "boolean",
232
+ "description": "Validates email address format compliance with RFC 5322 standards."
233
+ },
234
+ "domain": {
235
+ "$ref": "#/components/schemas/DomainObject"
236
+ },
237
+ "account": {
238
+ "$ref": "#/components/schemas/AccountObject"
239
+ },
240
+ "dns": {
241
+ "$ref": "#/components/schemas/DnsObject"
242
+ },
243
+ "address": {
244
+ "$ref": "#/components/schemas/AddressObject"
245
+ },
246
+ "ip": {
247
+ "type": "string",
248
+ "format": "ip",
249
+ "description": "IP address provided for geolocation and security enrichment."
250
+ }
251
+ },
252
+ "description": "Email validation response containing deliverability assessment and metadata."
253
+ },
254
+ "DomainObject": {
255
+ "type": "object",
256
+ "required": ["name", "validDomain"],
257
+ "properties": {
258
+ "name": {
259
+ "type": "string",
260
+ "description": "Extracted domain component from the email address."
261
+ },
262
+ "validDomain": {
263
+ "type": "boolean",
264
+ "description": "Domain validation status confirming DNS resolution capability."
265
+ },
266
+ "disposable": {
267
+ "type": "boolean",
268
+ "description": "Classification flag identifying domains from temporary email service providers."
269
+ },
270
+ "spam": {
271
+ "type": "boolean",
272
+ "description": "Reputation indicator flagging domains on spam databases."
273
+ },
274
+ "free": {
275
+ "type": "boolean",
276
+ "description": "Classification indicating free or consumer-grade email service providers."
277
+ },
278
+ "catchAll": {
279
+ "type": "boolean",
280
+ "description": "Detection flag for domains configured to accept mail for any recipient address."
281
+ }
282
+ },
283
+ "description": "Domain validation details for the email address."
284
+ },
285
+ "AccountObject": {
286
+ "type": "object",
287
+ "required": ["role"],
288
+ "properties": {
289
+ "role": {
290
+ "type": "boolean",
291
+ "description": "Detection flag identifying role-based email addresses (e.g., admin@, support@)."
292
+ },
293
+ "fullMailBox": {
294
+ "type": "boolean",
295
+ "description": "Storage capacity status indicator for the recipient mailbox."
296
+ }
297
+ },
298
+ "description": "Account-level validation details."
299
+ },
300
+ "DnsObject": {
301
+ "type": "object",
302
+ "required": ["mxRecords"],
303
+ "properties": {
304
+ "mxRecords": {
305
+ "type": "array",
306
+ "items": {
307
+ "type": "string"
308
+ },
309
+ "description": "Collection of MX (Mail Exchange) hostname records from DNS queries."
310
+ },
311
+ "aRecords": {
312
+ "type": "array",
313
+ "items": {
314
+ "type": "string"
315
+ },
316
+ "description": "Collection of A (Address) records for the domain. Not observed in testing — may be rarely or never populated."
317
+ }
318
+ },
319
+ "description": "DNS records for the email domain."
320
+ },
321
+ "AddressObject": {
322
+ "type": "object",
323
+ "properties": {
324
+ "validIpAddress": {
325
+ "type": "boolean",
326
+ "description": "IP recognized/reachable by the geolocation provider."
327
+ },
328
+ "location": {
329
+ "$ref": "#/components/schemas/EmailLocation"
330
+ },
331
+ "security": {
332
+ "$ref": "#/components/schemas/EmailSecurity"
333
+ }
334
+ },
335
+ "description": "Geolocation and security enrichment data for the IP address.",
336
+ "required": []
337
+ },
338
+ "EmailLocation": {
339
+ "type": "object",
340
+ "description": "Geolocation data derived from the IP address.",
341
+ "properties": {
342
+ "city": {
343
+ "type": "string",
344
+ "description": "Municipal or city name."
345
+ },
346
+ "district": {
347
+ "type": "string",
348
+ "description": "District or neighborhood."
349
+ },
350
+ "zipcode": {
351
+ "type": "string",
352
+ "description": "Postal or ZIP code."
353
+ },
354
+ "state_prov": {
355
+ "type": "string",
356
+ "description": "State or province."
357
+ },
358
+ "country_name": {
359
+ "type": "string",
360
+ "description": "Common country name."
361
+ },
362
+ "country_name_official": {
363
+ "type": "string",
364
+ "description": "Official country name."
365
+ },
366
+ "country_code2": {
367
+ "type": "string",
368
+ "description": "Two-character ISO country code."
369
+ },
370
+ "country_code3": {
371
+ "type": "string",
372
+ "description": "Three-character ISO country code."
373
+ },
374
+ "continent_name": {
375
+ "type": "string",
376
+ "description": "Continental region name."
377
+ },
378
+ "continent_code": {
379
+ "type": "string",
380
+ "description": "Continental region identifier."
381
+ },
382
+ "accuracy_radius": {
383
+ "type": "string",
384
+ "description": "Geolocation precision radius."
385
+ },
386
+ "confidence": {
387
+ "type": "string",
388
+ "description": "Confidence score for geolocation accuracy."
389
+ },
390
+ "is_eu": {
391
+ "type": "boolean",
392
+ "description": "European Union membership status."
393
+ }
394
+ },
395
+ "required": []
396
+ },
397
+ "EmailSecurity": {
398
+ "type": "object",
399
+ "description": "Threat and anonymity profile for the IP address.",
400
+ "required": [
401
+ "threat_score",
402
+ "is_tor",
403
+ "is_proxy",
404
+ "proxy_type",
405
+ "proxy_provider",
406
+ "is_anonymous",
407
+ "is_known_attacker",
408
+ "is_spam",
409
+ "is_bot",
410
+ "is_cloud_provider",
411
+ "cloud_provider"
412
+ ],
413
+ "properties": {
414
+ "threat_score": {
415
+ "type": "integer",
416
+ "description": "Quantitative risk assessment score. Higher values indicate elevated security risk."
417
+ },
418
+ "is_tor": {
419
+ "type": "boolean",
420
+ "description": "Detection flag for IP addresses routed through the Tor anonymity network."
421
+ },
422
+ "is_proxy": {
423
+ "type": "boolean",
424
+ "description": "Detection flag identifying IP addresses operating as proxy servers."
425
+ },
426
+ "proxy_type": {
427
+ "type": "string",
428
+ "description": "Classification of detected proxy infrastructure type (e.g. VPN, HTTP, SOCKS)."
429
+ },
430
+ "proxy_provider": {
431
+ "type": "string",
432
+ "description": "Identified service provider operating the proxy infrastructure."
433
+ },
434
+ "is_anonymous": {
435
+ "type": "boolean",
436
+ "description": "Anonymization detection flag for IP addresses using identity obfuscation techniques."
437
+ },
438
+ "is_known_attacker": {
439
+ "type": "boolean",
440
+ "description": "Threat intelligence flag for IP addresses documented as confirmed malicious sources."
441
+ },
442
+ "is_spam": {
443
+ "type": "boolean",
444
+ "description": "Reputation flag for IP addresses associated with spam transmission."
445
+ },
446
+ "is_bot": {
447
+ "type": "boolean",
448
+ "description": "Automated traffic detection flag for IP addresses from bot networks."
449
+ },
450
+ "is_cloud_provider": {
451
+ "type": "boolean",
452
+ "description": "Infrastructure classification flag for IP addresses from cloud computing providers."
453
+ },
454
+ "cloud_provider": {
455
+ "type": "string",
456
+ "description": "Identified cloud infrastructure or hosting service provider name."
457
+ }
458
+ }
459
+ },
460
+ "BulkEmailRequest": {
461
+ "type": "object",
462
+ "description": "Request body for bulk email validation.",
463
+ "required": ["emailData"],
464
+ "properties": {
465
+ "emailData": {
466
+ "type": "array",
467
+ "description": "Array of email objects to validate. Maximum 100 per request.",
468
+ "maxItems": 100,
469
+ "items": {
470
+ "$ref": "#/components/schemas/BulkEmailRequestItem"
471
+ }
472
+ }
473
+ }
474
+ },
475
+ "BulkEmailRequestItem": {
476
+ "type": "object",
477
+ "description": "A single email entry in a bulk validation request.",
478
+ "required": ["email"],
479
+ "properties": {
480
+ "email": {
481
+ "type": "string",
482
+ "format": "email",
483
+ "description": "Email address to validate."
484
+ },
485
+ "name": {
486
+ "type": "string",
487
+ "description": "Optional name or label."
488
+ },
489
+ "ip": {
490
+ "type": "string",
491
+ "format": "ip",
492
+ "description": "Optional IP address for enrichment."
493
+ }
494
+ }
495
+ },
496
+ "ErrorResponse": {
497
+ "type": "object",
498
+ "description": "Standard error envelope returned by the API on failed requests.",
499
+ "required": ["message"],
500
+ "properties": {
501
+ "error": {
502
+ "type": "string",
503
+ "description": "Short error category or exception type."
504
+ },
505
+ "message": {
506
+ "type": "string",
507
+ "description": "Human-readable error message describing the failure."
508
+ },
509
+ "path": {
510
+ "type": "string",
511
+ "description": "API endpoint path that produced the error."
512
+ },
513
+ "status": {
514
+ "type": "integer",
515
+ "description": "HTTP status code returned with the error."
516
+ },
517
+ "timestamp": {
518
+ "type": "string",
519
+ "format": "date-time",
520
+ "description": "Timestamp when the error occurred (ISO 8601)."
521
+ }
522
+ }
523
+ }
524
+ }
525
+ },
526
+ "security": [
527
+ {
528
+ "ApiKeyAuthHeader": []
529
+ },
530
+ {
531
+ "ApiKeyAuthQuery": []
532
+ }
533
+ ]
534
+ }