1use serde::{Deserialize, Serialize};
2
3pub mod resources;
4
5#[doc(inline)]
6pub use crate::resources::*;
7
8#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
10#[serde(rename_all = "kebab-case")]
11pub enum RipeStatDataType {
12 AbuseContactFinder,
13 AddressSpaceHierarchy,
14 AddressSpaceUsage,
15 AllocationHistory,
16 AnnouncedPrefixes,
17 AsOverview,
18 AsPathLength,
19 AsRoutingConsistency,
20 AsnNeighbours,
21 AsnNeighboursHistory,
22 AtlasProbeDeployment,
23 AtlasProbes,
24 AtlasTargets,
25 BgpState,
26 BgpUpdateActivity,
27 BgpUpdates,
28 Bgplay,
29 CountryAsns,
30 CountryResourceList,
31 CountryResourceStats,
32 DnsChain,
33 HistoricalWhois,
34 IanaRegistryInfo,
35 LookingGlass,
36 MaxmindGeoLite,
37 MaxmindGeoLiteAnnouncedByAs,
38 MeternetBandwidthMeasurements,
39 MlabActivityCount,
40 MlabBandwidth,
41 MlabClients,
42 NetworkInfo,
43 PrefixCount,
44 PrefixOverview,
45 PrefixRoutingConsistency,
46 PrefixSizeDistribution,
47 RelatedPrefixes,
48 ReverseDns,
49 ReverseDnsConsistency,
50 ReverseDnsIp,
51 Rir,
52 RirGeo,
53 RirPrefixSizeDistribution,
54 RirStatsCountry,
55 RisAsns,
56 RisFirstLastSeen,
57 RisFullTableThreshold,
58 RisPeerCount,
59 RisPeerings,
60 RisPeers,
61 RisPrefixes,
62 RoutingHistory,
63 RoutingStatus,
64 RpkiHistory,
65 RpkiValidationStatus,
66 Searchcomplete,
67 SpeedcheckerBandwidthMeasurements,
68 Visibility,
69 Whois,
70 WhoisObjectLastUpdated,
71}
72
73impl RipeStatDataType {
75 pub fn url(&self) -> String {
76 let api_name: &str = match self {
77 Self::AbuseContactFinder => "abuse-contact-finder",
78 Self::AddressSpaceHierarchy => "address-space-hierarchy",
79 Self::AddressSpaceUsage => "address-space-usage",
80 Self::AllocationHistory => "allocation-history",
81 Self::AnnouncedPrefixes => "announced-prefixes",
82 Self::AsOverview => "as-overview",
83 Self::AsPathLength => "as-path-length",
84 Self::AsRoutingConsistency => "as-routing-consistency",
85 Self::AsnNeighbours => "asn-neighbours",
86 Self::AsnNeighboursHistory => "asn-neighbours-history",
87 Self::AtlasProbeDeployment => "atlas-probe-deployment",
88 Self::AtlasProbes => "atlas-probes",
89 Self::AtlasTargets => "atlas-targets",
90 Self::BgpState => "bgp-state",
91 Self::BgpUpdateActivity => "bgp-update-activity",
92 Self::BgpUpdates => "bgp-updates",
93 Self::Bgplay => "bgplay",
94 Self::CountryAsns => "country-asns",
95 Self::CountryResourceList => "country-resource-list",
96 Self::CountryResourceStats => "country-resource-stats",
97 Self::DnsChain => "dns-chain",
98 Self::HistoricalWhois => "historical-whois",
99 Self::IanaRegistryInfo => "iana-registry-info",
100 Self::LookingGlass => "looking-glass",
101 Self::MaxmindGeoLite => "maxmind-geo-lite",
102 Self::MaxmindGeoLiteAnnouncedByAs => "maxmind-geo-lite-announced-by-as",
103 Self::MeternetBandwidthMeasurements => "meternet-bandwidth-measurements",
104 Self::MlabActivityCount => "mlab-activity-count",
105 Self::MlabBandwidth => "mlab-bandwidth",
106 Self::MlabClients => "mlab-clients",
107 Self::NetworkInfo => "network-info",
108 Self::PrefixCount => "prefix-count",
109 Self::PrefixOverview => "prefix-overview",
110 Self::PrefixRoutingConsistency => "prefix-routing-consistency",
111 Self::PrefixSizeDistribution => "prefix-size-distribution",
112 Self::RelatedPrefixes => "related-prefixes",
113 Self::ReverseDns => "reverse-dns",
114 Self::ReverseDnsConsistency => "reverse-dns-consistency",
115 Self::ReverseDnsIp => "reverse-dns-ip",
116 Self::Rir => "rir",
117 Self::RirGeo => "rir-geo",
118 Self::RirPrefixSizeDistribution => "rir-prefix-size-distribution",
119 Self::RirStatsCountry => "rir-stats-country",
120 Self::RisAsns => "ris-asns",
121 Self::RisFirstLastSeen => "ris-first-last-seen",
122 Self::RisFullTableThreshold => "ris-full-table-threshold",
123 Self::RisPeerCount => "ris-peer-count",
124 Self::RisPeerings => "ris-peerings",
125 Self::RisPeers => "ris-peers",
126 Self::RisPrefixes => "ris-prefixes",
127 Self::RoutingHistory => "routing-history",
128 Self::RoutingStatus => "routing-status",
129 Self::RpkiHistory => "rpki-history",
130 Self::RpkiValidationStatus => "rpki-validation-status",
131 Self::Searchcomplete => "searchcomplete",
132 Self::SpeedcheckerBandwidthMeasurements => "speedchecker-bandwidth-measurements",
133 Self::Visibility => "visibility",
134 Self::Whois => "whois",
135 Self::WhoisObjectLastUpdated => "whois-object-last-updated",
136 };
137 format!("https://stat.ripe.net/data/{}/data.json", api_name)
138 }
139}
140
141#[derive(Debug, Serialize, Deserialize, Clone)]
143pub enum RipeStatRequest {
144 AbuseContactFinderRequest(AbuseContactFinderRequest),
145 AddressSpaceHierarchyRequest(AddressSpaceHierarchyRequest),
146 AddressSpaceUsageRequest(AddressSpaceUsageRequest),
147 AllocationHistoryRequest(AllocationHistoryRequest),
148 AnnouncedPrefixesRequest(AnnouncedPrefixesRequest),
149 AsOverviewRequest(AsOverviewRequest),
150 AsPathLengthRequest(AsPathLengthRequest),
151 AsRoutingConsistencyRequest(AsRoutingConsistencyRequest),
152 AsnNeighboursRequest(AsnNeighboursRequest),
153 AsnNeighboursHistoryRequest(AsnNeighboursHistoryRequest),
154 AtlasProbeDeploymentRequest(AtlasProbeDeploymentRequest),
155 AtlasProbesRequest(AtlasProbesRequest),
156 AtlasTargetsRequest(AtlasTargetsRequest),
157 BgpStateRequest(BgpStateRequest),
158 BgpUpdateActivityRequest(BgpUpdateActivityRequest),
159 BgpUpdatesRequest(BgpUpdatesRequest),
160 BgplayRequest(BgplayRequest),
161 CountryAsnsRequest(CountryAsnsRequest),
162 CountryResourceListRequest(CountryResourceListRequest),
163 CountryResourceStatsRequest(CountryResourceStatsRequest),
164 DnsChainRequest(DnsChainRequest),
165 HistoricalWhoisRequest(HistoricalWhoisRequest),
166 IanaRegistryInfoRequest(IanaRegistryInfoRequest),
167 LookingGlassRequest(LookingGlassRequest),
168 MaxmindGeoLiteRequest(MaxmindGeoLiteRequest),
169 MeternetBandwidthMeasurementsRequest(MeternetBandwidthMeasurementsRequest),
170 MlabActivityCountRequest(MlabActivityCountRequest),
171 MlabBandwidthRequest(MlabBandwidthRequest),
172 MlabClientsRequest(MlabClientsRequest),
173 NetworkInfoRequest(NetworkInfoRequest),
174 PrefixCountRequest(PrefixCountRequest),
175 PrefixOverviewRequest(PrefixOverviewRequest),
176 PrefixRoutingConsistencyRequest(PrefixRoutingConsistencyRequest),
177 PrefixSizeDistributionRequest(PrefixSizeDistributionRequest),
178 RelatedPrefixesRequest(RelatedPrefixesRequest),
179 ReverseDnsRequest(ReverseDnsRequest),
180 ReverseDnsConsistencyRequest(ReverseDnsConsistencyRequest),
181 ReverseDnsIpRequest(ReverseDnsIpRequest),
182 RirRequest(RirRequest),
183 RirGeoRequest(RirGeoRequest),
184 RirPrefixSizeDistributionRequest(RirPrefixSizeDistributionRequest),
185 RirStatsCountryRequest(RirStatsCountryRequest),
186 RisAsnsRequest(RisAsnsRequest),
187 RisFirstLastSeenRequest(RisFirstLastSeenRequest),
188 RisFullTableThresholdRequest(RisFullTableThresholdRequest),
189 RisPeerCountRequest(RisPeerCountRequest),
190 RisPeeringsRequest(RisPeeringsRequest),
191 RisPeersRequest(RisPeersRequest),
192 RisPrefixesRequest(RisPrefixesRequest),
193 RoutingHistoryRequest(RoutingHistoryRequest),
194 RoutingStatusRequest(RoutingStatusRequest),
195 RpkiHistoryRequest(RpkiHistoryRequest),
196 RpkiValidationStatusRequest(RpkiValidationStatusRequest),
197 SearchcompleteRequest(SearchcompleteRequest),
198 SpeedcheckerBandwidthMeasurementsRequest(SpeedcheckerBandwidthMeasurementsRequest),
199 VisibilityRequest(VisibilityRequest),
200 WhoisRequest(WhoisRequest),
201 WhoisObjectLastUpdatedRequest(WhoisObjectLastUpdatedRequest),
202}
203
204#[derive(Clone, Debug, PartialEq, Serialize)]
206pub struct RipeStatResponse {
207 pub messages: Vec<Vec<String>>,
208 pub see_also: Vec<Vec<String>>,
209
210 pub build_version: String,
211 pub cached: bool,
212 pub data_call_name: RipeStatDataType,
213 pub data_call_status: String,
214 pub process_time: i64,
215 pub query_id: String,
216 pub server_id: String,
217 pub status: String,
218 pub status_code: i64,
219 pub time: String,
220 pub version: String,
221
222 pub data: RipeStatResponseData,
223}
224
225impl<'de> Deserialize<'de> for RipeStatResponse {
226 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
227 where
228 D: serde::Deserializer<'de>,
229 {
230 #[derive(Deserialize)]
231 pub struct RipeStatResponseInner {
232 pub messages: Vec<Vec<String>>,
233 pub see_also: Vec<Vec<String>>,
234 pub build_version: String,
235 pub cached: bool,
236 pub data_call_name: RipeStatDataType,
237 pub data_call_status: String,
238 pub process_time: i64,
239 pub query_id: String,
240 pub server_id: String,
241 pub status: String,
242 pub status_code: i64,
243 pub time: String,
244 pub version: String,
245 pub data: serde_json::Value,
246 }
247
248 let data = RipeStatResponseInner::deserialize(deserializer)?;
249
250 let payload: RipeStatResponseData = match data.data_call_name {
251 RipeStatDataType::AbuseContactFinder => RipeStatResponseData::AbuseContactFinderResponse(
252 AbuseContactFinderResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
253 ),
254 RipeStatDataType::AddressSpaceHierarchy => RipeStatResponseData::AddressSpaceHierarchyResponse(
255 AddressSpaceHierarchyResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
256 ),
257 RipeStatDataType::AddressSpaceUsage => RipeStatResponseData::AddressSpaceUsageResponse(
258 AddressSpaceUsageResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
259 ),
260 RipeStatDataType::AllocationHistory => RipeStatResponseData::AllocationHistoryResponse(
261 AllocationHistoryResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
262 ),
263 RipeStatDataType::AnnouncedPrefixes => RipeStatResponseData::AnnouncedPrefixesResponse(
264 AnnouncedPrefixesResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
265 ),
266 RipeStatDataType::AsOverview => RipeStatResponseData::AsOverviewResponse(
267 AsOverviewResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
268 ),
269 RipeStatDataType::AsPathLength => RipeStatResponseData::AsPathLengthResponse(
270 AsPathLengthResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
271 ),
272 RipeStatDataType::AsRoutingConsistency => RipeStatResponseData::AsRoutingConsistencyResponse(
273 AsRoutingConsistencyResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
274 ),
275 RipeStatDataType::AsnNeighbours => RipeStatResponseData::AsnNeighboursResponse(
276 AsnNeighboursResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
277 ),
278 RipeStatDataType::AsnNeighboursHistory => RipeStatResponseData::AsnNeighboursHistoryResponse(
279 AsnNeighboursHistoryResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
280 ),
281 RipeStatDataType::AtlasProbeDeployment => RipeStatResponseData::AtlasProbeDeploymentResponse(
282 AtlasProbeDeploymentResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
283 ),
284 RipeStatDataType::AtlasProbes => RipeStatResponseData::AtlasProbesResponse(
285 AtlasProbesResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
286 ),
287 RipeStatDataType::AtlasTargets => RipeStatResponseData::AtlasTargetsResponse(
288 AtlasTargetsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
289 ),
290 RipeStatDataType::BgpState => RipeStatResponseData::BgpStateResponse(
291 BgpStateResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
292 ),
293 RipeStatDataType::BgpUpdateActivity => RipeStatResponseData::BgpUpdateActivityResponse(
294 BgpUpdateActivityResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
295 ),
296 RipeStatDataType::BgpUpdates => RipeStatResponseData::BgpUpdatesResponse(
297 BgpUpdatesResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
298 ),
299 RipeStatDataType::Bgplay => RipeStatResponseData::BgplayResponse(
300 BgplayResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
301 ),
302 RipeStatDataType::CountryAsns => RipeStatResponseData::CountryAsnsResponse(
303 CountryAsnsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
304 ),
305 RipeStatDataType::CountryResourceList => RipeStatResponseData::CountryResourceListResponse(
306 CountryResourceListResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
307 ),
308 RipeStatDataType::CountryResourceStats => RipeStatResponseData::CountryResourceStatsResponse(
309 CountryResourceStatsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
310 ),
311 RipeStatDataType::DnsChain => RipeStatResponseData::DnsChainResponse(
312 DnsChainResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
313 ),
314 RipeStatDataType::HistoricalWhois => RipeStatResponseData::HistoricalWhoisResponse(
315 HistoricalWhoisResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
316 ),
317 RipeStatDataType::IanaRegistryInfo => RipeStatResponseData::IanaRegistryInfoResponse(
318 IanaRegistryInfoResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
319 ),
320 RipeStatDataType::LookingGlass => RipeStatResponseData::LookingGlassResponse(
321 LookingGlassResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
322 ),
323 RipeStatDataType::MaxmindGeoLite => RipeStatResponseData::MaxmindGeoLiteResponse(
324 MaxmindGeoLiteResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
325 ),
326 RipeStatDataType::MaxmindGeoLiteAnnouncedByAs => RipeStatResponseData::MaxmindGeoLiteResponse(
327 MaxmindGeoLiteResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
328 ),
329 RipeStatDataType::MeternetBandwidthMeasurements => RipeStatResponseData::MeternetBandwidthMeasurementsResponse(
330 MeternetBandwidthMeasurementsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
331 ),
332 RipeStatDataType::MlabActivityCount => RipeStatResponseData::MlabActivityCountResponse(
333 MlabActivityCountResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
334 ),
335 RipeStatDataType::MlabBandwidth => RipeStatResponseData::MlabBandwidthResponse(
336 MlabBandwidthResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
337 ),
338 RipeStatDataType::MlabClients => RipeStatResponseData::MlabClientsResponse(
339 MlabClientsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
340 ),
341 RipeStatDataType::NetworkInfo => RipeStatResponseData::NetworkInfoResponse(
342 NetworkInfoResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
343 ),
344 RipeStatDataType::PrefixCount => RipeStatResponseData::PrefixCountResponse(
345 PrefixCountResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
346 ),
347 RipeStatDataType::PrefixOverview => RipeStatResponseData::PrefixOverviewResponse(
348 PrefixOverviewResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
349 ),
350 RipeStatDataType::PrefixRoutingConsistency => RipeStatResponseData::PrefixRoutingConsistencyResponse(
351 PrefixRoutingConsistencyResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
352 ),
353 RipeStatDataType::PrefixSizeDistribution => RipeStatResponseData::PrefixSizeDistributionResponse(
354 PrefixSizeDistributionResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
355 ),
356 RipeStatDataType::RelatedPrefixes => RipeStatResponseData::RelatedPrefixesResponse(
357 RelatedPrefixesResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
358 ),
359 RipeStatDataType::ReverseDns => RipeStatResponseData::ReverseDnsResponse(
360 ReverseDnsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
361 ),
362 RipeStatDataType::ReverseDnsConsistency => RipeStatResponseData::ReverseDnsConsistencyResponse(
363 ReverseDnsConsistencyResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
364 ),
365 RipeStatDataType::ReverseDnsIp => RipeStatResponseData::ReverseDnsIpResponse(
366 ReverseDnsIpResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
367 ),
368 RipeStatDataType::Rir => RipeStatResponseData::RirResponse(
369 RirResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
370 ),
371 RipeStatDataType::RirGeo => RipeStatResponseData::RirGeoResponse(
372 RirGeoResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
373 ),
374 RipeStatDataType::RirPrefixSizeDistribution => RipeStatResponseData::RirPrefixSizeDistributionResponse(
375 RirPrefixSizeDistributionResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
376 ),
377 RipeStatDataType::RirStatsCountry => RipeStatResponseData::RirStatsCountryResponse(
378 RirStatsCountryResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
379 ),
380 RipeStatDataType::RisAsns => RipeStatResponseData::RisAsnsResponse(
381 RisAsnsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
382 ),
383 RipeStatDataType::RisFirstLastSeen => RipeStatResponseData::RisFirstLastSeenResponse(
384 RisFirstLastSeenResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
385 ),
386 RipeStatDataType::RisFullTableThreshold => RipeStatResponseData::RisFullTableThresholdResponse(
387 RisFullTableThresholdResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
388 ),
389 RipeStatDataType::RisPeerCount => RipeStatResponseData::RisPeerCountResponse(
390 RisPeerCountResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
391 ),
392 RipeStatDataType::RisPeerings => RipeStatResponseData::RisPeeringsResponse(
393 RisPeeringsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
394 ),
395 RipeStatDataType::RisPeers => RipeStatResponseData::RisPeersResponse(
396 RisPeersResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
397 ),
398 RipeStatDataType::RisPrefixes => RipeStatResponseData::RisPrefixesResponse(
399 RisPrefixesResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
400 ),
401 RipeStatDataType::RoutingHistory => RipeStatResponseData::RoutingHistoryResponse(
402 RoutingHistoryResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
403 ),
404 RipeStatDataType::RoutingStatus => RipeStatResponseData::RoutingStatusResponse(
405 RoutingStatusResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
406 ),
407 RipeStatDataType::RpkiHistory => RipeStatResponseData::RpkiHistoryResponse(
408 RpkiHistoryResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
409 ),
410 RipeStatDataType::RpkiValidationStatus => RipeStatResponseData::RpkiValidationStatusResponse(
411 RpkiValidationStatusResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
412 ),
413 RipeStatDataType::Searchcomplete => RipeStatResponseData::SearchcompleteResponse(
414 SearchcompleteResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
415 ),
416 RipeStatDataType::SpeedcheckerBandwidthMeasurements => RipeStatResponseData::SpeedcheckerBandwidthMeasurementsResponse(
417 SpeedcheckerBandwidthMeasurementsResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
418 ),
419 RipeStatDataType::Visibility => RipeStatResponseData::VisibilityResponse(
420 VisibilityResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
421 ),
422 RipeStatDataType::Whois => RipeStatResponseData::WhoisResponse(
423 WhoisResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
424 ),
425 RipeStatDataType::WhoisObjectLastUpdated => RipeStatResponseData::WhoisObjectLastUpdatedResponse(
426 WhoisObjectLastUpdatedResponse::deserialize(data.data).map_err(serde::de::Error::custom)?,
427 ),
428 };
429
430 Ok(RipeStatResponse {
431 messages: data.messages,
432 see_also: data.see_also,
433 build_version: data.build_version,
434 cached: data.cached,
435 data_call_name: data.data_call_name,
436 data_call_status: data.data_call_status,
437 process_time: data.process_time,
438 query_id: data.query_id,
439 server_id: data.server_id,
440 status: data.status,
441 status_code: data.status_code,
442 time: data.time,
443 version: data.version,
444 data: payload,
445 })
446 }
447}
448
449#[derive(Clone, Debug, PartialEq, Serialize)]
450pub enum RipeStatResponseData {
451 AbuseContactFinderResponse(AbuseContactFinderResponse),
452 AddressSpaceHierarchyResponse(AddressSpaceHierarchyResponse),
453 AddressSpaceUsageResponse(AddressSpaceUsageResponse),
454 AllocationHistoryResponse(AllocationHistoryResponse),
455 AnnouncedPrefixesResponse(AnnouncedPrefixesResponse),
456 AsOverviewResponse(AsOverviewResponse),
457 AsPathLengthResponse(AsPathLengthResponse),
458 AsRoutingConsistencyResponse(AsRoutingConsistencyResponse),
459 AsnNeighboursResponse(AsnNeighboursResponse),
460 AsnNeighboursHistoryResponse(AsnNeighboursHistoryResponse),
461 AtlasProbeDeploymentResponse(AtlasProbeDeploymentResponse),
462 AtlasProbesResponse(AtlasProbesResponse),
463 AtlasTargetsResponse(AtlasTargetsResponse),
464 BgpStateResponse(BgpStateResponse),
465 BgpUpdateActivityResponse(BgpUpdateActivityResponse),
466 BgpUpdatesResponse(BgpUpdatesResponse),
467 BgplayResponse(BgplayResponse),
468 CountryAsnsResponse(CountryAsnsResponse),
469 CountryResourceListResponse(CountryResourceListResponse),
470 CountryResourceStatsResponse(CountryResourceStatsResponse),
471 DnsChainResponse(DnsChainResponse),
472 HistoricalWhoisResponse(HistoricalWhoisResponse),
473 IanaRegistryInfoResponse(IanaRegistryInfoResponse),
474 LookingGlassResponse(LookingGlassResponse),
475 MaxmindGeoLiteResponse(MaxmindGeoLiteResponse),
476 MeternetBandwidthMeasurementsResponse(MeternetBandwidthMeasurementsResponse),
477 MlabActivityCountResponse(MlabActivityCountResponse),
478 MlabBandwidthResponse(MlabBandwidthResponse),
479 MlabClientsResponse(MlabClientsResponse),
480 NetworkInfoResponse(NetworkInfoResponse),
481 PrefixCountResponse(PrefixCountResponse),
482 PrefixOverviewResponse(PrefixOverviewResponse),
483 PrefixRoutingConsistencyResponse(PrefixRoutingConsistencyResponse),
484 PrefixSizeDistributionResponse(PrefixSizeDistributionResponse),
485 RelatedPrefixesResponse(RelatedPrefixesResponse),
486 ReverseDnsResponse(ReverseDnsResponse),
487 ReverseDnsConsistencyResponse(ReverseDnsConsistencyResponse),
488 ReverseDnsIpResponse(ReverseDnsIpResponse),
489 RirResponse(RirResponse),
490 RirGeoResponse(RirGeoResponse),
491 RirPrefixSizeDistributionResponse(RirPrefixSizeDistributionResponse),
492 RirStatsCountryResponse(RirStatsCountryResponse),
493 RisAsnsResponse(RisAsnsResponse),
494 RisFirstLastSeenResponse(RisFirstLastSeenResponse),
495 RisFullTableThresholdResponse(RisFullTableThresholdResponse),
496 RisPeerCountResponse(RisPeerCountResponse),
497 RisPeeringsResponse(RisPeeringsResponse),
498 RisPeersResponse(RisPeersResponse),
499 RisPrefixesResponse(RisPrefixesResponse),
500 RoutingHistoryResponse(RoutingHistoryResponse),
501 RoutingStatusResponse(RoutingStatusResponse),
502 RpkiHistoryResponse(RpkiHistoryResponse),
503 RpkiValidationStatusResponse(RpkiValidationStatusResponse),
504 SearchcompleteResponse(SearchcompleteResponse),
505 SpeedcheckerBandwidthMeasurementsResponse(SpeedcheckerBandwidthMeasurementsResponse),
506 VisibilityResponse(VisibilityResponse),
507 WhoisResponse(WhoisResponse),
508 WhoisObjectLastUpdatedResponse(WhoisObjectLastUpdatedResponse),
509}
510
511pub const VERSION: &str = env!("CARGO_PKG_VERSION");