@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,417 @@
1
+ {
2
+ "openapi": "3.1.1",
3
+ "info": {
4
+ "title": "Bulk IP Threat Intelligence API Reference",
5
+ "version": "1.0.0",
6
+ "description": "Retrieve threat intelligence and security profiles for up to 50,000 IP addresses in a single request. Each entry in the response array includes a composite 0-100 threat score plus per-signal flags for VPN, proxy, residential proxy, Tor exit node, bot, spam, and known-attacker activity, along with confidence scores and provider names where available. Use the `fields` and `excludes` query parameters to control which security signals are returned, reducing payload size for bulk workflows. A bad or bogon IP in the batch returns a per-item error object instead of failing the entire request, so you can process mixed-validity inputs in one call.",
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": "IP Threat Intelligence API Server"
17
+ }
18
+ ],
19
+ "paths": {
20
+ "/ip/security": {
21
+ "post": {
22
+ "tags": ["IP Geolocation APIs"],
23
+ "summary": "Retrieve threat intelligence data for multiple IP addresses in a single request",
24
+ "description": "Get security profiles including threat score, VPN, proxy, Tor, bot, and spam detection for up to 50,000 IPs per request. Each item in the response array corresponds to one requested IP; invalid or bogon IPs return a per-item error object.",
25
+ "operationId": "bulkIpSecurityLookup",
26
+ "parameters": [
27
+ {
28
+ "name": "format",
29
+ "in": "query",
30
+ "required": false,
31
+ "description": "Format of the response.",
32
+ "schema": {
33
+ "type": "string",
34
+ "enum": ["json", "xml"],
35
+ "default": "json"
36
+ }
37
+ },
38
+ {
39
+ "name": "fields",
40
+ "in": "query",
41
+ "required": false,
42
+ "description": "Comma-separated list of fields to return. Supports dot notation (e.g. security.threat_score).",
43
+ "schema": {
44
+ "type": "string"
45
+ }
46
+ },
47
+ {
48
+ "name": "excludes",
49
+ "in": "query",
50
+ "required": false,
51
+ "description": "Comma-separated list of fields to remove from the response. Supports dot notation (e.g. security.is_tor).",
52
+ "schema": {
53
+ "type": "string"
54
+ }
55
+ }
56
+ ],
57
+ "requestBody": {
58
+ "required": true,
59
+ "content": {
60
+ "application/json": {
61
+ "schema": {
62
+ "$ref": "#/components/schemas/BulkIpSecurityRequest"
63
+ },
64
+ "examples": {
65
+ "typicalRequest": {
66
+ "summary": "Typical bulk threat intelligence request",
67
+ "value": {
68
+ "ips": ["8.8.8.8", "1.1.1.1", "45.33.32.156"]
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ },
75
+ "responses": {
76
+ "200": {
77
+ "description": "Successful threat intelligence response. The response array always contains one item for each input IP, preserving order; an IP that fails validation (invalid, bogon, reserved, or not found) yields an error item instead of a security result.",
78
+ "content": {
79
+ "application/json": {
80
+ "schema": {
81
+ "$ref": "#/components/schemas/BulkIpSecurityResponse"
82
+ },
83
+ "examples": {
84
+ "typicalSuccess": {
85
+ "summary": "Typical successful response",
86
+ "value": [
87
+ {
88
+ "ip": "8.8.8.8",
89
+ "security": {
90
+ "threat_score": 5,
91
+ "is_tor": false,
92
+ "is_proxy": false,
93
+ "proxy_provider_names": [],
94
+ "proxy_confidence_score": 0,
95
+ "proxy_last_seen": "",
96
+ "is_residential_proxy": false,
97
+ "is_vpn": false,
98
+ "vpn_provider_names": [],
99
+ "vpn_confidence_score": 0,
100
+ "vpn_last_seen": "",
101
+ "is_relay": false,
102
+ "relay_provider_name": "",
103
+ "is_anonymous": false,
104
+ "is_known_attacker": false,
105
+ "is_bot": false,
106
+ "is_spam": false,
107
+ "is_cloud_provider": true,
108
+ "cloud_provider_name": "Google LLC"
109
+ }
110
+ },
111
+ {
112
+ "ip": "1.1.1.1",
113
+ "security": {
114
+ "threat_score": 5,
115
+ "is_tor": false,
116
+ "is_proxy": false,
117
+ "proxy_provider_names": [],
118
+ "proxy_confidence_score": 0,
119
+ "proxy_last_seen": "",
120
+ "is_residential_proxy": false,
121
+ "is_vpn": false,
122
+ "vpn_provider_names": [],
123
+ "vpn_confidence_score": 0,
124
+ "vpn_last_seen": "",
125
+ "is_relay": false,
126
+ "relay_provider_name": "",
127
+ "is_anonymous": false,
128
+ "is_known_attacker": false,
129
+ "is_bot": false,
130
+ "is_spam": false,
131
+ "is_cloud_provider": true,
132
+ "cloud_provider_name": "Cloudflare, Inc."
133
+ }
134
+ }
135
+ ]
136
+ },
137
+ "partialFailure": {
138
+ "summary": "Response with an invalid IP mixed in - that item returns an error object instead of security data",
139
+ "value": [
140
+ {
141
+ "message": "Provided IP address 'not-an-ip' is not valid"
142
+ },
143
+ {
144
+ "ip": "8.8.8.8",
145
+ "security": {
146
+ "threat_score": 5,
147
+ "is_tor": false,
148
+ "is_proxy": false,
149
+ "proxy_provider_names": [],
150
+ "proxy_confidence_score": 0,
151
+ "proxy_last_seen": "",
152
+ "is_residential_proxy": false,
153
+ "is_vpn": false,
154
+ "vpn_provider_names": [],
155
+ "vpn_confidence_score": 0,
156
+ "vpn_last_seen": "",
157
+ "is_relay": false,
158
+ "relay_provider_name": "",
159
+ "is_anonymous": false,
160
+ "is_known_attacker": false,
161
+ "is_bot": false,
162
+ "is_spam": false,
163
+ "is_cloud_provider": true,
164
+ "cloud_provider_name": "Google LLC"
165
+ }
166
+ }
167
+ ]
168
+ },
169
+ "bogonIp": {
170
+ "summary": "Bogon or reserved IP - returns an error object for that item",
171
+ "value": [
172
+ {
173
+ "message": "'127.0.0.1' is a bogon IP address."
174
+ }
175
+ ]
176
+ }
177
+ }
178
+ }
179
+ }
180
+ },
181
+ "400": {
182
+ "description": "Bad Request - Missing, empty, or malformed request body",
183
+ "content": {
184
+ "application/json": {
185
+ "schema": {
186
+ "$ref": "#/components/schemas/ErrorResponse"
187
+ },
188
+ "examples": {
189
+ "invalidRequestBody": {
190
+ "summary": "Missing, empty, or malformed `ips` in the request body",
191
+ "value": {
192
+ "error": "Invalid request body Exception",
193
+ "message": "Please provide data in required format in request body",
194
+ "path": "/v1.0/ip/security",
195
+ "status": 400,
196
+ "timestamp": "2026-07-22T14:03:26.577Z"
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ },
207
+ "components": {
208
+ "securitySchemes": {
209
+ "ApiKeyAuthHeader": {
210
+ "type": "apiKey",
211
+ "in": "header",
212
+ "name": "X-apiKey",
213
+ "description": "Pass your API key via the X-apiKey request header."
214
+ },
215
+ "ApiKeyAuthQuery": {
216
+ "type": "apiKey",
217
+ "in": "query",
218
+ "name": "apiKey",
219
+ "description": "Pass your API key via the apiKey query parameter."
220
+ }
221
+ },
222
+ "schemas": {
223
+ "BulkIpSecurityRequest": {
224
+ "type": "object",
225
+ "required": ["ips"],
226
+ "description": "Request body for bulk IP threat intelligence lookup.",
227
+ "properties": {
228
+ "ips": {
229
+ "type": "array",
230
+ "description": "List of 1–50,000 IPv4 and/or IPv6 addresses to look up for threat intelligence data.",
231
+ "maxItems": 50000,
232
+ "items": {
233
+ "type": "string"
234
+ }
235
+ }
236
+ }
237
+ },
238
+ "ErrorResponse": {
239
+ "type": "object",
240
+ "required": ["message"],
241
+ "properties": {
242
+ "error": {
243
+ "type": "string",
244
+ "description": "Short error category or exception type."
245
+ },
246
+ "message": {
247
+ "type": "string",
248
+ "description": "Human-readable error message describing the failure."
249
+ },
250
+ "path": {
251
+ "type": "string",
252
+ "description": "API endpoint path that produced the error."
253
+ },
254
+ "status": {
255
+ "type": "integer",
256
+ "description": "HTTP status code returned with the error."
257
+ },
258
+ "timestamp": {
259
+ "type": "string",
260
+ "format": "date-time",
261
+ "description": "Timestamp when the error occurred (ISO 8601)."
262
+ }
263
+ }
264
+ },
265
+ "BulkIpSecurityItemError": {
266
+ "type": "object",
267
+ "description": "Per-item error, returned in place of a security result when an individual IP is invalid, bogon/reserved, or not found in the database.",
268
+ "required": ["message"],
269
+ "properties": {
270
+ "message": {
271
+ "type": "string",
272
+ "description": "Human-readable reason this IP could not be resolved."
273
+ }
274
+ }
275
+ },
276
+ "BulkIpSecurityResultItem": {
277
+ "type": "object",
278
+ "description": "Threat intelligence result for one successfully resolved IP address.",
279
+ "required": ["ip", "security"],
280
+ "properties": {
281
+ "ip": {
282
+ "type": "string",
283
+ "description": "The IP address used for the lookup (IPv4 or IPv6)."
284
+ },
285
+ "security": {
286
+ "$ref": "#/components/schemas/Security"
287
+ }
288
+ }
289
+ },
290
+ "BulkIpSecurityResponse": {
291
+ "type": "array",
292
+ "description": "Array of per-IP results, one entry per requested IP, in the same order as the request. Each entry is either a security result or, if that IP could not be resolved, an error object.",
293
+ "items": {
294
+ "oneOf": [
295
+ {
296
+ "$ref": "#/components/schemas/BulkIpSecurityResultItem"
297
+ },
298
+ {
299
+ "$ref": "#/components/schemas/BulkIpSecurityItemError"
300
+ }
301
+ ]
302
+ }
303
+ },
304
+ "Security": {
305
+ "type": "object",
306
+ "description": "Threat intelligence and security information for the IP.",
307
+ "required": [
308
+ "threat_score",
309
+ "is_tor",
310
+ "is_proxy",
311
+ "proxy_confidence_score",
312
+ "is_residential_proxy",
313
+ "is_vpn",
314
+ "vpn_confidence_score",
315
+ "is_relay",
316
+ "is_anonymous",
317
+ "is_known_attacker",
318
+ "is_bot",
319
+ "is_spam",
320
+ "is_cloud_provider"
321
+ ],
322
+ "properties": {
323
+ "threat_score": {
324
+ "type": "number",
325
+ "description": "Overall threat score for the IP address. Ranges from 0 to 100. 100 indicates the highest risk."
326
+ },
327
+ "is_tor": {
328
+ "type": "boolean",
329
+ "description": "Indicates whether the IP is a Tor exit node."
330
+ },
331
+ "is_proxy": {
332
+ "type": "boolean",
333
+ "description": "Indicates whether the IP is associated with a proxy network."
334
+ },
335
+ "proxy_provider_names": {
336
+ "type": "array",
337
+ "description": "List of detected proxy provider names, when available.",
338
+ "items": {
339
+ "type": "string"
340
+ }
341
+ },
342
+ "proxy_confidence_score": {
343
+ "type": "number",
344
+ "description": "Confidence score (0-100) for proxy detection, when flag is true. Defaults to 0."
345
+ },
346
+ "proxy_last_seen": {
347
+ "type": "string",
348
+ "description": "Last seen date (YYYY-MM-DD) for proxy activity, when available."
349
+ },
350
+ "is_residential_proxy": {
351
+ "type": "boolean",
352
+ "description": "Indicates whether the IP is associated with a residential proxy network."
353
+ },
354
+ "is_vpn": {
355
+ "type": "boolean",
356
+ "description": "Indicates whether the IP is associated with a VPN network."
357
+ },
358
+ "vpn_provider_names": {
359
+ "type": "array",
360
+ "description": "List of detected VPN provider names, when available.",
361
+ "items": {
362
+ "type": "string"
363
+ }
364
+ },
365
+ "vpn_confidence_score": {
366
+ "type": "number",
367
+ "description": "Confidence score (0-100) for VPN detection, when flag is true. Defaults to 0."
368
+ },
369
+ "vpn_last_seen": {
370
+ "type": "string",
371
+ "description": "Last seen date (YYYY-MM-DD) for VPN activity, when available."
372
+ },
373
+ "is_relay": {
374
+ "type": "boolean",
375
+ "description": "Indicates whether the IP is associated with a relay network."
376
+ },
377
+ "relay_provider_name": {
378
+ "type": "string",
379
+ "description": "Relay provider name, when available."
380
+ },
381
+ "is_anonymous": {
382
+ "type": "boolean",
383
+ "description": "Indicates whether the IP is anonymous. True if VPN, proxy, Tor, or relay is detected."
384
+ },
385
+ "is_known_attacker": {
386
+ "type": "boolean",
387
+ "description": "Indicates whether the IP is flagged for known attacker behavior."
388
+ },
389
+ "is_bot": {
390
+ "type": "boolean",
391
+ "description": "Indicates whether the IP is associated with bot activity."
392
+ },
393
+ "is_spam": {
394
+ "type": "boolean",
395
+ "description": "Indicates whether the IP is associated with spam activity."
396
+ },
397
+ "is_cloud_provider": {
398
+ "type": "boolean",
399
+ "description": "Indicates whether the IP belongs to a cloud provider."
400
+ },
401
+ "cloud_provider_name": {
402
+ "type": "string",
403
+ "description": "Name of the cloud provider, if the IP address belongs to a cloud provider."
404
+ }
405
+ }
406
+ }
407
+ }
408
+ },
409
+ "security": [
410
+ {
411
+ "ApiKeyAuthHeader": []
412
+ },
413
+ {
414
+ "ApiKeyAuthQuery": []
415
+ }
416
+ ]
417
+ }