@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,729 @@
1
+ {
2
+ "openapi": "3.1.1",
3
+ "info": {
4
+ "title": "ASN Lookup API - WHOIS Records, CIDR Blocks & BGP Peer Data",
5
+ "version": "1.0.0",
6
+ "description": "Retrieve complete WHOIS registration data for an Autonomous System Number (ASN), covering the operating organization, every advertised IPv4 and IPv6 route object, and both a structured JSON breakdown and the raw WHOIS text returned by the authoritative Regional Internet Registry. The response also includes the ASN's upstream providers, downstream customers, and BGP peer relationships when the registry publishes them, plus direct technical and abuse contact details. Pass the `asn` parameter with or without the `AS` prefix (e.g. `15169` or `AS15169`). An unallocated or unrecognized ASN returns a `404` error instead of an empty result, and a non-numeric or malformed `asn` value returns a `400` error.",
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": "ASN Lookup API Server"
17
+ }
18
+ ],
19
+ "paths": {
20
+ "/asn/whois/live": {
21
+ "get": {
22
+ "tags": ["WHOIS APIs"],
23
+ "summary": "Retrieve WHOIS registration data, CIDR block inventory, and BGP peer relationships for an Autonomous System Number",
24
+ "description": "Returns the WHOIS record for the specified ASN, including organization details, IPv4/IPv6 route objects, upstream/downstream/peer relationships, and both parsed and raw WHOIS text. Accepts the ASN with or without the 'AS' prefix.",
25
+ "operationId": "asnLookup",
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": "asn",
40
+ "in": "query",
41
+ "required": true,
42
+ "description": "Autonomous System Number to retrieve WHOIS data for, with or without the 'AS' prefix (e.g. 15169 or AS15169).",
43
+ "schema": {
44
+ "type": "string"
45
+ }
46
+ }
47
+ ],
48
+ "responses": {
49
+ "200": {
50
+ "description": "Successful ASN WHOIS response",
51
+ "content": {
52
+ "application/json": {
53
+ "schema": {
54
+ "$ref": "#/components/schemas/ASNLookupResponse"
55
+ },
56
+ "examples": {
57
+ "typicalSuccess": {
58
+ "summary": "Typical successful response",
59
+ "value": {
60
+ "asNumber": "15",
61
+ "asName": "NET-DYNAMICS-EXP",
62
+ "orgName": "DYNAMICS",
63
+ "description": "",
64
+ "orgHandle": "dynami-109",
65
+ "country": "US",
66
+ "domain": "nisc.sri.com",
67
+ "website": "",
68
+ "allocationStatus": "",
69
+ "numOfIPv4Routes": "0",
70
+ "numOfIPv6Routes": "0",
71
+ "whoisHost": "ARIN",
72
+ "dateAllocated": "",
73
+ "type": "ISP",
74
+ "routeObjects": [],
75
+ "whoisResponse": "\n#\n# ARIN WHOIS data and services are subject to the Terms of Use\n# available at: https://www.arin.net/resources/registry/whois/tou/\n#\n# If you see inaccuracies in the results, please report at\n# https://www.arin.net/resources/registry/whois/inaccuracy_reporting/\n#\n# Copyright 1997-2026, American Registry for Internet Numbers, Ltd.\n#\n\n\nASNumber: 15\nASName: NET-DYNAMICS-EXP\nASHandle: AS15\nRegDate: \nUpdated: 1991-06-27\nRef: https://rdap.arin.net/registry/autnum/15\n\n\nOrgName: DYNAMICS\nOrgId: DYNAMI-109\nCity: \nStateProv: \nPostalCode: \nCountry: US\nRegDate: \nUpdated: 2012-10-10\nRef: https://rdap.arin.net/registry/entity/DYNAMI-109\n\n\nOrgTechHandle: ZSU-ARIN\nOrgTechName: Su, Zaw-Sing \nOrgTechPhone: +1-415-859-4576 \nOrgTechEmail: zsu@nisc.sri.com\nOrgTechRef: https://rdap.arin.net/registry/entity/ZSU-ARIN\n\nOrgAbuseHandle: ZSU-ARIN\nOrgAbuseName: Su, Zaw-Sing \nOrgAbusePhone: +1-415-859-4576 \nOrgAbuseEmail: zsu@nisc.sri.com\nOrgAbuseRef: https://rdap.arin.net/registry/entity/ZSU-ARIN\n\nRTechHandle: ZSU-ARIN\nRTechName: Su, Zaw-Sing \nRTechPhone: +1-415-859-4576 \nRTechEmail: zsu@nisc.sri.com\nRTechRef: https://rdap.arin.net/registry/entity/ZSU-ARIN\n\n\n#\n# ARIN WHOIS data and services are subject to the Terms of Use\n# available at: https://www.arin.net/resources/registry/whois/tou/\n#\n# If you see inaccuracies in the results, please report at\n# https://www.arin.net/resources/registry/whois/inaccuracy_reporting/\n#\n# Copyright 1997-2026, American Registry for Internet Numbers, Ltd.\n#\n",
76
+ "downstreams": [],
77
+ "parsedWhoisResponse": {
78
+ "status": true,
79
+ "whois_server": "whois.arin.net",
80
+ "aut_nums": [
81
+ {
82
+ "aut_num": "15",
83
+ "as_handle": "AS15",
84
+ "as_name": "NET-DYNAMICS-EXP",
85
+ "tech_contacts": ["ZSU-ARIN", "ZSU-ARIN"],
86
+ "abuse_contacts": ["ZSU-ARIN"],
87
+ "date_updated": "1991-06-27",
88
+ "source": "https://rdap.arin.net/registry/autnum/15"
89
+ }
90
+ ],
91
+ "organization": {
92
+ "handle": "DYNAMI-109",
93
+ "name": "DYNAMICS",
94
+ "address": ["US"],
95
+ "country": ["US"],
96
+ "date_updated": "2012-10-10",
97
+ "source": "https://rdap.arin.net/registry/entity/DYNAMI-109",
98
+ "addressCountry": "US"
99
+ },
100
+ "technical_contacts": [
101
+ {
102
+ "handle": "ZSU-ARIN",
103
+ "name": "Su, Zaw-Sing",
104
+ "email": ["zsu@nisc.sri.com"],
105
+ "phone": ["+1-415-859-4576"],
106
+ "source": "https://rdap.arin.net/registry/entity/ZSU-ARIN"
107
+ }
108
+ ],
109
+ "abuse_contacts": [
110
+ {
111
+ "handle": "ZSU-ARIN",
112
+ "name": "Su, Zaw-Sing",
113
+ "email": ["zsu@nisc.sri.com"],
114
+ "phone": ["+1-415-859-4576"],
115
+ "source": "https://rdap.arin.net/registry/entity/ZSU-ARIN"
116
+ }
117
+ ]
118
+ },
119
+ "upstreams": [],
120
+ "peers": [],
121
+ "contacts": {
122
+ "emailContacts": ["zsu@nisc.sri.com"],
123
+ "abuseContacts": []
124
+ },
125
+ "legacyRoutes": []
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ },
132
+ "400": {
133
+ "description": "Bad Request — Invalid asn parameter",
134
+ "content": {
135
+ "application/json": {
136
+ "schema": {
137
+ "$ref": "#/components/schemas/ErrorResponse"
138
+ },
139
+ "examples": {
140
+ "invalidAsn": {
141
+ "summary": "Non-numeric asn value",
142
+ "value": {
143
+ "timestamp": "2026-07-23T07:47:06.640Z",
144
+ "status": 400,
145
+ "error": "Input parameter is not valid",
146
+ "message": "Request-param 'asn' (ABC123) is not valid",
147
+ "path": "/v2.0/asn-whois"
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ },
154
+ "404": {
155
+ "description": "Not Found — ASN could not be found",
156
+ "content": {
157
+ "application/json": {
158
+ "schema": {
159
+ "$ref": "#/components/schemas/ErrorResponse"
160
+ },
161
+ "examples": {
162
+ "asnNotFound": {
163
+ "summary": "ASN not allocated or unrecognized",
164
+ "value": {
165
+ "timestamp": "2026-07-23T07:47:45.427Z",
166
+ "status": 404,
167
+ "error": "Data Not Found",
168
+ "message": "ASN data for 999999999 could not be found.",
169
+ "path": "/v2.0/asn-whois"
170
+ }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+ }
179
+ },
180
+ "components": {
181
+ "securitySchemes": {
182
+ "ApiKeyAuthHeader": {
183
+ "type": "apiKey",
184
+ "in": "header",
185
+ "name": "X-apiKey",
186
+ "description": "Pass your API key via the X-apiKey request header."
187
+ },
188
+ "ApiKeyAuthQuery": {
189
+ "type": "apiKey",
190
+ "in": "query",
191
+ "name": "apiKey",
192
+ "description": "Pass your API key via the apiKey query parameter."
193
+ }
194
+ },
195
+ "schemas": {
196
+ "ErrorResponse": {
197
+ "type": "object",
198
+ "required": ["message"],
199
+ "properties": {
200
+ "error": {
201
+ "type": "string",
202
+ "description": "Short error category or exception type."
203
+ },
204
+ "message": {
205
+ "type": "string",
206
+ "description": "Human-readable error message describing the failure."
207
+ },
208
+ "path": {
209
+ "type": "string",
210
+ "description": "API endpoint path that produced the error."
211
+ },
212
+ "status": {
213
+ "type": "integer",
214
+ "description": "HTTP status code returned with the error."
215
+ },
216
+ "timestamp": {
217
+ "type": "string",
218
+ "format": "date-time",
219
+ "description": "Timestamp when the error occurred (ISO 8601)."
220
+ }
221
+ }
222
+ },
223
+ "ASNLookupResponse": {
224
+ "type": "object",
225
+ "description": "WHOIS registration record for the requested Autonomous System Number.",
226
+ "required": [
227
+ "asNumber",
228
+ "asName",
229
+ "orgName",
230
+ "orgHandle",
231
+ "country",
232
+ "allocationStatus",
233
+ "numOfIPv4Routes",
234
+ "numOfIPv6Routes",
235
+ "whoisHost",
236
+ "type",
237
+ "routeObjects",
238
+ "whoisResponse",
239
+ "downstreams",
240
+ "parsedWhoisResponse",
241
+ "upstreams",
242
+ "peers",
243
+ "contacts",
244
+ "legacyRoutes"
245
+ ],
246
+ "properties": {
247
+ "asNumber": {
248
+ "type": "string",
249
+ "description": "The Autonomous System Number, without the 'AS' prefix."
250
+ },
251
+ "asName": {
252
+ "type": "string",
253
+ "description": "Registered short name for the Autonomous System."
254
+ },
255
+ "orgName": {
256
+ "type": "string",
257
+ "description": "Name of the organization the ASN is registered to."
258
+ },
259
+ "description": {
260
+ "type": "string",
261
+ "description": "Free-text description associated with the organization, when published."
262
+ },
263
+ "orgHandle": {
264
+ "type": "string",
265
+ "description": "Registry handle identifying the organization record."
266
+ },
267
+ "country": {
268
+ "type": "string",
269
+ "description": "ISO 3166-1 alpha-2 country code of the registered organization."
270
+ },
271
+ "domain": {
272
+ "type": "string",
273
+ "description": "Domain name associated with the organization, when published."
274
+ },
275
+ "website": {
276
+ "type": "string",
277
+ "description": "Organization website URL, when published."
278
+ },
279
+ "allocationStatus": {
280
+ "type": "string",
281
+ "description": "Allocation status of the ASN as published by the registry."
282
+ },
283
+ "numOfIPv4Routes": {
284
+ "type": "string",
285
+ "description": "Count of IPv4 route objects currently advertised by this ASN."
286
+ },
287
+ "numOfIPv6Routes": {
288
+ "type": "string",
289
+ "description": "Count of IPv6 route objects currently advertised by this ASN."
290
+ },
291
+ "whoisHost": {
292
+ "type": "string",
293
+ "description": "Regional Internet Registry (RIR) that hosts the authoritative WHOIS record (e.g. ARIN, RIPE, APNIC)."
294
+ },
295
+ "dateAllocated": {
296
+ "type": "string",
297
+ "description": "Date the ASN was allocated, in YYYY-MM-DD format; empty if not published."
298
+ },
299
+ "type": {
300
+ "type": "string",
301
+ "description": "ASN category (e.g. ISP, BUSINESS, HOSTING, EDUCATION)."
302
+ },
303
+ "routeObjects": {
304
+ "type": "array",
305
+ "description": "IPv4 and IPv6 route objects (CIDR blocks) currently advertised by this ASN.",
306
+ "items": {
307
+ "$ref": "#/components/schemas/RouteObject"
308
+ }
309
+ },
310
+ "whoisResponse": {
311
+ "type": "string",
312
+ "description": "Raw WHOIS text response returned by the authoritative registry for this ASN."
313
+ },
314
+ "downstreams": {
315
+ "type": "array",
316
+ "description": "Downstream customer ASNs that receive routes from this ASN, when published.",
317
+ "items": {
318
+ "$ref": "#/components/schemas/AsnRelation"
319
+ }
320
+ },
321
+ "parsedWhoisResponse": {
322
+ "$ref": "#/components/schemas/ParsedWhoisResponse"
323
+ },
324
+ "upstreams": {
325
+ "type": "array",
326
+ "description": "Upstream provider ASNs that this ASN receives transit from, when published.",
327
+ "items": {
328
+ "$ref": "#/components/schemas/AsnRelation"
329
+ }
330
+ },
331
+ "peers": {
332
+ "type": "array",
333
+ "description": "BGP peer ASNs with a settlement-free peering relationship to this ASN, when published.",
334
+ "items": {
335
+ "$ref": "#/components/schemas/AsnRelation"
336
+ }
337
+ },
338
+ "contacts": {
339
+ "$ref": "#/components/schemas/Contacts"
340
+ },
341
+ "legacyRoutes": {
342
+ "type": "array",
343
+ "description": "Legacy (pre-RIR) route objects associated with this ASN, in CIDR notation.",
344
+ "items": {
345
+ "type": "string"
346
+ }
347
+ }
348
+ }
349
+ },
350
+ "RouteObject": {
351
+ "type": "object",
352
+ "description": "A single IPv4 or IPv6 route object (CIDR block) advertised by the ASN.",
353
+ "required": ["route", "origin", "originName", "isp", "numberOfIps"],
354
+ "properties": {
355
+ "route": {
356
+ "type": "string",
357
+ "description": "Route prefix in CIDR notation."
358
+ },
359
+ "origin": {
360
+ "type": "string",
361
+ "description": "Originating ASN for this route, in AS<number> format."
362
+ },
363
+ "originName": {
364
+ "type": "string",
365
+ "description": "Organization name for the originating ASN."
366
+ },
367
+ "isp": {
368
+ "type": "string",
369
+ "description": "ISP or organization name associated with this route."
370
+ },
371
+ "numberOfIps": {
372
+ "type": "integer",
373
+ "description": "Total number of IP addresses contained in this route's prefix."
374
+ }
375
+ }
376
+ },
377
+ "AsnRelation": {
378
+ "type": "object",
379
+ "description": "A related Autonomous System (upstream provider, downstream customer, or BGP peer).",
380
+ "required": ["asNumber"],
381
+ "properties": {
382
+ "asNumber": {
383
+ "type": "string",
384
+ "description": "ASN of the related Autonomous System, without the 'AS' prefix."
385
+ },
386
+ "description": {
387
+ "type": "string",
388
+ "description": "Free-text description of the related Autonomous System, when published."
389
+ },
390
+ "country": {
391
+ "type": "string",
392
+ "description": "ISO 3166-1 alpha-2 country code of the related Autonomous System, when published."
393
+ }
394
+ }
395
+ },
396
+ "ParsedWhoisResponse": {
397
+ "type": "object",
398
+ "description": "Structured breakdown of the raw WHOIS response into individual records and contacts.",
399
+ "required": [
400
+ "status",
401
+ "whois_server",
402
+ "aut_nums",
403
+ "organization",
404
+ "technical_contacts",
405
+ "abuse_contacts"
406
+ ],
407
+ "properties": {
408
+ "status": {
409
+ "type": "boolean",
410
+ "description": "true if the WHOIS response was parsed successfully."
411
+ },
412
+ "whois_server": {
413
+ "type": "string",
414
+ "description": "WHOIS server that returned the raw response (e.g. whois.arin.net)."
415
+ },
416
+ "aut_nums": {
417
+ "type": "array",
418
+ "description": "Parsed autnum object(s) for the requested ASN.",
419
+ "items": {
420
+ "$ref": "#/components/schemas/AutNum"
421
+ }
422
+ },
423
+ "organization": {
424
+ "$ref": "#/components/schemas/Organization"
425
+ },
426
+ "technical_contacts": {
427
+ "type": "array",
428
+ "description": "Parsed technical contact records for the ASN.",
429
+ "items": {
430
+ "$ref": "#/components/schemas/WhoisContact"
431
+ }
432
+ },
433
+ "abuse_contacts": {
434
+ "type": "array",
435
+ "description": "Parsed abuse contact records for the ASN.",
436
+ "items": {
437
+ "$ref": "#/components/schemas/WhoisContact"
438
+ }
439
+ },
440
+ "whois_raw_response": {
441
+ "type": "string",
442
+ "description": "Unparsed raw WHOIS text, when returned separately from whoisResponse."
443
+ },
444
+ "r_whois_raw_response": {
445
+ "type": "string",
446
+ "description": "Raw referral WHOIS (rwhois) text, when the registry delegates to a referral server."
447
+ },
448
+ "query_time": {
449
+ "type": "string",
450
+ "format": "date-time",
451
+ "description": "Timestamp when the WHOIS query was executed."
452
+ }
453
+ }
454
+ },
455
+ "AutNum": {
456
+ "type": "object",
457
+ "description": "Parsed autnum (Autonomous System Number) registry object and its routing policy attributes.",
458
+ "required": [
459
+ "aut_num",
460
+ "as_handle",
461
+ "as_name",
462
+ "tech_contacts",
463
+ "abuse_contacts",
464
+ "date_updated",
465
+ "source"
466
+ ],
467
+ "properties": {
468
+ "aut_num": {
469
+ "type": "string",
470
+ "description": "ASN identifier as recorded on the autnum object."
471
+ },
472
+ "as_handle": {
473
+ "type": "string",
474
+ "description": "Registry handle for the autnum object (e.g. AS15)."
475
+ },
476
+ "as_name": {
477
+ "type": "string",
478
+ "description": "Registered name for the autnum object."
479
+ },
480
+ "description": {
481
+ "type": "array",
482
+ "description": "Free-text description lines attached to the autnum object.",
483
+ "items": {
484
+ "type": "string"
485
+ }
486
+ },
487
+ "country": {
488
+ "type": "string",
489
+ "description": "ISO 3166-1 alpha-2 country code recorded on the autnum object."
490
+ },
491
+ "status": {
492
+ "type": "string",
493
+ "description": "Autnum object status as recorded by the registry."
494
+ },
495
+ "member_of": {
496
+ "type": "array",
497
+ "description": "Route-set or as-set objects this ASN is a member of.",
498
+ "items": {
499
+ "type": "string"
500
+ }
501
+ },
502
+ "import_via": {
503
+ "type": "array",
504
+ "description": "BGP import-via routing policy statements.",
505
+ "items": {
506
+ "type": "string"
507
+ }
508
+ },
509
+ "import": {
510
+ "type": "array",
511
+ "description": "BGP import routing policy statements.",
512
+ "items": {
513
+ "type": "string"
514
+ }
515
+ },
516
+ "mp_import": {
517
+ "type": "array",
518
+ "description": "Multiprotocol BGP import routing policy statements (mp-import).",
519
+ "items": {
520
+ "type": "string"
521
+ }
522
+ },
523
+ "export_via": {
524
+ "type": "array",
525
+ "description": "BGP export-via routing policy statements.",
526
+ "items": {
527
+ "type": "string"
528
+ }
529
+ },
530
+ "export": {
531
+ "type": "array",
532
+ "description": "BGP export routing policy statements.",
533
+ "items": {
534
+ "type": "string"
535
+ }
536
+ },
537
+ "mp_export": {
538
+ "type": "array",
539
+ "description": "Multiprotocol BGP export routing policy statements (mp-export).",
540
+ "items": {
541
+ "type": "string"
542
+ }
543
+ },
544
+ "default": {
545
+ "type": "array",
546
+ "description": "BGP default routing policy statements.",
547
+ "items": {
548
+ "type": "string"
549
+ }
550
+ },
551
+ "mp_default": {
552
+ "type": "array",
553
+ "description": "Multiprotocol BGP default routing policy statements (mp-default).",
554
+ "items": {
555
+ "type": "string"
556
+ }
557
+ },
558
+ "organization": {
559
+ "type": "string",
560
+ "description": "Registry handle of the organization that holds the autnum object."
561
+ },
562
+ "sponsoring_organization": {
563
+ "type": "string",
564
+ "description": "Registry handle of the sponsoring organization, when applicable."
565
+ },
566
+ "admin_contacts": {
567
+ "type": "array",
568
+ "description": "Registry handles of administrative contacts for the autnum object.",
569
+ "items": {
570
+ "type": "string"
571
+ }
572
+ },
573
+ "tech_contacts": {
574
+ "type": "array",
575
+ "description": "Registry handles of technical contacts for the autnum object.",
576
+ "items": {
577
+ "type": "string"
578
+ }
579
+ },
580
+ "abuse_contacts": {
581
+ "type": "array",
582
+ "description": "Registry handles of abuse contacts for the autnum object.",
583
+ "items": {
584
+ "type": "string"
585
+ }
586
+ },
587
+ "date_created": {
588
+ "type": "string",
589
+ "format": "date",
590
+ "description": "Date the autnum object was first registered."
591
+ },
592
+ "date_updated": {
593
+ "type": "string",
594
+ "format": "date",
595
+ "description": "Date the autnum object was last updated."
596
+ },
597
+ "source": {
598
+ "type": "string",
599
+ "description": "URL of the registry record this autnum object was parsed from."
600
+ }
601
+ }
602
+ },
603
+ "Organization": {
604
+ "type": "object",
605
+ "description": "Parsed organization (org) registry object that holds the ASN.",
606
+ "properties": {
607
+ "handle": {
608
+ "type": "string",
609
+ "description": "Registry handle for the organization object."
610
+ },
611
+ "name": {
612
+ "type": "string",
613
+ "description": "Registered name of the organization."
614
+ },
615
+ "address": {
616
+ "type": "array",
617
+ "description": "Address lines for the organization, as published by the registry.",
618
+ "items": {
619
+ "type": "string"
620
+ }
621
+ },
622
+ "street": {
623
+ "type": "string",
624
+ "description": "Street address of the organization, when published separately."
625
+ },
626
+ "city": {
627
+ "type": "string",
628
+ "description": "City of the organization, when published separately."
629
+ },
630
+ "state": {
631
+ "type": "string",
632
+ "description": "State or province of the organization, when published separately."
633
+ },
634
+ "zip_code": {
635
+ "type": "string",
636
+ "description": "Postal/ZIP code of the organization, when published separately."
637
+ },
638
+ "country": {
639
+ "type": "array",
640
+ "description": "Country line(s) of the organization address, as published by the registry.",
641
+ "items": {
642
+ "type": "string"
643
+ }
644
+ },
645
+ "addressCountry": {
646
+ "type": "string",
647
+ "description": "ISO 3166-1 alpha-2 country code derived from the organization's address."
648
+ },
649
+ "date_created": {
650
+ "type": "string",
651
+ "format": "date",
652
+ "description": "Date the organization object was first registered."
653
+ },
654
+ "date_updated": {
655
+ "type": "string",
656
+ "format": "date",
657
+ "description": "Date the organization object was last updated."
658
+ },
659
+ "source": {
660
+ "type": "string",
661
+ "description": "URL of the registry record this organization object was parsed from."
662
+ }
663
+ }
664
+ },
665
+ "WhoisContact": {
666
+ "type": "object",
667
+ "description": "A parsed technical or abuse contact record from the registry.",
668
+ "required": ["handle", "name", "email"],
669
+ "properties": {
670
+ "handle": {
671
+ "type": "string",
672
+ "description": "Registry handle for the contact."
673
+ },
674
+ "name": {
675
+ "type": "string",
676
+ "description": "Contact's registered name."
677
+ },
678
+ "email": {
679
+ "type": "array",
680
+ "description": "Contact email address(es).",
681
+ "items": {
682
+ "type": "string"
683
+ }
684
+ },
685
+ "phone": {
686
+ "type": "array",
687
+ "description": "Contact phone number(s).",
688
+ "items": {
689
+ "type": "string"
690
+ }
691
+ },
692
+ "source": {
693
+ "type": "string",
694
+ "description": "URL of the registry record this contact was parsed from."
695
+ }
696
+ }
697
+ },
698
+ "Contacts": {
699
+ "type": "object",
700
+ "description": "Direct contact addresses collected from the ASN's WHOIS record.",
701
+ "required": ["emailContacts", "abuseContacts"],
702
+ "properties": {
703
+ "emailContacts": {
704
+ "type": "array",
705
+ "description": "General contact email addresses for the ASN.",
706
+ "items": {
707
+ "type": "string"
708
+ }
709
+ },
710
+ "abuseContacts": {
711
+ "type": "array",
712
+ "description": "Abuse-reporting contact email addresses for the ASN.",
713
+ "items": {
714
+ "type": "string"
715
+ }
716
+ }
717
+ }
718
+ }
719
+ }
720
+ },
721
+ "security": [
722
+ {
723
+ "ApiKeyAuthHeader": []
724
+ },
725
+ {
726
+ "ApiKeyAuthQuery": []
727
+ }
728
+ ]
729
+ }