@startuml class "WeightsProbability" { + nickname: String + fingerprint: String + guard_weight_fraction: f64 + middle_weight_fraction: f64 + exit_weight_fraction: f64 + time: String + weights_id: String } class "RelayBandwidth" { + fingerprint: String + write_history: Option + read_history: Option + overload_ratelimits: Option + overload_fd_exhausted: Option } class "BridgeBandwidth" { + fingerprint: String + write_history: Option + read_history: Option + overload_ratelimits: Option + overload_fd_exhausted: Option } class "Response" { + version: &'staticstr + next_major_version_scheduled: Option + build_version: Option<&'staticstr> + relays_published: String + relays: Vec + bridges_published: String + bridges: Vec } class "RelayDetails" { + nickname: String + fingerprint: String + or_addresses: Vec + dir_address: String + last_seen: String + first_seen: String + running: bool + flags: Vec + country: Option + country_name: Option + r#as: Option + as_name: Option + verified_host_names: Vec + last_restarted: String + exit_policy: Vec + contact: Option + platform: Option + version: Option + recommended_version: Option + version_status: Option + effective_family: Vec + alleged_family: Option> + indirect_family: Option> + last_changed_address_or_port: String + hibernating: Option + unverified_host_names: Vec + bandwidth_avg: Option + bandwidth_burst: Option + observed_bandwidth: Option + advertised_bandwidth: Option + overload_general_timestamp: String + overload_fd_exhausted_timestamp: String + diff_or_addresses: String + exit_policy_v6_summary: Option + measured: Option + unreachable_or_addresses: Option> } class "BridgeDetails" { + nickname: String + hashed_fingerprint: String + or_addresses: Vec + last_seen: String + first_seen: String + running: bool + flags: Vec + last_restarted: String + advertised_bandwidth: Option + overload_general_timestamp: String + platform: Option + version: Option + recommended_version: Option + version_status: Option + transports: Vec + blocklist: Vec + bridgedb_distributor: Option } class "ExitNode" { + nickname: String + fingerprint: String + published: String + exit_addresses: Vec } class "RelaySummary" { + n: String + f: String + a: Vec + r: bool } class "BridgeSummary" { + n: String + h: String + r: bool } class "CaseInsensitiveString" { } class "LookupString" { } class "CountryCode" { } class "PositiveOrZeroValue" { } class "Version" { + major: u8 + minor: u8 + micro: u8 + patchlevel: u8 + cvs: Option } class "QueryParams" { + as_name: Option + contact: Option + country: Option + family: Option + fields: Option + first_seen_days: Option + first_seen_since: Option + flag: Option + host_name: Option + last_seen_days: Option + last_seen_since: Option + limit: Option + lookup: Option + offset: Option + order: Option + os: Option + published: Option + r#as: Option + r#type: Option + recommended_version: Option + running: Option + search: Option + version: Option } class "QueryFilters" { + as_name: Option + contact: Option + country: Option + family: Option + fields: Option> + first_seen_days: Option + first_seen_since: Option + flag: Option + host_name: Option + last_seen_days: Option + last_seen_since: Option + limit: Option + lookup: Option + offset: Option + order: Option + os: Option + published: Option + r#as: Option + r#type: Option + recommended_version: Option + running: Option + search: Option + version: Option } class "VmProxyQueryParams" { + r#type: Option + lookup: Option + start: Option + end: Option } class "VmProxyQueryFilters" { + r#type: Option + lookup: Option + start: Option + end: Option } class "ResponseFactory" { } "Option" <-- "CaseInsensitiveString" "QueryFilters" <-- "Option" "Option" <-- "CountryCode" "QueryFilters" <-- "Option" "Option" <-- "CaseInsensitiveString" "QueryFilters" <-- "Option" "Option" <-- "PositiveOrZeroValue" "QueryFilters" <-- "Option" "Option" <-- "LookupString" "QueryFilters" <-- "Option" "Option" <-- "PositiveOrZeroValue" "QueryFilters" <-- "Option" "Option" <-- "CaseInsensitiveString" "QueryFilters" <-- "Option" "Option" <-- "CaseInsensitiveString" "QueryFilters" <-- "Option" "Option" <-- "LookupString" "VmProxyQueryFilters" <-- "Option" @enduml