1use crate::models;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
6pub struct ApiConfig {
7 #[serde(rename = "CampaignStatus")]
9 pub campaign_status: String,
10 #[serde(rename = "DisableBackgroundPreloads")]
12 pub disable_background_preloads: bool,
13 #[serde(rename = "LocationGiftingNonSubPrioEnabled")]
15 pub location_gifting_non_sub_prio_enabled: bool,
16 #[serde(rename = "VoiceEnableDegradation")]
18 pub voice_enable_degradation: bool,
19 #[serde(rename = "VoiceEnableReceiverLimiting")]
21 pub voice_enable_receiver_limiting: bool,
22 #[serde(rename = "accessLogsUrls")]
23 pub access_logs_urls: models::ApiConfigAccessLogsUrls,
24 #[serde(rename = "address")]
26 pub address: String,
27 #[serde(rename = "ageVerificationInviteVisible")]
28 pub age_verification_invite_visible: bool,
29 #[serde(rename = "ageVerificationP")]
30 pub age_verification_p: bool,
31 #[serde(rename = "ageVerificationStatusVisible")]
32 pub age_verification_status_visible: bool,
33 #[serde(rename = "analysisMaxRetries")]
35 pub analysis_max_retries: i32,
36 #[serde(rename = "analysisRetryInterval")]
38 pub analysis_retry_interval: i32,
39 #[serde(rename = "analyticsSegment_NewUI_PctOfUsers")]
41 pub analytics_segment_new_ui_pct_of_users: i32,
42 #[serde(rename = "analyticsSegment_NewUI_Salt")]
44 pub analytics_segment_new_ui_salt: String,
45 #[serde(rename = "announcements")]
47 pub announcements: Vec<models::ApiConfigAnnouncement>,
48 #[serde(rename = "audioConfig", skip_serializing_if = "Option::is_none")]
49 pub audio_config: Option<models::ApiConfigAudioConfig>,
50 #[serde(rename = "availableLanguageCodes")]
52 pub available_language_codes: Vec<String>,
53 #[serde(rename = "availableLanguages")]
55 pub available_languages: Vec<String>,
56 #[serde(rename = "avatarPerfLimiter")]
57 pub avatar_perf_limiter: models::ApiConfigAvatarPerfLimiter,
58 #[serde(rename = "chatboxLogBufferSeconds")]
60 pub chatbox_log_buffer_seconds: i32,
61 #[serde(rename = "clientApiKey")]
63 pub client_api_key: String,
64 #[serde(rename = "clientBPSCeiling")]
66 pub client_bps_ceiling: i32,
67 #[serde(rename = "clientDisconnectTimeout")]
69 pub client_disconnect_timeout: i32,
70 #[serde(
72 rename = "clientNetDispatchThread",
73 skip_serializing_if = "Option::is_none"
74 )]
75 pub client_net_dispatch_thread: Option<bool>,
76 #[serde(rename = "clientNetDispatchThreadMobile")]
78 pub client_net_dispatch_thread_mobile: bool,
79 #[serde(rename = "clientNetInThread", skip_serializing_if = "Option::is_none")]
81 pub client_net_in_thread: Option<bool>,
82 #[serde(rename = "clientNetInThread2", skip_serializing_if = "Option::is_none")]
84 pub client_net_in_thread2: Option<bool>,
85 #[serde(
87 rename = "clientNetInThreadMobile",
88 skip_serializing_if = "Option::is_none"
89 )]
90 pub client_net_in_thread_mobile: Option<bool>,
91 #[serde(
93 rename = "clientNetInThreadMobile2",
94 skip_serializing_if = "Option::is_none"
95 )]
96 pub client_net_in_thread_mobile2: Option<bool>,
97 #[serde(rename = "clientNetOutThread", skip_serializing_if = "Option::is_none")]
99 pub client_net_out_thread: Option<bool>,
100 #[serde(
102 rename = "clientNetOutThread2",
103 skip_serializing_if = "Option::is_none"
104 )]
105 pub client_net_out_thread2: Option<bool>,
106 #[serde(
108 rename = "clientNetOutThreadMobile",
109 skip_serializing_if = "Option::is_none"
110 )]
111 pub client_net_out_thread_mobile: Option<bool>,
112 #[serde(
114 rename = "clientNetOutThreadMobile2",
115 skip_serializing_if = "Option::is_none"
116 )]
117 pub client_net_out_thread_mobile2: Option<bool>,
118 #[serde(rename = "clientQR", skip_serializing_if = "Option::is_none")]
120 pub client_qr: Option<i32>,
121 #[serde(rename = "clientReservedPlayerBPS")]
123 pub client_reserved_player_bps: i32,
124 #[serde(rename = "clientSentCountAllowance")]
126 pub client_sent_count_allowance: i32,
127 #[serde(rename = "constants")]
128 pub constants: models::ApiConfigConstants,
129 #[serde(rename = "contactEmail")]
131 pub contact_email: String,
132 #[serde(rename = "copyrightEmail")]
134 pub copyright_email: String,
135 #[serde(rename = "copyrightFormUrl")]
137 pub copyright_form_url: String,
138 #[serde(rename = "currentPrivacyVersion")]
140 pub current_privacy_version: i32,
141 #[serde(rename = "currentTOSVersion")]
143 pub current_tos_version: i32,
144 #[serde(rename = "defaultAvatar")]
145 pub default_avatar: String,
146 #[serde(rename = "defaultStickerSet")]
147 pub default_sticker_set: String,
148 #[serde(rename = "devLanguageCodes", skip_serializing_if = "Option::is_none")]
150 pub dev_language_codes: Option<Vec<String>>,
151 #[serde(rename = "devSdkUrl")]
153 pub dev_sdk_url: String,
154 #[serde(rename = "devSdkVersion")]
156 pub dev_sdk_version: String,
157 #[serde(rename = "dis-countdown")]
159 pub dis_countdown: String,
160 #[serde(
162 rename = "disableAVProInProton",
163 skip_serializing_if = "Option::is_none"
164 )]
165 pub disable_av_pro_in_proton: Option<bool>,
166 #[serde(rename = "disableAvatarCopying")]
168 pub disable_avatar_copying: bool,
169 #[serde(rename = "disableAvatarGating")]
171 pub disable_avatar_gating: bool,
172 #[serde(rename = "disableCaptcha", skip_serializing_if = "Option::is_none")]
174 pub disable_captcha: Option<bool>,
175 #[serde(rename = "disableCommunityLabs")]
177 pub disable_community_labs: bool,
178 #[serde(rename = "disableCommunityLabsPromotion")]
180 pub disable_community_labs_promotion: bool,
181 #[serde(rename = "disableEmail")]
183 pub disable_email: bool,
184 #[serde(rename = "disableEventStream")]
186 pub disable_event_stream: bool,
187 #[serde(rename = "disableFeedbackGating")]
189 pub disable_feedback_gating: bool,
190 #[serde(rename = "disableFrontendBuilds")]
192 pub disable_frontend_builds: bool,
193 #[serde(rename = "disableGiftDrops")]
195 pub disable_gift_drops: bool,
196 #[serde(rename = "disableHello")]
198 pub disable_hello: bool,
199 #[serde(rename = "disableOculusSubs")]
201 pub disable_oculus_subs: bool,
202 #[serde(rename = "disableRegistration")]
204 pub disable_registration: bool,
205 #[serde(rename = "disableSteamNetworking")]
207 pub disable_steam_networking: bool,
208 #[serde(rename = "disableTwoFactorAuth")]
210 pub disable_two_factor_auth: bool,
211 #[serde(rename = "disableUdon")]
213 pub disable_udon: bool,
214 #[serde(rename = "disableUpgradeAccount")]
216 pub disable_upgrade_account: bool,
217 #[serde(rename = "downloadLinkWindows")]
219 pub download_link_windows: String,
220 #[serde(rename = "downloadUrls")]
221 pub download_urls: models::ApiConfigDownloadUrlList,
222 #[serde(rename = "dynamicWorldRows")]
224 pub dynamic_world_rows: Vec<models::DynamicContentRow>,
225 #[serde(rename = "economyLedgerBackfill")]
227 pub economy_ledger_backfill: bool,
228 #[serde(rename = "economyLedgerMigrationStop")]
230 pub economy_ledger_migration_stop: String,
231 #[serde(rename = "economyLedgerMode")]
233 pub economy_ledger_mode: String,
234 #[serde(rename = "economyPauseEnd")]
236 pub economy_pause_end: String,
237 #[serde(rename = "economyPauseStart")]
239 pub economy_pause_start: String,
240 #[serde(rename = "economyPurchaseRepairEnabled")]
242 pub economy_purchase_repair_enabled: bool,
243 #[serde(rename = "economyState")]
245 pub economy_state: i32,
246 #[serde(rename = "events")]
247 pub events: models::ApiConfigEvents,
248 #[serde(rename = "forceUseLatestWorld")]
250 pub force_use_latest_world: bool,
251 #[serde(rename = "giftDisplayType")]
253 pub gift_display_type: String,
254 #[serde(rename = "googleApiClientId")]
256 pub google_api_client_id: String,
257 #[serde(rename = "homeWorldId")]
259 pub home_world_id: String,
260 #[serde(rename = "homepageRedirectTarget")]
262 pub homepage_redirect_target: String,
263 #[serde(rename = "hubWorldId")]
265 pub hub_world_id: String,
266 #[serde(rename = "imageHostUrlList")]
268 pub image_host_url_list: Vec<String>,
269 #[serde(rename = "iosAppVersion")]
271 pub ios_app_version: Vec<String>,
272 #[serde(rename = "iosVersion")]
273 pub ios_version: models::ApiConfigIosVersion,
274 #[serde(rename = "jobsEmail")]
276 pub jobs_email: String,
277 #[serde(rename = "maxUserEmoji")]
279 pub max_user_emoji: i32,
280 #[serde(rename = "maxUserStickers")]
282 pub max_user_stickers: i32,
283 #[serde(rename = "minSupportedClientBuildNumber")]
284 pub min_supported_client_build_number: models::ApiConfigMinSupportedClientBuildNumber,
285 #[serde(rename = "minimumUnityVersionForUploads")]
287 pub minimum_unity_version_for_uploads: String,
288 #[serde(rename = "moderationEmail")]
290 pub moderation_email: String,
291 #[serde(rename = "notAllowedToSelectAvatarInPrivateWorldMessage")]
293 pub not_allowed_to_select_avatar_in_private_world_message: String,
294 #[serde(rename = "offlineAnalysis")]
295 pub offline_analysis: models::ApiConfigOfflineAnalysis,
296 #[serde(rename = "photonNameserverOverrides")]
298 pub photon_nameserver_overrides: Vec<String>,
299 #[serde(rename = "photonPublicKeys")]
301 pub photon_public_keys: Vec<String>,
302 #[serde(rename = "player-url-resolver-sha1")]
304 pub player_url_resolver_sha1: String,
305 #[serde(rename = "player-url-resolver-version")]
307 pub player_url_resolver_version: String,
308 #[serde(rename = "publicKey")]
310 pub public_key: String,
311 #[serde(rename = "reportCategories")]
313 pub report_categories: std::collections::HashMap<String, models::ReportCategory>,
314 #[serde(rename = "reportFormUrl")]
316 pub report_form_url: String,
317 #[serde(rename = "reportOptions")]
319 pub report_options:
320 std::collections::HashMap<String, std::collections::HashMap<String, Vec<String>>>,
321 #[serde(rename = "reportReasons")]
323 pub report_reasons: std::collections::HashMap<String, models::ReportReason>,
324 #[serde(rename = "requireAgeVerificationBetaTag")]
325 pub require_age_verification_beta_tag: bool,
326 #[serde(rename = "sdkDeveloperFaqUrl")]
328 pub sdk_developer_faq_url: String,
329 #[serde(rename = "sdkDiscordUrl")]
331 pub sdk_discord_url: String,
332 #[serde(rename = "sdkNotAllowedToPublishMessage")]
334 pub sdk_not_allowed_to_publish_message: String,
335 #[serde(rename = "sdkUnityVersion")]
337 pub sdk_unity_version: String,
338 #[serde(rename = "stringHostUrlList")]
340 pub string_host_url_list: Vec<String>,
341 #[serde(rename = "supportEmail")]
343 pub support_email: String,
344 #[serde(rename = "supportFormUrl")]
346 pub support_form_url: String,
347 #[serde(rename = "timeOutWorldId")]
349 pub time_out_world_id: String,
350 #[serde(rename = "timekeeping")]
352 pub timekeeping: bool,
353 #[serde(rename = "tutorialWorldId")]
355 pub tutorial_world_id: String,
356 #[serde(rename = "updateRateMsMaximum")]
358 pub update_rate_ms_maximum: i32,
359 #[serde(rename = "updateRateMsMinimum")]
361 pub update_rate_ms_minimum: i32,
362 #[serde(rename = "updateRateMsNormal")]
364 pub update_rate_ms_normal: i32,
365 #[serde(rename = "updateRateMsUdonManual")]
367 pub update_rate_ms_udon_manual: i32,
368 #[serde(rename = "uploadAnalysisPercent")]
370 pub upload_analysis_percent: i32,
371 #[serde(rename = "urlList")]
373 pub url_list: Vec<String>,
374 #[serde(rename = "useReliableUdpForVoice")]
376 pub use_reliable_udp_for_voice: bool,
377 #[serde(rename = "viveWindowsUrl")]
379 pub vive_windows_url: String,
380 #[serde(rename = "websocketMaxFriendsRefreshDelay")]
382 pub websocket_max_friends_refresh_delay: i32,
383 #[serde(rename = "websocketQuickReconnectTime")]
385 pub websocket_quick_reconnect_time: i32,
386 #[serde(rename = "websocketReconnectMaxDelay")]
388 pub websocket_reconnect_max_delay: i32,
389 #[serde(rename = "whiteListedAssetUrls")]
391 pub white_listed_asset_urls: Vec<String>,
392}
393
394impl ApiConfig {
395 pub fn new(
397 campaign_status: String,
398 disable_background_preloads: bool,
399 location_gifting_non_sub_prio_enabled: bool,
400 voice_enable_degradation: bool,
401 voice_enable_receiver_limiting: bool,
402 access_logs_urls: models::ApiConfigAccessLogsUrls,
403 address: String,
404 age_verification_invite_visible: bool,
405 age_verification_p: bool,
406 age_verification_status_visible: bool,
407 analysis_max_retries: i32,
408 analysis_retry_interval: i32,
409 analytics_segment_new_ui_pct_of_users: i32,
410 analytics_segment_new_ui_salt: String,
411 announcements: Vec<models::ApiConfigAnnouncement>,
412 available_language_codes: Vec<String>,
413 available_languages: Vec<String>,
414 avatar_perf_limiter: models::ApiConfigAvatarPerfLimiter,
415 chatbox_log_buffer_seconds: i32,
416 client_api_key: String,
417 client_bps_ceiling: i32,
418 client_disconnect_timeout: i32,
419 client_net_dispatch_thread_mobile: bool,
420 client_reserved_player_bps: i32,
421 client_sent_count_allowance: i32,
422 constants: models::ApiConfigConstants,
423 contact_email: String,
424 copyright_email: String,
425 copyright_form_url: String,
426 current_privacy_version: i32,
427 current_tos_version: i32,
428 default_avatar: String,
429 default_sticker_set: String,
430 dev_sdk_url: String,
431 dev_sdk_version: String,
432 dis_countdown: String,
433 disable_avatar_copying: bool,
434 disable_avatar_gating: bool,
435 disable_community_labs: bool,
436 disable_community_labs_promotion: bool,
437 disable_email: bool,
438 disable_event_stream: bool,
439 disable_feedback_gating: bool,
440 disable_frontend_builds: bool,
441 disable_gift_drops: bool,
442 disable_hello: bool,
443 disable_oculus_subs: bool,
444 disable_registration: bool,
445 disable_steam_networking: bool,
446 disable_two_factor_auth: bool,
447 disable_udon: bool,
448 disable_upgrade_account: bool,
449 download_link_windows: String,
450 download_urls: models::ApiConfigDownloadUrlList,
451 dynamic_world_rows: Vec<models::DynamicContentRow>,
452 economy_ledger_backfill: bool,
453 economy_ledger_migration_stop: String,
454 economy_ledger_mode: String,
455 economy_pause_end: String,
456 economy_pause_start: String,
457 economy_purchase_repair_enabled: bool,
458 economy_state: i32,
459 events: models::ApiConfigEvents,
460 force_use_latest_world: bool,
461 gift_display_type: String,
462 google_api_client_id: String,
463 home_world_id: String,
464 homepage_redirect_target: String,
465 hub_world_id: String,
466 image_host_url_list: Vec<String>,
467 ios_app_version: Vec<String>,
468 ios_version: models::ApiConfigIosVersion,
469 jobs_email: String,
470 max_user_emoji: i32,
471 max_user_stickers: i32,
472 min_supported_client_build_number: models::ApiConfigMinSupportedClientBuildNumber,
473 minimum_unity_version_for_uploads: String,
474 moderation_email: String,
475 not_allowed_to_select_avatar_in_private_world_message: String,
476 offline_analysis: models::ApiConfigOfflineAnalysis,
477 photon_nameserver_overrides: Vec<String>,
478 photon_public_keys: Vec<String>,
479 player_url_resolver_sha1: String,
480 player_url_resolver_version: String,
481 public_key: String,
482 report_categories: std::collections::HashMap<String, models::ReportCategory>,
483 report_form_url: String,
484 report_options: std::collections::HashMap<
485 String,
486 std::collections::HashMap<String, Vec<String>>,
487 >,
488 report_reasons: std::collections::HashMap<String, models::ReportReason>,
489 require_age_verification_beta_tag: bool,
490 sdk_developer_faq_url: String,
491 sdk_discord_url: String,
492 sdk_not_allowed_to_publish_message: String,
493 sdk_unity_version: String,
494 string_host_url_list: Vec<String>,
495 support_email: String,
496 support_form_url: String,
497 time_out_world_id: String,
498 timekeeping: bool,
499 tutorial_world_id: String,
500 update_rate_ms_maximum: i32,
501 update_rate_ms_minimum: i32,
502 update_rate_ms_normal: i32,
503 update_rate_ms_udon_manual: i32,
504 upload_analysis_percent: i32,
505 url_list: Vec<String>,
506 use_reliable_udp_for_voice: bool,
507 vive_windows_url: String,
508 websocket_max_friends_refresh_delay: i32,
509 websocket_quick_reconnect_time: i32,
510 websocket_reconnect_max_delay: i32,
511 white_listed_asset_urls: Vec<String>,
512 ) -> ApiConfig {
513 ApiConfig {
514 campaign_status,
515 disable_background_preloads,
516 location_gifting_non_sub_prio_enabled,
517 voice_enable_degradation,
518 voice_enable_receiver_limiting,
519 access_logs_urls,
520 address,
521 age_verification_invite_visible,
522 age_verification_p,
523 age_verification_status_visible,
524 analysis_max_retries,
525 analysis_retry_interval,
526 analytics_segment_new_ui_pct_of_users,
527 analytics_segment_new_ui_salt,
528 announcements,
529 audio_config: None,
530 available_language_codes,
531 available_languages,
532 avatar_perf_limiter,
533 chatbox_log_buffer_seconds,
534 client_api_key,
535 client_bps_ceiling,
536 client_disconnect_timeout,
537 client_net_dispatch_thread: None,
538 client_net_dispatch_thread_mobile,
539 client_net_in_thread: None,
540 client_net_in_thread2: None,
541 client_net_in_thread_mobile: None,
542 client_net_in_thread_mobile2: None,
543 client_net_out_thread: None,
544 client_net_out_thread2: None,
545 client_net_out_thread_mobile: None,
546 client_net_out_thread_mobile2: None,
547 client_qr: None,
548 client_reserved_player_bps,
549 client_sent_count_allowance,
550 constants,
551 contact_email,
552 copyright_email,
553 copyright_form_url,
554 current_privacy_version,
555 current_tos_version,
556 default_avatar,
557 default_sticker_set,
558 dev_language_codes: None,
559 dev_sdk_url,
560 dev_sdk_version,
561 dis_countdown,
562 disable_av_pro_in_proton: None,
563 disable_avatar_copying,
564 disable_avatar_gating,
565 disable_captcha: None,
566 disable_community_labs,
567 disable_community_labs_promotion,
568 disable_email,
569 disable_event_stream,
570 disable_feedback_gating,
571 disable_frontend_builds,
572 disable_gift_drops,
573 disable_hello,
574 disable_oculus_subs,
575 disable_registration,
576 disable_steam_networking,
577 disable_two_factor_auth,
578 disable_udon,
579 disable_upgrade_account,
580 download_link_windows,
581 download_urls,
582 dynamic_world_rows,
583 economy_ledger_backfill,
584 economy_ledger_migration_stop,
585 economy_ledger_mode,
586 economy_pause_end,
587 economy_pause_start,
588 economy_purchase_repair_enabled,
589 economy_state,
590 events,
591 force_use_latest_world,
592 gift_display_type,
593 google_api_client_id,
594 home_world_id,
595 homepage_redirect_target,
596 hub_world_id,
597 image_host_url_list,
598 ios_app_version,
599 ios_version,
600 jobs_email,
601 max_user_emoji,
602 max_user_stickers,
603 min_supported_client_build_number,
604 minimum_unity_version_for_uploads,
605 moderation_email,
606 not_allowed_to_select_avatar_in_private_world_message,
607 offline_analysis,
608 photon_nameserver_overrides,
609 photon_public_keys,
610 player_url_resolver_sha1,
611 player_url_resolver_version,
612 public_key,
613 report_categories,
614 report_form_url,
615 report_options,
616 report_reasons,
617 require_age_verification_beta_tag,
618 sdk_developer_faq_url,
619 sdk_discord_url,
620 sdk_not_allowed_to_publish_message,
621 sdk_unity_version,
622 string_host_url_list,
623 support_email,
624 support_form_url,
625 time_out_world_id,
626 timekeeping,
627 tutorial_world_id,
628 update_rate_ms_maximum,
629 update_rate_ms_minimum,
630 update_rate_ms_normal,
631 update_rate_ms_udon_manual,
632 upload_analysis_percent,
633 url_list,
634 use_reliable_udp_for_voice,
635 vive_windows_url,
636 websocket_max_friends_refresh_delay,
637 websocket_quick_reconnect_time,
638 websocket_reconnect_max_delay,
639 white_listed_asset_urls,
640 }
641 }
642}