ipmax 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.
data/sig/ipmax.rbs ADDED
@@ -0,0 +1,892 @@
1
+ module IPMax
2
+ VERSION: String
3
+
4
+ class Client
5
+ BACKOFF_BASE: Float
6
+ BACKOFF_CAP: Float
7
+ NETWORK_ERRORS: Array[singleton(Exception)]
8
+
9
+ interface _Connection
10
+ def request: (Net::HTTPRequest request) -> Net::HTTPResponse
11
+ end
12
+
13
+ type request_class = singleton(Net::HTTP::Get) | singleton(Net::HTTP::Post)
14
+
15
+ @api_key: String?
16
+ @host: String
17
+ @port: Integer
18
+ @use_ssl: bool
19
+ @path_prefix: String
20
+ @timeout: Float | Integer
21
+ @max_retries: Integer
22
+ @http: _Connection?
23
+ @cache: Internal::LruCache
24
+
25
+ def initialize: (
26
+ ?api_key: String?,
27
+ ?base_url: String,
28
+ ?timeout: Float | Integer,
29
+ ?max_retries: Integer,
30
+ ?cache_size: Integer,
31
+ ?cache_ttl: Numeric,
32
+ ?http: _Connection?
33
+ ) -> void
34
+
35
+ def catalog: () -> Models::Catalog
36
+ def account: () -> Models::Account
37
+ def geoip: (String ip, ?idempotency_key: String?) -> Models::GeoIpData
38
+ def intelligence: (String ip, ?idempotency_key: String?) -> Models::IntelligenceData
39
+
40
+ private
41
+
42
+ def lookup: [T] (String product, String ip, String? idempotency_key, Class envelope) -> T
43
+ def request: (request_class method, String path) -> Net::HTTPRequest
44
+ def fetch: (Net::HTTPRequest request, Class envelope) -> untyped
45
+ def perform: (Net::HTTPRequest request) -> Net::HTTPResponse
46
+ def connection: () -> _Connection
47
+ def api_error: (Net::HTTPResponse response) -> IPMax::ApiError
48
+ def error_class: (Integer status) -> singleton(ApiError)
49
+ def parse: (String? body) -> untyped
50
+ def retry_after: (String? header) -> Float?
51
+ def retryable_status?: (Integer status) -> bool
52
+ def backoff: (Integer attempt) -> Float
53
+ end
54
+
55
+ class Error < StandardError
56
+ end
57
+
58
+ class ApiError < Error
59
+ attr_reader status: Integer
60
+ attr_reader code: Integer?
61
+ attr_reader request_id: String?
62
+ attr_reader retry_after: Float?
63
+
64
+ @retryable: bool
65
+
66
+ def initialize: (String message, status: Integer, code: Integer?, request_id: String?, retryable: bool, retry_after: Float?) -> void
67
+ def retryable?: () -> bool
68
+ end
69
+
70
+ class InvalidRequestError < ApiError
71
+ end
72
+
73
+ class AuthenticationError < ApiError
74
+ end
75
+
76
+ class InsufficientBalanceError < ApiError
77
+ end
78
+
79
+ class NotFoundError < ApiError
80
+ end
81
+
82
+ class ConflictError < ApiError
83
+ end
84
+
85
+ class RateLimitError < ApiError
86
+ end
87
+
88
+ class ServerError < ApiError
89
+ end
90
+
91
+ class ConnectionError < Error
92
+ end
93
+
94
+ class TimeoutError < ConnectionError
95
+ end
96
+
97
+ class DecodeError < Error
98
+ end
99
+
100
+ module Internal
101
+ module Schema
102
+ type scalar = :string | :integer | :float | :boolean | :null
103
+ type field_type = scalar | Module | [field_type]
104
+
105
+ class Field
106
+ attr_reader name: Symbol
107
+ attr_reader key: String
108
+ attr_reader type: field_type
109
+ attr_reader required: bool
110
+ attr_reader nullable: bool
111
+
112
+ def self.new: (name: Symbol, key: String, type: field_type, required: bool, nullable: bool) -> instance
113
+ end
114
+
115
+ class Union
116
+ attr_reader tag: String
117
+ attr_reader variants: Hash[String, Class]
118
+ attr_reader fallback: Class
119
+
120
+ def self.new: (tag: String, variants: Hash[String, Class], fallback: Class) -> instance
121
+ end
122
+
123
+ class Builder
124
+ attr_reader fields: Array[Field]
125
+
126
+ @fields: Array[Field]
127
+
128
+ def initialize: () -> void
129
+ def required: (Symbol name, field_type type, ?null: bool, ?key: String) -> Array[Field]
130
+ def optional: (Symbol name, field_type type, ?key: String) -> Array[Field]
131
+ end
132
+
133
+ MODELS: Hash[Module, Array[Field]]
134
+ UNIONS: Hash[Module, Union]
135
+
136
+ def self.define: (*Module modules) { (Builder) [self: Builder] -> void } -> untyped
137
+ def self.union: (Module mod, tag: String, variants: Hash[String, Class], fallback: Class) -> Union
138
+ def self.build: (untyped type, untyped object, ?String? path) -> untyped
139
+ def self.attribute: (Field field, Hash[String, untyped] object, String? path) -> untyped
140
+ def self.coerce: (field_type type, untyped value, String path) -> untyped
141
+ end
142
+
143
+ class LruCache
144
+ @capacity: Integer
145
+ @ttl: Numeric
146
+ @entries: Hash[untyped, [Float, untyped]]
147
+ @monitor: Monitor
148
+
149
+ def initialize: (Integer capacity, Numeric ttl) -> void
150
+ def get: (untyped key) -> untyped
151
+ def set: (untyped key, untyped value) -> void
152
+
153
+ private
154
+
155
+ def now: () -> Float
156
+ end
157
+ end
158
+
159
+ module Models
160
+ module AnonymizerExemptionReason
161
+ CLOUDFLARE_CDN_ORIGIN: String
162
+ SEARCH_ENGINE_CRAWLER: String
163
+ end
164
+
165
+ module CpePart
166
+ APPLICATION: String
167
+ OPERATING_SYSTEM: String
168
+ HARDWARE: String
169
+ end
170
+
171
+ module ErrorCode
172
+ INVALID_REQUEST: Integer
173
+ INVALID_PAYLOAD: Integer
174
+ INVALID_IP: Integer
175
+ IP_NOT_FOUND: Integer
176
+ ROUTE_NOT_FOUND: Integer
177
+ INVALID_API_KEY: Integer
178
+ RATE_LIMIT_EXCEEDED: Integer
179
+ SERVICE_UNAVAILABLE: Integer
180
+ INTERNAL_ERROR: Integer
181
+ INSUFFICIENT_BALANCE: Integer
182
+ IDEMPOTENCY_KEY_CONFLICT: Integer
183
+ end
184
+
185
+ module LiveIntelligenceTag
186
+ HOSTING: String
187
+ PUBLIC_DNS_RESOLVER: String
188
+ WEB_SERVER: String
189
+ VPN: String
190
+ RESIDENTIAL_PROXY: String
191
+ end
192
+
193
+ module NetworkClass
194
+ MOBILE: String
195
+ HOSTING: String
196
+ RESIDENTIAL: String
197
+ BUSINESS: String
198
+ ORGANIZATION: String
199
+ GOVERNMENT: String
200
+ MILITARY: String
201
+ EDUCATION: String
202
+ LIBRARY: String
203
+ DEDICATED: String
204
+ SATELLITE: String
205
+ IXP: String
206
+ SEARCH_ENGINE: String
207
+ AI_CRAWLER: String
208
+ UNKNOWN: String
209
+ end
210
+
211
+ module NetworkClassSource
212
+ DOMESTIC_ISP: String
213
+ USAGE_TYPE: String
214
+ MOBILE_CARRIER: String
215
+ CONNECTION_TYPE: String
216
+ NETWORK_TAG: String
217
+ THREAT_INTELLIGENCE: String
218
+ ASN_TAG: String
219
+ IXP: String
220
+ NONE: String
221
+ end
222
+
223
+ module Product
224
+ GEOIP: String
225
+ INTELLIGENCE: String
226
+ end
227
+
228
+ module PtrConfidenceLevel
229
+ HIGH: String
230
+ MEDIUM: String
231
+ LOW: String
232
+ end
233
+
234
+ module PtrDatasetName
235
+ GEONAMES: String
236
+ OURAIRPORTS: String
237
+ OPERATOR_OVERRIDES: String
238
+ UNLOCODE: String
239
+ end
240
+
241
+ module PtrHintKind
242
+ IATA: String
243
+ UNLOCODE: String
244
+ CLLI: String
245
+ CITY_NAME: String
246
+ OPERATOR_CODE: String
247
+ end
248
+
249
+ module RevokedNetworkTag
250
+ BUSINESS_BROADBAND: String
251
+ HOME_ISP: String
252
+ MOBILE_ISP: String
253
+ end
254
+
255
+ module RpkiSource
256
+ RTR_LIVE: String
257
+ LOCAL_CACHE: String
258
+ LOCAL_DB: String
259
+ end
260
+
261
+ module RpkiStatus
262
+ VALID: String
263
+ INVALID_ASN: String
264
+ INVALID_LENGTH: String
265
+ UNKNOWN: String
266
+ NOT_ROUTED: String
267
+ end
268
+
269
+ class AbuseCategoryCount < Data
270
+ attr_reader id: Integer
271
+ attr_reader count: Integer
272
+
273
+ def self.new: (id: Integer, count: Integer) -> instance
274
+ end
275
+
276
+ class AbuseContact < Data
277
+ attr_reader name: String?
278
+ attr_reader address: String?
279
+ attr_reader country: String?
280
+ attr_reader email: String?
281
+ attr_reader network: String?
282
+ attr_reader phone: String?
283
+ attr_reader source: String?
284
+
285
+ def self.new: (name: String?, address: String?, country: String?, email: String?, network: String?, phone: String?, source: String?) -> instance
286
+ end
287
+
288
+ class AbuseReports < Data
289
+ attr_reader confidence_score: Integer
290
+ attr_reader total_reports: Integer
291
+ attr_reader distinct_reporters: Integer
292
+ attr_reader last_reported_at: String?
293
+ attr_reader is_whitelisted: bool?
294
+ attr_reader categories: Array[AbuseCategoryCount]
295
+
296
+ def self.new: (confidence_score: Integer, total_reports: Integer, distinct_reporters: Integer, last_reported_at: String?, is_whitelisted: bool?, categories: Array[AbuseCategoryCount]) -> instance
297
+ end
298
+
299
+ class Wallet < Data
300
+ attr_reader product: String
301
+ attr_reader balance_micros: Float
302
+
303
+ def self.new: (product: String, balance_micros: Float) -> instance
304
+ end
305
+
306
+ class LedgerEntry < Data
307
+ attr_reader id: String
308
+ attr_reader product: String
309
+ attr_reader kind: String
310
+ attr_reader amount_micros: Float
311
+ attr_reader balance_micros: Float
312
+ attr_reader reference: String
313
+ attr_reader created_at: String
314
+
315
+ def self.new: (id: String, product: String, kind: String, amount_micros: Float, balance_micros: Float, reference: String, created_at: String) -> instance
316
+ end
317
+
318
+ class Account < Data
319
+ attr_reader id: String
320
+ attr_reader name: String
321
+ attr_reader key_prefix: String
322
+ attr_reader wallets: Array[Wallet]
323
+ attr_reader entries: Array[LedgerEntry]
324
+
325
+ def self.new: (id: String, name: String, key_prefix: String, wallets: Array[Wallet], entries: Array[LedgerEntry]) -> instance
326
+ end
327
+
328
+ class AccountResponse < Data
329
+ attr_reader status: bool
330
+ attr_reader data: Account
331
+
332
+ def self.new: (status: bool, data: Account) -> instance
333
+ end
334
+
335
+ class ApiError < Data
336
+ attr_reader code: Integer
337
+ attr_reader message: String
338
+ attr_reader request_id: String
339
+ attr_reader retryable: bool
340
+
341
+ def self.new: (code: Integer, message: String, request_id: String, retryable: bool) -> instance
342
+ end
343
+
344
+ class ErrorResponse < Data
345
+ attr_reader status: bool
346
+ attr_reader data: nil
347
+ attr_reader error: ApiError
348
+
349
+ def self.new: (status: bool, data: nil, error: ApiError) -> instance
350
+ end
351
+
352
+ class AsnEstimatedCapacity < Data
353
+ attr_reader lower_gbps: Float
354
+ attr_reader upper_gbps: Float?
355
+ attr_reader label: String
356
+
357
+ def self.new: (lower_gbps: Float, upper_gbps: Float?, label: String) -> instance
358
+ end
359
+
360
+ class AsnExchangePort < Data
361
+ attr_reader capacity_gbps: Float
362
+ attr_reader operational: bool?
363
+ attr_reader rs_peer: bool?
364
+
365
+ def self.new: (capacity_gbps: Float, operational: bool?, rs_peer: bool?) -> instance
366
+ end
367
+
368
+ class AsnExchange < Data
369
+ attr_reader name: String
370
+ attr_reader country_code: String?
371
+ attr_reader type: String
372
+ attr_reader ports: Array[AsnExchangePort]
373
+
374
+ def self.new: (name: String, country_code: String?, type: String, ports: Array[AsnExchangePort]) -> instance
375
+ end
376
+
377
+ class AsnConnectivity < Data
378
+ attr_reader declared_traffic: String
379
+ attr_reader exchanges_total: Integer?
380
+ attr_reader estimated_capacity: AsnEstimatedCapacity
381
+ attr_reader exchanges: Array[AsnExchange]
382
+
383
+ def self.new: (declared_traffic: String, exchanges_total: Integer?, estimated_capacity: AsnEstimatedCapacity, exchanges: Array[AsnExchange]) -> instance
384
+ end
385
+
386
+ class Blocklist < Data
387
+ attr_reader name: String
388
+ attr_reader site: String
389
+ attr_reader type: String
390
+
391
+ def self.new: (name: String, site: String, type: String) -> instance
392
+ end
393
+
394
+ class Price < Data
395
+ attr_reader product: String
396
+ attr_reader name: String
397
+ attr_reader unit_micros: Float
398
+
399
+ def self.new: (product: String, name: String, unit_micros: Float) -> instance
400
+ end
401
+
402
+ class Catalog < Data
403
+ attr_reader currency: String
404
+ attr_reader prices: Array[Price]
405
+ attr_reader purchase_email: String
406
+ attr_reader available: bool
407
+
408
+ def self.new: (currency: String, prices: Array[Price], purchase_email: String, available: bool) -> instance
409
+ end
410
+
411
+ class CatalogResponse < Data
412
+ attr_reader status: bool
413
+ attr_reader data: Catalog
414
+
415
+ def self.new: (status: bool, data: Catalog) -> instance
416
+ end
417
+
418
+ class Company < Data
419
+ attr_reader name: String?
420
+ attr_reader address: String?
421
+ attr_reader domain: String?
422
+ attr_reader phone: String?
423
+ attr_reader type: String?
424
+ attr_reader network: String?
425
+ attr_reader country: String?
426
+ attr_reader source: String?
427
+
428
+ def self.new: (name: String?, address: String?, domain: String?, phone: String?, type: String?, network: String?, country: String?, source: String?) -> instance
429
+ end
430
+
431
+ class CpeObservation < Data
432
+ attr_reader cpe: String
433
+ attr_reader part: String
434
+ attr_reader vendor: String
435
+ attr_reader product: String
436
+ attr_reader version: String?
437
+
438
+ def self.new: (cpe: String, part: String, vendor: String, product: String, version: String?) -> instance
439
+ end
440
+
441
+ class Currency < Data
442
+ attr_reader name: String
443
+ attr_reader code: String
444
+ attr_reader symbol: String
445
+ attr_reader native: String
446
+ attr_reader plural: String
447
+
448
+ def self.new: (name: String, code: String, symbol: String, native: String, plural: String) -> instance
449
+ end
450
+
451
+ class DnsHostnameEvidence < Data
452
+ attr_reader hostname: String
453
+ attr_reader kinds: Array[String]
454
+ attr_reader sources: Array[String]
455
+ attr_reader forward_confirmed: bool
456
+ attr_reader first_seen: String?
457
+ attr_reader last_seen: String?
458
+
459
+ def self.new: (hostname: String, kinds: Array[String], sources: Array[String], forward_confirmed: bool, first_seen: String?, last_seen: String?) -> instance
460
+ end
461
+
462
+ class DnsPtrEvidence < Data
463
+ attr_reader hostname: String
464
+ attr_reader sources: Array[String]
465
+ attr_reader forward_confirmed: bool
466
+ attr_reader first_seen: String?
467
+ attr_reader last_seen: String?
468
+
469
+ def self.new: (hostname: String, sources: Array[String], forward_confirmed: bool, first_seen: String?, last_seen: String?) -> instance
470
+ end
471
+
472
+ class DnsRecords < Data
473
+ attr_reader ptr: Array[String]
474
+ attr_reader ptr_evidence: Array[DnsPtrEvidence]
475
+ attr_reader hostnames: Array[DnsHostnameEvidence]
476
+ attr_reader sources: Array[String]
477
+ attr_reader snapshot_id: String?
478
+ attr_reader updated_at: String?
479
+
480
+ def self.new: (ptr: Array[String], ptr_evidence: Array[DnsPtrEvidence], hostnames: Array[DnsHostnameEvidence], sources: Array[String], snapshot_id: String?, updated_at: String?) -> instance
481
+ end
482
+
483
+ class GeoIpAs < Data
484
+ attr_reader asn: String
485
+ attr_reader name: String
486
+ attr_reader name_en: String?
487
+ attr_reader country_code: String?
488
+ attr_reader domain: String
489
+
490
+ def self.new: (asn: String, name: String, name_en: String?, country_code: String?, domain: String) -> instance
491
+ end
492
+
493
+ class Geolocation < Data
494
+ attr_reader city: String
495
+ attr_reader region: String
496
+ attr_reader district: String
497
+ attr_reader region_code: String
498
+ attr_reader adcode: String
499
+ attr_reader country: String
500
+ attr_reader country_code: String
501
+ attr_reader continent: String
502
+ attr_reader continent_code: String
503
+ attr_reader latitude: Float?
504
+ attr_reader longitude: Float?
505
+ attr_reader timezone: String
506
+ attr_reader postal_code: String
507
+ attr_reader radius: Float?
508
+ attr_reader area_code: String?
509
+ attr_reader plus_code: String?
510
+ attr_reader country_en: String?
511
+ attr_reader country_zh: String?
512
+ attr_reader region_en: String?
513
+ attr_reader region_zh: String?
514
+ attr_reader city_en: String?
515
+ attr_reader city_zh: String?
516
+ attr_reader district_en: String?
517
+ attr_reader district_zh: String?
518
+
519
+ def self.new: (
520
+ city: String,
521
+ region: String,
522
+ district: String,
523
+ region_code: String,
524
+ adcode: String,
525
+ country: String,
526
+ country_code: String,
527
+ continent: String,
528
+ continent_code: String,
529
+ latitude: Float?,
530
+ longitude: Float?,
531
+ timezone: String,
532
+ postal_code: String,
533
+ radius: Float?,
534
+ area_code: String?,
535
+ plus_code: String?,
536
+ country_en: String?,
537
+ country_zh: String?,
538
+ region_en: String?,
539
+ region_zh: String?,
540
+ city_en: String?,
541
+ city_zh: String?,
542
+ district_en: String?,
543
+ district_zh: String?
544
+ ) -> instance
545
+ end
546
+
547
+ class TimeZone < Data
548
+ attr_reader name: String
549
+ attr_reader abbr: String
550
+ attr_reader offset: String
551
+ attr_reader is_dst: bool
552
+ attr_reader current_time: String
553
+
554
+ def self.new: (name: String, abbr: String, offset: String, is_dst: bool, current_time: String) -> instance
555
+ end
556
+
557
+ class GeoIpData < Data
558
+ attr_reader as: GeoIpAs
559
+ attr_reader ip: String
560
+ attr_reader geo: Geolocation
561
+ attr_reader netmask: String
562
+ attr_reader prefix_length: Integer?
563
+ attr_reader is_bogon: bool
564
+ attr_reader currency: Currency?
565
+ attr_reader time_zone: TimeZone?
566
+ attr_reader calling_code: String?
567
+
568
+ def self.new: (as: GeoIpAs, ip: String, geo: Geolocation, netmask: String, prefix_length: Integer?, is_bogon: bool, currency: Currency?, time_zone: TimeZone?, calling_code: String?) -> instance
569
+ end
570
+
571
+ class GeoIpResponse < Data
572
+ attr_reader status: bool
573
+ attr_reader data: GeoIpData
574
+
575
+ def self.new: (status: bool, data: GeoIpData) -> instance
576
+ end
577
+
578
+ class IntelligenceAs < Data
579
+ attr_reader asn: String
580
+ attr_reader name: String
581
+ attr_reader name_en: String?
582
+ attr_reader country_code: String?
583
+ attr_reader domain: String
584
+ attr_reader type: String
585
+ attr_reader as_class: String?
586
+ attr_reader tags: Array[String]?
587
+ attr_reader connectivity: AsnConnectivity?
588
+
589
+ def self.new: (asn: String, name: String, name_en: String?, country_code: String?, domain: String, type: String, as_class: String?, tags: Array[String]?, connectivity: AsnConnectivity?) -> instance
590
+ end
591
+
592
+ class MobileCarrier < Data
593
+ attr_reader mcc: String
594
+ attr_reader mnc: String
595
+ attr_reader brand: String
596
+
597
+ def self.new: (mcc: String, mnc: String, brand: String) -> instance
598
+ end
599
+
600
+ class NetworkClassEvidence < Data
601
+ attr_reader network_class: String
602
+ attr_reader source: String
603
+ attr_reader scope: String
604
+ attr_reader value: String
605
+
606
+ def self.new: (network_class: String, source: String, scope: String, value: String) -> instance
607
+ end
608
+
609
+ class NetworkClassification < Data
610
+ attr_reader primary: String
611
+ attr_reader confidence: String
612
+ attr_reader source: String
613
+ attr_reader conflicts: Array[String]
614
+ attr_reader evidence: Array[NetworkClassEvidence]
615
+
616
+ def self.new: (primary: String, confidence: String, source: String, conflicts: Array[String], evidence: Array[NetworkClassEvidence]) -> instance
617
+ end
618
+
619
+ class NetworkInfo < Data
620
+ attr_reader connection_type: String
621
+ attr_reader usage_type: String
622
+ attr_reader address_type: String?
623
+ attr_reader net_speed: String
624
+ attr_reader tags: Array[String]
625
+
626
+ def self.new: (connection_type: String, usage_type: String, address_type: String?, net_speed: String, tags: Array[String]) -> instance
627
+ end
628
+
629
+ class PtrOperator < Data
630
+ attr_reader name: String
631
+ attr_reader asn: String
632
+ attr_reader suffix: String
633
+
634
+ def self.new: (name: String, asn: String, suffix: String) -> instance
635
+ end
636
+
637
+ class PtrHint < Data
638
+ attr_reader value: String
639
+ attr_reader kind: String
640
+
641
+ def self.new: (value: String, kind: String) -> instance
642
+ end
643
+
644
+ class PtrMetroLocation < Data
645
+ attr_reader city: String
646
+ attr_reader region: String?
647
+ attr_reader region_code: String?
648
+ attr_reader country: String
649
+ attr_reader country_code: String
650
+ attr_reader latitude: Float
651
+ attr_reader longitude: Float
652
+ attr_reader precision: String
653
+
654
+ def self.new: (city: String, region: String?, region_code: String?, country: String, country_code: String, latitude: Float, longitude: Float, precision: String) -> instance
655
+ end
656
+
657
+ class PtrConfidence < Data
658
+ attr_reader level: String
659
+ attr_reader score: Float
660
+
661
+ def self.new: (level: String, score: Float) -> instance
662
+ end
663
+
664
+ class PtrEvidenceSource < Data
665
+ attr_reader dataset: String
666
+ attr_reader version: String
667
+
668
+ def self.new: (dataset: String, version: String) -> instance
669
+ end
670
+
671
+ class PtrEvidence < Data
672
+ attr_reader rule_id: String
673
+ attr_reader ruleset_version: String
674
+ attr_reader sources: Array[PtrEvidenceSource]
675
+
676
+ def self.new: (rule_id: String, ruleset_version: String, sources: Array[PtrEvidenceSource]) -> instance
677
+ end
678
+
679
+ module PtrIntelligence
680
+ end
681
+
682
+ class PtrLocatedIntelligence < Data
683
+ include PtrIntelligence
684
+
685
+ attr_reader hostname: String
686
+ attr_reader status: String
687
+ attr_reader operator: PtrOperator
688
+ attr_reader hint: PtrHint
689
+ attr_reader location: PtrMetroLocation
690
+ attr_reader confidence: PtrConfidence
691
+ attr_reader evidence: PtrEvidence
692
+
693
+ def self.new: (hostname: String, status: String, operator: PtrOperator, hint: PtrHint, location: PtrMetroLocation, confidence: PtrConfidence, evidence: PtrEvidence) -> instance
694
+ end
695
+
696
+ class PtrAsnMismatchIntelligence < Data
697
+ include PtrIntelligence
698
+
699
+ attr_reader hostname: String
700
+ attr_reader status: String
701
+ attr_reader operator: PtrOperator
702
+ attr_reader observed_asn: String
703
+ attr_reader evidence: PtrEvidence
704
+
705
+ def self.new: (hostname: String, status: String, operator: PtrOperator, observed_asn: String, evidence: PtrEvidence) -> instance
706
+ end
707
+
708
+ class PtrUnmatchedIntelligence < Data
709
+ include PtrIntelligence
710
+
711
+ attr_reader hostname: String
712
+ attr_reader status: String
713
+
714
+ def self.new: (hostname: String, status: String) -> instance
715
+ end
716
+
717
+ class PtrOtherIntelligence < Data
718
+ include PtrIntelligence
719
+
720
+ attr_reader hostname: String
721
+ attr_reader status: String
722
+
723
+ def self.new: (hostname: String, status: String) -> instance
724
+ end
725
+
726
+ type ptr_intelligence = PtrLocatedIntelligence | PtrAsnMismatchIntelligence | PtrUnmatchedIntelligence | PtrOtherIntelligence
727
+
728
+ class ResourceTransfer < Data
729
+ attr_reader transfer_time: String
730
+ attr_reader transfer_type: String
731
+ attr_reader source_resource: String
732
+ attr_reader recipient_resource: String
733
+ attr_reader source_registry: String
734
+ attr_reader recipient_registry: String
735
+ attr_reader source_holder: String
736
+ attr_reader recipient_holder: String
737
+
738
+ def self.new: (transfer_time: String, transfer_type: String, source_resource: String, recipient_resource: String, source_registry: String, recipient_registry: String, source_holder: String, recipient_holder: String) -> instance
739
+ end
740
+
741
+ class RpkiRtr < Data
742
+ attr_reader source: String
743
+ attr_reader server: String?
744
+ attr_reader last_updated: Integer
745
+
746
+ def self.new: (source: String, server: String?, last_updated: Integer) -> instance
747
+ end
748
+
749
+ class RpkiValidator < Data
750
+ attr_reader source: String
751
+ attr_reader engine: String
752
+ attr_reader last_updated: Integer
753
+
754
+ def self.new: (source: String, engine: String, last_updated: Integer) -> instance
755
+ end
756
+
757
+ class RpkiInfo < Data
758
+ attr_reader status: String
759
+ attr_reader source: String?
760
+ attr_reader route_source: String?
761
+ attr_reader origin_asn: String?
762
+ attr_reader route_prefix: String?
763
+ attr_reader roa_prefix: String?
764
+ attr_reader roa_asn: String?
765
+ attr_reader max_length: Integer?
766
+ attr_reader ta: String?
767
+ attr_reader rtr: RpkiRtr?
768
+ attr_reader validator: RpkiValidator?
769
+
770
+ def self.new: (status: String, source: String?, route_source: String?, origin_asn: String?, route_prefix: String?, roa_prefix: String?, roa_asn: String?, max_length: Integer?, ta: String?, rtr: RpkiRtr?, validator: RpkiValidator?) -> instance
771
+ end
772
+
773
+ class SegmentProbe < Data
774
+ attr_reader ip: String
775
+ attr_reader ports: Array[Integer]
776
+ attr_reader tags: Array[String]
777
+
778
+ def self.new: (ip: String, ports: Array[Integer], tags: Array[String]) -> instance
779
+ end
780
+
781
+ class LiveIntelligence < Data
782
+ attr_reader ptr: Array[ptr_intelligence]
783
+ attr_reader nameservers: Array[String]
784
+ attr_reader cpes: Array[CpeObservation]
785
+ attr_reader tags: Array[String]
786
+ attr_reader revoked_tags: Array[String]
787
+ attr_reader usage_type: String?
788
+ attr_reader rpki: RpkiInfo?
789
+ attr_reader abuse: AbuseReports?
790
+ attr_reader transfers: Array[ResourceTransfer]?
791
+ attr_reader segment_probe: SegmentProbe?
792
+
793
+ def self.new: (ptr: Array[ptr_intelligence], nameservers: Array[String], cpes: Array[CpeObservation], tags: Array[String], revoked_tags: Array[String], usage_type: String?, rpki: RpkiInfo?, abuse: AbuseReports?, transfers: Array[ResourceTransfer]?, segment_probe: SegmentProbe?) -> instance
794
+ end
795
+
796
+ class ThreatScores < Data
797
+ attr_reader vpn_score: Float?
798
+ attr_reader proxy_score: Float?
799
+ attr_reader threat_score: Float?
800
+ attr_reader trust_score: Float?
801
+
802
+ def self.new: (vpn_score: Float?, proxy_score: Float?, threat_score: Float?, trust_score: Float?) -> instance
803
+ end
804
+
805
+ class ThreatInfo < Data
806
+ attr_reader is_tor: bool?
807
+ attr_reader is_vpn: bool?
808
+ attr_reader is_icloud_relay: bool?
809
+ attr_reader is_cloudflare_warp: bool?
810
+ attr_reader is_proxy: bool?
811
+ attr_reader is_datacenter: bool?
812
+ attr_reader is_anonymous: bool?
813
+ attr_reader is_known_attacker: bool?
814
+ attr_reader is_known_abuser: bool?
815
+ attr_reader is_threat: bool?
816
+ attr_reader is_bogon: bool
817
+ attr_reader blocklists: Array[Blocklist]
818
+ attr_reader blocklist_count: Integer
819
+ attr_reader scores: ThreatScores
820
+ attr_reader anonymizer_exemptions: Array[String]?
821
+
822
+ def self.new: (
823
+ is_tor: bool?,
824
+ is_vpn: bool?,
825
+ is_icloud_relay: bool?,
826
+ is_cloudflare_warp: bool?,
827
+ is_proxy: bool?,
828
+ is_datacenter: bool?,
829
+ is_anonymous: bool?,
830
+ is_known_attacker: bool?,
831
+ is_known_abuser: bool?,
832
+ is_threat: bool?,
833
+ is_bogon: bool,
834
+ blocklists: Array[Blocklist],
835
+ blocklist_count: Integer,
836
+ scores: ThreatScores,
837
+ anonymizer_exemptions: Array[String]?
838
+ ) -> instance
839
+ end
840
+
841
+ class IntelligenceData < Data
842
+ attr_reader as: IntelligenceAs
843
+ attr_reader intelligence: LiveIntelligence
844
+ attr_reader ip: String
845
+ attr_reader network: NetworkInfo?
846
+ attr_reader network_class: NetworkClassification
847
+ attr_reader mobile: MobileCarrier?
848
+ attr_reader threat: ThreatInfo?
849
+ attr_reader rpki: RpkiInfo?
850
+ attr_reader company: Company?
851
+ attr_reader abuse: AbuseContact?
852
+ attr_reader dns: DnsRecords?
853
+ attr_reader is_bogon: bool
854
+ attr_reader is_anycast: bool?
855
+ attr_reader is_mobile: bool?
856
+ attr_reader is_hosting: bool?
857
+ attr_reader is_satellite: bool?
858
+
859
+ def self.new: (
860
+ as: IntelligenceAs,
861
+ intelligence: LiveIntelligence,
862
+ ip: String,
863
+ network: NetworkInfo?,
864
+ network_class: NetworkClassification,
865
+ mobile: MobileCarrier?,
866
+ threat: ThreatInfo?,
867
+ rpki: RpkiInfo?,
868
+ company: Company?,
869
+ abuse: AbuseContact?,
870
+ dns: DnsRecords?,
871
+ is_bogon: bool,
872
+ is_anycast: bool?,
873
+ is_mobile: bool?,
874
+ is_hosting: bool?,
875
+ is_satellite: bool?
876
+ ) -> instance
877
+ end
878
+
879
+ class IntelligenceResponse < Data
880
+ attr_reader status: bool
881
+ attr_reader data: IntelligenceData
882
+
883
+ def self.new: (status: bool, data: IntelligenceData) -> instance
884
+ end
885
+
886
+ class LookupRequest < Data
887
+ attr_reader ip: String
888
+
889
+ def self.new: (ip: String) -> instance
890
+ end
891
+ end
892
+ end