synthient 1.0.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.
@@ -0,0 +1,555 @@
1
+ # Generated by `rake sig` from the model definitions. Do not edit.
2
+
3
+ module Synthient
4
+ module Cadence
5
+ BURST_DRIVEN: String
6
+ BUSINESS_HOURS: String
7
+ EVENLY_DISTRIBUTED: String
8
+ NO_ACTIVITY: String
9
+ WEEKEND: String
10
+ end
11
+
12
+ module DomainStatus
13
+ ACTIVE: String
14
+ INACTIVE: String
15
+ end
16
+
17
+ module ExportKind
18
+ DAILY: String
19
+ HOURLY: String
20
+ end
21
+
22
+ module NetworkType
23
+ ACADEMIC: String
24
+ CORPORATE: String
25
+ DATACENTER: String
26
+ GOVERNMENT: String
27
+ IN_FLIGHT_WIFI: String
28
+ MOBILE: String
29
+ RESIDENTIAL: String
30
+ SATELLITE: String
31
+ end
32
+
33
+ module OS
34
+ ANDROID: String
35
+ CHROME_OS: String
36
+ FREEBSD: String
37
+ IOS: String
38
+ LINUX: String
39
+ MAC_OS_X: String
40
+ WINDOWS: String
41
+ end
42
+
43
+ module ParquetType
44
+ BOOL: String
45
+ BYTES: String
46
+ INT64: String
47
+ STRING: String
48
+ UINT32: String
49
+ UINT64: String
50
+ end
51
+
52
+ module ProxyType
53
+ AI_CRAWLER: String
54
+ BLOCKCHAIN_PROXY: String
55
+ BOTNET: String
56
+ COMMERCIAL_VPN: String
57
+ DATACENTER_PROXY: String
58
+ ENTERPRISE_VPN: String
59
+ FREE_VPN: String
60
+ INTERNET_SCANNER: String
61
+ LINK_PREVIEW: String
62
+ MOBILE_PROXY: String
63
+ PAYMENT_PROCESSOR: String
64
+ PRIVATE_RELAY: String
65
+ PUBLIC_PROXY: String
66
+ RESIDENTIAL_PROXY: String
67
+ SEARCH_ENGINE: String
68
+ SEO_CRAWLER: String
69
+ SOCIAL_MEDIA: String
70
+ TOR_NODE: String
71
+ UPTIME_MONITOR: String
72
+ WEBHOOK_PROVIDER: String
73
+ WEB_ARCHIVER: String
74
+ end
75
+
76
+ module Relation
77
+ ADMIN: String
78
+ MEMBER: String
79
+ OWNER: String
80
+ end
81
+
82
+ module Scope
83
+ ADMIN_PROXIES: String
84
+ ANONYMIZERS_FEED: String
85
+ ANONYMIZERS_STREAM: String
86
+ BASIC: String
87
+ HONEYPOT_ADB_FEED: String
88
+ HONEYPOT_ADB_STREAM: String
89
+ HONEYPOT_DNS_FEED: String
90
+ HONEYPOT_DNS_STREAM: String
91
+ HONEYPOT_HTTPS_FEED: String
92
+ HONEYPOT_HTTPS_STREAM: String
93
+ HONEYPOT_HTTP_FEED: String
94
+ HONEYPOT_HTTP_STREAM: String
95
+ JA3_FEED: String
96
+ JA3_STREAM: String
97
+ JA4T_FEED: String
98
+ JA4T_STREAM: String
99
+ JA4_FEED: String
100
+ JA4_STREAM: String
101
+ PROXY_FEEDS: String
102
+ PROXY_FIREHOSE: String
103
+ TORRENTS_FEED: String
104
+ TORRENTS_STREAM: String
105
+ end
106
+
107
+ class ASNCount < Data
108
+ attr_reader asn: Integer
109
+ attr_reader events: Integer
110
+ def self.new: (asn: Integer, events: Integer) -> instance
111
+ def initialize: (asn: Integer, events: Integer) -> void
112
+ def with: (?asn: Integer, ?events: Integer) -> instance
113
+ end
114
+
115
+ class Account < Data
116
+ attr_reader email: String
117
+ attr_reader first_name: String
118
+ attr_reader last_name: String
119
+ attr_reader organization: Organization
120
+ attr_reader scopes: Array[String]
121
+ attr_reader lookup_quota: LookupQuota
122
+ attr_reader api_key: AccountAPIKey?
123
+ def self.new: (email: String, first_name: String, last_name: String, organization: Organization, scopes: Array[String], lookup_quota: LookupQuota, ?api_key: AccountAPIKey?) -> instance
124
+ def initialize: (email: String, first_name: String, last_name: String, organization: Organization, scopes: Array[String], lookup_quota: LookupQuota, ?api_key: AccountAPIKey?) -> void
125
+ def with: (?email: String, ?first_name: String, ?last_name: String, ?organization: Organization, ?scopes: Array[String], ?lookup_quota: LookupQuota, ?api_key: AccountAPIKey?) -> instance
126
+ end
127
+
128
+ class AccountAPIKey < Data
129
+ attr_reader id: String
130
+ attr_reader name: String
131
+ attr_reader created_at: Time
132
+ def self.new: (id: String, name: String, created_at: Time) -> instance
133
+ def initialize: (id: String, name: String, created_at: Time) -> void
134
+ def with: (?id: String, ?name: String, ?created_at: Time) -> instance
135
+ end
136
+
137
+ class ActivityStats < Data
138
+ attr_reader cadence: String
139
+ attr_reader median_per_hour: Integer
140
+ attr_reader p95_per_hour: Integer
141
+ attr_reader peak_hour: Integer
142
+ attr_reader quiet_hour: Integer
143
+ def self.new: (cadence: String, median_per_hour: Integer, p95_per_hour: Integer, peak_hour: Integer, quiet_hour: Integer) -> instance
144
+ def initialize: (cadence: String, median_per_hour: Integer, p95_per_hour: Integer, peak_hour: Integer, quiet_hour: Integer) -> void
145
+ def with: (?cadence: String, ?median_per_hour: Integer, ?p95_per_hour: Integer, ?peak_hour: Integer, ?quiet_hour: Integer) -> instance
146
+ end
147
+
148
+ class AnonymizerEvent < Data
149
+ attr_reader range_start: String?
150
+ attr_reader range_end: String?
151
+ attr_reader provider: String?
152
+ attr_reader type: String?
153
+ attr_reader country_code: String?
154
+ attr_reader asn: Integer?
155
+ attr_reader timestamp: Time?
156
+ def self.new: (?range_start: String?, ?range_end: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> instance
157
+ def initialize: (?range_start: String?, ?range_end: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> void
158
+ def with: (?range_start: String?, ?range_end: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> instance
159
+ end
160
+
161
+ class CountryCount < Data
162
+ attr_reader country_code: String
163
+ attr_reader events: Integer
164
+ attr_reader unique_ips: Integer
165
+ def self.new: (country_code: String, events: Integer, unique_ips: Integer) -> instance
166
+ def initialize: (country_code: String, events: Integer, unique_ips: Integer) -> void
167
+ def with: (?country_code: String, ?events: Integer, ?unique_ips: Integer) -> instance
168
+ end
169
+
170
+ class Device < Data
171
+ attr_reader os: String
172
+ attr_reader version: String
173
+ attr_reader last_seen: Time
174
+ def self.new: (os: String, version: String, last_seen: Time) -> instance
175
+ def initialize: (os: String, version: String, last_seen: Time) -> void
176
+ def with: (?os: String, ?version: String, ?last_seen: Time) -> instance
177
+ end
178
+
179
+ class DomainEvent < Data
180
+ attr_reader timestamp: Time
181
+ attr_reader source_ip: String
182
+ attr_reader target_subdomain: String
183
+ attr_reader country_code: String
184
+ attr_reader port: Integer
185
+ def self.new: (timestamp: Time, source_ip: String, target_subdomain: String, country_code: String, port: Integer) -> instance
186
+ def initialize: (timestamp: Time, source_ip: String, target_subdomain: String, country_code: String, port: Integer) -> void
187
+ def with: (?timestamp: Time, ?source_ip: String, ?target_subdomain: String, ?country_code: String, ?port: Integer) -> instance
188
+ end
189
+
190
+ class DomainInfo < Data
191
+ attr_reader domain: String
192
+ attr_reader status: String
193
+ attr_reader stats: DomainStats
194
+ attr_reader unique_ips: UniqueIPs
195
+ attr_reader time_series: Array[TimeSeriesPoint]
196
+ attr_reader top_asn: ASNCount?
197
+ attr_reader top_subdomains: Array[SubdomainCount]
198
+ attr_reader top_ports: Array[PortCount]
199
+ attr_reader geo_distribution: Array[CountryCount]
200
+ attr_reader hour_dow_heatmap: Array[Array[Integer]]
201
+ attr_reader activity_stats: ActivityStats
202
+ attr_reader recent_events: Array[DomainEvent]
203
+ def self.new: (domain: String, status: String, stats: DomainStats, unique_ips: UniqueIPs, time_series: Array[TimeSeriesPoint], ?top_asn: ASNCount?, top_subdomains: Array[SubdomainCount], top_ports: Array[PortCount], geo_distribution: Array[CountryCount], hour_dow_heatmap: Array[Array[Integer]], activity_stats: ActivityStats, recent_events: Array[DomainEvent]) -> instance
204
+ def initialize: (domain: String, status: String, stats: DomainStats, unique_ips: UniqueIPs, time_series: Array[TimeSeriesPoint], ?top_asn: ASNCount?, top_subdomains: Array[SubdomainCount], top_ports: Array[PortCount], geo_distribution: Array[CountryCount], hour_dow_heatmap: Array[Array[Integer]], activity_stats: ActivityStats, recent_events: Array[DomainEvent]) -> void
205
+ def with: (?domain: String, ?status: String, ?stats: DomainStats, ?unique_ips: UniqueIPs, ?time_series: Array[TimeSeriesPoint], ?top_asn: ASNCount?, ?top_subdomains: Array[SubdomainCount], ?top_ports: Array[PortCount], ?geo_distribution: Array[CountryCount], ?hour_dow_heatmap: Array[Array[Integer]], ?activity_stats: ActivityStats, ?recent_events: Array[DomainEvent]) -> instance
206
+ end
207
+
208
+ class DomainStats < Data
209
+ attr_reader events_24h: Integer
210
+ attr_reader total_events_30d: Integer
211
+ def self.new: (events_24h: Integer, total_events_30d: Integer) -> instance
212
+ def initialize: (events_24h: Integer, total_events_30d: Integer) -> void
213
+ def with: (?events_24h: Integer, ?total_events_30d: Integer) -> instance
214
+ end
215
+
216
+ class Export < Data
217
+ attr_reader id: String
218
+ attr_reader kind: String
219
+ attr_reader date: Date
220
+ attr_reader hour: Integer?
221
+ attr_reader size_bytes: Integer
222
+ attr_reader row_count: Integer
223
+ attr_reader checksum: String
224
+ attr_reader created_at: Time
225
+ attr_reader download_path: String
226
+ def self.new: (id: String, kind: String, date: Date, ?hour: Integer?, size_bytes: Integer, row_count: Integer, checksum: String, created_at: Time, download_path: String) -> instance
227
+ def initialize: (id: String, kind: String, date: Date, ?hour: Integer?, size_bytes: Integer, row_count: Integer, checksum: String, created_at: Time, download_path: String) -> void
228
+ def with: (?id: String, ?kind: String, ?date: Date, ?hour: Integer?, ?size_bytes: Integer, ?row_count: Integer, ?checksum: String, ?created_at: Time, ?download_path: String) -> instance
229
+ end
230
+
231
+ class ExportMeta < Data
232
+ attr_reader id: String
233
+ attr_reader stream: String
234
+ attr_reader kind: String
235
+ attr_reader format: String
236
+ attr_reader date: Time
237
+ attr_reader hour: Integer?
238
+ attr_reader rows: Integer
239
+ attr_reader size: Integer
240
+ attr_reader checksum: String
241
+ attr_reader created_at: Time
242
+ attr_reader schema: ParquetSchema
243
+ def self.new: (id: String, stream: String, kind: String, format: String, date: Time, ?hour: Integer?, rows: Integer, size: Integer, checksum: String, created_at: Time, schema: ParquetSchema) -> instance
244
+ def initialize: (id: String, stream: String, kind: String, format: String, date: Time, ?hour: Integer?, rows: Integer, size: Integer, checksum: String, created_at: Time, schema: ParquetSchema) -> void
245
+ def with: (?id: String, ?stream: String, ?kind: String, ?format: String, ?date: Time, ?hour: Integer?, ?rows: Integer, ?size: Integer, ?checksum: String, ?created_at: Time, ?schema: ParquetSchema) -> instance
246
+ end
247
+
248
+ class ExportPage < Data
249
+ attr_reader stream: String
250
+ attr_reader exports: Array[Export]
251
+ attr_reader next_cursor: String?
252
+ def self.new: (stream: String, exports: Array[Export], ?next_cursor: String?) -> instance
253
+ def initialize: (stream: String, exports: Array[Export], ?next_cursor: String?) -> void
254
+ def with: (?stream: String, ?exports: Array[Export], ?next_cursor: String?) -> instance
255
+ end
256
+
257
+ class HTTPRequestDetails < Data
258
+ attr_reader http_method: String?
259
+ attr_reader uri: String?
260
+ attr_reader version: String?
261
+ attr_reader headers: Hash[String, String]?
262
+ def self.new: (?http_method: String?, ?uri: String?, ?version: String?, ?headers: Hash[String, String]?) -> instance
263
+ def initialize: (?http_method: String?, ?uri: String?, ?version: String?, ?headers: Hash[String, String]?) -> void
264
+ def with: (?http_method: String?, ?uri: String?, ?version: String?, ?headers: Hash[String, String]?) -> instance
265
+ end
266
+
267
+ class HeliosADBEvent < Data
268
+ attr_reader session: String
269
+ attr_reader sequential_id: Integer
270
+ attr_reader command: String
271
+ attr_reader payload_hash: String
272
+ def self.new: (session: String, sequential_id: Integer, command: String, payload_hash: String) -> instance
273
+ def initialize: (session: String, sequential_id: Integer, command: String, payload_hash: String) -> void
274
+ def with: (?session: String, ?sequential_id: Integer, ?command: String, ?payload_hash: String) -> instance
275
+ end
276
+
277
+ class HeliosDNSEvent < Data
278
+ attr_reader timestamp: Time
279
+ attr_reader tunnel_id: Integer
280
+ attr_reader domain: String
281
+ attr_reader port: Integer
282
+ attr_reader protocol: String
283
+ attr_reader meta: HeliosMeta
284
+ def self.new: (timestamp: Time, tunnel_id: Integer, domain: String, port: Integer, protocol: String, meta: HeliosMeta) -> instance
285
+ def initialize: (timestamp: Time, tunnel_id: Integer, domain: String, port: Integer, protocol: String, meta: HeliosMeta) -> void
286
+ def with: (?timestamp: Time, ?tunnel_id: Integer, ?domain: String, ?port: Integer, ?protocol: String, ?meta: HeliosMeta) -> instance
287
+ end
288
+
289
+ class HeliosHTTPEvent < Data
290
+ attr_reader timestamp: Time
291
+ attr_reader tunnel_id: Integer
292
+ attr_reader domain: String
293
+ attr_reader port: Integer
294
+ attr_reader protocol: String
295
+ attr_reader meta: HeliosMeta
296
+ attr_reader details: HTTPRequestDetails?
297
+ attr_reader raw: String?
298
+ def self.new: (timestamp: Time, tunnel_id: Integer, domain: String, port: Integer, protocol: String, meta: HeliosMeta, ?details: HTTPRequestDetails?, ?raw: String?) -> instance
299
+ def initialize: (timestamp: Time, tunnel_id: Integer, domain: String, port: Integer, protocol: String, meta: HeliosMeta, ?details: HTTPRequestDetails?, ?raw: String?) -> void
300
+ def with: (?timestamp: Time, ?tunnel_id: Integer, ?domain: String, ?port: Integer, ?protocol: String, ?meta: HeliosMeta, ?details: HTTPRequestDetails?, ?raw: String?) -> instance
301
+ end
302
+
303
+ class HeliosHTTPSEvent < Data
304
+ attr_reader timestamp: Time
305
+ attr_reader tunnel_id: Integer
306
+ attr_reader domain: String
307
+ attr_reader port: Integer
308
+ attr_reader protocol: String
309
+ attr_reader meta: HeliosMeta
310
+ attr_reader details: TLSClientHello?
311
+ attr_reader raw: String?
312
+ def self.new: (timestamp: Time, tunnel_id: Integer, domain: String, port: Integer, protocol: String, meta: HeliosMeta, ?details: TLSClientHello?, ?raw: String?) -> instance
313
+ def initialize: (timestamp: Time, tunnel_id: Integer, domain: String, port: Integer, protocol: String, meta: HeliosMeta, ?details: TLSClientHello?, ?raw: String?) -> void
314
+ def with: (?timestamp: Time, ?tunnel_id: Integer, ?domain: String, ?port: Integer, ?protocol: String, ?meta: HeliosMeta, ?details: TLSClientHello?, ?raw: String?) -> instance
315
+ end
316
+
317
+ class HeliosMeta < Data
318
+ attr_reader proxy_ip: String?
319
+ attr_reader server: String?
320
+ attr_reader pool_id: String?
321
+ attr_reader provider: String?
322
+ def self.new: (?proxy_ip: String?, ?server: String?, ?pool_id: String?, ?provider: String?) -> instance
323
+ def initialize: (?proxy_ip: String?, ?server: String?, ?pool_id: String?, ?provider: String?) -> void
324
+ def with: (?proxy_ip: String?, ?server: String?, ?pool_id: String?, ?provider: String?) -> instance
325
+ end
326
+
327
+ class IPInfo < Data
328
+ attr_reader ip: IPAddr
329
+ attr_reader network: Network?
330
+ attr_reader location: Location?
331
+ attr_reader intelligence: Intelligence?
332
+ def self.new: (ip: IPAddr, ?network: Network?, ?location: Location?, ?intelligence: Intelligence?) -> instance
333
+ def initialize: (ip: IPAddr, ?network: Network?, ?location: Location?, ?intelligence: Intelligence?) -> void
334
+ def with: (?ip: IPAddr, ?network: Network?, ?location: Location?, ?intelligence: Intelligence?) -> instance
335
+ end
336
+
337
+ class Intelligence < Data
338
+ attr_reader risk_score: Integer
339
+ attr_reader categories: Array[String]
340
+ attr_reader behavior: Array[String]
341
+ attr_reader providers: Array[Provider]
342
+ attr_reader devices: Array[Device]
343
+ def self.new: (risk_score: Integer, categories: Array[String], behavior: Array[String], providers: Array[Provider], devices: Array[Device]) -> instance
344
+ def initialize: (risk_score: Integer, categories: Array[String], behavior: Array[String], providers: Array[Provider], devices: Array[Device]) -> void
345
+ def with: (?risk_score: Integer, ?categories: Array[String], ?behavior: Array[String], ?providers: Array[Provider], ?devices: Array[Device]) -> instance
346
+ end
347
+
348
+ class JA4TEvent < Data
349
+ attr_reader ip: String?
350
+ attr_reader ja4t: String?
351
+ attr_reader provider: String?
352
+ attr_reader type: String?
353
+ attr_reader country_code: String?
354
+ attr_reader asn: Integer?
355
+ attr_reader timestamp: Time?
356
+ def self.new: (?ip: String?, ?ja4t: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> instance
357
+ def initialize: (?ip: String?, ?ja4t: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> void
358
+ def with: (?ip: String?, ?ja4t: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> instance
359
+ end
360
+
361
+ class Location < Data
362
+ attr_reader country: String
363
+ attr_reader state: String
364
+ attr_reader city: String
365
+ attr_reader timezone: String
366
+ attr_reader latitude: Float
367
+ attr_reader longitude: Float
368
+ attr_reader geo_hash: String
369
+ def self.new: (country: String, state: String, city: String, timezone: String, latitude: Float, longitude: Float, geo_hash: String) -> instance
370
+ def initialize: (country: String, state: String, city: String, timezone: String, latitude: Float, longitude: Float, geo_hash: String) -> void
371
+ def with: (?country: String, ?state: String, ?city: String, ?timezone: String, ?latitude: Float, ?longitude: Float, ?geo_hash: String) -> instance
372
+ end
373
+
374
+ class LookupQuota < Data
375
+ attr_reader credits: Integer
376
+ attr_reader resets_in: Integer
377
+ def self.new: (credits: Integer, resets_in: Integer) -> instance
378
+ def initialize: (credits: Integer, resets_in: Integer) -> void
379
+ def with: (?credits: Integer, ?resets_in: Integer) -> instance
380
+ end
381
+
382
+ class Network < Data
383
+ attr_reader asn: Integer
384
+ attr_reader isp: String
385
+ attr_reader org: String?
386
+ attr_reader domain: String?
387
+ attr_reader type: String
388
+ attr_reader abuse_email: String?
389
+ attr_reader abuse_phone: String?
390
+ def self.new: (asn: Integer, isp: String, ?org: String?, ?domain: String?, type: String, ?abuse_email: String?, ?abuse_phone: String?) -> instance
391
+ def initialize: (asn: Integer, isp: String, ?org: String?, ?domain: String?, type: String, ?abuse_email: String?, ?abuse_phone: String?) -> void
392
+ def with: (?asn: Integer, ?isp: String, ?org: String?, ?domain: String?, ?type: String, ?abuse_email: String?, ?abuse_phone: String?) -> instance
393
+ end
394
+
395
+ class Organization < Data
396
+ attr_reader id: String
397
+ attr_reader name: String
398
+ attr_reader relation: String
399
+ def self.new: (id: String, name: String, relation: String) -> instance
400
+ def initialize: (id: String, name: String, relation: String) -> void
401
+ def with: (?id: String, ?name: String, ?relation: String) -> instance
402
+ end
403
+
404
+ class ParquetColumn < Data
405
+ attr_reader name: String
406
+ attr_reader type: String
407
+ def self.new: (name: String, type: String) -> instance
408
+ def initialize: (name: String, type: String) -> void
409
+ def with: (?name: String, ?type: String) -> instance
410
+ end
411
+
412
+ class ParquetSchema < Data
413
+ attr_reader fields: Array[ParquetColumn]
414
+ def self.new: (fields: Array[ParquetColumn]) -> instance
415
+ def initialize: (fields: Array[ParquetColumn]) -> void
416
+ def with: (?fields: Array[ParquetColumn]) -> instance
417
+ end
418
+
419
+ class PortCount < Data
420
+ attr_reader port: Integer
421
+ attr_reader count: Integer
422
+ def self.new: (port: Integer, count: Integer) -> instance
423
+ def initialize: (port: Integer, count: Integer) -> void
424
+ def with: (?port: Integer, ?count: Integer) -> instance
425
+ end
426
+
427
+ class Provider < Data
428
+ attr_reader name: String
429
+ attr_reader type: String
430
+ attr_reader last_seen: Time
431
+ def self.new: (name: String, type: String, last_seen: Time) -> instance
432
+ def initialize: (name: String, type: String, last_seen: Time) -> void
433
+ def with: (?name: String, ?type: String, ?last_seen: Time) -> instance
434
+ end
435
+
436
+ class ProxyEvent < Data
437
+ attr_reader ip: String?
438
+ attr_reader provider: String?
439
+ attr_reader type: String?
440
+ attr_reader country_code: String?
441
+ attr_reader asn: Integer?
442
+ attr_reader timestamp: Time?
443
+ def self.new: (?ip: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> instance
444
+ def initialize: (?ip: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> void
445
+ def with: (?ip: String?, ?provider: String?, ?type: String?, ?country_code: String?, ?asn: Integer?, ?timestamp: Time?) -> instance
446
+ end
447
+
448
+ class SubdomainCount < Data
449
+ attr_reader subdomain: String
450
+ attr_reader count: Integer
451
+ def self.new: (subdomain: String, count: Integer) -> instance
452
+ def initialize: (subdomain: String, count: Integer) -> void
453
+ def with: (?subdomain: String, ?count: Integer) -> instance
454
+ end
455
+
456
+ class TLSClientHello < Data
457
+ attr_reader record_version: String?
458
+ attr_reader handshake_version: String?
459
+ attr_reader client_random: String?
460
+ attr_reader session_id: String?
461
+ attr_reader session_id_length: Integer?
462
+ attr_reader cipher_suites: Array[TLSCodeName]?
463
+ attr_reader compression_methods: Array[Integer]?
464
+ attr_reader extensions: Array[TLSExtension]?
465
+ attr_reader sni: String?
466
+ attr_reader alpn: Array[String]?
467
+ attr_reader supported_versions: Array[String]?
468
+ attr_reader supported_groups: Array[TLSCodeName]?
469
+ attr_reader signature_algorithms: Array[TLSCodeName]?
470
+ attr_reader ec_point_formats: Array[String]?
471
+ attr_reader key_share_groups: Array[String]?
472
+ attr_reader psk_key_exchange_modes: Array[String]?
473
+ attr_reader compress_certificate: Array[String]?
474
+ attr_reader has_grease: bool?
475
+ attr_reader application_settings: bool?
476
+ attr_reader delegated_credentials: bool?
477
+ attr_reader encrypt_then_mac: bool?
478
+ attr_reader extended_master_secret: bool?
479
+ attr_reader post_handshake_auth: bool?
480
+ attr_reader renegotiation_info: bool?
481
+ attr_reader signed_certificate_timestamps: bool?
482
+ attr_reader status_request: bool?
483
+ def self.new: (?record_version: String?, ?handshake_version: String?, ?client_random: String?, ?session_id: String?, ?session_id_length: Integer?, ?cipher_suites: Array[TLSCodeName]?, ?compression_methods: Array[Integer]?, ?extensions: Array[TLSExtension]?, ?sni: String?, ?alpn: Array[String]?, ?supported_versions: Array[String]?, ?supported_groups: Array[TLSCodeName]?, ?signature_algorithms: Array[TLSCodeName]?, ?ec_point_formats: Array[String]?, ?key_share_groups: Array[String]?, ?psk_key_exchange_modes: Array[String]?, ?compress_certificate: Array[String]?, ?has_grease: bool?, ?application_settings: bool?, ?delegated_credentials: bool?, ?encrypt_then_mac: bool?, ?extended_master_secret: bool?, ?post_handshake_auth: bool?, ?renegotiation_info: bool?, ?signed_certificate_timestamps: bool?, ?status_request: bool?) -> instance
484
+ def initialize: (?record_version: String?, ?handshake_version: String?, ?client_random: String?, ?session_id: String?, ?session_id_length: Integer?, ?cipher_suites: Array[TLSCodeName]?, ?compression_methods: Array[Integer]?, ?extensions: Array[TLSExtension]?, ?sni: String?, ?alpn: Array[String]?, ?supported_versions: Array[String]?, ?supported_groups: Array[TLSCodeName]?, ?signature_algorithms: Array[TLSCodeName]?, ?ec_point_formats: Array[String]?, ?key_share_groups: Array[String]?, ?psk_key_exchange_modes: Array[String]?, ?compress_certificate: Array[String]?, ?has_grease: bool?, ?application_settings: bool?, ?delegated_credentials: bool?, ?encrypt_then_mac: bool?, ?extended_master_secret: bool?, ?post_handshake_auth: bool?, ?renegotiation_info: bool?, ?signed_certificate_timestamps: bool?, ?status_request: bool?) -> void
485
+ def with: (?record_version: String?, ?handshake_version: String?, ?client_random: String?, ?session_id: String?, ?session_id_length: Integer?, ?cipher_suites: Array[TLSCodeName]?, ?compression_methods: Array[Integer]?, ?extensions: Array[TLSExtension]?, ?sni: String?, ?alpn: Array[String]?, ?supported_versions: Array[String]?, ?supported_groups: Array[TLSCodeName]?, ?signature_algorithms: Array[TLSCodeName]?, ?ec_point_formats: Array[String]?, ?key_share_groups: Array[String]?, ?psk_key_exchange_modes: Array[String]?, ?compress_certificate: Array[String]?, ?has_grease: bool?, ?application_settings: bool?, ?delegated_credentials: bool?, ?encrypt_then_mac: bool?, ?extended_master_secret: bool?, ?post_handshake_auth: bool?, ?renegotiation_info: bool?, ?signed_certificate_timestamps: bool?, ?status_request: bool?) -> instance
486
+ end
487
+
488
+ class TLSCodeName < Data
489
+ attr_reader code: Integer?
490
+ attr_reader name: String?
491
+ def self.new: (?code: Integer?, ?name: String?) -> instance
492
+ def initialize: (?code: Integer?, ?name: String?) -> void
493
+ def with: (?code: Integer?, ?name: String?) -> instance
494
+ end
495
+
496
+ class TLSExtension < Data
497
+ attr_reader code: Integer?
498
+ attr_reader name: String?
499
+ attr_reader length: Integer?
500
+ def self.new: (?code: Integer?, ?name: String?, ?length: Integer?) -> instance
501
+ def initialize: (?code: Integer?, ?name: String?, ?length: Integer?) -> void
502
+ def with: (?code: Integer?, ?name: String?, ?length: Integer?) -> instance
503
+ end
504
+
505
+ class TimeSeriesPoint < Data
506
+ attr_reader date: Time
507
+ attr_reader events: Integer
508
+ attr_reader unique_ips: Integer
509
+ def self.new: (date: Time, events: Integer, unique_ips: Integer) -> instance
510
+ def initialize: (date: Time, events: Integer, unique_ips: Integer) -> void
511
+ def with: (?date: Time, ?events: Integer, ?unique_ips: Integer) -> instance
512
+ end
513
+
514
+ class TorrentEvent < Data
515
+ attr_reader info_hash: String?
516
+ attr_reader name: String?
517
+ attr_reader magnet_uri: String?
518
+ attr_reader total_size: Integer?
519
+ attr_reader piece_length: Integer?
520
+ attr_reader file_count: Integer?
521
+ attr_reader files: Array[TorrentFile]?
522
+ attr_reader peers: Array[TorrentPeer]?
523
+ attr_reader timestamp: Time?
524
+ def self.new: (?info_hash: String?, ?name: String?, ?magnet_uri: String?, ?total_size: Integer?, ?piece_length: Integer?, ?file_count: Integer?, ?files: Array[TorrentFile]?, ?peers: Array[TorrentPeer]?, ?timestamp: Time?) -> instance
525
+ def initialize: (?info_hash: String?, ?name: String?, ?magnet_uri: String?, ?total_size: Integer?, ?piece_length: Integer?, ?file_count: Integer?, ?files: Array[TorrentFile]?, ?peers: Array[TorrentPeer]?, ?timestamp: Time?) -> void
526
+ def with: (?info_hash: String?, ?name: String?, ?magnet_uri: String?, ?total_size: Integer?, ?piece_length: Integer?, ?file_count: Integer?, ?files: Array[TorrentFile]?, ?peers: Array[TorrentPeer]?, ?timestamp: Time?) -> instance
527
+ end
528
+
529
+ class TorrentFile < Data
530
+ attr_reader path: String?
531
+ attr_reader length: Integer?
532
+ def self.new: (?path: String?, ?length: Integer?) -> instance
533
+ def initialize: (?path: String?, ?length: Integer?) -> void
534
+ def with: (?path: String?, ?length: Integer?) -> instance
535
+ end
536
+
537
+ class TorrentPeer < Data
538
+ attr_reader ip: String?
539
+ attr_reader port: Integer?
540
+ attr_reader source: String?
541
+ attr_reader encrypted: bool?
542
+ def self.new: (?ip: String?, ?port: Integer?, ?source: String?, ?encrypted: bool?) -> instance
543
+ def initialize: (?ip: String?, ?port: Integer?, ?source: String?, ?encrypted: bool?) -> void
544
+ def with: (?ip: String?, ?port: Integer?, ?source: String?, ?encrypted: bool?) -> instance
545
+ end
546
+
547
+ class UniqueIPs < Data
548
+ attr_reader value_24h: Integer
549
+ attr_reader value_30d: Integer
550
+ attr_reader sparkline_24h: Array[Integer]
551
+ def self.new: (value_24h: Integer, value_30d: Integer, sparkline_24h: Array[Integer]) -> instance
552
+ def initialize: (value_24h: Integer, value_30d: Integer, sparkline_24h: Array[Integer]) -> void
553
+ def with: (?value_24h: Integer, ?value_30d: Integer, ?sparkline_24h: Array[Integer]) -> instance
554
+ end
555
+ end
data/sig/synthient.rbs ADDED
@@ -0,0 +1,115 @@
1
+ module Synthient
2
+ VERSION: String
3
+ DEFAULT_BASE_URL: String
4
+
5
+ class Error < StandardError
6
+ end
7
+
8
+ class ConnectionError < Error
9
+ end
10
+
11
+ class TimeoutError < ConnectionError
12
+ end
13
+
14
+ class DecodeError < Error
15
+ end
16
+
17
+ class APIError < Error
18
+ STATUS_TEXT: Hash[Integer, String]
19
+
20
+ attr_reader status: Integer
21
+ attr_reader type: String?
22
+ attr_reader title: String?
23
+ attr_reader detail: String?
24
+ attr_reader errors: Hash[String, Array[String]]
25
+ attr_reader request_id: String?
26
+ attr_reader retry_after: Numeric?
27
+
28
+ def initialize: (status: Integer, ?type: String?, ?title: String?, ?detail: String?,
29
+ ?errors: Hash[String, Array[String]], ?request_id: String?, ?retry_after: Numeric?) -> void
30
+ end
31
+
32
+ class RateLimit < Data
33
+ attr_reader limit: Integer
34
+ attr_reader remaining: Integer
35
+ attr_reader reset: Integer
36
+
37
+ def self.new: (limit: Integer, remaining: Integer, reset: Integer) -> instance
38
+ def initialize: (limit: Integer, remaining: Integer, reset: Integer) -> void
39
+ end
40
+
41
+ class ResponseMetadata < Data
42
+ attr_reader status: Integer
43
+ attr_reader request_id: String?
44
+ attr_reader rate_limit: RateLimit?
45
+ attr_reader headers: Hash[String, String]
46
+
47
+ def self.new: (status: Integer, request_id: String?, rate_limit: RateLimit?, headers: Hash[String, String]) -> instance
48
+ def initialize: (status: Integer, request_id: String?, rate_limit: RateLimit?, headers: Hash[String, String]) -> void
49
+ end
50
+
51
+ interface _ResponseHook
52
+ def call: (ResponseMetadata metadata) -> untyped
53
+ end
54
+
55
+ class Client
56
+ MAX_BATCH_SIZE: Integer
57
+
58
+ attr_reader proxies: Feed[ProxyEvent]
59
+ attr_reader anonymizers: Feed[AnonymizerEvent]
60
+ attr_reader torrents: Feed[TorrentEvent]
61
+ attr_reader ja4t: Feed[JA4TEvent]
62
+ attr_reader helios_http: Feed[HeliosHTTPEvent]
63
+ attr_reader helios_https: Feed[HeliosHTTPSEvent]
64
+ attr_reader helios_dns: Feed[HeliosDNSEvent]
65
+ attr_reader helios_adb: Feed[HeliosADBEvent]
66
+
67
+ def initialize: (?api_key: String?, ?base_url: String, ?max_retries: Integer, ?timeout: Numeric,
68
+ ?open_timeout: Numeric, ?user_agent: String?, ?response_hook: _ResponseHook?) -> void
69
+ def lookup_ip: (String | IPAddr ip) -> IPInfo
70
+ def lookup_ips: (Enumerable[String | IPAddr] ips) -> Array[IPInfo]
71
+ def lookup_domain: (String domain, ?limit: Integer?) -> DomainInfo
72
+ def account: () -> Account
73
+ def health: () -> nil
74
+ def close: () -> nil
75
+ end
76
+
77
+ class Feed[E]
78
+ type export_id = String | Date | Time
79
+
80
+ def stream: () { (E event) -> void } -> nil
81
+ | () -> Enumerator[E, nil]
82
+ def list_exports: (?limit: Integer?, ?cursor: String?) -> ExportPage
83
+ def each_export: (?limit: Integer?, ?cursor: String?) { (Export export) -> void } -> nil
84
+ | (?limit: Integer?, ?cursor: String?) -> Enumerator[Export, nil]
85
+ def export_meta: (export_id export) -> ExportMeta
86
+ def download_url: (export_id export) -> URI::HTTP
87
+ def download: (export_id export) { (String chunk) -> void } -> nil
88
+ | (export_id export) -> Enumerator[String, nil]
89
+ end
90
+
91
+ module GRPCSchema
92
+ DEFAULT_ENDPOINT: String
93
+ MAX_MESSAGE_SIZE: Integer
94
+ EXPLANATIONS: Hash[Integer, String]
95
+
96
+ class Schema < Data
97
+ attr_reader endpoint: String
98
+ attr_reader symbols: Array[String]
99
+ attr_reader descriptor_set: untyped
100
+
101
+ def self.new: (endpoint: String, symbols: Array[String], descriptor_set: untyped) -> instance
102
+ def initialize: (endpoint: String, symbols: Array[String], descriptor_set: untyped) -> void
103
+ end
104
+
105
+ class SchemaError < Synthient::Error
106
+ attr_reader code: Integer?
107
+
108
+ def initialize: (?String? message, ?code: Integer?) -> void
109
+ end
110
+
111
+ def self.fetch: (?api_key: String?, ?endpoint: String, ?plaintext: bool, ?symbols: Array[String],
112
+ ?timeout: Numeric) -> Schema
113
+ def self.explain: (untyped error) -> String?
114
+ end
115
+ end