vrchatapi-async 1.20.8.dev1__py3-none-any.whl

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.
Files changed (362) hide show
  1. vrchatapi/__init__.py +742 -0
  2. vrchatapi/api/__init__.py +23 -0
  3. vrchatapi/api/authentication_api.py +6253 -0
  4. vrchatapi/api/avatars_api.py +4234 -0
  5. vrchatapi/api/calendar_api.py +4090 -0
  6. vrchatapi/api/economy_api.py +11547 -0
  7. vrchatapi/api/favorites_api.py +2368 -0
  8. vrchatapi/api/files_api.py +6109 -0
  9. vrchatapi/api/friends_api.py +1708 -0
  10. vrchatapi/api/groups_api.py +15085 -0
  11. vrchatapi/api/instances_api.py +1754 -0
  12. vrchatapi/api/inventory_api.py +4333 -0
  13. vrchatapi/api/invite_api.py +3337 -0
  14. vrchatapi/api/jams_api.py +1446 -0
  15. vrchatapi/api/miscellaneous_api.py +2384 -0
  16. vrchatapi/api/notifications_api.py +3624 -0
  17. vrchatapi/api/playermoderation_api.py +1127 -0
  18. vrchatapi/api/prints_api.py +1478 -0
  19. vrchatapi/api/props_api.py +2269 -0
  20. vrchatapi/api/users_api.py +7894 -0
  21. vrchatapi/api/worlds_api.py +6153 -0
  22. vrchatapi/api_client.py +865 -0
  23. vrchatapi/api_response.py +21 -0
  24. vrchatapi/configuration.py +686 -0
  25. vrchatapi/exceptions.py +218 -0
  26. vrchatapi/models/__init__.py +345 -0
  27. vrchatapi/models/account_deletion_log.py +253 -0
  28. vrchatapi/models/add_favorite_request.py +246 -0
  29. vrchatapi/models/add_group_gallery_image_request.py +234 -0
  30. vrchatapi/models/admin_asset_bundle.py +337 -0
  31. vrchatapi/models/admin_unity_package.py +261 -0
  32. vrchatapi/models/age_verification_status.py +38 -0
  33. vrchatapi/models/agreement.py +280 -0
  34. vrchatapi/models/agreement_code.py +36 -0
  35. vrchatapi/models/agreement_request.py +256 -0
  36. vrchatapi/models/agreement_status.py +261 -0
  37. vrchatapi/models/api_config.py +1299 -0
  38. vrchatapi/models/api_config_access_logs_urls.py +258 -0
  39. vrchatapi/models/api_config_announcement.py +217 -0
  40. vrchatapi/models/api_config_audio_config.py +311 -0
  41. vrchatapi/models/api_config_avatar_perf_limiter.py +293 -0
  42. vrchatapi/models/api_config_constants.py +262 -0
  43. vrchatapi/models/api_config_constants_groups.py +306 -0
  44. vrchatapi/models/api_config_constants_instance.py +238 -0
  45. vrchatapi/models/api_config_constants_instancepopulationbrackets.py +262 -0
  46. vrchatapi/models/api_config_constants_instancepopulationbracketscrowded.py +216 -0
  47. vrchatapi/models/api_config_constants_instancepopulationbracketsfew.py +216 -0
  48. vrchatapi/models/api_config_constants_instancepopulationbracketsmany.py +216 -0
  49. vrchatapi/models/api_config_constants_language.py +234 -0
  50. vrchatapi/models/api_config_download_url_list.py +258 -0
  51. vrchatapi/models/api_config_events.py +314 -0
  52. vrchatapi/models/api_config_ios_version.py +216 -0
  53. vrchatapi/models/api_config_min_supported_client_build_number.py +348 -0
  54. vrchatapi/models/api_config_offline_analysis.py +216 -0
  55. vrchatapi/models/api_health.py +248 -0
  56. vrchatapi/models/avatar.py +463 -0
  57. vrchatapi/models/avatar_moderation.py +249 -0
  58. vrchatapi/models/avatar_moderation_created.py +248 -0
  59. vrchatapi/models/avatar_moderation_type.py +36 -0
  60. vrchatapi/models/avatar_performance.py +265 -0
  61. vrchatapi/models/avatar_published_listings_inner.py +271 -0
  62. vrchatapi/models/avatar_style.py +239 -0
  63. vrchatapi/models/avatar_styles.py +231 -0
  64. vrchatapi/models/avatar_unity_package_url_object.py +234 -0
  65. vrchatapi/models/badge.py +308 -0
  66. vrchatapi/models/balance.py +247 -0
  67. vrchatapi/models/ban_group_member_request.py +234 -0
  68. vrchatapi/models/boop_request.py +250 -0
  69. vrchatapi/models/calendar_day_of_week.py +42 -0
  70. vrchatapi/models/calendar_event.py +475 -0
  71. vrchatapi/models/calendar_event_access.py +37 -0
  72. vrchatapi/models/calendar_event_category.py +48 -0
  73. vrchatapi/models/calendar_event_discovery.py +247 -0
  74. vrchatapi/models/calendar_event_discovery_inclusion.py +38 -0
  75. vrchatapi/models/calendar_event_discovery_scope.py +38 -0
  76. vrchatapi/models/calendar_event_frequency.py +39 -0
  77. vrchatapi/models/calendar_event_occurrence_kind.py +38 -0
  78. vrchatapi/models/calendar_event_platform.py +38 -0
  79. vrchatapi/models/calendar_event_recurrence.py +261 -0
  80. vrchatapi/models/calendar_event_recurrence_end.py +246 -0
  81. vrchatapi/models/calendar_event_recurrence_end_type.py +37 -0
  82. vrchatapi/models/calendar_event_user_interest.py +251 -0
  83. vrchatapi/models/change_user_tags_request.py +212 -0
  84. vrchatapi/models/change_world_tags_request.py +212 -0
  85. vrchatapi/models/content_filter.py +40 -0
  86. vrchatapi/models/create_avatar_moderation_request.py +243 -0
  87. vrchatapi/models/create_avatar_request.py +324 -0
  88. vrchatapi/models/create_calendar_event_request.py +385 -0
  89. vrchatapi/models/create_file_request.py +251 -0
  90. vrchatapi/models/create_file_version_request.py +259 -0
  91. vrchatapi/models/create_group_announcement_request.py +253 -0
  92. vrchatapi/models/create_group_gallery_request.py +297 -0
  93. vrchatapi/models/create_group_invite_request.py +242 -0
  94. vrchatapi/models/create_group_post_request.py +267 -0
  95. vrchatapi/models/create_group_request.py +295 -0
  96. vrchatapi/models/create_group_role_request.py +255 -0
  97. vrchatapi/models/create_instance_request.py +384 -0
  98. vrchatapi/models/create_jam_submission_request.py +239 -0
  99. vrchatapi/models/create_listing_request.py +285 -0
  100. vrchatapi/models/create_product_request.py +270 -0
  101. vrchatapi/models/create_prop_request.py +308 -0
  102. vrchatapi/models/create_world_request.py +322 -0
  103. vrchatapi/models/current_user.py +909 -0
  104. vrchatapi/models/current_user_platform_history_inner.py +245 -0
  105. vrchatapi/models/current_user_presence.py +379 -0
  106. vrchatapi/models/decline_group_invite_request.py +211 -0
  107. vrchatapi/models/developer_type.py +39 -0
  108. vrchatapi/models/disable2_fa_result.py +211 -0
  109. vrchatapi/models/discord_details.py +216 -0
  110. vrchatapi/models/dynamic_content_row.py +276 -0
  111. vrchatapi/models/earnings_metrics.py +248 -0
  112. vrchatapi/models/earnings_metrics_totals.py +267 -0
  113. vrchatapi/models/economy_account.py +360 -0
  114. vrchatapi/models/economy_balances.py +221 -0
  115. vrchatapi/models/economy_payout.py +385 -0
  116. vrchatapi/models/economy_payout_eligibility.py +263 -0
  117. vrchatapi/models/economy_payout_list.py +219 -0
  118. vrchatapi/models/economy_payout_status.py +295 -0
  119. vrchatapi/models/equip_inventory_item_request.py +235 -0
  120. vrchatapi/models/error.py +215 -0
  121. vrchatapi/models/favorite.py +251 -0
  122. vrchatapi/models/favorite_group.py +278 -0
  123. vrchatapi/models/favorite_group_limits.py +249 -0
  124. vrchatapi/models/favorite_group_visibility.py +38 -0
  125. vrchatapi/models/favorite_limits.py +265 -0
  126. vrchatapi/models/favorite_type.py +39 -0
  127. vrchatapi/models/favorited_world.py +441 -0
  128. vrchatapi/models/feedback.py +331 -0
  129. vrchatapi/models/file.py +325 -0
  130. vrchatapi/models/file_analysis.py +281 -0
  131. vrchatapi/models/file_analysis_avatar_stats.py +575 -0
  132. vrchatapi/models/file_data.py +279 -0
  133. vrchatapi/models/file_status.py +39 -0
  134. vrchatapi/models/file_upload_url.py +212 -0
  135. vrchatapi/models/file_version.py +254 -0
  136. vrchatapi/models/file_version_upload_status.py +269 -0
  137. vrchatapi/models/finish_file_data_upload_request.py +248 -0
  138. vrchatapi/models/follow_calendar_event_request.py +234 -0
  139. vrchatapi/models/friend_status.py +250 -0
  140. vrchatapi/models/get_group_posts200_response.py +219 -0
  141. vrchatapi/models/get_user_group_instances200_response.py +248 -0
  142. vrchatapi/models/group.py +514 -0
  143. vrchatapi/models/group_access_type.py +38 -0
  144. vrchatapi/models/group_announcement.py +315 -0
  145. vrchatapi/models/group_audit_log_entry.py +287 -0
  146. vrchatapi/models/group_gallery.py +319 -0
  147. vrchatapi/models/group_gallery_file_order.py +211 -0
  148. vrchatapi/models/group_gallery_file_order_request.py +239 -0
  149. vrchatapi/models/group_gallery_image.py +301 -0
  150. vrchatapi/models/group_instance.py +257 -0
  151. vrchatapi/models/group_join_request_action.py +37 -0
  152. vrchatapi/models/group_join_state.py +39 -0
  153. vrchatapi/models/group_member.py +415 -0
  154. vrchatapi/models/group_member_limited_user.py +290 -0
  155. vrchatapi/models/group_member_status.py +41 -0
  156. vrchatapi/models/group_my_member.py +399 -0
  157. vrchatapi/models/group_permission.py +260 -0
  158. vrchatapi/models/group_permissions.py +63 -0
  159. vrchatapi/models/group_post.py +317 -0
  160. vrchatapi/models/group_post_visibility.py +37 -0
  161. vrchatapi/models/group_privacy.py +37 -0
  162. vrchatapi/models/group_role.py +309 -0
  163. vrchatapi/models/group_role_template.py +39 -0
  164. vrchatapi/models/group_role_template_values.py +254 -0
  165. vrchatapi/models/group_role_template_values_roles.py +253 -0
  166. vrchatapi/models/group_search_sort.py +37 -0
  167. vrchatapi/models/group_transferable.py +215 -0
  168. vrchatapi/models/group_transferable_requirements.py +266 -0
  169. vrchatapi/models/group_user_visibility.py +38 -0
  170. vrchatapi/models/image_animation_style.py +62 -0
  171. vrchatapi/models/image_loop_style.py +37 -0
  172. vrchatapi/models/image_mask.py +41 -0
  173. vrchatapi/models/image_purpose.py +46 -0
  174. vrchatapi/models/info_push.py +306 -0
  175. vrchatapi/models/info_push_data.py +288 -0
  176. vrchatapi/models/info_push_data_article.py +215 -0
  177. vrchatapi/models/info_push_data_article_content.py +251 -0
  178. vrchatapi/models/info_push_data_clickable.py +224 -0
  179. vrchatapi/models/instance.py +597 -0
  180. vrchatapi/models/instance_content_settings.py +236 -0
  181. vrchatapi/models/instance_platforms.py +222 -0
  182. vrchatapi/models/instance_region.py +40 -0
  183. vrchatapi/models/instance_short_name_response.py +248 -0
  184. vrchatapi/models/instance_type.py +40 -0
  185. vrchatapi/models/inventory.py +247 -0
  186. vrchatapi/models/inventory_consumption_results.py +255 -0
  187. vrchatapi/models/inventory_default_attributes_value.py +243 -0
  188. vrchatapi/models/inventory_default_attributes_value_validator.py +211 -0
  189. vrchatapi/models/inventory_drop.py +331 -0
  190. vrchatapi/models/inventory_equip_slot.py +39 -0
  191. vrchatapi/models/inventory_flag.py +43 -0
  192. vrchatapi/models/inventory_item.py +420 -0
  193. vrchatapi/models/inventory_item_type.py +42 -0
  194. vrchatapi/models/inventory_metadata.py +287 -0
  195. vrchatapi/models/inventory_notification_details.py +244 -0
  196. vrchatapi/models/inventory_spawn.py +216 -0
  197. vrchatapi/models/inventory_template.py +351 -0
  198. vrchatapi/models/inventory_user_attributes.py +250 -0
  199. vrchatapi/models/invite_message.py +276 -0
  200. vrchatapi/models/invite_message_type.py +39 -0
  201. vrchatapi/models/invite_request.py +243 -0
  202. vrchatapi/models/invite_response.py +235 -0
  203. vrchatapi/models/jam.py +302 -0
  204. vrchatapi/models/jam_state_change_dates.py +276 -0
  205. vrchatapi/models/jam_submission.py +275 -0
  206. vrchatapi/models/join_group_request.py +234 -0
  207. vrchatapi/models/license.py +261 -0
  208. vrchatapi/models/license_action.py +37 -0
  209. vrchatapi/models/license_group.py +235 -0
  210. vrchatapi/models/license_type.py +39 -0
  211. vrchatapi/models/limited_group.py +377 -0
  212. vrchatapi/models/limited_unity_package.py +251 -0
  213. vrchatapi/models/limited_user_friend.py +399 -0
  214. vrchatapi/models/limited_user_groups.py +386 -0
  215. vrchatapi/models/limited_user_instance.py +430 -0
  216. vrchatapi/models/limited_user_search.py +395 -0
  217. vrchatapi/models/limited_world.py +410 -0
  218. vrchatapi/models/mime_type.py +50 -0
  219. vrchatapi/models/model_print.py +299 -0
  220. vrchatapi/models/moderate_user_request.py +217 -0
  221. vrchatapi/models/moderation_report.py +296 -0
  222. vrchatapi/models/mutual_friend.py +302 -0
  223. vrchatapi/models/mutuals.py +217 -0
  224. vrchatapi/models/notification.py +283 -0
  225. vrchatapi/models/notification_detail_invite.py +250 -0
  226. vrchatapi/models/notification_detail_invite_response.py +242 -0
  227. vrchatapi/models/notification_detail_request_invite.py +239 -0
  228. vrchatapi/models/notification_detail_request_invite_response.py +242 -0
  229. vrchatapi/models/notification_detail_vote_to_kick.py +242 -0
  230. vrchatapi/models/notification_type.py +43 -0
  231. vrchatapi/models/notification_v2.py +466 -0
  232. vrchatapi/models/notification_v2_details_boop.py +255 -0
  233. vrchatapi/models/notification_v2_response.py +259 -0
  234. vrchatapi/models/notification_v2_type.py +58 -0
  235. vrchatapi/models/ok_status.py +211 -0
  236. vrchatapi/models/ok_status2.py +234 -0
  237. vrchatapi/models/order_option.py +37 -0
  238. vrchatapi/models/order_option_short.py +37 -0
  239. vrchatapi/models/paginated_calendar_event_list.py +255 -0
  240. vrchatapi/models/paginated_group_audit_log_entry_list.py +255 -0
  241. vrchatapi/models/paginated_moderation_report_list.py +255 -0
  242. vrchatapi/models/past_display_name.py +241 -0
  243. vrchatapi/models/pending2_fa_result.py +239 -0
  244. vrchatapi/models/performance_limiter_info.py +234 -0
  245. vrchatapi/models/performance_ratings.py +41 -0
  246. vrchatapi/models/permission.py +280 -0
  247. vrchatapi/models/permission_data.py +258 -0
  248. vrchatapi/models/platform_build_info.py +242 -0
  249. vrchatapi/models/player_moderation.py +276 -0
  250. vrchatapi/models/player_moderation_type.py +44 -0
  251. vrchatapi/models/print_files.py +239 -0
  252. vrchatapi/models/private_profile.py +267 -0
  253. vrchatapi/models/private_profile_activity.py +292 -0
  254. vrchatapi/models/product.py +389 -0
  255. vrchatapi/models/product_listing.py +538 -0
  256. vrchatapi/models/product_listing_type.py +39 -0
  257. vrchatapi/models/product_listing_variant.py +272 -0
  258. vrchatapi/models/product_purchase.py +571 -0
  259. vrchatapi/models/product_purchase_history.py +256 -0
  260. vrchatapi/models/product_purchase_location_type.py +46 -0
  261. vrchatapi/models/product_purchase_product.py +269 -0
  262. vrchatapi/models/product_purchase_purchase_context.py +250 -0
  263. vrchatapi/models/product_purchase_record.py +312 -0
  264. vrchatapi/models/product_type.py +39 -0
  265. vrchatapi/models/profile_represented_group.py +262 -0
  266. vrchatapi/models/prop.py +358 -0
  267. vrchatapi/models/prop_publish_status.py +234 -0
  268. vrchatapi/models/prop_unity_package.py +269 -0
  269. vrchatapi/models/public_profile.py +398 -0
  270. vrchatapi/models/purchase_context_data.py +251 -0
  271. vrchatapi/models/purchase_product_listing_request.py +281 -0
  272. vrchatapi/models/region.py +42 -0
  273. vrchatapi/models/register_user_account_request.py +278 -0
  274. vrchatapi/models/release_status.py +39 -0
  275. vrchatapi/models/report_category.py +226 -0
  276. vrchatapi/models/report_reason.py +216 -0
  277. vrchatapi/models/represented_group.py +348 -0
  278. vrchatapi/models/request_invite_request.py +235 -0
  279. vrchatapi/models/respond_group_join_request.py +217 -0
  280. vrchatapi/models/respond_notification_v2_request.py +242 -0
  281. vrchatapi/models/response.py +217 -0
  282. vrchatapi/models/reward_badge.py +308 -0
  283. vrchatapi/models/reward_redemption.py +220 -0
  284. vrchatapi/models/reward_redemption_data.py +224 -0
  285. vrchatapi/models/reward_redemption_request.py +211 -0
  286. vrchatapi/models/reward_redemption_result.py +250 -0
  287. vrchatapi/models/search_group_members200_response.py +224 -0
  288. vrchatapi/models/seller_eligibility.py +211 -0
  289. vrchatapi/models/sent_notification.py +278 -0
  290. vrchatapi/models/service_queue_stats.py +234 -0
  291. vrchatapi/models/service_status.py +281 -0
  292. vrchatapi/models/share_inventory_item_direct_request.py +239 -0
  293. vrchatapi/models/sort_option.py +53 -0
  294. vrchatapi/models/sort_option_product_purchase.py +36 -0
  295. vrchatapi/models/store.py +372 -0
  296. vrchatapi/models/store_context.py +249 -0
  297. vrchatapi/models/store_shelf.py +304 -0
  298. vrchatapi/models/store_type.py +38 -0
  299. vrchatapi/models/store_view.py +40 -0
  300. vrchatapi/models/submit_moderation_report_request.py +263 -0
  301. vrchatapi/models/submit_moderation_report_request_details.py +283 -0
  302. vrchatapi/models/subscription.py +301 -0
  303. vrchatapi/models/subscription_period.py +40 -0
  304. vrchatapi/models/success.py +215 -0
  305. vrchatapi/models/success_flag.py +211 -0
  306. vrchatapi/models/tilia_kyc.py +246 -0
  307. vrchatapi/models/tilia_status.py +259 -0
  308. vrchatapi/models/tilia_tos.py +211 -0
  309. vrchatapi/models/token_bundle.py +286 -0
  310. vrchatapi/models/transaction.py +322 -0
  311. vrchatapi/models/transaction_agreement.py +353 -0
  312. vrchatapi/models/transaction_status.py +39 -0
  313. vrchatapi/models/transaction_steam_info.py +271 -0
  314. vrchatapi/models/transaction_steam_wallet_info.py +227 -0
  315. vrchatapi/models/transfer_group_request.py +234 -0
  316. vrchatapi/models/tutorial_status.py +255 -0
  317. vrchatapi/models/two_factor_auth_code.py +211 -0
  318. vrchatapi/models/two_factor_email_code.py +211 -0
  319. vrchatapi/models/two_factor_recovery_codes.py +247 -0
  320. vrchatapi/models/two_factor_recovery_codes_otp_inner.py +216 -0
  321. vrchatapi/models/unity_package.py +360 -0
  322. vrchatapi/models/update_asset_review_notes_request.py +234 -0
  323. vrchatapi/models/update_avatar_request.py +293 -0
  324. vrchatapi/models/update_calendar_event_request.py +365 -0
  325. vrchatapi/models/update_favorite_group_request.py +246 -0
  326. vrchatapi/models/update_group_gallery_request.py +297 -0
  327. vrchatapi/models/update_group_member_request.py +256 -0
  328. vrchatapi/models/update_group_representation_request.py +234 -0
  329. vrchatapi/models/update_group_request.py +300 -0
  330. vrchatapi/models/update_group_role_request.py +255 -0
  331. vrchatapi/models/update_inventory_item_request.py +254 -0
  332. vrchatapi/models/update_invite_message_request.py +211 -0
  333. vrchatapi/models/update_listing_request.py +211 -0
  334. vrchatapi/models/update_product_request.py +261 -0
  335. vrchatapi/models/update_prop_request.py +303 -0
  336. vrchatapi/models/update_tilia_tos_request.py +211 -0
  337. vrchatapi/models/update_user_badge_request.py +216 -0
  338. vrchatapi/models/update_user_note_request.py +239 -0
  339. vrchatapi/models/update_user_request.py +358 -0
  340. vrchatapi/models/update_world_request.py +317 -0
  341. vrchatapi/models/user.py +549 -0
  342. vrchatapi/models/user_credits_eligible.py +216 -0
  343. vrchatapi/models/user_exists.py +242 -0
  344. vrchatapi/models/user_note.py +273 -0
  345. vrchatapi/models/user_note_target_user.py +277 -0
  346. vrchatapi/models/user_state.py +38 -0
  347. vrchatapi/models/user_status.py +40 -0
  348. vrchatapi/models/user_subscription.py +330 -0
  349. vrchatapi/models/user_subscription_eligible.py +274 -0
  350. vrchatapi/models/verify2_fa_email_code_result.py +211 -0
  351. vrchatapi/models/verify2_fa_result.py +216 -0
  352. vrchatapi/models/verify_auth_token_result.py +217 -0
  353. vrchatapi/models/world.py +459 -0
  354. vrchatapi/models/world_metadata.py +216 -0
  355. vrchatapi/models/world_publish_status.py +234 -0
  356. vrchatapi/py.typed +0 -0
  357. vrchatapi/rest.py +303 -0
  358. vrchatapi_async-1.20.8.dev1.dist-info/METADATA +137 -0
  359. vrchatapi_async-1.20.8.dev1.dist-info/RECORD +362 -0
  360. vrchatapi_async-1.20.8.dev1.dist-info/WHEEL +5 -0
  361. vrchatapi_async-1.20.8.dev1.dist-info/licenses/LICENSE +21 -0
  362. vrchatapi_async-1.20.8.dev1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1299 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ VRChat API Documentation
5
+
6
+
7
+ The version of the OpenAPI document: 1.20.8
8
+ Contact: vrchatapi.lpv0t@aries.fyi
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from collections.abc import Mapping as _Mapping
21
+ from datetime import datetime
22
+ from pydantic import AliasChoices, BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
23
+ from typing import Any, ClassVar, Dict, List, Optional, cast as _cast
24
+ from typing_extensions import Annotated
25
+ from vrchatapi.models.api_config_access_logs_urls import APIConfigAccessLogsUrls
26
+ from vrchatapi.models.api_config_announcement import APIConfigAnnouncement
27
+ from vrchatapi.models.api_config_audio_config import APIConfigAudioConfig
28
+ from vrchatapi.models.api_config_avatar_perf_limiter import APIConfigAvatarPerfLimiter
29
+ from vrchatapi.models.api_config_constants import APIConfigConstants
30
+ from vrchatapi.models.api_config_download_url_list import APIConfigDownloadURLList
31
+ from vrchatapi.models.api_config_events import APIConfigEvents
32
+ from vrchatapi.models.api_config_ios_version import APIConfigIosVersion
33
+ from vrchatapi.models.api_config_min_supported_client_build_number import APIConfigMinSupportedClientBuildNumber
34
+ from vrchatapi.models.api_config_offline_analysis import APIConfigOfflineAnalysis
35
+ from vrchatapi.models.dynamic_content_row import DynamicContentRow
36
+ from vrchatapi.models.report_category import ReportCategory
37
+ from vrchatapi.models.report_reason import ReportReason
38
+ from typing import Optional, Set
39
+ from typing_extensions import Self
40
+ from pydantic_core import to_jsonable_python
41
+
42
+
43
+ _OPENAPI_GENERATOR_TO_DICT = "_openapi_generator_to_dict"
44
+
45
+
46
+ def _get_openapi_to_dict(value: Any) -> Any:
47
+ # Reciprocal function references preserve inherited generated methods
48
+ # without reserving model member names. Checking both directions also
49
+ # rejects overrides whose decorators copy function attributes.
50
+ to_dict = getattr(value, "to_dict", None)
51
+ type_to_dict = getattr(type(value), "to_dict", None)
52
+ if (
53
+ not callable(to_dict)
54
+ or getattr(to_dict, "__func__", None) is not type_to_dict
55
+ ):
56
+ return None
57
+
58
+ openapi_to_dict = getattr(
59
+ type_to_dict, _OPENAPI_GENERATOR_TO_DICT, None
60
+ )
61
+ if (
62
+ not callable(openapi_to_dict)
63
+ or getattr(
64
+ openapi_to_dict,
65
+ _OPENAPI_GENERATOR_TO_DICT,
66
+ None,
67
+ ) is not type_to_dict
68
+ ):
69
+ return None
70
+ return openapi_to_dict
71
+
72
+
73
+ def _to_legacy_item(value: Any, serialize: bool) -> Any:
74
+ to_dict = getattr(value, "to_dict", None)
75
+ if _get_openapi_to_dict(value) is not None and callable(to_dict):
76
+ return to_dict(serialize=serialize)
77
+ if callable(to_dict):
78
+ return to_dict()
79
+ return value
80
+
81
+
82
+ def _to_legacy_value(value: Any, serialize: bool) -> Any:
83
+ # python-legacy converted only immediate list elements or dictionary values:
84
+ # https://github.com/OpenAPITools/openapi-generator/blob/c84b949df1a9ec04ba75989cb49b45c940c2f694/modules/openapi-generator/src/main/resources/python-legacy/model.mustache#L203-L231
85
+ if isinstance(value, list):
86
+ return [_to_legacy_item(item, serialize) for item in value]
87
+ if isinstance(value, dict):
88
+ return {
89
+ key: _to_legacy_item(item, serialize)
90
+ for key, item in value.items()
91
+ }
92
+ return _to_legacy_item(value, serialize)
93
+
94
+
95
+ def _to_openapi_value(value: Any) -> Any:
96
+ if isinstance(value, list):
97
+ return [_to_openapi_value(item) for item in value]
98
+ if isinstance(value, dict):
99
+ return {key: _to_openapi_value(item) for key, item in value.items()}
100
+
101
+ to_openapi_dict = _get_openapi_to_dict(value)
102
+ if to_openapi_dict is not None:
103
+ return to_openapi_dict(value)
104
+
105
+ to_dict = getattr(value, "to_dict", None)
106
+ if callable(to_dict):
107
+ return to_dict()
108
+ return value
109
+
110
+
111
+ class APIConfig(BaseModel):
112
+ """
113
+ Global configuration for various features.
114
+
115
+ Attributes:
116
+ openapi_types (dict): The key is attribute name
117
+ and the value is attribute type.
118
+ attribute_map (dict): The key is attribute name
119
+ and the value is json key in definition.
120
+ """ # noqa: E501
121
+ campaign_status: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("CampaignStatus", "campaign_status"), serialization_alias="CampaignStatus", description="The current platform-wide event taking place")
122
+ disable_background_preloads: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("DisableBackgroundPreloads", "disable_background_preloads"), serialization_alias="DisableBackgroundPreloads", description="Toggles if certain assets are preloaded in the background")
123
+ location_gifting_non_sub_prio_enabled: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("LocationGiftingNonSubPrioEnabled", "location_gifting_non_sub_prio_enabled"), serialization_alias="LocationGiftingNonSubPrioEnabled", description="Toggles whether users without a current VRC+ subscription are priority recipients for gift drops")
124
+ voice_enable_degradation: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("VoiceEnableDegradation", "voice_enable_degradation"), serialization_alias="VoiceEnableDegradation", description="Unknown, probably voice optimization testing")
125
+ voice_enable_receiver_limiting: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("VoiceEnableReceiverLimiting", "voice_enable_receiver_limiting"), serialization_alias="VoiceEnableReceiverLimiting", description="Unknown, probably voice optimization testing")
126
+ access_logs_urls: Optional[APIConfigAccessLogsUrls] = Field(default=None, validation_alias=AliasChoices("accessLogsUrls", "access_logs_urls"), serialization_alias="accessLogsUrls")
127
+ address: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, description="VRChat's office address")
128
+ age_verification_invite_visible: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("ageVerificationInviteVisible", "age_verification_invite_visible"), serialization_alias="ageVerificationInviteVisible")
129
+ age_verification_p: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("ageVerificationP", "age_verification_p"), serialization_alias="ageVerificationP")
130
+ age_verification_status_visible: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("ageVerificationStatusVisible", "age_verification_status_visible"), serialization_alias="ageVerificationStatusVisible")
131
+ analysis_max_retries: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("analysisMaxRetries", "analysis_max_retries"), serialization_alias="analysisMaxRetries", description="Max retries for avatar analysis requests")
132
+ analysis_retry_interval: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("analysisRetryInterval", "analysis_retry_interval"), serialization_alias="analysisRetryInterval", description="Interval between retries for avatar analysis requests")
133
+ analytics_segment_new_ui_pct_of_users: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("analyticsSegment_NewUI_PctOfUsers", "analytics_segment_new_ui_pct_of_users"), serialization_alias="analyticsSegment_NewUI_PctOfUsers", description="Unknown")
134
+ analytics_segment_new_ui_salt: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("analyticsSegment_NewUI_Salt", "analytics_segment_new_ui_salt"), serialization_alias="analyticsSegment_NewUI_Salt", description="Unknown")
135
+ announcements: Optional[Annotated[List[APIConfigAnnouncement], Field(min_length=0)]] = Field(default=None, description="Public Announcements")
136
+ audio_config: Optional[APIConfigAudioConfig] = Field(default=None, validation_alias=AliasChoices("audioConfig", "audio_config"), serialization_alias="audioConfig")
137
+ available_language_codes: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("availableLanguageCodes", "available_language_codes"), serialization_alias="availableLanguageCodes", description="List of supported Languages")
138
+ available_languages: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("availableLanguages", "available_languages"), serialization_alias="availableLanguages", description="List of supported Languages")
139
+ avatar_perf_limiter: Optional[APIConfigAvatarPerfLimiter] = Field(default=None, validation_alias=AliasChoices("avatarPerfLimiter", "avatar_perf_limiter"), serialization_alias="avatarPerfLimiter")
140
+ chatbox_log_buffer_seconds: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("chatboxLogBufferSeconds", "chatbox_log_buffer_seconds"), serialization_alias="chatboxLogBufferSeconds", description="Unknown")
141
+ client_api_key: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("clientApiKey", "client_api_key"), serialization_alias="clientApiKey", description="apiKey to be used for all other requests")
142
+ client_bps_ceiling: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("clientBPSCeiling", "client_bps_ceiling"), serialization_alias="clientBPSCeiling", description="Unknown")
143
+ client_disconnect_timeout: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("clientDisconnectTimeout", "client_disconnect_timeout"), serialization_alias="clientDisconnectTimeout", description="Unknown")
144
+ client_net_dispatch_thread: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetDispatchThread", "client_net_dispatch_thread"), serialization_alias="clientNetDispatchThread", description="Unknown")
145
+ client_net_dispatch_thread_mobile: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("clientNetDispatchThreadMobile", "client_net_dispatch_thread_mobile"), serialization_alias="clientNetDispatchThreadMobile", description="Unknown")
146
+ client_net_in_thread: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetInThread", "client_net_in_thread"), serialization_alias="clientNetInThread", description="Unknown")
147
+ client_net_in_thread2: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetInThread2", "client_net_in_thread2"), serialization_alias="clientNetInThread2", description="Unknown")
148
+ client_net_in_thread_mobile: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetInThreadMobile", "client_net_in_thread_mobile"), serialization_alias="clientNetInThreadMobile", description="Unknown")
149
+ client_net_in_thread_mobile2: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetInThreadMobile2", "client_net_in_thread_mobile2"), serialization_alias="clientNetInThreadMobile2", description="Unknown")
150
+ client_net_out_thread: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetOutThread", "client_net_out_thread"), serialization_alias="clientNetOutThread", description="Unknown")
151
+ client_net_out_thread2: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetOutThread2", "client_net_out_thread2"), serialization_alias="clientNetOutThread2", description="Unknown")
152
+ client_net_out_thread_mobile: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetOutThreadMobile", "client_net_out_thread_mobile"), serialization_alias="clientNetOutThreadMobile", description="Unknown")
153
+ client_net_out_thread_mobile2: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("clientNetOutThreadMobile2", "client_net_out_thread_mobile2"), serialization_alias="clientNetOutThreadMobile2", description="Unknown")
154
+ client_qr: Optional[StrictInt] = Field(default=1, validation_alias=AliasChoices("clientQR", "client_qr"), serialization_alias="clientQR", description="Unknown")
155
+ client_reserved_player_bps: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("clientReservedPlayerBPS", "client_reserved_player_bps"), serialization_alias="clientReservedPlayerBPS", description="Unknown")
156
+ client_sent_count_allowance: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("clientSentCountAllowance", "client_sent_count_allowance"), serialization_alias="clientSentCountAllowance", description="Unknown")
157
+ constants: Optional[APIConfigConstants] = None
158
+ contact_email: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("contactEmail", "contact_email"), serialization_alias="contactEmail", description="VRChat's contact email")
159
+ copyright_email: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("copyrightEmail", "copyright_email"), serialization_alias="copyrightEmail", description="VRChat's copyright-issues-related email")
160
+ copyright_form_url: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("copyrightFormUrl", "copyright_form_url"), serialization_alias="copyrightFormUrl", description="VRChat's DMCA claim webform url")
161
+ current_privacy_version: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("currentPrivacyVersion", "current_privacy_version"), serialization_alias="currentPrivacyVersion", description="Current version number of the Privacy Agreement")
162
+ current_tos_version: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field(default=None, validation_alias=AliasChoices("currentTOSVersion", "current_tos_version"), serialization_alias="currentTOSVersion", description="Current version number of the Terms of Service", json_schema_extra={"examples": [7]})
163
+ default_avatar: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("defaultAvatar", "default_avatar"), serialization_alias="defaultAvatar", json_schema_extra={"examples": ["avtr_912d66a4-4714-43b8-8407-7de2cafbf55b"]})
164
+ default_sticker_set: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("defaultStickerSet", "default_sticker_set"), serialization_alias="defaultStickerSet")
165
+ dev_language_codes: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("devLanguageCodes", "dev_language_codes"), serialization_alias="devLanguageCodes", description="Unknown")
166
+ dev_sdk_url: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("devSdkUrl", "dev_sdk_url"), serialization_alias="devSdkUrl", description="Link to download the development SDK, use downloadUrls instead")
167
+ dev_sdk_version: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("devSdkVersion", "dev_sdk_version"), serialization_alias="devSdkVersion", description="Version of the development SDK")
168
+ dis_countdown: Optional[datetime] = Field(default=None, validation_alias=AliasChoices("dis-countdown", "dis_countdown"), serialization_alias="dis-countdown", description="Unknown, \"dis\" maybe for disconnect?")
169
+ disable_av_pro_in_proton: Optional[StrictBool] = Field(default=False, validation_alias=AliasChoices("disableAVProInProton", "disable_av_pro_in_proton"), serialization_alias="disableAVProInProton", description="Unknown")
170
+ disable_avatar_copying: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableAvatarCopying", "disable_avatar_copying"), serialization_alias="disableAvatarCopying", description="Toggles if copying avatars should be disabled")
171
+ disable_avatar_gating: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableAvatarGating", "disable_avatar_gating"), serialization_alias="disableAvatarGating", description="Toggles if avatar gating should be disabled. Avatar gating restricts uploading of avatars to people with the `system_avatar_access` Tag or `admin_avatar_access` Tag")
172
+ disable_captcha: Optional[StrictBool] = Field(default=True, validation_alias=AliasChoices("disableCaptcha", "disable_captcha"), serialization_alias="disableCaptcha", description="Unknown")
173
+ disable_community_labs: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableCommunityLabs", "disable_community_labs"), serialization_alias="disableCommunityLabs", description="Toggles if the Community Labs should be disabled")
174
+ disable_community_labs_promotion: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableCommunityLabsPromotion", "disable_community_labs_promotion"), serialization_alias="disableCommunityLabsPromotion", description="Toggles if promotion out of Community Labs should be disabled")
175
+ disable_email: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableEmail", "disable_email"), serialization_alias="disableEmail", description="Unknown")
176
+ disable_event_stream: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableEventStream", "disable_event_stream"), serialization_alias="disableEventStream", description="Toggles if Analytics should be disabled.")
177
+ disable_feedback_gating: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableFeedbackGating", "disable_feedback_gating"), serialization_alias="disableFeedbackGating", description="Toggles if feedback gating should be disabled. Feedback gating restricts submission of feedback (reporting a World or User) to people with the `system_feedback_access` Tag.")
178
+ disable_frontend_builds: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableFrontendBuilds", "disable_frontend_builds"), serialization_alias="disableFrontendBuilds", description="Unknown, probably toggles compilation of frontend web builds? So internal flag?")
179
+ disable_gift_drops: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableGiftDrops", "disable_gift_drops"), serialization_alias="disableGiftDrops", description="Toggles if gift drops should be disabled")
180
+ disable_hello: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableHello", "disable_hello"), serialization_alias="disableHello", description="Unknown")
181
+ disable_oculus_subs: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableOculusSubs", "disable_oculus_subs"), serialization_alias="disableOculusSubs", description="Toggles if signing up for Subscriptions in Oculus is disabled or not.")
182
+ disable_registration: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableRegistration", "disable_registration"), serialization_alias="disableRegistration", description="Toggles if new user account registration should be disabled.")
183
+ disable_steam_networking: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableSteamNetworking", "disable_steam_networking"), serialization_alias="disableSteamNetworking", description="Toggles if Steam Networking should be disabled. VRChat these days uses Photon Unity Networking (PUN) instead.")
184
+ disable_two_factor_auth: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableTwoFactorAuth", "disable_two_factor_auth"), serialization_alias="disableTwoFactorAuth", description="Toggles if 2FA should be disabled.")
185
+ disable_udon: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableUdon", "disable_udon"), serialization_alias="disableUdon", description="Toggles if Udon should be universally disabled in-game.")
186
+ disable_upgrade_account: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("disableUpgradeAccount", "disable_upgrade_account"), serialization_alias="disableUpgradeAccount", description="Toggles if account upgrading \"linking with Steam/Oculus\" should be disabled.")
187
+ download_link_windows: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("downloadLinkWindows", "download_link_windows"), serialization_alias="downloadLinkWindows", description="Download link for game on the Oculus Rift website.")
188
+ download_urls: Optional[APIConfigDownloadURLList] = Field(default=None, validation_alias=AliasChoices("downloadUrls", "download_urls"), serialization_alias="downloadUrls")
189
+ dynamic_world_rows: Optional[Annotated[List[DynamicContentRow], Field(min_length=1)]] = Field(default=None, validation_alias=AliasChoices("dynamicWorldRows", "dynamic_world_rows"), serialization_alias="dynamicWorldRows", description="Array of DynamicWorldRow objects, used by the game to display the list of world rows")
190
+ economy_ledger_backfill: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("economyLedgerBackfill", "economy_ledger_backfill"), serialization_alias="economyLedgerBackfill", description="Unknown")
191
+ economy_ledger_migration_stop: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("economyLedgerMigrationStop", "economy_ledger_migration_stop"), serialization_alias="economyLedgerMigrationStop", description="Unknown")
192
+ economy_ledger_mode: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("economyLedgerMode", "economy_ledger_mode"), serialization_alias="economyLedgerMode", description="Unknown")
193
+ economy_pause_end: Optional[datetime] = Field(default=None, validation_alias=AliasChoices("economyPauseEnd", "economy_pause_end"), serialization_alias="economyPauseEnd", description="Unknown")
194
+ economy_pause_start: Optional[datetime] = Field(default=None, validation_alias=AliasChoices("economyPauseStart", "economy_pause_start"), serialization_alias="economyPauseStart", description="Unknown")
195
+ economy_purchase_repair_enabled: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("economyPurchaseRepairEnabled", "economy_purchase_repair_enabled"), serialization_alias="economyPurchaseRepairEnabled", description="Unknown")
196
+ economy_state: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("economyState", "economy_state"), serialization_alias="economyState", description="Unknown")
197
+ events: Optional[APIConfigEvents] = None
198
+ force_use_latest_world: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("forceUseLatestWorld", "force_use_latest_world"), serialization_alias="forceUseLatestWorld", description="Unknown")
199
+ gift_display_type: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("giftDisplayType", "gift_display_type"), serialization_alias="giftDisplayType", description="Display type of gifts")
200
+ google_api_client_id: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("googleApiClientId", "google_api_client_id"), serialization_alias="googleApiClientId", description="Unknown")
201
+ home_world_id: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("homeWorldId", "home_world_id"), serialization_alias="homeWorldId", description="WorldID be \"offline\" on User profiles if you are not friends with that user.", json_schema_extra={"examples": ["wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd"]})
202
+ homepage_redirect_target: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("homepageRedirectTarget", "homepage_redirect_target"), serialization_alias="homepageRedirectTarget", description="Redirect target if you try to open the base API domain in your browser")
203
+ hub_world_id: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("hubWorldId", "hub_world_id"), serialization_alias="hubWorldId", description="WorldID be \"offline\" on User profiles if you are not friends with that user.", json_schema_extra={"examples": ["wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd"]})
204
+ image_host_url_list: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("imageHostUrlList", "image_host_url_list"), serialization_alias="imageHostUrlList", description="A list of explicitly allowed origins that worlds can request images from via the Udon's [VRCImageDownloader#DownloadImage](https://creators.vrchat.com/worlds/udon/image-loading/#downloadimage).")
205
+ ios_app_version: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("iosAppVersion", "ios_app_version"), serialization_alias="iosAppVersion", description="Current app version for iOS")
206
+ ios_version: Optional[APIConfigIosVersion] = Field(default=None, validation_alias=AliasChoices("iosVersion", "ios_version"), serialization_alias="iosVersion")
207
+ jobs_email: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("jobsEmail", "jobs_email"), serialization_alias="jobsEmail", description="VRChat's job application email")
208
+ max_user_emoji: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("maxUserEmoji", "max_user_emoji"), serialization_alias="maxUserEmoji", description="The maximum number of custom emoji each user may have at a given time.")
209
+ max_user_stickers: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("maxUserStickers", "max_user_stickers"), serialization_alias="maxUserStickers", description="The maximum number of custom stickers each user may have at a given time.")
210
+ min_supported_client_build_number: Optional[APIConfigMinSupportedClientBuildNumber] = Field(default=None, validation_alias=AliasChoices("minSupportedClientBuildNumber", "min_supported_client_build_number"), serialization_alias="minSupportedClientBuildNumber")
211
+ minimum_unity_version_for_uploads: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("minimumUnityVersionForUploads", "minimum_unity_version_for_uploads"), serialization_alias="minimumUnityVersionForUploads", description="Minimum Unity version required for uploading assets")
212
+ moderation_email: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("moderationEmail", "moderation_email"), serialization_alias="moderationEmail", description="VRChat's moderation related email")
213
+ not_allowed_to_select_avatar_in_private_world_message: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("notAllowedToSelectAvatarInPrivateWorldMessage", "not_allowed_to_select_avatar_in_private_world_message"), serialization_alias="notAllowedToSelectAvatarInPrivateWorldMessage", description="Used in-game to notify a user they aren't allowed to select avatars in private worlds")
214
+ offline_analysis: Optional[APIConfigOfflineAnalysis] = Field(default=None, validation_alias=AliasChoices("offlineAnalysis", "offline_analysis"), serialization_alias="offlineAnalysis")
215
+ photon_nameserver_overrides: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("photonNameserverOverrides", "photon_nameserver_overrides"), serialization_alias="photonNameserverOverrides", description="Unknown")
216
+ photon_public_keys: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("photonPublicKeys", "photon_public_keys"), serialization_alias="photonPublicKeys", description="Unknown")
217
+ player_url_resolver_sha1: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("player-url-resolver-sha1", "player_url_resolver_sha1"), serialization_alias="player-url-resolver-sha1", description="Currently used youtube-dl.exe hash in SHA1-delimited format")
218
+ player_url_resolver_version: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("player-url-resolver-version", "player_url_resolver_version"), serialization_alias="player-url-resolver-version", description="Currently used youtube-dl.exe version")
219
+ public_key: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("publicKey", "public_key"), serialization_alias="publicKey", description="Public key, hex encoded")
220
+ report_categories: Optional[Dict[str, ReportCategory]] = Field(default=None, validation_alias=AliasChoices("reportCategories", "report_categories"), serialization_alias="reportCategories", description="Categories available for reporting objectionable content")
221
+ report_form_url: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("reportFormUrl", "report_form_url"), serialization_alias="reportFormUrl", description="URL to the report form")
222
+ report_options: Optional[Dict[str, Dict[str, List[StrictStr]]]] = Field(default=None, validation_alias=AliasChoices("reportOptions", "report_options"), serialization_alias="reportOptions", description="Options for reporting content. Select a key+value from this mapping as the `type` of the report. Select one key+value from the object at reportOptions[type] as the `category` of the report. reportCategories[category] contains user-facing text to display for all possible categories. Select one value from the array at reportOptions[type][category] as the `reason` of the report. reportReasons[reason] contains user-facing text to display for all possible categories.")
223
+ report_reasons: Optional[Dict[str, ReportReason]] = Field(default=None, validation_alias=AliasChoices("reportReasons", "report_reasons"), serialization_alias="reportReasons", description="Reasons available for submitting a report")
224
+ require_age_verification_beta_tag: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("requireAgeVerificationBetaTag", "require_age_verification_beta_tag"), serialization_alias="requireAgeVerificationBetaTag")
225
+ sdk_developer_faq_url: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("sdkDeveloperFaqUrl", "sdk_developer_faq_url"), serialization_alias="sdkDeveloperFaqUrl", description="Link to the developer FAQ")
226
+ sdk_discord_url: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("sdkDiscordUrl", "sdk_discord_url"), serialization_alias="sdkDiscordUrl", description="Link to the official VRChat Discord")
227
+ sdk_not_allowed_to_publish_message: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("sdkNotAllowedToPublishMessage", "sdk_not_allowed_to_publish_message"), serialization_alias="sdkNotAllowedToPublishMessage", description="Used in the SDK to notify a user they aren't allowed to upload avatars/worlds yet")
228
+ sdk_unity_version: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("sdkUnityVersion", "sdk_unity_version"), serialization_alias="sdkUnityVersion", description="Unity version supported by the SDK")
229
+ string_host_url_list: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("stringHostUrlList", "string_host_url_list"), serialization_alias="stringHostUrlList", description="A list of explicitly allowed origins that worlds can request strings from via the Udon's [VRCStringDownloader.LoadUrl](https://creators.vrchat.com/worlds/udon/string-loading/#ivrcstringdownload).")
230
+ support_email: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("supportEmail", "support_email"), serialization_alias="supportEmail", description="VRChat's support email")
231
+ support_form_url: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("supportFormUrl", "support_form_url"), serialization_alias="supportFormUrl", description="VRChat's support form")
232
+ time_out_world_id: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("timeOutWorldId", "time_out_world_id"), serialization_alias="timeOutWorldId", description="WorldID be \"offline\" on User profiles if you are not friends with that user.", json_schema_extra={"examples": ["wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd"]})
233
+ timekeeping: Optional[StrictBool] = Field(default=None, description="Unknown")
234
+ tutorial_world_id: Optional[StrictStr] = Field(default=None, validation_alias=AliasChoices("tutorialWorldId", "tutorial_world_id"), serialization_alias="tutorialWorldId", description="WorldID be \"offline\" on User profiles if you are not friends with that user.", json_schema_extra={"examples": ["wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd"]})
235
+ update_rate_ms_maximum: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("updateRateMsMaximum", "update_rate_ms_maximum"), serialization_alias="updateRateMsMaximum", description="Unknown")
236
+ update_rate_ms_minimum: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("updateRateMsMinimum", "update_rate_ms_minimum"), serialization_alias="updateRateMsMinimum", description="Unknown")
237
+ update_rate_ms_normal: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("updateRateMsNormal", "update_rate_ms_normal"), serialization_alias="updateRateMsNormal", description="Unknown")
238
+ update_rate_ms_udon_manual: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("updateRateMsUdonManual", "update_rate_ms_udon_manual"), serialization_alias="updateRateMsUdonManual", description="Unknown")
239
+ upload_analysis_percent: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("uploadAnalysisPercent", "upload_analysis_percent"), serialization_alias="uploadAnalysisPercent", description="Unknown")
240
+ url_list: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("urlList", "url_list"), serialization_alias="urlList", description="List of allowed URLs that bypass the \"Allow untrusted URL's\" setting in-game")
241
+ use_reliable_udp_for_voice: Optional[StrictBool] = Field(default=None, validation_alias=AliasChoices("useReliableUdpForVoice", "use_reliable_udp_for_voice"), serialization_alias="useReliableUdpForVoice", description="Unknown")
242
+ vive_windows_url: Optional[Annotated[str, Field(min_length=1, strict=True)]] = Field(default=None, validation_alias=AliasChoices("viveWindowsUrl", "vive_windows_url"), serialization_alias="viveWindowsUrl", description="Download link for game on the Steam website.")
243
+ websocket_max_friends_refresh_delay: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("websocketMaxFriendsRefreshDelay", "websocket_max_friends_refresh_delay"), serialization_alias="websocketMaxFriendsRefreshDelay", description="Unknown")
244
+ websocket_quick_reconnect_time: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("websocketQuickReconnectTime", "websocket_quick_reconnect_time"), serialization_alias="websocketQuickReconnectTime", description="Unknown")
245
+ websocket_reconnect_max_delay: Optional[StrictInt] = Field(default=None, validation_alias=AliasChoices("websocketReconnectMaxDelay", "websocket_reconnect_max_delay"), serialization_alias="websocketReconnectMaxDelay", description="Unknown")
246
+ white_listed_asset_urls: Optional[List[StrictStr]] = Field(default=None, validation_alias=AliasChoices("whiteListedAssetUrls", "white_listed_asset_urls"), serialization_alias="whiteListedAssetUrls", description="List of allowed URLs that are allowed to host avatar assets")
247
+ openapi_types: ClassVar[Dict[str, str]] = {
248
+ "campaign_status": "str",
249
+ "disable_background_preloads": "bool",
250
+ "location_gifting_non_sub_prio_enabled": "bool",
251
+ "voice_enable_degradation": "bool",
252
+ "voice_enable_receiver_limiting": "bool",
253
+ "access_logs_urls": "APIConfigAccessLogsUrls",
254
+ "address": "str",
255
+ "age_verification_invite_visible": "bool",
256
+ "age_verification_p": "bool",
257
+ "age_verification_status_visible": "bool",
258
+ "analysis_max_retries": "int",
259
+ "analysis_retry_interval": "int",
260
+ "analytics_segment_new_ui_pct_of_users": "int",
261
+ "analytics_segment_new_ui_salt": "str",
262
+ "announcements": "List[APIConfigAnnouncement]",
263
+ "audio_config": "APIConfigAudioConfig",
264
+ "available_language_codes": "List[str]",
265
+ "available_languages": "List[str]",
266
+ "avatar_perf_limiter": "APIConfigAvatarPerfLimiter",
267
+ "chatbox_log_buffer_seconds": "int",
268
+ "client_api_key": "str",
269
+ "client_bps_ceiling": "int",
270
+ "client_disconnect_timeout": "int",
271
+ "client_net_dispatch_thread": "bool",
272
+ "client_net_dispatch_thread_mobile": "bool",
273
+ "client_net_in_thread": "bool",
274
+ "client_net_in_thread2": "bool",
275
+ "client_net_in_thread_mobile": "bool",
276
+ "client_net_in_thread_mobile2": "bool",
277
+ "client_net_out_thread": "bool",
278
+ "client_net_out_thread2": "bool",
279
+ "client_net_out_thread_mobile": "bool",
280
+ "client_net_out_thread_mobile2": "bool",
281
+ "client_qr": "int",
282
+ "client_reserved_player_bps": "int",
283
+ "client_sent_count_allowance": "int",
284
+ "constants": "APIConfigConstants",
285
+ "contact_email": "str",
286
+ "copyright_email": "str",
287
+ "copyright_form_url": "str",
288
+ "current_privacy_version": "int",
289
+ "current_tos_version": "int",
290
+ "default_avatar": "str",
291
+ "default_sticker_set": "str",
292
+ "dev_language_codes": "List[str]",
293
+ "dev_sdk_url": "str",
294
+ "dev_sdk_version": "str",
295
+ "dis_countdown": "datetime",
296
+ "disable_av_pro_in_proton": "bool",
297
+ "disable_avatar_copying": "bool",
298
+ "disable_avatar_gating": "bool",
299
+ "disable_captcha": "bool",
300
+ "disable_community_labs": "bool",
301
+ "disable_community_labs_promotion": "bool",
302
+ "disable_email": "bool",
303
+ "disable_event_stream": "bool",
304
+ "disable_feedback_gating": "bool",
305
+ "disable_frontend_builds": "bool",
306
+ "disable_gift_drops": "bool",
307
+ "disable_hello": "bool",
308
+ "disable_oculus_subs": "bool",
309
+ "disable_registration": "bool",
310
+ "disable_steam_networking": "bool",
311
+ "disable_two_factor_auth": "bool",
312
+ "disable_udon": "bool",
313
+ "disable_upgrade_account": "bool",
314
+ "download_link_windows": "str",
315
+ "download_urls": "APIConfigDownloadURLList",
316
+ "dynamic_world_rows": "List[DynamicContentRow]",
317
+ "economy_ledger_backfill": "bool",
318
+ "economy_ledger_migration_stop": "str",
319
+ "economy_ledger_mode": "str",
320
+ "economy_pause_end": "datetime",
321
+ "economy_pause_start": "datetime",
322
+ "economy_purchase_repair_enabled": "bool",
323
+ "economy_state": "int",
324
+ "events": "APIConfigEvents",
325
+ "force_use_latest_world": "bool",
326
+ "gift_display_type": "str",
327
+ "google_api_client_id": "str",
328
+ "home_world_id": "str",
329
+ "homepage_redirect_target": "str",
330
+ "hub_world_id": "str",
331
+ "image_host_url_list": "List[str]",
332
+ "ios_app_version": "List[str]",
333
+ "ios_version": "APIConfigIosVersion",
334
+ "jobs_email": "str",
335
+ "max_user_emoji": "int",
336
+ "max_user_stickers": "int",
337
+ "min_supported_client_build_number": "APIConfigMinSupportedClientBuildNumber",
338
+ "minimum_unity_version_for_uploads": "str",
339
+ "moderation_email": "str",
340
+ "not_allowed_to_select_avatar_in_private_world_message": "str",
341
+ "offline_analysis": "APIConfigOfflineAnalysis",
342
+ "photon_nameserver_overrides": "List[str]",
343
+ "photon_public_keys": "List[str]",
344
+ "player_url_resolver_sha1": "str",
345
+ "player_url_resolver_version": "str",
346
+ "public_key": "str",
347
+ "report_categories": "Dict[str, ReportCategory]",
348
+ "report_form_url": "str",
349
+ "report_options": "Dict[str, Dict[str, List[str]]]",
350
+ "report_reasons": "Dict[str, ReportReason]",
351
+ "require_age_verification_beta_tag": "bool",
352
+ "sdk_developer_faq_url": "str",
353
+ "sdk_discord_url": "str",
354
+ "sdk_not_allowed_to_publish_message": "str",
355
+ "sdk_unity_version": "str",
356
+ "string_host_url_list": "List[str]",
357
+ "support_email": "str",
358
+ "support_form_url": "str",
359
+ "time_out_world_id": "str",
360
+ "timekeeping": "bool",
361
+ "tutorial_world_id": "str",
362
+ "update_rate_ms_maximum": "int",
363
+ "update_rate_ms_minimum": "int",
364
+ "update_rate_ms_normal": "int",
365
+ "update_rate_ms_udon_manual": "int",
366
+ "upload_analysis_percent": "int",
367
+ "url_list": "List[str]",
368
+ "use_reliable_udp_for_voice": "bool",
369
+ "vive_windows_url": "str",
370
+ "websocket_max_friends_refresh_delay": "int",
371
+ "websocket_quick_reconnect_time": "int",
372
+ "websocket_reconnect_max_delay": "int",
373
+ "white_listed_asset_urls": "List[str]"
374
+ }
375
+
376
+ attribute_map: ClassVar[Dict[str, str]] = {
377
+ "campaign_status": "CampaignStatus",
378
+ "disable_background_preloads": "DisableBackgroundPreloads",
379
+ "location_gifting_non_sub_prio_enabled": "LocationGiftingNonSubPrioEnabled",
380
+ "voice_enable_degradation": "VoiceEnableDegradation",
381
+ "voice_enable_receiver_limiting": "VoiceEnableReceiverLimiting",
382
+ "access_logs_urls": "accessLogsUrls",
383
+ "address": "address",
384
+ "age_verification_invite_visible": "ageVerificationInviteVisible",
385
+ "age_verification_p": "ageVerificationP",
386
+ "age_verification_status_visible": "ageVerificationStatusVisible",
387
+ "analysis_max_retries": "analysisMaxRetries",
388
+ "analysis_retry_interval": "analysisRetryInterval",
389
+ "analytics_segment_new_ui_pct_of_users": "analyticsSegment_NewUI_PctOfUsers",
390
+ "analytics_segment_new_ui_salt": "analyticsSegment_NewUI_Salt",
391
+ "announcements": "announcements",
392
+ "audio_config": "audioConfig",
393
+ "available_language_codes": "availableLanguageCodes",
394
+ "available_languages": "availableLanguages",
395
+ "avatar_perf_limiter": "avatarPerfLimiter",
396
+ "chatbox_log_buffer_seconds": "chatboxLogBufferSeconds",
397
+ "client_api_key": "clientApiKey",
398
+ "client_bps_ceiling": "clientBPSCeiling",
399
+ "client_disconnect_timeout": "clientDisconnectTimeout",
400
+ "client_net_dispatch_thread": "clientNetDispatchThread",
401
+ "client_net_dispatch_thread_mobile": "clientNetDispatchThreadMobile",
402
+ "client_net_in_thread": "clientNetInThread",
403
+ "client_net_in_thread2": "clientNetInThread2",
404
+ "client_net_in_thread_mobile": "clientNetInThreadMobile",
405
+ "client_net_in_thread_mobile2": "clientNetInThreadMobile2",
406
+ "client_net_out_thread": "clientNetOutThread",
407
+ "client_net_out_thread2": "clientNetOutThread2",
408
+ "client_net_out_thread_mobile": "clientNetOutThreadMobile",
409
+ "client_net_out_thread_mobile2": "clientNetOutThreadMobile2",
410
+ "client_qr": "clientQR",
411
+ "client_reserved_player_bps": "clientReservedPlayerBPS",
412
+ "client_sent_count_allowance": "clientSentCountAllowance",
413
+ "constants": "constants",
414
+ "contact_email": "contactEmail",
415
+ "copyright_email": "copyrightEmail",
416
+ "copyright_form_url": "copyrightFormUrl",
417
+ "current_privacy_version": "currentPrivacyVersion",
418
+ "current_tos_version": "currentTOSVersion",
419
+ "default_avatar": "defaultAvatar",
420
+ "default_sticker_set": "defaultStickerSet",
421
+ "dev_language_codes": "devLanguageCodes",
422
+ "dev_sdk_url": "devSdkUrl",
423
+ "dev_sdk_version": "devSdkVersion",
424
+ "dis_countdown": "dis-countdown",
425
+ "disable_av_pro_in_proton": "disableAVProInProton",
426
+ "disable_avatar_copying": "disableAvatarCopying",
427
+ "disable_avatar_gating": "disableAvatarGating",
428
+ "disable_captcha": "disableCaptcha",
429
+ "disable_community_labs": "disableCommunityLabs",
430
+ "disable_community_labs_promotion": "disableCommunityLabsPromotion",
431
+ "disable_email": "disableEmail",
432
+ "disable_event_stream": "disableEventStream",
433
+ "disable_feedback_gating": "disableFeedbackGating",
434
+ "disable_frontend_builds": "disableFrontendBuilds",
435
+ "disable_gift_drops": "disableGiftDrops",
436
+ "disable_hello": "disableHello",
437
+ "disable_oculus_subs": "disableOculusSubs",
438
+ "disable_registration": "disableRegistration",
439
+ "disable_steam_networking": "disableSteamNetworking",
440
+ "disable_two_factor_auth": "disableTwoFactorAuth",
441
+ "disable_udon": "disableUdon",
442
+ "disable_upgrade_account": "disableUpgradeAccount",
443
+ "download_link_windows": "downloadLinkWindows",
444
+ "download_urls": "downloadUrls",
445
+ "dynamic_world_rows": "dynamicWorldRows",
446
+ "economy_ledger_backfill": "economyLedgerBackfill",
447
+ "economy_ledger_migration_stop": "economyLedgerMigrationStop",
448
+ "economy_ledger_mode": "economyLedgerMode",
449
+ "economy_pause_end": "economyPauseEnd",
450
+ "economy_pause_start": "economyPauseStart",
451
+ "economy_purchase_repair_enabled": "economyPurchaseRepairEnabled",
452
+ "economy_state": "economyState",
453
+ "events": "events",
454
+ "force_use_latest_world": "forceUseLatestWorld",
455
+ "gift_display_type": "giftDisplayType",
456
+ "google_api_client_id": "googleApiClientId",
457
+ "home_world_id": "homeWorldId",
458
+ "homepage_redirect_target": "homepageRedirectTarget",
459
+ "hub_world_id": "hubWorldId",
460
+ "image_host_url_list": "imageHostUrlList",
461
+ "ios_app_version": "iosAppVersion",
462
+ "ios_version": "iosVersion",
463
+ "jobs_email": "jobsEmail",
464
+ "max_user_emoji": "maxUserEmoji",
465
+ "max_user_stickers": "maxUserStickers",
466
+ "min_supported_client_build_number": "minSupportedClientBuildNumber",
467
+ "minimum_unity_version_for_uploads": "minimumUnityVersionForUploads",
468
+ "moderation_email": "moderationEmail",
469
+ "not_allowed_to_select_avatar_in_private_world_message": "notAllowedToSelectAvatarInPrivateWorldMessage",
470
+ "offline_analysis": "offlineAnalysis",
471
+ "photon_nameserver_overrides": "photonNameserverOverrides",
472
+ "photon_public_keys": "photonPublicKeys",
473
+ "player_url_resolver_sha1": "player-url-resolver-sha1",
474
+ "player_url_resolver_version": "player-url-resolver-version",
475
+ "public_key": "publicKey",
476
+ "report_categories": "reportCategories",
477
+ "report_form_url": "reportFormUrl",
478
+ "report_options": "reportOptions",
479
+ "report_reasons": "reportReasons",
480
+ "require_age_verification_beta_tag": "requireAgeVerificationBetaTag",
481
+ "sdk_developer_faq_url": "sdkDeveloperFaqUrl",
482
+ "sdk_discord_url": "sdkDiscordUrl",
483
+ "sdk_not_allowed_to_publish_message": "sdkNotAllowedToPublishMessage",
484
+ "sdk_unity_version": "sdkUnityVersion",
485
+ "string_host_url_list": "stringHostUrlList",
486
+ "support_email": "supportEmail",
487
+ "support_form_url": "supportFormUrl",
488
+ "time_out_world_id": "timeOutWorldId",
489
+ "timekeeping": "timekeeping",
490
+ "tutorial_world_id": "tutorialWorldId",
491
+ "update_rate_ms_maximum": "updateRateMsMaximum",
492
+ "update_rate_ms_minimum": "updateRateMsMinimum",
493
+ "update_rate_ms_normal": "updateRateMsNormal",
494
+ "update_rate_ms_udon_manual": "updateRateMsUdonManual",
495
+ "upload_analysis_percent": "uploadAnalysisPercent",
496
+ "url_list": "urlList",
497
+ "use_reliable_udp_for_voice": "useReliableUdpForVoice",
498
+ "vive_windows_url": "viveWindowsUrl",
499
+ "websocket_max_friends_refresh_delay": "websocketMaxFriendsRefreshDelay",
500
+ "websocket_quick_reconnect_time": "websocketQuickReconnectTime",
501
+ "websocket_reconnect_max_delay": "websocketReconnectMaxDelay",
502
+ "white_listed_asset_urls": "whiteListedAssetUrls"
503
+ }
504
+ __properties: ClassVar[List[str]] = ["CampaignStatus", "DisableBackgroundPreloads", "LocationGiftingNonSubPrioEnabled", "VoiceEnableDegradation", "VoiceEnableReceiverLimiting", "accessLogsUrls", "address", "ageVerificationInviteVisible", "ageVerificationP", "ageVerificationStatusVisible", "analysisMaxRetries", "analysisRetryInterval", "analyticsSegment_NewUI_PctOfUsers", "analyticsSegment_NewUI_Salt", "announcements", "audioConfig", "availableLanguageCodes", "availableLanguages", "avatarPerfLimiter", "chatboxLogBufferSeconds", "clientApiKey", "clientBPSCeiling", "clientDisconnectTimeout", "clientNetDispatchThread", "clientNetDispatchThreadMobile", "clientNetInThread", "clientNetInThread2", "clientNetInThreadMobile", "clientNetInThreadMobile2", "clientNetOutThread", "clientNetOutThread2", "clientNetOutThreadMobile", "clientNetOutThreadMobile2", "clientQR", "clientReservedPlayerBPS", "clientSentCountAllowance", "constants", "contactEmail", "copyrightEmail", "copyrightFormUrl", "currentPrivacyVersion", "currentTOSVersion", "defaultAvatar", "defaultStickerSet", "devLanguageCodes", "devSdkUrl", "devSdkVersion", "dis-countdown", "disableAVProInProton", "disableAvatarCopying", "disableAvatarGating", "disableCaptcha", "disableCommunityLabs", "disableCommunityLabsPromotion", "disableEmail", "disableEventStream", "disableFeedbackGating", "disableFrontendBuilds", "disableGiftDrops", "disableHello", "disableOculusSubs", "disableRegistration", "disableSteamNetworking", "disableTwoFactorAuth", "disableUdon", "disableUpgradeAccount", "downloadLinkWindows", "downloadUrls", "dynamicWorldRows", "economyLedgerBackfill", "economyLedgerMigrationStop", "economyLedgerMode", "economyPauseEnd", "economyPauseStart", "economyPurchaseRepairEnabled", "economyState", "events", "forceUseLatestWorld", "giftDisplayType", "googleApiClientId", "homeWorldId", "homepageRedirectTarget", "hubWorldId", "imageHostUrlList", "iosAppVersion", "iosVersion", "jobsEmail", "maxUserEmoji", "maxUserStickers", "minSupportedClientBuildNumber", "minimumUnityVersionForUploads", "moderationEmail", "notAllowedToSelectAvatarInPrivateWorldMessage", "offlineAnalysis", "photonNameserverOverrides", "photonPublicKeys", "player-url-resolver-sha1", "player-url-resolver-version", "publicKey", "reportCategories", "reportFormUrl", "reportOptions", "reportReasons", "requireAgeVerificationBetaTag", "sdkDeveloperFaqUrl", "sdkDiscordUrl", "sdkNotAllowedToPublishMessage", "sdkUnityVersion", "stringHostUrlList", "supportEmail", "supportFormUrl", "timeOutWorldId", "timekeeping", "tutorialWorldId", "updateRateMsMaximum", "updateRateMsMinimum", "updateRateMsNormal", "updateRateMsUdonManual", "uploadAnalysisPercent", "urlList", "useReliableUdpForVoice", "viveWindowsUrl", "websocketMaxFriendsRefreshDelay", "websocketQuickReconnectTime", "websocketReconnectMaxDelay", "whiteListedAssetUrls"]
505
+
506
+ @classmethod
507
+ def __preprocess_input_names(
508
+ cls,
509
+ obj: Any,
510
+ remove_hidden_storage_names: bool = True,
511
+ ) -> Any:
512
+ if not isinstance(obj, _Mapping):
513
+ return obj
514
+ obj = dict(obj)
515
+ if "CampaignStatus" not in obj and "campaign_status" in obj:
516
+ obj["CampaignStatus"] = obj["campaign_status"]
517
+ obj.pop("campaign_status", None)
518
+ if "DisableBackgroundPreloads" not in obj and "disable_background_preloads" in obj:
519
+ obj["DisableBackgroundPreloads"] = obj["disable_background_preloads"]
520
+ obj.pop("disable_background_preloads", None)
521
+ if "LocationGiftingNonSubPrioEnabled" not in obj and "location_gifting_non_sub_prio_enabled" in obj:
522
+ obj["LocationGiftingNonSubPrioEnabled"] = obj["location_gifting_non_sub_prio_enabled"]
523
+ obj.pop("location_gifting_non_sub_prio_enabled", None)
524
+ if "VoiceEnableDegradation" not in obj and "voice_enable_degradation" in obj:
525
+ obj["VoiceEnableDegradation"] = obj["voice_enable_degradation"]
526
+ obj.pop("voice_enable_degradation", None)
527
+ if "VoiceEnableReceiverLimiting" not in obj and "voice_enable_receiver_limiting" in obj:
528
+ obj["VoiceEnableReceiverLimiting"] = obj["voice_enable_receiver_limiting"]
529
+ obj.pop("voice_enable_receiver_limiting", None)
530
+ if "accessLogsUrls" not in obj and "access_logs_urls" in obj:
531
+ obj["accessLogsUrls"] = obj["access_logs_urls"]
532
+ obj.pop("access_logs_urls", None)
533
+ if "ageVerificationInviteVisible" not in obj and "age_verification_invite_visible" in obj:
534
+ obj["ageVerificationInviteVisible"] = obj["age_verification_invite_visible"]
535
+ obj.pop("age_verification_invite_visible", None)
536
+ if "ageVerificationP" not in obj and "age_verification_p" in obj:
537
+ obj["ageVerificationP"] = obj["age_verification_p"]
538
+ obj.pop("age_verification_p", None)
539
+ if "ageVerificationStatusVisible" not in obj and "age_verification_status_visible" in obj:
540
+ obj["ageVerificationStatusVisible"] = obj["age_verification_status_visible"]
541
+ obj.pop("age_verification_status_visible", None)
542
+ if "analysisMaxRetries" not in obj and "analysis_max_retries" in obj:
543
+ obj["analysisMaxRetries"] = obj["analysis_max_retries"]
544
+ obj.pop("analysis_max_retries", None)
545
+ if "analysisRetryInterval" not in obj and "analysis_retry_interval" in obj:
546
+ obj["analysisRetryInterval"] = obj["analysis_retry_interval"]
547
+ obj.pop("analysis_retry_interval", None)
548
+ if "analyticsSegment_NewUI_PctOfUsers" not in obj and "analytics_segment_new_ui_pct_of_users" in obj:
549
+ obj["analyticsSegment_NewUI_PctOfUsers"] = obj["analytics_segment_new_ui_pct_of_users"]
550
+ obj.pop("analytics_segment_new_ui_pct_of_users", None)
551
+ if "analyticsSegment_NewUI_Salt" not in obj and "analytics_segment_new_ui_salt" in obj:
552
+ obj["analyticsSegment_NewUI_Salt"] = obj["analytics_segment_new_ui_salt"]
553
+ obj.pop("analytics_segment_new_ui_salt", None)
554
+ if "audioConfig" not in obj and "audio_config" in obj:
555
+ obj["audioConfig"] = obj["audio_config"]
556
+ obj.pop("audio_config", None)
557
+ if "availableLanguageCodes" not in obj and "available_language_codes" in obj:
558
+ obj["availableLanguageCodes"] = obj["available_language_codes"]
559
+ obj.pop("available_language_codes", None)
560
+ if "availableLanguages" not in obj and "available_languages" in obj:
561
+ obj["availableLanguages"] = obj["available_languages"]
562
+ obj.pop("available_languages", None)
563
+ if "avatarPerfLimiter" not in obj and "avatar_perf_limiter" in obj:
564
+ obj["avatarPerfLimiter"] = obj["avatar_perf_limiter"]
565
+ obj.pop("avatar_perf_limiter", None)
566
+ if "chatboxLogBufferSeconds" not in obj and "chatbox_log_buffer_seconds" in obj:
567
+ obj["chatboxLogBufferSeconds"] = obj["chatbox_log_buffer_seconds"]
568
+ obj.pop("chatbox_log_buffer_seconds", None)
569
+ if "clientApiKey" not in obj and "client_api_key" in obj:
570
+ obj["clientApiKey"] = obj["client_api_key"]
571
+ obj.pop("client_api_key", None)
572
+ if "clientBPSCeiling" not in obj and "client_bps_ceiling" in obj:
573
+ obj["clientBPSCeiling"] = obj["client_bps_ceiling"]
574
+ obj.pop("client_bps_ceiling", None)
575
+ if "clientDisconnectTimeout" not in obj and "client_disconnect_timeout" in obj:
576
+ obj["clientDisconnectTimeout"] = obj["client_disconnect_timeout"]
577
+ obj.pop("client_disconnect_timeout", None)
578
+ if "clientNetDispatchThread" not in obj and "client_net_dispatch_thread" in obj:
579
+ obj["clientNetDispatchThread"] = obj["client_net_dispatch_thread"]
580
+ obj.pop("client_net_dispatch_thread", None)
581
+ if "clientNetDispatchThreadMobile" not in obj and "client_net_dispatch_thread_mobile" in obj:
582
+ obj["clientNetDispatchThreadMobile"] = obj["client_net_dispatch_thread_mobile"]
583
+ obj.pop("client_net_dispatch_thread_mobile", None)
584
+ if "clientNetInThread" not in obj and "client_net_in_thread" in obj:
585
+ obj["clientNetInThread"] = obj["client_net_in_thread"]
586
+ obj.pop("client_net_in_thread", None)
587
+ if "clientNetInThread2" not in obj and "client_net_in_thread2" in obj:
588
+ obj["clientNetInThread2"] = obj["client_net_in_thread2"]
589
+ obj.pop("client_net_in_thread2", None)
590
+ if "clientNetInThreadMobile" not in obj and "client_net_in_thread_mobile" in obj:
591
+ obj["clientNetInThreadMobile"] = obj["client_net_in_thread_mobile"]
592
+ obj.pop("client_net_in_thread_mobile", None)
593
+ if "clientNetInThreadMobile2" not in obj and "client_net_in_thread_mobile2" in obj:
594
+ obj["clientNetInThreadMobile2"] = obj["client_net_in_thread_mobile2"]
595
+ obj.pop("client_net_in_thread_mobile2", None)
596
+ if "clientNetOutThread" not in obj and "client_net_out_thread" in obj:
597
+ obj["clientNetOutThread"] = obj["client_net_out_thread"]
598
+ obj.pop("client_net_out_thread", None)
599
+ if "clientNetOutThread2" not in obj and "client_net_out_thread2" in obj:
600
+ obj["clientNetOutThread2"] = obj["client_net_out_thread2"]
601
+ obj.pop("client_net_out_thread2", None)
602
+ if "clientNetOutThreadMobile" not in obj and "client_net_out_thread_mobile" in obj:
603
+ obj["clientNetOutThreadMobile"] = obj["client_net_out_thread_mobile"]
604
+ obj.pop("client_net_out_thread_mobile", None)
605
+ if "clientNetOutThreadMobile2" not in obj and "client_net_out_thread_mobile2" in obj:
606
+ obj["clientNetOutThreadMobile2"] = obj["client_net_out_thread_mobile2"]
607
+ obj.pop("client_net_out_thread_mobile2", None)
608
+ if "clientQR" not in obj and "client_qr" in obj:
609
+ obj["clientQR"] = obj["client_qr"]
610
+ obj.pop("client_qr", None)
611
+ if "clientReservedPlayerBPS" not in obj and "client_reserved_player_bps" in obj:
612
+ obj["clientReservedPlayerBPS"] = obj["client_reserved_player_bps"]
613
+ obj.pop("client_reserved_player_bps", None)
614
+ if "clientSentCountAllowance" not in obj and "client_sent_count_allowance" in obj:
615
+ obj["clientSentCountAllowance"] = obj["client_sent_count_allowance"]
616
+ obj.pop("client_sent_count_allowance", None)
617
+ if "contactEmail" not in obj and "contact_email" in obj:
618
+ obj["contactEmail"] = obj["contact_email"]
619
+ obj.pop("contact_email", None)
620
+ if "copyrightEmail" not in obj and "copyright_email" in obj:
621
+ obj["copyrightEmail"] = obj["copyright_email"]
622
+ obj.pop("copyright_email", None)
623
+ if "copyrightFormUrl" not in obj and "copyright_form_url" in obj:
624
+ obj["copyrightFormUrl"] = obj["copyright_form_url"]
625
+ obj.pop("copyright_form_url", None)
626
+ if "currentPrivacyVersion" not in obj and "current_privacy_version" in obj:
627
+ obj["currentPrivacyVersion"] = obj["current_privacy_version"]
628
+ obj.pop("current_privacy_version", None)
629
+ if "currentTOSVersion" not in obj and "current_tos_version" in obj:
630
+ obj["currentTOSVersion"] = obj["current_tos_version"]
631
+ obj.pop("current_tos_version", None)
632
+ if "defaultAvatar" not in obj and "default_avatar" in obj:
633
+ obj["defaultAvatar"] = obj["default_avatar"]
634
+ obj.pop("default_avatar", None)
635
+ if "defaultStickerSet" not in obj and "default_sticker_set" in obj:
636
+ obj["defaultStickerSet"] = obj["default_sticker_set"]
637
+ obj.pop("default_sticker_set", None)
638
+ if "devLanguageCodes" not in obj and "dev_language_codes" in obj:
639
+ obj["devLanguageCodes"] = obj["dev_language_codes"]
640
+ obj.pop("dev_language_codes", None)
641
+ if "devSdkUrl" not in obj and "dev_sdk_url" in obj:
642
+ obj["devSdkUrl"] = obj["dev_sdk_url"]
643
+ obj.pop("dev_sdk_url", None)
644
+ if "devSdkVersion" not in obj and "dev_sdk_version" in obj:
645
+ obj["devSdkVersion"] = obj["dev_sdk_version"]
646
+ obj.pop("dev_sdk_version", None)
647
+ if "dis-countdown" not in obj and "dis_countdown" in obj:
648
+ obj["dis-countdown"] = obj["dis_countdown"]
649
+ obj.pop("dis_countdown", None)
650
+ if "disableAVProInProton" not in obj and "disable_av_pro_in_proton" in obj:
651
+ obj["disableAVProInProton"] = obj["disable_av_pro_in_proton"]
652
+ obj.pop("disable_av_pro_in_proton", None)
653
+ if "disableAvatarCopying" not in obj and "disable_avatar_copying" in obj:
654
+ obj["disableAvatarCopying"] = obj["disable_avatar_copying"]
655
+ obj.pop("disable_avatar_copying", None)
656
+ if "disableAvatarGating" not in obj and "disable_avatar_gating" in obj:
657
+ obj["disableAvatarGating"] = obj["disable_avatar_gating"]
658
+ obj.pop("disable_avatar_gating", None)
659
+ if "disableCaptcha" not in obj and "disable_captcha" in obj:
660
+ obj["disableCaptcha"] = obj["disable_captcha"]
661
+ obj.pop("disable_captcha", None)
662
+ if "disableCommunityLabs" not in obj and "disable_community_labs" in obj:
663
+ obj["disableCommunityLabs"] = obj["disable_community_labs"]
664
+ obj.pop("disable_community_labs", None)
665
+ if "disableCommunityLabsPromotion" not in obj and "disable_community_labs_promotion" in obj:
666
+ obj["disableCommunityLabsPromotion"] = obj["disable_community_labs_promotion"]
667
+ obj.pop("disable_community_labs_promotion", None)
668
+ if "disableEmail" not in obj and "disable_email" in obj:
669
+ obj["disableEmail"] = obj["disable_email"]
670
+ obj.pop("disable_email", None)
671
+ if "disableEventStream" not in obj and "disable_event_stream" in obj:
672
+ obj["disableEventStream"] = obj["disable_event_stream"]
673
+ obj.pop("disable_event_stream", None)
674
+ if "disableFeedbackGating" not in obj and "disable_feedback_gating" in obj:
675
+ obj["disableFeedbackGating"] = obj["disable_feedback_gating"]
676
+ obj.pop("disable_feedback_gating", None)
677
+ if "disableFrontendBuilds" not in obj and "disable_frontend_builds" in obj:
678
+ obj["disableFrontendBuilds"] = obj["disable_frontend_builds"]
679
+ obj.pop("disable_frontend_builds", None)
680
+ if "disableGiftDrops" not in obj and "disable_gift_drops" in obj:
681
+ obj["disableGiftDrops"] = obj["disable_gift_drops"]
682
+ obj.pop("disable_gift_drops", None)
683
+ if "disableHello" not in obj and "disable_hello" in obj:
684
+ obj["disableHello"] = obj["disable_hello"]
685
+ obj.pop("disable_hello", None)
686
+ if "disableOculusSubs" not in obj and "disable_oculus_subs" in obj:
687
+ obj["disableOculusSubs"] = obj["disable_oculus_subs"]
688
+ obj.pop("disable_oculus_subs", None)
689
+ if "disableRegistration" not in obj and "disable_registration" in obj:
690
+ obj["disableRegistration"] = obj["disable_registration"]
691
+ obj.pop("disable_registration", None)
692
+ if "disableSteamNetworking" not in obj and "disable_steam_networking" in obj:
693
+ obj["disableSteamNetworking"] = obj["disable_steam_networking"]
694
+ obj.pop("disable_steam_networking", None)
695
+ if "disableTwoFactorAuth" not in obj and "disable_two_factor_auth" in obj:
696
+ obj["disableTwoFactorAuth"] = obj["disable_two_factor_auth"]
697
+ obj.pop("disable_two_factor_auth", None)
698
+ if "disableUdon" not in obj and "disable_udon" in obj:
699
+ obj["disableUdon"] = obj["disable_udon"]
700
+ obj.pop("disable_udon", None)
701
+ if "disableUpgradeAccount" not in obj and "disable_upgrade_account" in obj:
702
+ obj["disableUpgradeAccount"] = obj["disable_upgrade_account"]
703
+ obj.pop("disable_upgrade_account", None)
704
+ if "downloadLinkWindows" not in obj and "download_link_windows" in obj:
705
+ obj["downloadLinkWindows"] = obj["download_link_windows"]
706
+ obj.pop("download_link_windows", None)
707
+ if "downloadUrls" not in obj and "download_urls" in obj:
708
+ obj["downloadUrls"] = obj["download_urls"]
709
+ obj.pop("download_urls", None)
710
+ if "dynamicWorldRows" not in obj and "dynamic_world_rows" in obj:
711
+ obj["dynamicWorldRows"] = obj["dynamic_world_rows"]
712
+ obj.pop("dynamic_world_rows", None)
713
+ if "economyLedgerBackfill" not in obj and "economy_ledger_backfill" in obj:
714
+ obj["economyLedgerBackfill"] = obj["economy_ledger_backfill"]
715
+ obj.pop("economy_ledger_backfill", None)
716
+ if "economyLedgerMigrationStop" not in obj and "economy_ledger_migration_stop" in obj:
717
+ obj["economyLedgerMigrationStop"] = obj["economy_ledger_migration_stop"]
718
+ obj.pop("economy_ledger_migration_stop", None)
719
+ if "economyLedgerMode" not in obj and "economy_ledger_mode" in obj:
720
+ obj["economyLedgerMode"] = obj["economy_ledger_mode"]
721
+ obj.pop("economy_ledger_mode", None)
722
+ if "economyPauseEnd" not in obj and "economy_pause_end" in obj:
723
+ obj["economyPauseEnd"] = obj["economy_pause_end"]
724
+ obj.pop("economy_pause_end", None)
725
+ if "economyPauseStart" not in obj and "economy_pause_start" in obj:
726
+ obj["economyPauseStart"] = obj["economy_pause_start"]
727
+ obj.pop("economy_pause_start", None)
728
+ if "economyPurchaseRepairEnabled" not in obj and "economy_purchase_repair_enabled" in obj:
729
+ obj["economyPurchaseRepairEnabled"] = obj["economy_purchase_repair_enabled"]
730
+ obj.pop("economy_purchase_repair_enabled", None)
731
+ if "economyState" not in obj and "economy_state" in obj:
732
+ obj["economyState"] = obj["economy_state"]
733
+ obj.pop("economy_state", None)
734
+ if "forceUseLatestWorld" not in obj and "force_use_latest_world" in obj:
735
+ obj["forceUseLatestWorld"] = obj["force_use_latest_world"]
736
+ obj.pop("force_use_latest_world", None)
737
+ if "giftDisplayType" not in obj and "gift_display_type" in obj:
738
+ obj["giftDisplayType"] = obj["gift_display_type"]
739
+ obj.pop("gift_display_type", None)
740
+ if "googleApiClientId" not in obj and "google_api_client_id" in obj:
741
+ obj["googleApiClientId"] = obj["google_api_client_id"]
742
+ obj.pop("google_api_client_id", None)
743
+ if "homeWorldId" not in obj and "home_world_id" in obj:
744
+ obj["homeWorldId"] = obj["home_world_id"]
745
+ obj.pop("home_world_id", None)
746
+ if "homepageRedirectTarget" not in obj and "homepage_redirect_target" in obj:
747
+ obj["homepageRedirectTarget"] = obj["homepage_redirect_target"]
748
+ obj.pop("homepage_redirect_target", None)
749
+ if "hubWorldId" not in obj and "hub_world_id" in obj:
750
+ obj["hubWorldId"] = obj["hub_world_id"]
751
+ obj.pop("hub_world_id", None)
752
+ if "imageHostUrlList" not in obj and "image_host_url_list" in obj:
753
+ obj["imageHostUrlList"] = obj["image_host_url_list"]
754
+ obj.pop("image_host_url_list", None)
755
+ if "iosAppVersion" not in obj and "ios_app_version" in obj:
756
+ obj["iosAppVersion"] = obj["ios_app_version"]
757
+ obj.pop("ios_app_version", None)
758
+ if "iosVersion" not in obj and "ios_version" in obj:
759
+ obj["iosVersion"] = obj["ios_version"]
760
+ obj.pop("ios_version", None)
761
+ if "jobsEmail" not in obj and "jobs_email" in obj:
762
+ obj["jobsEmail"] = obj["jobs_email"]
763
+ obj.pop("jobs_email", None)
764
+ if "maxUserEmoji" not in obj and "max_user_emoji" in obj:
765
+ obj["maxUserEmoji"] = obj["max_user_emoji"]
766
+ obj.pop("max_user_emoji", None)
767
+ if "maxUserStickers" not in obj and "max_user_stickers" in obj:
768
+ obj["maxUserStickers"] = obj["max_user_stickers"]
769
+ obj.pop("max_user_stickers", None)
770
+ if "minSupportedClientBuildNumber" not in obj and "min_supported_client_build_number" in obj:
771
+ obj["minSupportedClientBuildNumber"] = obj["min_supported_client_build_number"]
772
+ obj.pop("min_supported_client_build_number", None)
773
+ if "minimumUnityVersionForUploads" not in obj and "minimum_unity_version_for_uploads" in obj:
774
+ obj["minimumUnityVersionForUploads"] = obj["minimum_unity_version_for_uploads"]
775
+ obj.pop("minimum_unity_version_for_uploads", None)
776
+ if "moderationEmail" not in obj and "moderation_email" in obj:
777
+ obj["moderationEmail"] = obj["moderation_email"]
778
+ obj.pop("moderation_email", None)
779
+ if "notAllowedToSelectAvatarInPrivateWorldMessage" not in obj and "not_allowed_to_select_avatar_in_private_world_message" in obj:
780
+ obj["notAllowedToSelectAvatarInPrivateWorldMessage"] = obj["not_allowed_to_select_avatar_in_private_world_message"]
781
+ obj.pop("not_allowed_to_select_avatar_in_private_world_message", None)
782
+ if "offlineAnalysis" not in obj and "offline_analysis" in obj:
783
+ obj["offlineAnalysis"] = obj["offline_analysis"]
784
+ obj.pop("offline_analysis", None)
785
+ if "photonNameserverOverrides" not in obj and "photon_nameserver_overrides" in obj:
786
+ obj["photonNameserverOverrides"] = obj["photon_nameserver_overrides"]
787
+ obj.pop("photon_nameserver_overrides", None)
788
+ if "photonPublicKeys" not in obj and "photon_public_keys" in obj:
789
+ obj["photonPublicKeys"] = obj["photon_public_keys"]
790
+ obj.pop("photon_public_keys", None)
791
+ if "player-url-resolver-sha1" not in obj and "player_url_resolver_sha1" in obj:
792
+ obj["player-url-resolver-sha1"] = obj["player_url_resolver_sha1"]
793
+ obj.pop("player_url_resolver_sha1", None)
794
+ if "player-url-resolver-version" not in obj and "player_url_resolver_version" in obj:
795
+ obj["player-url-resolver-version"] = obj["player_url_resolver_version"]
796
+ obj.pop("player_url_resolver_version", None)
797
+ if "publicKey" not in obj and "public_key" in obj:
798
+ obj["publicKey"] = obj["public_key"]
799
+ obj.pop("public_key", None)
800
+ if "reportCategories" not in obj and "report_categories" in obj:
801
+ obj["reportCategories"] = obj["report_categories"]
802
+ obj.pop("report_categories", None)
803
+ if "reportFormUrl" not in obj and "report_form_url" in obj:
804
+ obj["reportFormUrl"] = obj["report_form_url"]
805
+ obj.pop("report_form_url", None)
806
+ if "reportOptions" not in obj and "report_options" in obj:
807
+ obj["reportOptions"] = obj["report_options"]
808
+ obj.pop("report_options", None)
809
+ if "reportReasons" not in obj and "report_reasons" in obj:
810
+ obj["reportReasons"] = obj["report_reasons"]
811
+ obj.pop("report_reasons", None)
812
+ if "requireAgeVerificationBetaTag" not in obj and "require_age_verification_beta_tag" in obj:
813
+ obj["requireAgeVerificationBetaTag"] = obj["require_age_verification_beta_tag"]
814
+ obj.pop("require_age_verification_beta_tag", None)
815
+ if "sdkDeveloperFaqUrl" not in obj and "sdk_developer_faq_url" in obj:
816
+ obj["sdkDeveloperFaqUrl"] = obj["sdk_developer_faq_url"]
817
+ obj.pop("sdk_developer_faq_url", None)
818
+ if "sdkDiscordUrl" not in obj and "sdk_discord_url" in obj:
819
+ obj["sdkDiscordUrl"] = obj["sdk_discord_url"]
820
+ obj.pop("sdk_discord_url", None)
821
+ if "sdkNotAllowedToPublishMessage" not in obj and "sdk_not_allowed_to_publish_message" in obj:
822
+ obj["sdkNotAllowedToPublishMessage"] = obj["sdk_not_allowed_to_publish_message"]
823
+ obj.pop("sdk_not_allowed_to_publish_message", None)
824
+ if "sdkUnityVersion" not in obj and "sdk_unity_version" in obj:
825
+ obj["sdkUnityVersion"] = obj["sdk_unity_version"]
826
+ obj.pop("sdk_unity_version", None)
827
+ if "stringHostUrlList" not in obj and "string_host_url_list" in obj:
828
+ obj["stringHostUrlList"] = obj["string_host_url_list"]
829
+ obj.pop("string_host_url_list", None)
830
+ if "supportEmail" not in obj and "support_email" in obj:
831
+ obj["supportEmail"] = obj["support_email"]
832
+ obj.pop("support_email", None)
833
+ if "supportFormUrl" not in obj and "support_form_url" in obj:
834
+ obj["supportFormUrl"] = obj["support_form_url"]
835
+ obj.pop("support_form_url", None)
836
+ if "timeOutWorldId" not in obj and "time_out_world_id" in obj:
837
+ obj["timeOutWorldId"] = obj["time_out_world_id"]
838
+ obj.pop("time_out_world_id", None)
839
+ if "tutorialWorldId" not in obj and "tutorial_world_id" in obj:
840
+ obj["tutorialWorldId"] = obj["tutorial_world_id"]
841
+ obj.pop("tutorial_world_id", None)
842
+ if "updateRateMsMaximum" not in obj and "update_rate_ms_maximum" in obj:
843
+ obj["updateRateMsMaximum"] = obj["update_rate_ms_maximum"]
844
+ obj.pop("update_rate_ms_maximum", None)
845
+ if "updateRateMsMinimum" not in obj and "update_rate_ms_minimum" in obj:
846
+ obj["updateRateMsMinimum"] = obj["update_rate_ms_minimum"]
847
+ obj.pop("update_rate_ms_minimum", None)
848
+ if "updateRateMsNormal" not in obj and "update_rate_ms_normal" in obj:
849
+ obj["updateRateMsNormal"] = obj["update_rate_ms_normal"]
850
+ obj.pop("update_rate_ms_normal", None)
851
+ if "updateRateMsUdonManual" not in obj and "update_rate_ms_udon_manual" in obj:
852
+ obj["updateRateMsUdonManual"] = obj["update_rate_ms_udon_manual"]
853
+ obj.pop("update_rate_ms_udon_manual", None)
854
+ if "uploadAnalysisPercent" not in obj and "upload_analysis_percent" in obj:
855
+ obj["uploadAnalysisPercent"] = obj["upload_analysis_percent"]
856
+ obj.pop("upload_analysis_percent", None)
857
+ if "urlList" not in obj and "url_list" in obj:
858
+ obj["urlList"] = obj["url_list"]
859
+ obj.pop("url_list", None)
860
+ if "useReliableUdpForVoice" not in obj and "use_reliable_udp_for_voice" in obj:
861
+ obj["useReliableUdpForVoice"] = obj["use_reliable_udp_for_voice"]
862
+ obj.pop("use_reliable_udp_for_voice", None)
863
+ if "viveWindowsUrl" not in obj and "vive_windows_url" in obj:
864
+ obj["viveWindowsUrl"] = obj["vive_windows_url"]
865
+ obj.pop("vive_windows_url", None)
866
+ if "websocketMaxFriendsRefreshDelay" not in obj and "websocket_max_friends_refresh_delay" in obj:
867
+ obj["websocketMaxFriendsRefreshDelay"] = obj["websocket_max_friends_refresh_delay"]
868
+ obj.pop("websocket_max_friends_refresh_delay", None)
869
+ if "websocketQuickReconnectTime" not in obj and "websocket_quick_reconnect_time" in obj:
870
+ obj["websocketQuickReconnectTime"] = obj["websocket_quick_reconnect_time"]
871
+ obj.pop("websocket_quick_reconnect_time", None)
872
+ if "websocketReconnectMaxDelay" not in obj and "websocket_reconnect_max_delay" in obj:
873
+ obj["websocketReconnectMaxDelay"] = obj["websocket_reconnect_max_delay"]
874
+ obj.pop("websocket_reconnect_max_delay", None)
875
+ if "whiteListedAssetUrls" not in obj and "white_listed_asset_urls" in obj:
876
+ obj["whiteListedAssetUrls"] = obj["white_listed_asset_urls"]
877
+ obj.pop("white_listed_asset_urls", None)
878
+ return obj
879
+
880
+ model_config = ConfigDict(
881
+ validate_by_name=True,
882
+ validate_by_alias=True,
883
+ validate_assignment=True,
884
+ extra="forbid",
885
+ protected_namespaces=(),
886
+ )
887
+
888
+
889
+ def to_str(self) -> str:
890
+ """Returns the string representation of the model"""
891
+ return pprint.pformat(self.to_dict())
892
+
893
+ def __repr__(self) -> str:
894
+ """For print and pprint"""
895
+ return self.to_str()
896
+
897
+ def __eq__(self, other: object) -> bool:
898
+ """Returns true if both objects are equal"""
899
+ if not isinstance(other, APIConfig):
900
+ return False
901
+
902
+ return self.to_dict() == other.to_dict()
903
+
904
+ def __ne__(self, other: object) -> bool:
905
+ """Returns true if both objects are not equal"""
906
+ if not isinstance(other, APIConfig):
907
+ return True
908
+
909
+ return not (self == other)
910
+
911
+
912
+ def to_json(self) -> str:
913
+ """Returns the JSON representation of the model using alias"""
914
+ to_openapi_dict = _get_openapi_to_dict(self)
915
+ if to_openapi_dict is not None:
916
+ return json.dumps(to_jsonable_python(to_openapi_dict(self)))
917
+ return json.dumps(to_jsonable_python(self.to_dict()))
918
+
919
+ @classmethod
920
+ def from_json(cls, json_str: str) -> Optional[Self]:
921
+ """Create an instance of APIConfig from a JSON string"""
922
+ return cls.from_dict(json.loads(json_str))
923
+
924
+ def to_dict(self, serialize: bool = False) -> Dict[str, Any]:
925
+ """Return all declared model fields using public or wire names."""
926
+ return {
927
+ ("CampaignStatus" if serialize else "campaign_status"): _to_legacy_value(getattr(self, "campaign_status", None), serialize),
928
+ ("DisableBackgroundPreloads" if serialize else "disable_background_preloads"): _to_legacy_value(getattr(self, "disable_background_preloads", None), serialize),
929
+ ("LocationGiftingNonSubPrioEnabled" if serialize else "location_gifting_non_sub_prio_enabled"): _to_legacy_value(getattr(self, "location_gifting_non_sub_prio_enabled", None), serialize),
930
+ ("VoiceEnableDegradation" if serialize else "voice_enable_degradation"): _to_legacy_value(getattr(self, "voice_enable_degradation", None), serialize),
931
+ ("VoiceEnableReceiverLimiting" if serialize else "voice_enable_receiver_limiting"): _to_legacy_value(getattr(self, "voice_enable_receiver_limiting", None), serialize),
932
+ ("accessLogsUrls" if serialize else "access_logs_urls"): _to_legacy_value(getattr(self, "access_logs_urls", None), serialize),
933
+ ("address" if serialize else "address"): _to_legacy_value(getattr(self, "address", None), serialize),
934
+ ("ageVerificationInviteVisible" if serialize else "age_verification_invite_visible"): _to_legacy_value(getattr(self, "age_verification_invite_visible", None), serialize),
935
+ ("ageVerificationP" if serialize else "age_verification_p"): _to_legacy_value(getattr(self, "age_verification_p", None), serialize),
936
+ ("ageVerificationStatusVisible" if serialize else "age_verification_status_visible"): _to_legacy_value(getattr(self, "age_verification_status_visible", None), serialize),
937
+ ("analysisMaxRetries" if serialize else "analysis_max_retries"): _to_legacy_value(getattr(self, "analysis_max_retries", None), serialize),
938
+ ("analysisRetryInterval" if serialize else "analysis_retry_interval"): _to_legacy_value(getattr(self, "analysis_retry_interval", None), serialize),
939
+ ("analyticsSegment_NewUI_PctOfUsers" if serialize else "analytics_segment_new_ui_pct_of_users"): _to_legacy_value(getattr(self, "analytics_segment_new_ui_pct_of_users", None), serialize),
940
+ ("analyticsSegment_NewUI_Salt" if serialize else "analytics_segment_new_ui_salt"): _to_legacy_value(getattr(self, "analytics_segment_new_ui_salt", None), serialize),
941
+ ("announcements" if serialize else "announcements"): _to_legacy_value(getattr(self, "announcements", None), serialize),
942
+ ("audioConfig" if serialize else "audio_config"): _to_legacy_value(getattr(self, "audio_config", None), serialize),
943
+ ("availableLanguageCodes" if serialize else "available_language_codes"): _to_legacy_value(getattr(self, "available_language_codes", None), serialize),
944
+ ("availableLanguages" if serialize else "available_languages"): _to_legacy_value(getattr(self, "available_languages", None), serialize),
945
+ ("avatarPerfLimiter" if serialize else "avatar_perf_limiter"): _to_legacy_value(getattr(self, "avatar_perf_limiter", None), serialize),
946
+ ("chatboxLogBufferSeconds" if serialize else "chatbox_log_buffer_seconds"): _to_legacy_value(getattr(self, "chatbox_log_buffer_seconds", None), serialize),
947
+ ("clientApiKey" if serialize else "client_api_key"): _to_legacy_value(getattr(self, "client_api_key", None), serialize),
948
+ ("clientBPSCeiling" if serialize else "client_bps_ceiling"): _to_legacy_value(getattr(self, "client_bps_ceiling", None), serialize),
949
+ ("clientDisconnectTimeout" if serialize else "client_disconnect_timeout"): _to_legacy_value(getattr(self, "client_disconnect_timeout", None), serialize),
950
+ ("clientNetDispatchThread" if serialize else "client_net_dispatch_thread"): _to_legacy_value(getattr(self, "client_net_dispatch_thread", None), serialize),
951
+ ("clientNetDispatchThreadMobile" if serialize else "client_net_dispatch_thread_mobile"): _to_legacy_value(getattr(self, "client_net_dispatch_thread_mobile", None), serialize),
952
+ ("clientNetInThread" if serialize else "client_net_in_thread"): _to_legacy_value(getattr(self, "client_net_in_thread", None), serialize),
953
+ ("clientNetInThread2" if serialize else "client_net_in_thread2"): _to_legacy_value(getattr(self, "client_net_in_thread2", None), serialize),
954
+ ("clientNetInThreadMobile" if serialize else "client_net_in_thread_mobile"): _to_legacy_value(getattr(self, "client_net_in_thread_mobile", None), serialize),
955
+ ("clientNetInThreadMobile2" if serialize else "client_net_in_thread_mobile2"): _to_legacy_value(getattr(self, "client_net_in_thread_mobile2", None), serialize),
956
+ ("clientNetOutThread" if serialize else "client_net_out_thread"): _to_legacy_value(getattr(self, "client_net_out_thread", None), serialize),
957
+ ("clientNetOutThread2" if serialize else "client_net_out_thread2"): _to_legacy_value(getattr(self, "client_net_out_thread2", None), serialize),
958
+ ("clientNetOutThreadMobile" if serialize else "client_net_out_thread_mobile"): _to_legacy_value(getattr(self, "client_net_out_thread_mobile", None), serialize),
959
+ ("clientNetOutThreadMobile2" if serialize else "client_net_out_thread_mobile2"): _to_legacy_value(getattr(self, "client_net_out_thread_mobile2", None), serialize),
960
+ ("clientQR" if serialize else "client_qr"): _to_legacy_value(getattr(self, "client_qr", None), serialize),
961
+ ("clientReservedPlayerBPS" if serialize else "client_reserved_player_bps"): _to_legacy_value(getattr(self, "client_reserved_player_bps", None), serialize),
962
+ ("clientSentCountAllowance" if serialize else "client_sent_count_allowance"): _to_legacy_value(getattr(self, "client_sent_count_allowance", None), serialize),
963
+ ("constants" if serialize else "constants"): _to_legacy_value(getattr(self, "constants", None), serialize),
964
+ ("contactEmail" if serialize else "contact_email"): _to_legacy_value(getattr(self, "contact_email", None), serialize),
965
+ ("copyrightEmail" if serialize else "copyright_email"): _to_legacy_value(getattr(self, "copyright_email", None), serialize),
966
+ ("copyrightFormUrl" if serialize else "copyright_form_url"): _to_legacy_value(getattr(self, "copyright_form_url", None), serialize),
967
+ ("currentPrivacyVersion" if serialize else "current_privacy_version"): _to_legacy_value(getattr(self, "current_privacy_version", None), serialize),
968
+ ("currentTOSVersion" if serialize else "current_tos_version"): _to_legacy_value(getattr(self, "current_tos_version", None), serialize),
969
+ ("defaultAvatar" if serialize else "default_avatar"): _to_legacy_value(getattr(self, "default_avatar", None), serialize),
970
+ ("defaultStickerSet" if serialize else "default_sticker_set"): _to_legacy_value(getattr(self, "default_sticker_set", None), serialize),
971
+ ("devLanguageCodes" if serialize else "dev_language_codes"): _to_legacy_value(getattr(self, "dev_language_codes", None), serialize),
972
+ ("devSdkUrl" if serialize else "dev_sdk_url"): _to_legacy_value(getattr(self, "dev_sdk_url", None), serialize),
973
+ ("devSdkVersion" if serialize else "dev_sdk_version"): _to_legacy_value(getattr(self, "dev_sdk_version", None), serialize),
974
+ ("dis-countdown" if serialize else "dis_countdown"): _to_legacy_value(getattr(self, "dis_countdown", None), serialize),
975
+ ("disableAVProInProton" if serialize else "disable_av_pro_in_proton"): _to_legacy_value(getattr(self, "disable_av_pro_in_proton", None), serialize),
976
+ ("disableAvatarCopying" if serialize else "disable_avatar_copying"): _to_legacy_value(getattr(self, "disable_avatar_copying", None), serialize),
977
+ ("disableAvatarGating" if serialize else "disable_avatar_gating"): _to_legacy_value(getattr(self, "disable_avatar_gating", None), serialize),
978
+ ("disableCaptcha" if serialize else "disable_captcha"): _to_legacy_value(getattr(self, "disable_captcha", None), serialize),
979
+ ("disableCommunityLabs" if serialize else "disable_community_labs"): _to_legacy_value(getattr(self, "disable_community_labs", None), serialize),
980
+ ("disableCommunityLabsPromotion" if serialize else "disable_community_labs_promotion"): _to_legacy_value(getattr(self, "disable_community_labs_promotion", None), serialize),
981
+ ("disableEmail" if serialize else "disable_email"): _to_legacy_value(getattr(self, "disable_email", None), serialize),
982
+ ("disableEventStream" if serialize else "disable_event_stream"): _to_legacy_value(getattr(self, "disable_event_stream", None), serialize),
983
+ ("disableFeedbackGating" if serialize else "disable_feedback_gating"): _to_legacy_value(getattr(self, "disable_feedback_gating", None), serialize),
984
+ ("disableFrontendBuilds" if serialize else "disable_frontend_builds"): _to_legacy_value(getattr(self, "disable_frontend_builds", None), serialize),
985
+ ("disableGiftDrops" if serialize else "disable_gift_drops"): _to_legacy_value(getattr(self, "disable_gift_drops", None), serialize),
986
+ ("disableHello" if serialize else "disable_hello"): _to_legacy_value(getattr(self, "disable_hello", None), serialize),
987
+ ("disableOculusSubs" if serialize else "disable_oculus_subs"): _to_legacy_value(getattr(self, "disable_oculus_subs", None), serialize),
988
+ ("disableRegistration" if serialize else "disable_registration"): _to_legacy_value(getattr(self, "disable_registration", None), serialize),
989
+ ("disableSteamNetworking" if serialize else "disable_steam_networking"): _to_legacy_value(getattr(self, "disable_steam_networking", None), serialize),
990
+ ("disableTwoFactorAuth" if serialize else "disable_two_factor_auth"): _to_legacy_value(getattr(self, "disable_two_factor_auth", None), serialize),
991
+ ("disableUdon" if serialize else "disable_udon"): _to_legacy_value(getattr(self, "disable_udon", None), serialize),
992
+ ("disableUpgradeAccount" if serialize else "disable_upgrade_account"): _to_legacy_value(getattr(self, "disable_upgrade_account", None), serialize),
993
+ ("downloadLinkWindows" if serialize else "download_link_windows"): _to_legacy_value(getattr(self, "download_link_windows", None), serialize),
994
+ ("downloadUrls" if serialize else "download_urls"): _to_legacy_value(getattr(self, "download_urls", None), serialize),
995
+ ("dynamicWorldRows" if serialize else "dynamic_world_rows"): _to_legacy_value(getattr(self, "dynamic_world_rows", None), serialize),
996
+ ("economyLedgerBackfill" if serialize else "economy_ledger_backfill"): _to_legacy_value(getattr(self, "economy_ledger_backfill", None), serialize),
997
+ ("economyLedgerMigrationStop" if serialize else "economy_ledger_migration_stop"): _to_legacy_value(getattr(self, "economy_ledger_migration_stop", None), serialize),
998
+ ("economyLedgerMode" if serialize else "economy_ledger_mode"): _to_legacy_value(getattr(self, "economy_ledger_mode", None), serialize),
999
+ ("economyPauseEnd" if serialize else "economy_pause_end"): _to_legacy_value(getattr(self, "economy_pause_end", None), serialize),
1000
+ ("economyPauseStart" if serialize else "economy_pause_start"): _to_legacy_value(getattr(self, "economy_pause_start", None), serialize),
1001
+ ("economyPurchaseRepairEnabled" if serialize else "economy_purchase_repair_enabled"): _to_legacy_value(getattr(self, "economy_purchase_repair_enabled", None), serialize),
1002
+ ("economyState" if serialize else "economy_state"): _to_legacy_value(getattr(self, "economy_state", None), serialize),
1003
+ ("events" if serialize else "events"): _to_legacy_value(getattr(self, "events", None), serialize),
1004
+ ("forceUseLatestWorld" if serialize else "force_use_latest_world"): _to_legacy_value(getattr(self, "force_use_latest_world", None), serialize),
1005
+ ("giftDisplayType" if serialize else "gift_display_type"): _to_legacy_value(getattr(self, "gift_display_type", None), serialize),
1006
+ ("googleApiClientId" if serialize else "google_api_client_id"): _to_legacy_value(getattr(self, "google_api_client_id", None), serialize),
1007
+ ("homeWorldId" if serialize else "home_world_id"): _to_legacy_value(getattr(self, "home_world_id", None), serialize),
1008
+ ("homepageRedirectTarget" if serialize else "homepage_redirect_target"): _to_legacy_value(getattr(self, "homepage_redirect_target", None), serialize),
1009
+ ("hubWorldId" if serialize else "hub_world_id"): _to_legacy_value(getattr(self, "hub_world_id", None), serialize),
1010
+ ("imageHostUrlList" if serialize else "image_host_url_list"): _to_legacy_value(getattr(self, "image_host_url_list", None), serialize),
1011
+ ("iosAppVersion" if serialize else "ios_app_version"): _to_legacy_value(getattr(self, "ios_app_version", None), serialize),
1012
+ ("iosVersion" if serialize else "ios_version"): _to_legacy_value(getattr(self, "ios_version", None), serialize),
1013
+ ("jobsEmail" if serialize else "jobs_email"): _to_legacy_value(getattr(self, "jobs_email", None), serialize),
1014
+ ("maxUserEmoji" if serialize else "max_user_emoji"): _to_legacy_value(getattr(self, "max_user_emoji", None), serialize),
1015
+ ("maxUserStickers" if serialize else "max_user_stickers"): _to_legacy_value(getattr(self, "max_user_stickers", None), serialize),
1016
+ ("minSupportedClientBuildNumber" if serialize else "min_supported_client_build_number"): _to_legacy_value(getattr(self, "min_supported_client_build_number", None), serialize),
1017
+ ("minimumUnityVersionForUploads" if serialize else "minimum_unity_version_for_uploads"): _to_legacy_value(getattr(self, "minimum_unity_version_for_uploads", None), serialize),
1018
+ ("moderationEmail" if serialize else "moderation_email"): _to_legacy_value(getattr(self, "moderation_email", None), serialize),
1019
+ ("notAllowedToSelectAvatarInPrivateWorldMessage" if serialize else "not_allowed_to_select_avatar_in_private_world_message"): _to_legacy_value(getattr(self, "not_allowed_to_select_avatar_in_private_world_message", None), serialize),
1020
+ ("offlineAnalysis" if serialize else "offline_analysis"): _to_legacy_value(getattr(self, "offline_analysis", None), serialize),
1021
+ ("photonNameserverOverrides" if serialize else "photon_nameserver_overrides"): _to_legacy_value(getattr(self, "photon_nameserver_overrides", None), serialize),
1022
+ ("photonPublicKeys" if serialize else "photon_public_keys"): _to_legacy_value(getattr(self, "photon_public_keys", None), serialize),
1023
+ ("player-url-resolver-sha1" if serialize else "player_url_resolver_sha1"): _to_legacy_value(getattr(self, "player_url_resolver_sha1", None), serialize),
1024
+ ("player-url-resolver-version" if serialize else "player_url_resolver_version"): _to_legacy_value(getattr(self, "player_url_resolver_version", None), serialize),
1025
+ ("publicKey" if serialize else "public_key"): _to_legacy_value(getattr(self, "public_key", None), serialize),
1026
+ ("reportCategories" if serialize else "report_categories"): _to_legacy_value(getattr(self, "report_categories", None), serialize),
1027
+ ("reportFormUrl" if serialize else "report_form_url"): _to_legacy_value(getattr(self, "report_form_url", None), serialize),
1028
+ ("reportOptions" if serialize else "report_options"): _to_legacy_value(getattr(self, "report_options", None), serialize),
1029
+ ("reportReasons" if serialize else "report_reasons"): _to_legacy_value(getattr(self, "report_reasons", None), serialize),
1030
+ ("requireAgeVerificationBetaTag" if serialize else "require_age_verification_beta_tag"): _to_legacy_value(getattr(self, "require_age_verification_beta_tag", None), serialize),
1031
+ ("sdkDeveloperFaqUrl" if serialize else "sdk_developer_faq_url"): _to_legacy_value(getattr(self, "sdk_developer_faq_url", None), serialize),
1032
+ ("sdkDiscordUrl" if serialize else "sdk_discord_url"): _to_legacy_value(getattr(self, "sdk_discord_url", None), serialize),
1033
+ ("sdkNotAllowedToPublishMessage" if serialize else "sdk_not_allowed_to_publish_message"): _to_legacy_value(getattr(self, "sdk_not_allowed_to_publish_message", None), serialize),
1034
+ ("sdkUnityVersion" if serialize else "sdk_unity_version"): _to_legacy_value(getattr(self, "sdk_unity_version", None), serialize),
1035
+ ("stringHostUrlList" if serialize else "string_host_url_list"): _to_legacy_value(getattr(self, "string_host_url_list", None), serialize),
1036
+ ("supportEmail" if serialize else "support_email"): _to_legacy_value(getattr(self, "support_email", None), serialize),
1037
+ ("supportFormUrl" if serialize else "support_form_url"): _to_legacy_value(getattr(self, "support_form_url", None), serialize),
1038
+ ("timeOutWorldId" if serialize else "time_out_world_id"): _to_legacy_value(getattr(self, "time_out_world_id", None), serialize),
1039
+ ("timekeeping" if serialize else "timekeeping"): _to_legacy_value(getattr(self, "timekeeping", None), serialize),
1040
+ ("tutorialWorldId" if serialize else "tutorial_world_id"): _to_legacy_value(getattr(self, "tutorial_world_id", None), serialize),
1041
+ ("updateRateMsMaximum" if serialize else "update_rate_ms_maximum"): _to_legacy_value(getattr(self, "update_rate_ms_maximum", None), serialize),
1042
+ ("updateRateMsMinimum" if serialize else "update_rate_ms_minimum"): _to_legacy_value(getattr(self, "update_rate_ms_minimum", None), serialize),
1043
+ ("updateRateMsNormal" if serialize else "update_rate_ms_normal"): _to_legacy_value(getattr(self, "update_rate_ms_normal", None), serialize),
1044
+ ("updateRateMsUdonManual" if serialize else "update_rate_ms_udon_manual"): _to_legacy_value(getattr(self, "update_rate_ms_udon_manual", None), serialize),
1045
+ ("uploadAnalysisPercent" if serialize else "upload_analysis_percent"): _to_legacy_value(getattr(self, "upload_analysis_percent", None), serialize),
1046
+ ("urlList" if serialize else "url_list"): _to_legacy_value(getattr(self, "url_list", None), serialize),
1047
+ ("useReliableUdpForVoice" if serialize else "use_reliable_udp_for_voice"): _to_legacy_value(getattr(self, "use_reliable_udp_for_voice", None), serialize),
1048
+ ("viveWindowsUrl" if serialize else "vive_windows_url"): _to_legacy_value(getattr(self, "vive_windows_url", None), serialize),
1049
+ ("websocketMaxFriendsRefreshDelay" if serialize else "websocket_max_friends_refresh_delay"): _to_legacy_value(getattr(self, "websocket_max_friends_refresh_delay", None), serialize),
1050
+ ("websocketQuickReconnectTime" if serialize else "websocket_quick_reconnect_time"): _to_legacy_value(getattr(self, "websocket_quick_reconnect_time", None), serialize),
1051
+ ("websocketReconnectMaxDelay" if serialize else "websocket_reconnect_max_delay"): _to_legacy_value(getattr(self, "websocket_reconnect_max_delay", None), serialize),
1052
+ ("whiteListedAssetUrls" if serialize else "white_listed_asset_urls"): _to_legacy_value(getattr(self, "white_listed_asset_urls", None), serialize),
1053
+ }
1054
+
1055
+ def __openapi_generator_modern_projection(self) -> Dict[str, Any]:
1056
+ """Return the dictionary representation of the model using alias.
1057
+
1058
+ This has the following differences from calling pydantic's
1059
+ `self.model_dump(by_alias=True)`:
1060
+
1061
+ * `None` is only added to the output dict for nullable fields that
1062
+ were set at model initialization. Other fields with value `None`
1063
+ are ignored.
1064
+ """
1065
+ excluded_fields: Set[str] = set([
1066
+ ])
1067
+
1068
+ _dict = self.model_dump(
1069
+ by_alias=True,
1070
+ exclude=excluded_fields,
1071
+ exclude_none=True,
1072
+ )
1073
+ # override the default output from pydantic by calling `to_dict()` of access_logs_urls
1074
+ if self.access_logs_urls:
1075
+ _dict['accessLogsUrls'] = _to_openapi_value(self.access_logs_urls)
1076
+ # override the default output from pydantic by calling `to_dict()` of each item in announcements (list)
1077
+ _items = []
1078
+ if self.announcements:
1079
+ for _item_announcements in self.announcements:
1080
+ if _item_announcements:
1081
+ _items.append(_to_openapi_value(_item_announcements))
1082
+ _dict['announcements'] = _items
1083
+ # override the default output from pydantic by calling `to_dict()` of audio_config
1084
+ if self.audio_config:
1085
+ _dict['audioConfig'] = _to_openapi_value(self.audio_config)
1086
+ # override the default output from pydantic by calling `to_dict()` of avatar_perf_limiter
1087
+ if self.avatar_perf_limiter:
1088
+ _dict['avatarPerfLimiter'] = _to_openapi_value(self.avatar_perf_limiter)
1089
+ # override the default output from pydantic by calling `to_dict()` of constants
1090
+ if self.constants:
1091
+ _dict['constants'] = _to_openapi_value(self.constants)
1092
+ # override the default output from pydantic by calling `to_dict()` of download_urls
1093
+ if self.download_urls:
1094
+ _dict['downloadUrls'] = _to_openapi_value(self.download_urls)
1095
+ # override the default output from pydantic by calling `to_dict()` of each item in dynamic_world_rows (list)
1096
+ _items = []
1097
+ if self.dynamic_world_rows:
1098
+ for _item_dynamic_world_rows in self.dynamic_world_rows:
1099
+ if _item_dynamic_world_rows:
1100
+ _items.append(_to_openapi_value(_item_dynamic_world_rows))
1101
+ _dict['dynamicWorldRows'] = _items
1102
+ # override the default output from pydantic by calling `to_dict()` of events
1103
+ if self.events:
1104
+ _dict['events'] = _to_openapi_value(self.events)
1105
+ # override the default output from pydantic by calling `to_dict()` of ios_version
1106
+ if self.ios_version:
1107
+ _dict['iosVersion'] = _to_openapi_value(self.ios_version)
1108
+ # override the default output from pydantic by calling `to_dict()` of min_supported_client_build_number
1109
+ if self.min_supported_client_build_number:
1110
+ _dict['minSupportedClientBuildNumber'] = _to_openapi_value(self.min_supported_client_build_number)
1111
+ # override the default output from pydantic by calling `to_dict()` of offline_analysis
1112
+ if self.offline_analysis:
1113
+ _dict['offlineAnalysis'] = _to_openapi_value(self.offline_analysis)
1114
+ # override the default output from pydantic by calling `to_dict()` of each value in report_categories (dict)
1115
+ _field_dict = {}
1116
+ if self.report_categories:
1117
+ for _key_report_categories in self.report_categories:
1118
+ if self.report_categories[_key_report_categories]:
1119
+ _field_dict[_key_report_categories] = _to_openapi_value(self.report_categories[_key_report_categories])
1120
+ _dict['reportCategories'] = _field_dict
1121
+ # override the default output from pydantic by calling `to_dict()` of each value in report_reasons (dict)
1122
+ _field_dict = {}
1123
+ if self.report_reasons:
1124
+ for _key_report_reasons in self.report_reasons:
1125
+ if self.report_reasons[_key_report_reasons]:
1126
+ _field_dict[_key_report_reasons] = _to_openapi_value(self.report_reasons[_key_report_reasons])
1127
+ _dict['reportReasons'] = _field_dict
1128
+ return _dict
1129
+
1130
+ setattr(
1131
+ to_dict,
1132
+ _OPENAPI_GENERATOR_TO_DICT,
1133
+ __openapi_generator_modern_projection,
1134
+ )
1135
+ setattr(
1136
+ __openapi_generator_modern_projection,
1137
+ _OPENAPI_GENERATOR_TO_DICT,
1138
+ to_dict,
1139
+ )
1140
+ del __openapi_generator_modern_projection
1141
+
1142
+ @classmethod
1143
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
1144
+ """Create an instance of APIConfig from a dict"""
1145
+ if obj is None:
1146
+ return None
1147
+
1148
+ if not isinstance(obj, dict):
1149
+ return cls.model_validate(obj)
1150
+
1151
+ obj = _cast(
1152
+ Dict[str, Any],
1153
+ cls.__preprocess_input_names(
1154
+ obj,
1155
+ remove_hidden_storage_names=True,
1156
+ ),
1157
+ )
1158
+
1159
+ _obj = cls.model_validate({
1160
+ "CampaignStatus": obj.get("CampaignStatus"),
1161
+ "DisableBackgroundPreloads": obj.get("DisableBackgroundPreloads") if obj.get("DisableBackgroundPreloads") is not None else True,
1162
+ "LocationGiftingNonSubPrioEnabled": obj.get("LocationGiftingNonSubPrioEnabled") if obj.get("LocationGiftingNonSubPrioEnabled") is not None else True,
1163
+ "VoiceEnableDegradation": obj.get("VoiceEnableDegradation") if obj.get("VoiceEnableDegradation") is not None else False,
1164
+ "VoiceEnableReceiverLimiting": obj.get("VoiceEnableReceiverLimiting") if obj.get("VoiceEnableReceiverLimiting") is not None else True,
1165
+ "accessLogsUrls": APIConfigAccessLogsUrls.from_dict(obj["accessLogsUrls"]) if obj.get("accessLogsUrls") is not None else None,
1166
+ "address": obj.get("address"),
1167
+ "ageVerificationInviteVisible": obj.get("ageVerificationInviteVisible"),
1168
+ "ageVerificationP": obj.get("ageVerificationP"),
1169
+ "ageVerificationStatusVisible": obj.get("ageVerificationStatusVisible"),
1170
+ "analysisMaxRetries": obj.get("analysisMaxRetries"),
1171
+ "analysisRetryInterval": obj.get("analysisRetryInterval"),
1172
+ "analyticsSegment_NewUI_PctOfUsers": obj.get("analyticsSegment_NewUI_PctOfUsers"),
1173
+ "analyticsSegment_NewUI_Salt": obj.get("analyticsSegment_NewUI_Salt"),
1174
+ "announcements": [APIConfigAnnouncement.from_dict(_item) for _item in obj["announcements"]] if obj.get("announcements") is not None else None,
1175
+ "audioConfig": APIConfigAudioConfig.from_dict(obj["audioConfig"]) if obj.get("audioConfig") is not None else None,
1176
+ "availableLanguageCodes": obj.get("availableLanguageCodes"),
1177
+ "availableLanguages": obj.get("availableLanguages"),
1178
+ "avatarPerfLimiter": APIConfigAvatarPerfLimiter.from_dict(obj["avatarPerfLimiter"]) if obj.get("avatarPerfLimiter") is not None else None,
1179
+ "chatboxLogBufferSeconds": obj.get("chatboxLogBufferSeconds") if obj.get("chatboxLogBufferSeconds") is not None else 40,
1180
+ "clientApiKey": obj.get("clientApiKey"),
1181
+ "clientBPSCeiling": obj.get("clientBPSCeiling") if obj.get("clientBPSCeiling") is not None else 18432,
1182
+ "clientDisconnectTimeout": obj.get("clientDisconnectTimeout") if obj.get("clientDisconnectTimeout") is not None else 30000,
1183
+ "clientNetDispatchThread": obj.get("clientNetDispatchThread") if obj.get("clientNetDispatchThread") is not None else False,
1184
+ "clientNetDispatchThreadMobile": obj.get("clientNetDispatchThreadMobile") if obj.get("clientNetDispatchThreadMobile") is not None else True,
1185
+ "clientNetInThread": obj.get("clientNetInThread") if obj.get("clientNetInThread") is not None else False,
1186
+ "clientNetInThread2": obj.get("clientNetInThread2") if obj.get("clientNetInThread2") is not None else False,
1187
+ "clientNetInThreadMobile": obj.get("clientNetInThreadMobile") if obj.get("clientNetInThreadMobile") is not None else False,
1188
+ "clientNetInThreadMobile2": obj.get("clientNetInThreadMobile2") if obj.get("clientNetInThreadMobile2") is not None else False,
1189
+ "clientNetOutThread": obj.get("clientNetOutThread") if obj.get("clientNetOutThread") is not None else False,
1190
+ "clientNetOutThread2": obj.get("clientNetOutThread2") if obj.get("clientNetOutThread2") is not None else False,
1191
+ "clientNetOutThreadMobile": obj.get("clientNetOutThreadMobile") if obj.get("clientNetOutThreadMobile") is not None else False,
1192
+ "clientNetOutThreadMobile2": obj.get("clientNetOutThreadMobile2") if obj.get("clientNetOutThreadMobile2") is not None else False,
1193
+ "clientQR": obj.get("clientQR") if obj.get("clientQR") is not None else 1,
1194
+ "clientReservedPlayerBPS": obj.get("clientReservedPlayerBPS") if obj.get("clientReservedPlayerBPS") is not None else 7168,
1195
+ "clientSentCountAllowance": obj.get("clientSentCountAllowance") if obj.get("clientSentCountAllowance") is not None else 15,
1196
+ "constants": APIConfigConstants.from_dict(obj["constants"]) if obj.get("constants") is not None else None,
1197
+ "contactEmail": obj.get("contactEmail"),
1198
+ "copyrightEmail": obj.get("copyrightEmail"),
1199
+ "copyrightFormUrl": obj.get("copyrightFormUrl"),
1200
+ "currentPrivacyVersion": obj.get("currentPrivacyVersion") if obj.get("currentPrivacyVersion") is not None else 1,
1201
+ "currentTOSVersion": obj.get("currentTOSVersion"),
1202
+ "defaultAvatar": obj.get("defaultAvatar"),
1203
+ "defaultStickerSet": obj.get("defaultStickerSet"),
1204
+ "devLanguageCodes": obj.get("devLanguageCodes"),
1205
+ "devSdkUrl": obj.get("devSdkUrl"),
1206
+ "devSdkVersion": obj.get("devSdkVersion"),
1207
+ "dis-countdown": obj.get("dis-countdown"),
1208
+ "disableAVProInProton": obj.get("disableAVProInProton") if obj.get("disableAVProInProton") is not None else False,
1209
+ "disableAvatarCopying": obj.get("disableAvatarCopying") if obj.get("disableAvatarCopying") is not None else False,
1210
+ "disableAvatarGating": obj.get("disableAvatarGating") if obj.get("disableAvatarGating") is not None else False,
1211
+ "disableCaptcha": obj.get("disableCaptcha") if obj.get("disableCaptcha") is not None else True,
1212
+ "disableCommunityLabs": obj.get("disableCommunityLabs") if obj.get("disableCommunityLabs") is not None else False,
1213
+ "disableCommunityLabsPromotion": obj.get("disableCommunityLabsPromotion") if obj.get("disableCommunityLabsPromotion") is not None else False,
1214
+ "disableEmail": obj.get("disableEmail") if obj.get("disableEmail") is not None else False,
1215
+ "disableEventStream": obj.get("disableEventStream") if obj.get("disableEventStream") is not None else False,
1216
+ "disableFeedbackGating": obj.get("disableFeedbackGating") if obj.get("disableFeedbackGating") is not None else False,
1217
+ "disableFrontendBuilds": obj.get("disableFrontendBuilds") if obj.get("disableFrontendBuilds") is not None else False,
1218
+ "disableGiftDrops": obj.get("disableGiftDrops") if obj.get("disableGiftDrops") is not None else False,
1219
+ "disableHello": obj.get("disableHello") if obj.get("disableHello") is not None else False,
1220
+ "disableOculusSubs": obj.get("disableOculusSubs") if obj.get("disableOculusSubs") is not None else False,
1221
+ "disableRegistration": obj.get("disableRegistration") if obj.get("disableRegistration") is not None else False,
1222
+ "disableSteamNetworking": obj.get("disableSteamNetworking") if obj.get("disableSteamNetworking") is not None else True,
1223
+ "disableTwoFactorAuth": obj.get("disableTwoFactorAuth") if obj.get("disableTwoFactorAuth") is not None else False,
1224
+ "disableUdon": obj.get("disableUdon") if obj.get("disableUdon") is not None else False,
1225
+ "disableUpgradeAccount": obj.get("disableUpgradeAccount") if obj.get("disableUpgradeAccount") is not None else False,
1226
+ "downloadLinkWindows": obj.get("downloadLinkWindows"),
1227
+ "downloadUrls": APIConfigDownloadURLList.from_dict(obj["downloadUrls"]) if obj.get("downloadUrls") is not None else None,
1228
+ "dynamicWorldRows": [DynamicContentRow.from_dict(_item) for _item in obj["dynamicWorldRows"]] if obj.get("dynamicWorldRows") is not None else None,
1229
+ "economyLedgerBackfill": obj.get("economyLedgerBackfill"),
1230
+ "economyLedgerMigrationStop": obj.get("economyLedgerMigrationStop"),
1231
+ "economyLedgerMode": obj.get("economyLedgerMode"),
1232
+ "economyPauseEnd": obj.get("economyPauseEnd"),
1233
+ "economyPauseStart": obj.get("economyPauseStart"),
1234
+ "economyPurchaseRepairEnabled": obj.get("economyPurchaseRepairEnabled"),
1235
+ "economyState": obj.get("economyState") if obj.get("economyState") is not None else 1,
1236
+ "events": APIConfigEvents.from_dict(obj["events"]) if obj.get("events") is not None else None,
1237
+ "forceUseLatestWorld": obj.get("forceUseLatestWorld") if obj.get("forceUseLatestWorld") is not None else True,
1238
+ "giftDisplayType": obj.get("giftDisplayType"),
1239
+ "googleApiClientId": obj.get("googleApiClientId") if obj.get("googleApiClientId") is not None else '827942544393-r2ouvckvouldn9dg9uruseje575e878f.apps.googleusercontent.com',
1240
+ "homeWorldId": obj.get("homeWorldId"),
1241
+ "homepageRedirectTarget": obj.get("homepageRedirectTarget") if obj.get("homepageRedirectTarget") is not None else 'https://hello.vrchat.com',
1242
+ "hubWorldId": obj.get("hubWorldId"),
1243
+ "imageHostUrlList": obj.get("imageHostUrlList"),
1244
+ "iosAppVersion": obj.get("iosAppVersion"),
1245
+ "iosVersion": APIConfigIosVersion.from_dict(obj["iosVersion"]) if obj.get("iosVersion") is not None else None,
1246
+ "jobsEmail": obj.get("jobsEmail"),
1247
+ "maxUserEmoji": obj.get("maxUserEmoji") if obj.get("maxUserEmoji") is not None else 18,
1248
+ "maxUserStickers": obj.get("maxUserStickers") if obj.get("maxUserStickers") is not None else 18,
1249
+ "minSupportedClientBuildNumber": APIConfigMinSupportedClientBuildNumber.from_dict(obj["minSupportedClientBuildNumber"]) if obj.get("minSupportedClientBuildNumber") is not None else None,
1250
+ "minimumUnityVersionForUploads": obj.get("minimumUnityVersionForUploads") if obj.get("minimumUnityVersionForUploads") is not None else '2019.0.0f1',
1251
+ "moderationEmail": obj.get("moderationEmail"),
1252
+ "notAllowedToSelectAvatarInPrivateWorldMessage": obj.get("notAllowedToSelectAvatarInPrivateWorldMessage"),
1253
+ "offlineAnalysis": APIConfigOfflineAnalysis.from_dict(obj["offlineAnalysis"]) if obj.get("offlineAnalysis") is not None else None,
1254
+ "photonNameserverOverrides": obj.get("photonNameserverOverrides"),
1255
+ "photonPublicKeys": obj.get("photonPublicKeys"),
1256
+ "player-url-resolver-sha1": obj.get("player-url-resolver-sha1"),
1257
+ "player-url-resolver-version": obj.get("player-url-resolver-version"),
1258
+ "publicKey": obj.get("publicKey"),
1259
+ "reportCategories": dict(
1260
+ (_k, ReportCategory.from_dict(_v))
1261
+ for _k, _v in obj["reportCategories"].items()
1262
+ )
1263
+ if obj.get("reportCategories") is not None
1264
+ else None,
1265
+ "reportFormUrl": obj.get("reportFormUrl") if obj.get("reportFormUrl") is not None else 'https://help.vrchat.com/hc/en-us/requests/new?ticket_form_id=1500000182242&tf_360056455174=user_report&tf_360057451993={userId}&tf_1500001445142={reportedId}&tf_subject={reason} {category} By {contentType} {reportedName}&tf_description={description}',
1266
+ "reportOptions": obj.get("reportOptions"),
1267
+ "reportReasons": dict(
1268
+ (_k, ReportReason.from_dict(_v))
1269
+ for _k, _v in obj["reportReasons"].items()
1270
+ )
1271
+ if obj.get("reportReasons") is not None
1272
+ else None,
1273
+ "requireAgeVerificationBetaTag": obj.get("requireAgeVerificationBetaTag"),
1274
+ "sdkDeveloperFaqUrl": obj.get("sdkDeveloperFaqUrl"),
1275
+ "sdkDiscordUrl": obj.get("sdkDiscordUrl"),
1276
+ "sdkNotAllowedToPublishMessage": obj.get("sdkNotAllowedToPublishMessage"),
1277
+ "sdkUnityVersion": obj.get("sdkUnityVersion"),
1278
+ "stringHostUrlList": obj.get("stringHostUrlList"),
1279
+ "supportEmail": obj.get("supportEmail"),
1280
+ "supportFormUrl": obj.get("supportFormUrl"),
1281
+ "timeOutWorldId": obj.get("timeOutWorldId"),
1282
+ "timekeeping": obj.get("timekeeping") if obj.get("timekeeping") is not None else True,
1283
+ "tutorialWorldId": obj.get("tutorialWorldId"),
1284
+ "updateRateMsMaximum": obj.get("updateRateMsMaximum"),
1285
+ "updateRateMsMinimum": obj.get("updateRateMsMinimum"),
1286
+ "updateRateMsNormal": obj.get("updateRateMsNormal"),
1287
+ "updateRateMsUdonManual": obj.get("updateRateMsUdonManual"),
1288
+ "uploadAnalysisPercent": obj.get("uploadAnalysisPercent"),
1289
+ "urlList": obj.get("urlList"),
1290
+ "useReliableUdpForVoice": obj.get("useReliableUdpForVoice") if obj.get("useReliableUdpForVoice") is not None else False,
1291
+ "viveWindowsUrl": obj.get("viveWindowsUrl"),
1292
+ "websocketMaxFriendsRefreshDelay": obj.get("websocketMaxFriendsRefreshDelay") if obj.get("websocketMaxFriendsRefreshDelay") is not None else 900,
1293
+ "websocketQuickReconnectTime": obj.get("websocketQuickReconnectTime") if obj.get("websocketQuickReconnectTime") is not None else 2,
1294
+ "websocketReconnectMaxDelay": obj.get("websocketReconnectMaxDelay") if obj.get("websocketReconnectMaxDelay") is not None else 2,
1295
+ "whiteListedAssetUrls": obj.get("whiteListedAssetUrls")
1296
+ })
1297
+ return _obj
1298
+
1299
+