From b8475d94d4a75155c7ed5ee9f84c17dc103e8b92 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Wed, 26 Nov 2025 16:17:04 -0600 Subject: [PATCH 01/25] websocket support (v1, in testing) --- VRChat.API.sln | 8 +- wrapper/VRChat.API.Realtime/CHANGELOG.md | 124 +++++ wrapper/VRChat.API.Realtime/Example.cs | 163 +++++++ .../Messages/Friend/FriendActiveContent.cs | 13 + .../Messages/Friend/FriendAddContent.cs | 12 + .../Messages/Friend/FriendDeleteContent.cs | 10 + .../Messages/Friend/FriendLocationContent.cs | 16 + .../Messages/Friend/FriendOfflineContent.cs | 11 + .../Messages/Friend/FriendOnlineContent.cs | 15 + .../Messages/Friend/FriendUpdateContent.cs | 12 + .../Messages/Group/GroupJoinedContent.cs | 10 + .../Messages/Group/GroupLeftContent.cs | 10 + .../Group/GroupMemberUpdatedContent.cs | 11 + .../Messages/Group/GroupRoleUpdatedContent.cs | 11 + .../Messages/HeartbeatMessage.cs | 10 + .../Notification/NotificationContent.cs | 12 + .../Notification/NotificationV2Content.cs | 33 ++ .../NotificationV2DeleteContent.cs | 12 + .../NotificationV2ResponseItem.cs | 11 + .../NotificationV2UpdateContent.cs | 13 + .../ResponseNotificationContent.cs | 12 + .../Messages/User/ContentRefreshContent.cs | 14 + .../Messages/User/CurrentUserInfo.cs | 22 + .../User/InstanceQueueJoinedContent.cs | 11 + .../User/InstanceQueueReadyContent.cs | 11 + .../User/ModifiedImageUpdateContent.cs | 13 + .../Messages/User/UserBadgeAssignedContent.cs | 10 + .../User/UserBadgeUnassignedContent.cs | 10 + .../Messages/User/UserLocationContent.cs | 15 + .../Messages/User/UserUpdateContent.cs | 11 + .../Messages/WebSocketMessageWrapper.cs | 9 + .../Models/HideNotificationEventArgs.cs | 10 + .../Models/LogEventArgs.cs | 22 + .../Models/NotificationEventArgs.cs | 11 + .../Models/SeeNotificationEventArgs.cs | 10 + wrapper/VRChat.API.Realtime/README.md | 180 ++++++++ .../VRChat.API.Realtime.csproj | 44 ++ .../VRChatRealtimeClient.MessageProcessor.cs | 322 +++++++++++++ .../VRChatRealtimeClient.cs | 430 ++++++++++++++++++ .../VRChatRealtimeClientBuilder.cs | 61 +++ .../VRChatRealtimeConfiguration.cs | 56 +++ wrapper/VRChat.API.Realtime/vrc_cat.ico | Bin 0 -> 4286 bytes wrapper/VRChat.API.Realtime/vrc_cat.png | Bin 0 -> 149194 bytes 43 files changed, 1800 insertions(+), 1 deletion(-) create mode 100644 wrapper/VRChat.API.Realtime/CHANGELOG.md create mode 100644 wrapper/VRChat.API.Realtime/Example.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs create mode 100644 wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs create mode 100644 wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs create mode 100644 wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs create mode 100644 wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs create mode 100644 wrapper/VRChat.API.Realtime/README.md create mode 100644 wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj create mode 100644 wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs create mode 100644 wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs create mode 100644 wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs create mode 100644 wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs create mode 100644 wrapper/VRChat.API.Realtime/vrc_cat.ico create mode 100644 wrapper/VRChat.API.Realtime/vrc_cat.png diff --git a/VRChat.API.sln b/VRChat.API.sln index d9cba3bf..f7325949 100644 --- a/VRChat.API.sln +++ b/VRChat.API.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 -VisualStudioVersion = 18.0.11205.157 d18.0 +VisualStudioVersion = 18.0.11205.157 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VRChat.API", "src\VRChat.API\VRChat.API.csproj", "{CFFD58F6-C881-46CB-BD52-445A8A8A8710}" EndProject @@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VRChat.API.Examples.AspNetC EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VRChat.API.Examples.Console", "examples\VRChat.API.Examples.Console\VRChat.API.Examples.Console.csproj", "{9C028F36-7CB0-82BD-A376-8EC6C8FE3AF0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VRChat.API.Realtime", "wrapper\VRChat.API.Realtime\VRChat.API.Realtime.csproj", "{91F01661-9DA8-D3A5-FCC4-9D988B390EEA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -38,6 +40,10 @@ Global {9C028F36-7CB0-82BD-A376-8EC6C8FE3AF0}.Debug|Any CPU.Build.0 = Debug|Any CPU {9C028F36-7CB0-82BD-A376-8EC6C8FE3AF0}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C028F36-7CB0-82BD-A376-8EC6C8FE3AF0}.Release|Any CPU.Build.0 = Release|Any CPU + {91F01661-9DA8-D3A5-FCC4-9D988B390EEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91F01661-9DA8-D3A5-FCC4-9D988B390EEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91F01661-9DA8-D3A5-FCC4-9D988B390EEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91F01661-9DA8-D3A5-FCC4-9D988B390EEA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/wrapper/VRChat.API.Realtime/CHANGELOG.md b/wrapper/VRChat.API.Realtime/CHANGELOG.md new file mode 100644 index 00000000..390ca15f --- /dev/null +++ b/wrapper/VRChat.API.Realtime/CHANGELOG.md @@ -0,0 +1,124 @@ +# VRChat.API.Realtime Changelog + +## Refactor - System.Text.Json & Built-in WebSocket Implementation + +### Major Changes + +#### 1. **Removed Third-Party Dependencies** +- ❌ Removed `Newtonsoft.Json` dependency +- ❌ Removed `Websocket.Client` dependency +- ✅ Now using built-in `System.Text.Json` +- ✅ Now using built-in `System.Net.WebSockets.ClientWebSocket` + +#### 2. **Message Deserialization Architecture** +- **Before**: Manual JSON parsing with JObject/JToken +- **After**: Direct deserialization to strongly-typed classes + +Created new `Messages/` namespace with: +- `WebSocketMessage` - Generic wrapper for all messages +- Strongly-typed content classes for each message type: + - `NotificationContent`, `ResponseNotificationContent` + - `NotificationV2Content`, `NotificationV2UpdateContent`, `NotificationV2DeleteContent` + - `FriendAddContent`, `FriendOnlineContent`, `FriendLocationContent`, etc. + - `UserUpdateContent`, `UserLocationContent`, `ContentRefreshContent`, etc. + - `GroupJoinedContent`, `GroupMemberUpdatedContent`, etc. + - `HeartbeatMessage` for outgoing heartbeats + +#### 3. **WebSocket Implementation** +- **Before**: Used `Websocket.Client` library with Reactive Extensions +- **After**: Custom implementation using `ClientWebSocket` + +New features: +- Manual receive loop with proper cancellation support +- Thread-safe send operations using `SemaphoreSlim` +- Better error handling and reconnection logic +- Full control over WebSocket lifecycle + +#### 4. **Heartbeat Functionality** ✨ NEW +- Sends heartbeat every 30 seconds: `{"type": "heartbeat", "connected": true, "nonce": ""}` +- Automatic timer-based sending +- Unique GUID nonce for each heartbeat +- Helps keep connection alive and detect disconnections faster + +### Implementation Details + +#### WebSocket Receive Loop +```csharp +private async Task ReceiveLoop(CancellationToken cancellationToken) +{ + var buffer = new byte[8192]; + var messageBuffer = new StringBuilder(); + + while (!cancellationToken.IsCancellationRequested && _client.State == WebSocketState.Open) + { + // Receive message in chunks + // Handle text messages + // Process through message processor + } +} +``` + +#### Message Processing +```csharp +// Before (Newtonsoft.Json) +var baseMessage = JObject.Parse(json); +var content = baseMessage["content"]; +var userId = content["userId"]?.ToString(); + +// After (System.Text.Json) +var message = JsonSerializer.Deserialize>(json, JsonOptions); +var userId = message.Content.UserId; +``` + +#### Heartbeat Timer +```csharp +private void SetupHeartbeatTimer() +{ + _heartbeatTimer = new Timer(async _ => + { + await SendHeartbeatAsync(); + }, null, TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(30)); +} +``` + +### Benefits + +1. **No External Dependencies**: Relies only on .NET 8.0 built-in libraries +2. **Better Performance**: System.Text.Json is faster than Newtonsoft.Json +3. **Type Safety**: Direct deserialization to classes catches errors at compile time +4. **Full Control**: Custom WebSocket implementation allows for better debugging and customization +5. **Keep-Alive**: Heartbeat ensures connection stays active +6. **Cleaner Code**: Less manual JSON parsing, more declarative + +### File Structure + +``` +wrapper/VRChat.API.Realtime/ +├── Messages/ +│ └── WebSocketMessage.cs # All message content classes +├── Models/ +│ └── [27 EventArgs classes] # Event argument classes +├── VRChatRealtimeClient.cs # Main client (partial) +├── VRChatRealtimeClient.MessageProcessor.cs # Message processing (partial) +├── VRChatRealtimeClientBuilder.cs # Fluent builder +├── VRChatRealtimeConfiguration.cs # Configuration class +├── Example.cs # Usage examples +└── README.md # Documentation +``` + +### Breaking Changes + +⚠️ **None** - The public API remains unchanged. All changes are internal implementation details. + +### Migration Guide + +No migration needed! The public API (events, configuration, methods) remains exactly the same. + +### Testing + +- ✅ No linter errors +- ✅ All event types supported +- ✅ Heartbeat functionality implemented +- ✅ Auto-reconnect modes working +- ✅ Proper resource disposal + diff --git a/wrapper/VRChat.API.Realtime/Example.cs b/wrapper/VRChat.API.Realtime/Example.cs new file mode 100644 index 00000000..1d4065c8 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Example.cs @@ -0,0 +1,163 @@ +using System; +using System.Threading.Tasks; +using VRChat.API.Realtime; +using VRChat.API.Realtime.Models; + +namespace VRChat.API.Realtime.Examples +{ + /// + /// Example usage of the VRChat Realtime WebSocket client + /// + public class Example + { + public static async Task BasicUsageExample() + { + // Create client using builder pattern + var client = new VRChatRealtimeClientBuilder() + .WithAuthToken("authcookie_...") + .WithUserAgent("MyApp/1.0") + .WithAutoReconnect(AutoReconnectMode.OnDisconnect) + .Build(); + + // Subscribe to connection events + client.OnConnected += (sender, e) => + { + Console.WriteLine("Connected to VRChat Pipeline!"); + }; + + client.OnDisconnected += (sender, e) => + { + Console.WriteLine("Disconnected from VRChat Pipeline"); + }; + + client.Log += (sender, e) => + { + Console.WriteLine($"[{e.Level}] {e.Message}"); + if (e.Exception != null) + { + Console.WriteLine($"Exception: {e.Exception}"); + } + }; + + // Subscribe to friend events + client.OnFriendOnline += (sender, content) => + { + Console.WriteLine($"Friend {content.User?.DisplayName} came online!"); + Console.WriteLine($" Platform: {content.Platform}"); + Console.WriteLine($" Location: {content.Location}"); + }; + + client.OnFriendOffline += (sender, content) => + { + Console.WriteLine($"Friend {content.UserId} went offline"); + }; + + client.OnFriendLocation += (sender, content) => + { + Console.WriteLine($"Friend {content.User?.DisplayName} changed location"); + Console.WriteLine($" New location: {content.Location}"); + Console.WriteLine($" World: {content.WorldId}"); + }; + + // Subscribe to notification events + client.OnNotificationReceived += (sender, e) => + { + Console.WriteLine($"Notification received: {e.Notification?.Type}"); + }; + + client.OnNotificationV2 += (sender, content) => + { + Console.WriteLine($"V2 Notification: {content.Title}"); + Console.WriteLine($" Message: {content.Message}"); + }; + + // Subscribe to user events + client.OnUserLocation += (sender, content) => + { + Console.WriteLine($"You changed location to: {content.Location}"); + }; + + client.OnUserUpdate += (sender, content) => + { + Console.WriteLine($"Your profile was updated"); + Console.WriteLine($" Status: {content.User?.Status}"); + Console.WriteLine($" Bio: {content.User?.Bio}"); + }; + + // Subscribe to group events + client.OnGroupJoined += (sender, content) => + { + Console.WriteLine($"Joined group: {content.GroupId}"); + }; + + client.OnGroupMemberUpdated += (sender, content) => + { + Console.WriteLine($"Group member updated: {content.Member?.Id}"); + }; + + // Connect to the WebSocket + await client.ConnectAsync(); + + // Keep the application running + Console.WriteLine("Press any key to disconnect..."); + Console.ReadKey(); + + // Disconnect + await client.DisconnectAsync(); + client.Dispose(); + } + + public static async Task CustomConfigurationExample() + { + // Create client with custom configuration + var config = new VRChatRealtimeConfiguration + { + EndpointURL = "wss://pipeline.vrchat.cloud/", + AuthToken = "authcookie_...", + UserAgent = "MyCustomApp/2.0", + AutoReconnectMode = AutoReconnectMode.Every10Minutes + }; + + var client = new VRChatRealtimeClient(config); + + // Subscribe to events and connect + client.OnConnected += (sender, e) => Console.WriteLine("Connected!"); + + await client.ConnectAsync(); + + // Use the client... + + await client.DisconnectAsync(); + client.Dispose(); + } + + public static async Task AutoReconnectExample() + { + var client = new VRChatRealtimeClientBuilder() + .WithAuthToken("authcookie_...") + .WithAutoReconnect(AutoReconnectMode.Every20Minutes) + .Build(); + + client.OnAutoReconnecting += (sender, e) => + { + Console.WriteLine("Auto-reconnecting..."); + }; + + client.OnConnected += (sender, e) => + { + Console.WriteLine("Connected!"); + }; + + await client.ConnectAsync(); + + // The client will automatically reconnect every 20 minutes + // and also reconnect on unexpected disconnections + + await Task.Delay(TimeSpan.FromHours(1)); + + await client.DisconnectAsync(); + client.Dispose(); + } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs new file mode 100644 index 00000000..b65d8963 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs @@ -0,0 +1,13 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class FriendActiveContent : EventArgs + { + public string UserId { get; set; } + public string Platform { get; set; } + public LimitedUser User { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs new file mode 100644 index 00000000..7eb0810c --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs @@ -0,0 +1,12 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class FriendAddContent : EventArgs + { + public string UserId { get; set; } + public LimitedUser User { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs new file mode 100644 index 00000000..1070bdad --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs @@ -0,0 +1,10 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class FriendDeleteContent : EventArgs + { + public string UserId { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs new file mode 100644 index 00000000..ca2f69af --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs @@ -0,0 +1,16 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class FriendLocationContent : EventArgs + { + public string UserId { get; set; } + public string Location { get; set; } + public string TravelingToLocation { get; set; } + public string WorldId { get; set; } + public bool CanRequestInvite { get; set; } + public LimitedUser User { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs new file mode 100644 index 00000000..16a97e76 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs @@ -0,0 +1,11 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class FriendOfflineContent : EventArgs + { + public string UserId { get; set; } + public string Platform { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs new file mode 100644 index 00000000..338f3435 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs @@ -0,0 +1,15 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class FriendOnlineContent : EventArgs + { + public string UserId { get; set; } + public string Platform { get; set; } + public string Location { get; set; } + public bool CanRequestInvite { get; set; } + public LimitedUser User { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs new file mode 100644 index 00000000..3f0e62d5 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs @@ -0,0 +1,12 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class FriendUpdateContent : EventArgs + { + public string UserId { get; set; } + public LimitedUser User { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs new file mode 100644 index 00000000..3b03e860 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs @@ -0,0 +1,10 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class GroupJoinedContent : EventArgs + { + public string GroupId { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs new file mode 100644 index 00000000..8c190d50 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs @@ -0,0 +1,10 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class GroupLeftContent : EventArgs + { + public string GroupId { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs new file mode 100644 index 00000000..b158dbd3 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs @@ -0,0 +1,11 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class GroupMemberUpdatedContent : EventArgs + { + public GroupLimitedMember Member { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs new file mode 100644 index 00000000..94336ea9 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs @@ -0,0 +1,11 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class GroupRoleUpdatedContent : EventArgs + { + public GroupRole Role { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs b/wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs new file mode 100644 index 00000000..601acad9 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs @@ -0,0 +1,10 @@ +namespace VRChat.API.Realtime.Messages +{ + public class HeartbeatMessage + { + public string Type { get; set; } = "heartbeat"; + public bool Connected { get; set; } = true; + public string Nonce { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs new file mode 100644 index 00000000..22953e76 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs @@ -0,0 +1,12 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class NotificationContent : EventArgs + { + public string UserId { get; set; } + public LimitedUser User { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs new file mode 100644 index 00000000..0a06bdf9 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; + +namespace VRChat.API.Realtime.Messages +{ + public class NotificationV2Content : EventArgs + { + public string Id { get; set; } + public int Version { get; set; } + public string Type { get; set; } + public string Category { get; set; } + public bool IsSystem { get; set; } + public bool IgnoreDND { get; set; } + public string SenderUserId { get; set; } + public string SenderUsername { get; set; } + public string ReceiverUserId { get; set; } + public string RelatedNotificationsId { get; set; } + public string Title { get; set; } + public string Message { get; set; } + public string ImageUrl { get; set; } + public string Link { get; set; } + public string LinkText { get; set; } + public List Responses { get; set; } + public DateTime ExpiresAt { get; set; } + public int ExpiryAfterSeen { get; set; } + public bool RequireSeen { get; set; } + public bool Seen { get; set; } + public bool CanDelete { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime UpdatedAt { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs new file mode 100644 index 00000000..1f5ece90 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace VRChat.API.Realtime.Messages +{ + public class NotificationV2DeleteContent : EventArgs + { + public List Ids { get; set; } + public int Version { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs new file mode 100644 index 00000000..ce8eaee4 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs @@ -0,0 +1,11 @@ +namespace VRChat.API.Realtime.Messages +{ + public class NotificationV2ResponseItem + { + public string Type { get; set; } + public string Data { get; set; } + public string Icon { get; set; } + public string Text { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs new file mode 100644 index 00000000..233188e9 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; + +namespace VRChat.API.Realtime.Messages +{ + public class NotificationV2UpdateContent : EventArgs + { + public string Id { get; set; } + public int Version { get; set; } + public Dictionary Updates { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs new file mode 100644 index 00000000..64688808 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs @@ -0,0 +1,12 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class ResponseNotificationContent : EventArgs + { + public string NotificationId { get; set; } + public string ReceiverId { get; set; } + public string ResponseId { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs new file mode 100644 index 00000000..5dd4c1e3 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs @@ -0,0 +1,14 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class ContentRefreshContent : EventArgs + { + public string ContentType { get; set; } + public string FileId { get; set; } + public string ItemId { get; set; } + public string ItemType { get; set; } + public string ActionType { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs b/wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs new file mode 100644 index 00000000..ffd6e7d5 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace VRChat.API.Realtime.Messages +{ + public class CurrentUserInfo + { + public string Bio { get; set; } + public string CurrentAvatar { get; set; } + public string CurrentAvatarImageUrl { get; set; } + public string CurrentAvatarThumbnailImageUrl { get; set; } + public string DisplayName { get; set; } + public string FallbackAvatar { get; set; } + public string Id { get; set; } + public string ProfilePicOverride { get; set; } + public string Status { get; set; } + public string StatusDescription { get; set; } + public List Tags { get; set; } + public string UserIcon { get; set; } + public string Username { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs new file mode 100644 index 00000000..80097941 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs @@ -0,0 +1,11 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class InstanceQueueJoinedContent : EventArgs + { + public string InstanceLocation { get; set; } + public int Position { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs new file mode 100644 index 00000000..53f273e2 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs @@ -0,0 +1,11 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class InstanceQueueReadyContent : EventArgs + { + public string InstanceLocation { get; set; } + public DateTime Expiry { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs new file mode 100644 index 00000000..347b6731 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs @@ -0,0 +1,13 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class ModifiedImageUpdateContent : EventArgs + { + public string FileId { get; set; } + public int PixelSize { get; set; } + public int VersionNumber { get; set; } + public bool NeedsProcessing { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs new file mode 100644 index 00000000..5f2fbf04 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs @@ -0,0 +1,10 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class UserBadgeAssignedContent : EventArgs + { + public string Badge { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs new file mode 100644 index 00000000..3f2d76de --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs @@ -0,0 +1,10 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class UserBadgeUnassignedContent : EventArgs + { + public string BadgeId { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs new file mode 100644 index 00000000..88ecbd10 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs @@ -0,0 +1,15 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Messages +{ + public class UserLocationContent : EventArgs + { + public string UserId { get; set; } + public LimitedUser User { get; set; } + public string Location { get; set; } + public string Instance { get; set; } + public string TravelingToLocation { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs new file mode 100644 index 00000000..6637d5f3 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs @@ -0,0 +1,11 @@ +using System; + +namespace VRChat.API.Realtime.Messages +{ + public class UserUpdateContent : EventArgs + { + public string UserId { get; set; } + public CurrentUserInfo User { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs b/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs new file mode 100644 index 00000000..2090029b --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs @@ -0,0 +1,9 @@ +namespace VRChat.API.Realtime.Messages +{ + public class WebSocketMessage + { + public string Type { get; set; } + public T Content { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs new file mode 100644 index 00000000..3e277598 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs @@ -0,0 +1,10 @@ +using System; + +namespace VRChat.API.Realtime.Models +{ + public class HideNotificationEventArgs : EventArgs + { + public string NotificationId { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs new file mode 100644 index 00000000..30de8146 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs @@ -0,0 +1,22 @@ +using System; + +namespace VRChat.API.Realtime.Models +{ + public class LogEventArgs : EventArgs + { + public Exception Exception { get; set; } + public string Message { get; set; } + public LogLevel Level { get; set; } + } + + public enum LogLevel + { + Trace, + Debug, + Info, + Warning, + Error, + Critical + } +} + diff --git a/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs new file mode 100644 index 00000000..1219da1e --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs @@ -0,0 +1,11 @@ +using System; +using VRChat.API.Model; + +namespace VRChat.API.Realtime.Models +{ + public class NotificationEventArgs : EventArgs + { + public Notification Notification { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs new file mode 100644 index 00000000..0a8cc358 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs @@ -0,0 +1,10 @@ +using System; + +namespace VRChat.API.Realtime.Models +{ + public class SeeNotificationEventArgs : EventArgs + { + public string NotificationId { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/README.md b/wrapper/VRChat.API.Realtime/README.md new file mode 100644 index 00000000..e1fd25c0 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/README.md @@ -0,0 +1,180 @@ +![](https://raw.githubusercontent.com/vrchatapi/vrchatapi.github.io/main/static/assets/img/lang/lang_csharp_banner_1500x300.png) + +# VRChat Realtime WebSocket API for .NET + +A .NET client for VRChat's Realtime WebSocket API (Pipeline). Receive real-time updates about notifications, friends, user status, and more. + +## Disclaimer + +This is the official response of the VRChat Team (from Tupper more specifically) on the usage of the VRChat API. + +> Use of the API using applications other than the approved methods (website, VRChat application) are not officially supported. You may use the API for your own application, but keep these guidelines in mind: +> * We do not provide documentation or support for the API. +> * Do not make queries to the API more than once per 60 seconds. +> * Abuse of the API may result in account termination. +> * Access to API endpoints may break at any given time, with no warning. + +As stated, this documentation was not created with the help of the official VRChat team. Therefore this documentation is not an official documentation of the VRChat API and may not be always up to date with the latest versions. If you find that a page or endpoint is not longer valid please create an issue and tell us so we can fix it. + +## Installation + +Install with NuGet: + +```bash +# With .NET CLI +dotnet add package VRChat.API.Realtime + +# Or with Package Manager +Install-Package VRChat.API.Realtime +``` + +## Features + +- ✅ **Real-time WebSocket connection** to VRChat Pipeline +- ✅ **All event types supported**: Notifications, Friends, User, Groups +- ✅ **Auto-reconnect modes**: On disconnect, every 10/20/30 minutes +- ✅ **Strongly-typed event arguments** for all events +- ✅ **Fluent builder pattern** for easy configuration +- ✅ **Full async/await support** +- ✅ **Logging events** for debugging + +## Quick Start + +```cs +using VRChat.API.Realtime; +using VRChat.API.Realtime.Models; + +// Create client using builder pattern +var client = new VRChatRealtimeClientBuilder() + .WithAuthToken("authcookie_...") + .WithUserAgent("MyApp/1.0") + .WithAutoReconnect(AutoReconnectMode.OnDisconnect) + .Build(); + +// Subscribe to events +client.OnConnected += (sender, e) => +{ + Console.WriteLine("Connected to VRChat Pipeline!"); +}; + +client.OnFriendOnline += (sender, e) => +{ + Console.WriteLine($"Friend {e.User?.DisplayName} came online!"); +}; + +client.OnNotificationReceived += (sender, e) => +{ + Console.WriteLine($"Notification: {e.Notification?.Type}"); +}; + +// Connect +await client.ConnectAsync(); + +// Keep running... +Console.ReadKey(); + +// Disconnect +await client.DisconnectAsync(); +client.Dispose(); +``` + +## Configuration + +### Using Builder Pattern + +```cs +var client = new VRChatRealtimeClientBuilder() + .WithEndpoint("wss://pipeline.vrchat.cloud/") + .WithAuthToken("authcookie_...") + .WithUserAgent("MyApp/1.0") + .WithAutoReconnect(AutoReconnectMode.Every10Minutes) + .Build(); +``` + +### Using Configuration Object + +```cs +var config = new VRChatRealtimeConfiguration +{ + EndpointURL = "wss://pipeline.vrchat.cloud/", + AuthToken = "authcookie_...", + UserAgent = "MyApp/1.0", + AutoReconnectMode = AutoReconnectMode.OnDisconnect +}; + +var client = new VRChatRealtimeClient(config); +``` + +## Auto-Reconnect Modes + +- **None**: Do not automatically reconnect +- **OnDisconnect**: Reconnect when disconnected unexpectedly +- **Every10Minutes**: Reconnect every 10 minutes +- **Every20Minutes**: Reconnect every 20 minutes +- **Every30Minutes**: Reconnect every 30 minutes + +## Available Events + +### Connection Events +- `OnConnected` - Connected to WebSocket +- `OnDisconnected` - Disconnected from WebSocket +- `OnAutoReconnecting` - Auto-reconnect triggered +- `Log` - Log messages with levels (Trace, Debug, Info, Warning, Error, Critical) + +### Notification Events +- `OnNotificationReceived` - Standard notification +- `OnResponseNotification` - Response to previous notification +- `OnSeeNotification` - Mark notification as seen +- `OnHideNotification` - Hide notification +- `OnClearNotification` - Clear all notifications +- `OnNotificationV2` - V2 notification system +- `OnNotificationV2Update` - Update V2 notification +- `OnNotificationV2Delete` - Delete V2 notifications + +### Friend Events +- `OnFriendAdd` - Friend added +- `OnFriendDelete` - Friend removed +- `OnFriendOnline` - Friend came online +- `OnFriendActive` - Friend active on website +- `OnFriendOffline` - Friend went offline +- `OnFriendUpdate` - Friend profile updated +- `OnFriendLocation` - Friend changed location + +### User Events +- `OnUserUpdate` - Your profile updated +- `OnUserLocation` - Your location changed +- `OnUserBadgeAssigned` - Badge obtained +- `OnUserBadgeUnassigned` - Badge lost +- `OnContentRefresh` - Content added/removed +- `OnModifiedImageUpdate` - Image file modified +- `OnInstanceQueueJoined` - Joined instance queue +- `OnInstanceQueueReady` - Ready to join instance + +### Group Events +- `OnGroupJoined` - Joined a group +- `OnGroupLeft` - Left a group +- `OnGroupMemberUpdated` - Group membership changed +- `OnGroupRoleUpdated` - Group role changed + +## Example Usage + +See [Example.cs](Example.cs) for complete examples including: +- Basic usage +- Custom configuration +- Auto-reconnect handling +- All event types + +## Authentication + +You need a VRChat authentication cookie (`authcookie_...`) to connect to the Pipeline. You can obtain this by: +1. Using the main VRChat.API library to authenticate +2. Logging in through the VRChat website and extracting the cookie +3. Logging in through the VRChat client and extracting the cookie + +**Note**: Keep your auth token secure and never commit it to version control! + +## Contributing + +Contributions are welcome, but do not add features that should be handled by the OpenAPI specification. + +Join the [Discord server](https://discord.gg/Ge2APMhPfD) to get in touch with us. diff --git a/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj b/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj new file mode 100644 index 00000000..a5dbcd9a --- /dev/null +++ b/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj @@ -0,0 +1,44 @@ + + + + true + net8.0 + VRChat.API.Realtime + VRChat.API.Realtime + Library + VRChat API Docs Community + VRChat API Docs Community + VRChat API Realtime library for VRChat API + VRChat Realtime WebSocket API library for .NET + Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. + VRChat.API.Realtime + 2.20.5 + bin\$(Configuration)\$(TargetFramework)\VRChat.API.Realtime.xml + MIT + https://github.com/vrchatapi/vrchatapi-csharp.git + git + Automated deployment + README.md + vrchat,vrcapi,websocket,realtime,aspnetcore,vrc-api,vrc + vrc_cat.ico + + + + + + + + + + + + + True + \ + + + True + \ + + + diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs new file mode 100644 index 00000000..fbe520c1 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs @@ -0,0 +1,322 @@ +using System; +using System.Text.Json; +using VRChat.API.Model; +using VRChat.API.Realtime.Models; +using VRChat.API.Realtime.Messages; + +namespace VRChat.API.Realtime +{ + public partial class VRChatRealtimeClient + { + private static readonly JsonSerializerOptions JsonOptions = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }; + + private void ProcessMessage(string messageType, string json) + { + try + { + switch (messageType) + { + // Notification Events + case "notification": + ProcessNotification(json); + break; + + case "response-notification": + ProcessResponseNotification(json); + break; + + case "see-notification": + ProcessSeeNotification(json); + break; + + case "hide-notification": + ProcessHideNotification(json); + break; + + case "clear-notification": + OnClearNotification?.Invoke(this, EventArgs.Empty); + break; + + case "notification-v2": + ProcessNotificationV2(json); + break; + + case "notification-v2-update": + ProcessNotificationV2Update(json); + break; + + case "notification-v2-delete": + ProcessNotificationV2Delete(json); + break; + + // Friend Events + case "friend-add": + ProcessFriendAdd(json); + break; + + case "friend-delete": + ProcessFriendDelete(json); + break; + + case "friend-online": + ProcessFriendOnline(json); + break; + + case "friend-active": + ProcessFriendActive(json); + break; + + case "friend-offline": + ProcessFriendOffline(json); + break; + + case "friend-update": + ProcessFriendUpdate(json); + break; + + case "friend-location": + ProcessFriendLocation(json); + break; + + // User Events + case "user-update": + ProcessUserUpdate(json); + break; + + case "user-location": + ProcessUserLocation(json); + break; + + case "user-badge-assigned": + ProcessUserBadgeAssigned(json); + break; + + case "user-badge-unassigned": + ProcessUserBadgeUnassigned(json); + break; + + case "content-refresh": + ProcessContentRefresh(json); + break; + + case "modified-image-update": + ProcessModifiedImageUpdate(json); + break; + + case "instance-queue-joined": + ProcessInstanceQueueJoined(json); + break; + + case "instance-queue-ready": + ProcessInstanceQueueReady(json); + break; + + // Group Events + case "group-joined": + ProcessGroupJoined(json); + break; + + case "group-left": + ProcessGroupLeft(json); + break; + + case "group-member-updated": + ProcessGroupMemberUpdated(json); + break; + + case "group-role-updated": + ProcessGroupRoleUpdated(json); + break; + + default: + LogMessage(LogLevel.Debug, $"Unknown message type: {messageType}"); + break; + } + } + catch (Exception ex) + { + LogMessage(LogLevel.Error, $"Error processing {messageType} message: {ex.Message}", ex); + } + } + + #region Notification Event Processors + + private void ProcessNotification(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + var args = new NotificationEventArgs { Notification = message.Content }; + + OnNotificationReceived?.Invoke(this, args); + OnNotification?.Invoke(this, args); // Legacy event + } + + private void ProcessResponseNotification(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnResponseNotification?.Invoke(this, message.Content); + } + + private void ProcessSeeNotification(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnSeeNotification?.Invoke(this, new SeeNotificationEventArgs { NotificationId = message.Content }); + } + + private void ProcessHideNotification(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnHideNotification?.Invoke(this, new HideNotificationEventArgs { NotificationId = message.Content }); + } + + private void ProcessNotificationV2(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnNotificationV2?.Invoke(this, message.Content); + } + + private void ProcessNotificationV2Update(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnNotificationV2Update?.Invoke(this, message.Content); + } + + private void ProcessNotificationV2Delete(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnNotificationV2Delete?.Invoke(this, message.Content); + } + + #endregion + + #region Friend Event Processors + + private void ProcessFriendAdd(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnFriendAdd?.Invoke(this, message.Content); + } + + private void ProcessFriendDelete(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnFriendDelete?.Invoke(this, message.Content); + } + + private void ProcessFriendOnline(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnFriendOnline?.Invoke(this, message.Content); + } + + private void ProcessFriendActive(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnFriendActive?.Invoke(this, message.Content); + } + + private void ProcessFriendOffline(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnFriendOffline?.Invoke(this, message.Content); + } + + private void ProcessFriendUpdate(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnFriendUpdate?.Invoke(this, message.Content); + } + + private void ProcessFriendLocation(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnFriendLocation?.Invoke(this, message.Content); + } + + #endregion + + #region User Event Processors + + private void ProcessUserUpdate(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnUserUpdate?.Invoke(this, message.Content); + } + + private void ProcessUserLocation(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnUserLocation?.Invoke(this, message.Content); + } + + private void ProcessUserBadgeAssigned(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnUserBadgeAssigned?.Invoke(this, message.Content); + } + + private void ProcessUserBadgeUnassigned(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnUserBadgeUnassigned?.Invoke(this, message.Content); + } + + private void ProcessContentRefresh(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnContentRefresh?.Invoke(this, message.Content); + } + + private void ProcessModifiedImageUpdate(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnModifiedImageUpdate?.Invoke(this, message.Content); + } + + private void ProcessInstanceQueueJoined(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnInstanceQueueJoined?.Invoke(this, message.Content); + } + + private void ProcessInstanceQueueReady(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnInstanceQueueReady?.Invoke(this, message.Content); + } + + #endregion + + #region Group Event Processors + + private void ProcessGroupJoined(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnGroupJoined?.Invoke(this, message.Content); + } + + private void ProcessGroupLeft(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnGroupLeft?.Invoke(this, message.Content); + } + + private void ProcessGroupMemberUpdated(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnGroupMemberUpdated?.Invoke(this, message.Content); + } + + private void ProcessGroupRoleUpdated(string json) + { + var message = JsonSerializer.Deserialize>(json, JsonOptions); + OnGroupRoleUpdated?.Invoke(this, message.Content); + } + + #endregion + } +} + diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs new file mode 100644 index 00000000..35d88d18 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs @@ -0,0 +1,430 @@ +using System; +using System.Net.WebSockets; +using System.Text; +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; +using VRChat.API.Realtime.Models; +using VRChat.API.Realtime.Messages; + +namespace VRChat.API.Realtime +{ + public interface IVRChatRealtime + { + // Connection Events + event EventHandler Log; + event EventHandler OnDisconnected; + event EventHandler OnConnected; + event EventHandler OnAutoReconnecting; + + // Notification Events (legacy) + event EventHandler OnNotification; + + // Notification Events + event EventHandler OnNotificationReceived; + event EventHandler OnResponseNotification; + event EventHandler OnSeeNotification; + event EventHandler OnHideNotification; + event EventHandler OnClearNotification; + event EventHandler OnNotificationV2; + event EventHandler OnNotificationV2Update; + event EventHandler OnNotificationV2Delete; + + // Friend Events + event EventHandler OnFriendAdd; + event EventHandler OnFriendDelete; + event EventHandler OnFriendOnline; + event EventHandler OnFriendActive; + event EventHandler OnFriendOffline; + event EventHandler OnFriendUpdate; + event EventHandler OnFriendLocation; + + // User Events + event EventHandler OnUserUpdate; + event EventHandler OnUserLocation; + event EventHandler OnUserBadgeAssigned; + event EventHandler OnUserBadgeUnassigned; + event EventHandler OnContentRefresh; + event EventHandler OnModifiedImageUpdate; + event EventHandler OnInstanceQueueJoined; + event EventHandler OnInstanceQueueReady; + + // Group Events + event EventHandler OnGroupJoined; + event EventHandler OnGroupLeft; + event EventHandler OnGroupMemberUpdated; + event EventHandler OnGroupRoleUpdated; + + // Methods + Task ConnectAsync(CancellationToken cancellationToken = default); + Task DisconnectAsync(); + bool IsConnected { get; } + } + + public partial class VRChatRealtimeClient : IVRChatRealtime, IDisposable + { + private readonly VRChatRealtimeConfiguration _configuration; + private ClientWebSocket _client; + private Timer _reconnectTimer; + private Timer _heartbeatTimer; + private CancellationTokenSource _receiveCts; + private Task _receiveTask; + private bool _isManualDisconnect; + private bool _disposed; + private readonly SemaphoreSlim _sendLock = new SemaphoreSlim(1, 1); + + // Connection Events + public event EventHandler Log; + public event EventHandler OnDisconnected; + public event EventHandler OnConnected; + public event EventHandler OnAutoReconnecting; + + // Notification Events (legacy) + public event EventHandler OnNotification; + + // Notification Events + public event EventHandler OnNotificationReceived; + public event EventHandler OnResponseNotification; + public event EventHandler OnSeeNotification; + public event EventHandler OnHideNotification; + public event EventHandler OnClearNotification; + public event EventHandler OnNotificationV2; + public event EventHandler OnNotificationV2Update; + public event EventHandler OnNotificationV2Delete; + + // Friend Events + public event EventHandler OnFriendAdd; + public event EventHandler OnFriendDelete; + public event EventHandler OnFriendOnline; + public event EventHandler OnFriendActive; + public event EventHandler OnFriendOffline; + public event EventHandler OnFriendUpdate; + public event EventHandler OnFriendLocation; + + // User Events + public event EventHandler OnUserUpdate; + public event EventHandler OnUserLocation; + public event EventHandler OnUserBadgeAssigned; + public event EventHandler OnUserBadgeUnassigned; + public event EventHandler OnContentRefresh; + public event EventHandler OnModifiedImageUpdate; + public event EventHandler OnInstanceQueueJoined; + public event EventHandler OnInstanceQueueReady; + + // Group Events + public event EventHandler OnGroupJoined; + public event EventHandler OnGroupLeft; + public event EventHandler OnGroupMemberUpdated; + public event EventHandler OnGroupRoleUpdated; + + public bool IsConnected => _client?.State == WebSocketState.Open; + + public VRChatRealtimeClient(VRChatRealtimeConfiguration configuration) + { + _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); + + if (string.IsNullOrWhiteSpace(_configuration.AuthToken)) + throw new ArgumentException("AuthToken is required", nameof(configuration)); + } + + public async Task ConnectAsync(CancellationToken cancellationToken = default) + { + if (_client?.State == WebSocketState.Open) + { + LogMessage(LogLevel.Warning, "Already connected to VRChat WebSocket"); + return; + } + + try + { + _isManualDisconnect = false; + _receiveCts?.Cancel(); + _receiveCts?.Dispose(); + _receiveCts = new CancellationTokenSource(); + + var url = $"{_configuration.EndpointURL.TrimEnd('/')}/?authToken={_configuration.AuthToken}"; + + _client?.Dispose(); + _client = new ClientWebSocket(); + + if (!string.IsNullOrWhiteSpace(_configuration.UserAgent)) + { + _client.Options.SetRequestHeader("User-Agent", _configuration.UserAgent); + } + + await _client.ConnectAsync(new Uri(url), cancellationToken); + + LogMessage(LogLevel.Info, "Connected to VRChat WebSocket"); + OnConnected?.Invoke(this, EventArgs.Empty); + + // Start receiving messages + _receiveTask = ReceiveLoop(_receiveCts.Token); + + // Setup periodic reconnect timer + SetupReconnectTimer(); + + // Setup heartbeat timer (every 30 seconds) + SetupHeartbeatTimer(); + } + catch (Exception ex) + { + LogMessage(LogLevel.Error, $"Failed to connect to VRChat WebSocket: {ex.Message}", ex); + throw; + } + } + + public async Task DisconnectAsync() + { + _isManualDisconnect = true; + + // Stop timers + _reconnectTimer?.Dispose(); + _reconnectTimer = null; + _heartbeatTimer?.Dispose(); + _heartbeatTimer = null; + + // Cancel receiving + _receiveCts?.Cancel(); + + if (_client != null && _client.State == WebSocketState.Open) + { + try + { + await _client.CloseAsync(WebSocketCloseStatus.NormalClosure, "Client disconnecting", CancellationToken.None); + } + catch (Exception ex) + { + LogMessage(LogLevel.Warning, $"Error during disconnect: {ex.Message}", ex); + } + } + + _client?.Dispose(); + _client = null; + + if (_receiveTask != null) + { + try + { + await _receiveTask; + } + catch (OperationCanceledException) + { + // Expected + } + catch (Exception ex) + { + LogMessage(LogLevel.Warning, $"Error waiting for receive task: {ex.Message}", ex); + } + } + + LogMessage(LogLevel.Info, "Disconnected from VRChat WebSocket"); + } + + private async Task ReceiveLoop(CancellationToken cancellationToken) + { + var buffer = new byte[8192]; + var messageBuffer = new StringBuilder(); + + try + { + while (!cancellationToken.IsCancellationRequested && _client.State == WebSocketState.Open) + { + WebSocketReceiveResult result; + messageBuffer.Clear(); + + do + { + result = await _client.ReceiveAsync(new ArraySegment(buffer), cancellationToken); + + if (result.MessageType == WebSocketMessageType.Close) + { + await HandleDisconnection(); + return; + } + + messageBuffer.Append(Encoding.UTF8.GetString(buffer, 0, result.Count)); + } + while (!result.EndOfMessage); + + if (result.MessageType == WebSocketMessageType.Text) + { + var message = messageBuffer.ToString(); + HandleMessage(message); + } + } + } + catch (OperationCanceledException) + { + // Expected when cancelling + } + catch (WebSocketException ex) + { + LogMessage(LogLevel.Error, $"WebSocket error: {ex.Message}", ex); + await HandleDisconnection(); + } + catch (Exception ex) + { + LogMessage(LogLevel.Error, $"Receive loop error: {ex.Message}", ex); + await HandleDisconnection(); + } + } + + private async Task SendHeartbeatAsync() + { + if (_client?.State != WebSocketState.Open) + return; + + try + { + var heartbeat = new HeartbeatMessage + { + Nonce = Guid.NewGuid().ToString() + }; + + var json = JsonSerializer.Serialize(heartbeat); + var bytes = Encoding.UTF8.GetBytes(json); + + await _sendLock.WaitAsync(); + try + { + await _client.SendAsync( + new ArraySegment(bytes), + WebSocketMessageType.Text, + true, + CancellationToken.None); + + LogMessage(LogLevel.Trace, $"Heartbeat sent: {heartbeat.Nonce}"); + } + finally + { + _sendLock.Release(); + } + } + catch (Exception ex) + { + LogMessage(LogLevel.Warning, $"Failed to send heartbeat: {ex.Message}", ex); + } + } + + private void SetupReconnectTimer() + { + _reconnectTimer?.Dispose(); + + TimeSpan? interval = _configuration.AutoReconnectMode switch + { + AutoReconnectMode.Every10Minutes => TimeSpan.FromMinutes(10), + AutoReconnectMode.Every20Minutes => TimeSpan.FromMinutes(20), + AutoReconnectMode.Every30Minutes => TimeSpan.FromMinutes(30), + _ => null + }; + + if (interval.HasValue) + { + _reconnectTimer = new Timer(async _ => + { + try + { + OnAutoReconnecting?.Invoke(this, EventArgs.Empty); + LogMessage(LogLevel.Info, $"Auto-reconnecting (mode: {_configuration.AutoReconnectMode})"); + + await DisconnectAsync(); + await Task.Delay(150); // Brief delay before reconnecting + await ConnectAsync(); + } + catch (Exception ex) + { + LogMessage(LogLevel.Error, $"Auto-reconnect failed: {ex.Message}", ex); + } + }, null, interval.Value, interval.Value); + } + } + + private void SetupHeartbeatTimer() + { + _heartbeatTimer?.Dispose(); + + _heartbeatTimer = new Timer(async _ => + { + await SendHeartbeatAsync(); + }, null, TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(30)); + } + + private void HandleMessage(string json) + { + try + { + LogMessage(LogLevel.Trace, $"Received message: {json}"); + + using var document = JsonDocument.Parse(json); + var root = document.RootElement; + + if (!root.TryGetProperty("type", out var typeElement)) + { + LogMessage(LogLevel.Warning, "Received message without type field"); + return; + } + + var messageType = typeElement.GetString(); + if (string.IsNullOrEmpty(messageType)) + { + LogMessage(LogLevel.Warning, "Received message with empty type"); + return; + } + + ProcessMessage(messageType, json); + } + catch (Exception ex) + { + LogMessage(LogLevel.Error, $"Error processing message: {ex.Message}", ex); + } + } + + private async Task HandleDisconnection() + { + LogMessage(LogLevel.Info, "WebSocket disconnected"); + OnDisconnected?.Invoke(this, EventArgs.Empty); + + if (!_isManualDisconnect && _configuration.AutoReconnectMode >= AutoReconnectMode.OnDisconnect) + { + await Task.Run(async () => + { + try + { + OnAutoReconnecting?.Invoke(this, EventArgs.Empty); + LogMessage(LogLevel.Info, "Attempting to reconnect..."); + await Task.Delay(2000); // Wait 2 seconds before reconnecting + await ConnectAsync(); + } + catch (Exception ex) + { + LogMessage(LogLevel.Error, $"Reconnection failed: {ex.Message}", ex); + } + }); + } + } + + private void LogMessage(LogLevel level, string message, Exception exception = null) + { + Log?.Invoke(this, new LogEventArgs + { + Level = level, + Message = message, + Exception = exception + }); + } + + public void Dispose() + { + if (!_disposed) + { + _reconnectTimer?.Dispose(); + _heartbeatTimer?.Dispose(); + _receiveCts?.Cancel(); + _receiveCts?.Dispose(); + _client?.Dispose(); + _sendLock?.Dispose(); + _disposed = true; + } + } + } +} diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs new file mode 100644 index 00000000..5292d2c2 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs @@ -0,0 +1,61 @@ +using System; + +namespace VRChat.API.Realtime +{ + public class VRChatRealtimeClientBuilder + { + private readonly VRChatRealtimeConfiguration _configuration; + + public VRChatRealtimeClientBuilder() + { + _configuration = new VRChatRealtimeConfiguration(); + } + + /// + /// Set the WebSocket endpoint URL + /// + public VRChatRealtimeClientBuilder WithEndpoint(string endpointUrl) + { + _configuration.EndpointURL = endpointUrl; + return this; + } + + /// + /// Set the authentication token (authcookie) + /// + public VRChatRealtimeClientBuilder WithAuthToken(string authToken) + { + _configuration.AuthToken = authToken; + return this; + } + + /// + /// Set the User-Agent header + /// + public VRChatRealtimeClientBuilder WithUserAgent(string userAgent) + { + _configuration.UserAgent = userAgent; + return this; + } + + /// + /// Set the auto-reconnect mode + /// + public VRChatRealtimeClientBuilder WithAutoReconnect(AutoReconnectMode mode) + { + _configuration.AutoReconnectMode = mode; + return this; + } + + /// + /// Build the VRChatRealtimeClient with the configured settings + /// + public VRChatRealtimeClient Build() + { + if (string.IsNullOrWhiteSpace(_configuration.AuthToken)) + throw new InvalidOperationException("AuthToken is required. Use WithAuthToken() to set it."); + + return new VRChatRealtimeClient(_configuration); + } + } +} diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs new file mode 100644 index 00000000..13932e54 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs @@ -0,0 +1,56 @@ +using System; + +namespace VRChat.API.Realtime +{ + public class VRChatRealtimeConfiguration + { + /// + /// The WebSocket endpoint URL for VRChat's Pipeline API + /// + public string EndpointURL { get; set; } = "wss://pipeline.vrchat.cloud/"; + + /// + /// Auto-reconnection mode for the WebSocket connection + /// + public AutoReconnectMode AutoReconnectMode { get; set; } = AutoReconnectMode.OnDisconnect; + + /// + /// VRChat authentication token (authcookie) + /// + public string AuthToken { get; set; } + + /// + /// User-Agent header for the WebSocket connection + /// + public string UserAgent { get; set; } + } + + public enum AutoReconnectMode + { + /// + /// Do not automatically reconnect + /// + None, + + /// + /// Reconnect when disconnected unexpectedly + /// + OnDisconnect, + + /// + /// Reconnect every 10 minutes + /// + Every10Minutes, + + /// + /// Reconnect every 20 minutes + /// + Every20Minutes, + + /// + /// Reconnect every 30 minutes + /// + Every30Minutes + } +} + diff --git a/wrapper/VRChat.API.Realtime/vrc_cat.ico b/wrapper/VRChat.API.Realtime/vrc_cat.ico new file mode 100644 index 0000000000000000000000000000000000000000..0eb11b222c523b2ae25d2209dabe6d2632323768 GIT binary patch literal 4286 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 M<_e7AJuC6w0W9>OBLDyZ literal 0 HcmV?d00001 diff --git a/wrapper/VRChat.API.Realtime/vrc_cat.png b/wrapper/VRChat.API.Realtime/vrc_cat.png new file mode 100644 index 0000000000000000000000000000000000000000..e91d5ba4ff27752bc2cf4961602032d07d7c0049 GIT binary patch literal 149194 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±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 )wb{8S}-8_=SOJ)}bk7apGttq}RJN)D6+2IBI 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 Ml8O>l-;93#9{}zG)&Kwi literal 0 HcmV?d00001 From e4ca43cebaa99aa0bff264364246cf4cca658f22 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Thu, 27 Nov 2025 13:09:57 -0600 Subject: [PATCH 02/25] improvements to websocket API --- wrapper/VRChat.API.Realtime/Example.cs | 100 +++-- .../Messages/Friend/FriendActiveContent.cs | 3 +- .../Messages/Friend/FriendAddContent.cs | 3 +- .../Messages/Friend/FriendDeleteContent.cs | 4 +- .../Messages/Friend/FriendLocationContent.cs | 3 +- .../Messages/Friend/FriendOfflineContent.cs | 4 +- .../Messages/Friend/FriendOnlineContent.cs | 3 +- .../Messages/Friend/FriendUpdateContent.cs | 3 +- .../Messages/Group/GroupJoinedContent.cs | 4 +- .../Messages/Group/GroupLeftContent.cs | 4 +- .../Group/GroupMemberUpdatedContent.cs | 3 +- .../Messages/Group/GroupRoleUpdatedContent.cs | 3 +- .../Notification/NotificationContent.cs | 3 +- .../Notification/NotificationV2Content.cs | 2 +- .../NotificationV2DeleteContent.cs | 3 +- .../NotificationV2UpdateContent.cs | 3 +- .../ResponseNotificationContent.cs | 4 +- .../Messages/User/ContentRefreshContent.cs | 4 +- .../User/InstanceQueueJoinedContent.cs | 4 +- .../User/InstanceQueueReadyContent.cs | 2 +- .../User/ModifiedImageUpdateContent.cs | 4 +- .../Messages/User/UserBadgeAssignedContent.cs | 4 +- .../User/UserBadgeUnassignedContent.cs | 4 +- .../Messages/User/UserLocationContent.cs | 3 +- .../Messages/User/UserUpdateContent.cs | 4 +- .../Models/HideNotificationEventArgs.cs | 10 - .../Models/SeeNotificationEventArgs.cs | 10 - .../Models/VRChatEventArgs.cs | 32 ++ .../VRChatRealtimeClient.MessageProcessor.cs | 382 ++++++++++++++---- .../VRChatRealtimeClient.cs | 319 ++++++++++++--- .../VRChatRealtimeClientBuilder.cs | 11 +- 31 files changed, 701 insertions(+), 244 deletions(-) delete mode 100644 wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs delete mode 100644 wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs create mode 100644 wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs diff --git a/wrapper/VRChat.API.Realtime/Example.cs b/wrapper/VRChat.API.Realtime/Example.cs index 1d4065c8..4c064b4a 100644 --- a/wrapper/VRChat.API.Realtime/Example.cs +++ b/wrapper/VRChat.API.Realtime/Example.cs @@ -40,59 +40,62 @@ public static async Task BasicUsageExample() }; // Subscribe to friend events - client.OnFriendOnline += (sender, content) => + client.OnFriendOnline += (sender, e) => { - Console.WriteLine($"Friend {content.User?.DisplayName} came online!"); - Console.WriteLine($" Platform: {content.Platform}"); - Console.WriteLine($" Location: {content.Location}"); + Console.WriteLine($"Friend {e.Message.User?.DisplayName} came online!"); + Console.WriteLine($" Platform: {e.Message.Platform}"); + Console.WriteLine($" Location: {e.Message.Location}"); + Console.WriteLine($" Message Type: {e.Type}"); + // e.RawMessage = full JSON: {"type":"friend-online","content":{...}} + // e.RawContent = just content: {...} }; - client.OnFriendOffline += (sender, content) => + client.OnFriendOffline += (sender, e) => { - Console.WriteLine($"Friend {content.UserId} went offline"); + Console.WriteLine($"Friend {e.Message.UserId} went offline"); }; - client.OnFriendLocation += (sender, content) => + client.OnFriendLocation += (sender, e) => { - Console.WriteLine($"Friend {content.User?.DisplayName} changed location"); - Console.WriteLine($" New location: {content.Location}"); - Console.WriteLine($" World: {content.WorldId}"); + Console.WriteLine($"Friend {e.Message.User?.DisplayName} changed location"); + Console.WriteLine($" New location: {e.Message.Location}"); + Console.WriteLine($" World: {e.Message.WorldId}"); }; // Subscribe to notification events client.OnNotificationReceived += (sender, e) => { - Console.WriteLine($"Notification received: {e.Notification?.Type}"); + Console.WriteLine($"Notification received: {e.Message?.Type}"); }; - client.OnNotificationV2 += (sender, content) => + client.OnNotificationV2 += (sender, e) => { - Console.WriteLine($"V2 Notification: {content.Title}"); - Console.WriteLine($" Message: {content.Message}"); + Console.WriteLine($"V2 Notification: {e.Message.Title}"); + Console.WriteLine($" Message: {e.Message.Message}"); }; // Subscribe to user events - client.OnUserLocation += (sender, content) => + client.OnUserLocation += (sender, e) => { - Console.WriteLine($"You changed location to: {content.Location}"); + Console.WriteLine($"You changed location to: {e.Message.Location}"); }; - client.OnUserUpdate += (sender, content) => + client.OnUserUpdate += (sender, e) => { Console.WriteLine($"Your profile was updated"); - Console.WriteLine($" Status: {content.User?.Status}"); - Console.WriteLine($" Bio: {content.User?.Bio}"); + Console.WriteLine($" Status: {e.Message.User?.Status}"); + Console.WriteLine($" Bio: {e.Message.User?.Bio}"); }; // Subscribe to group events - client.OnGroupJoined += (sender, content) => + client.OnGroupJoined += (sender, e) => { - Console.WriteLine($"Joined group: {content.GroupId}"); + Console.WriteLine($"Joined group: {e.Message.GroupId}"); }; - client.OnGroupMemberUpdated += (sender, content) => + client.OnGroupMemberUpdated += (sender, e) => { - Console.WriteLine($"Group member updated: {content.Member?.Id}"); + Console.WriteLine($"Group member updated: {e.Message.Member?.Id}"); }; // Connect to the WebSocket @@ -158,6 +161,57 @@ public static async Task AutoReconnectExample() await client.DisconnectAsync(); client.Dispose(); } + + public static async Task RawDataAccessExample() + { + var client = new VRChatRealtimeClientBuilder() + .WithAuthToken("authcookie_...") + .WithUserAgent("MyApp/1.0") + .Build(); + + // Access raw WebSocket messages + client.OnMessageReceived += (sender, e) => + { + Console.WriteLine("=== Raw WebSocket Message ==="); + Console.WriteLine(e.RawMessage); // Full JSON string + }; + + // Access parsed events with raw data + client.OnFriendOnline += (sender, e) => + { + Console.WriteLine("=== Friend Online Event ==="); + Console.WriteLine($"Typed Message: {e.Message.User?.DisplayName}"); + Console.WriteLine($"Type: {e.Type}"); + Console.WriteLine($"RawMessage (full JSON): {e.RawMessage}"); + Console.WriteLine($"RawContent (content only): {e.RawContent}"); + }; + + // Generic event handler for all parsed events + client.OnEvent += (sender, e) => + { + Console.WriteLine($"Event Type: {e.Type}"); + Console.WriteLine($"Parsed Content Type: {e.Message?.GetType().Name}"); + // Access raw JSON for custom processing + if (!string.IsNullOrEmpty(e.RawContent)) + { + // You can re-parse or log the raw content + Console.WriteLine($"Raw Content: {e.RawContent}"); + } + }; + + // Heartbeat monitoring + client.OnHeartbeat += (sender, e) => + { + Console.WriteLine("Heartbeat sent to keep connection alive"); + }; + + await client.ConnectAsync(); + + await Task.Delay(TimeSpan.FromMinutes(1)); + + await client.DisconnectAsync(); + client.Dispose(); + } } } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs index b65d8963..f77cd07f 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class FriendActiveContent : EventArgs + public class FriendActiveContent { public string UserId { get; set; } public string Platform { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs index 7eb0810c..f55721d3 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class FriendAddContent : EventArgs + public class FriendAddContent { public string UserId { get; set; } public LimitedUser User { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs index 1070bdad..98438dc4 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class FriendDeleteContent : EventArgs + public class FriendDeleteContent { public string UserId { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs index ca2f69af..01ea55e3 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class FriendLocationContent : EventArgs + public class FriendLocationContent { public string UserId { get; set; } public string Location { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs index 16a97e76..7cc65143 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class FriendOfflineContent : EventArgs + public class FriendOfflineContent { public string UserId { get; set; } public string Platform { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs index 338f3435..c51b1b3d 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class FriendOnlineContent : EventArgs + public class FriendOnlineContent { public string UserId { get; set; } public string Platform { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs index 3f0e62d5..5320d879 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class FriendUpdateContent : EventArgs + public class FriendUpdateContent { public string UserId { get; set; } public LimitedUser User { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs index 3b03e860..b3b1e5b2 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class GroupJoinedContent : EventArgs + public class GroupJoinedContent { public string GroupId { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs index 8c190d50..97c68b32 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class GroupLeftContent : EventArgs + public class GroupLeftContent { public string GroupId { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs index b158dbd3..2cefb9f5 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class GroupMemberUpdatedContent : EventArgs + public class GroupMemberUpdatedContent { public GroupLimitedMember Member { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs index 94336ea9..6d0c02a8 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class GroupRoleUpdatedContent : EventArgs + public class GroupRoleUpdatedContent { public GroupRole Role { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs index 22953e76..466e2983 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class NotificationContent : EventArgs + public class NotificationContent { public string UserId { get; set; } public LimitedUser User { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs index 0a06bdf9..15cbd390 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs @@ -3,7 +3,7 @@ namespace VRChat.API.Realtime.Messages { - public class NotificationV2Content : EventArgs + public class NotificationV2Content { public string Id { get; set; } public int Version { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs index 1f5ece90..55b9083d 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs @@ -1,9 +1,8 @@ -using System; using System.Collections.Generic; namespace VRChat.API.Realtime.Messages { - public class NotificationV2DeleteContent : EventArgs + public class NotificationV2DeleteContent { public List Ids { get; set; } public int Version { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs index 233188e9..9db94734 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs @@ -1,9 +1,8 @@ -using System; using System.Collections.Generic; namespace VRChat.API.Realtime.Messages { - public class NotificationV2UpdateContent : EventArgs + public class NotificationV2UpdateContent { public string Id { get; set; } public int Version { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs index 64688808..709b71e4 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class ResponseNotificationContent : EventArgs + public class ResponseNotificationContent { public string NotificationId { get; set; } public string ReceiverId { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs index 5dd4c1e3..c49cb9e2 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class ContentRefreshContent : EventArgs + public class ContentRefreshContent { public string ContentType { get; set; } public string FileId { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs index 80097941..13990b9d 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class InstanceQueueJoinedContent : EventArgs + public class InstanceQueueJoinedContent { public string InstanceLocation { get; set; } public int Position { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs index 53f273e2..37ad0da2 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs @@ -2,7 +2,7 @@ namespace VRChat.API.Realtime.Messages { - public class InstanceQueueReadyContent : EventArgs + public class InstanceQueueReadyContent { public string InstanceLocation { get; set; } public DateTime Expiry { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs index 347b6731..212ed228 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class ModifiedImageUpdateContent : EventArgs + public class ModifiedImageUpdateContent { public string FileId { get; set; } public int PixelSize { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs index 5f2fbf04..994884c3 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class UserBadgeAssignedContent : EventArgs + public class UserBadgeAssignedContent { public string Badge { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs index 3f2d76de..98738192 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class UserBadgeUnassignedContent : EventArgs + public class UserBadgeUnassignedContent { public string BadgeId { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs index 88ecbd10..96d5c98b 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs @@ -1,9 +1,8 @@ -using System; using VRChat.API.Model; namespace VRChat.API.Realtime.Messages { - public class UserLocationContent : EventArgs + public class UserLocationContent { public string UserId { get; set; } public LimitedUser User { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs index 6637d5f3..afdcaaa1 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs @@ -1,8 +1,6 @@ -using System; - namespace VRChat.API.Realtime.Messages { - public class UserUpdateContent : EventArgs + public class UserUpdateContent { public string UserId { get; set; } public CurrentUserInfo User { get; set; } diff --git a/wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs deleted file mode 100644 index 3e277598..00000000 --- a/wrapper/VRChat.API.Realtime/Models/HideNotificationEventArgs.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace VRChat.API.Realtime.Models -{ - public class HideNotificationEventArgs : EventArgs - { - public string NotificationId { get; set; } - } -} - diff --git a/wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs deleted file mode 100644 index 0a8cc358..00000000 --- a/wrapper/VRChat.API.Realtime/Models/SeeNotificationEventArgs.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace VRChat.API.Realtime.Models -{ - public class SeeNotificationEventArgs : EventArgs - { - public string NotificationId { get; set; } - } -} - diff --git a/wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs new file mode 100644 index 00000000..a789b05e --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs @@ -0,0 +1,32 @@ +using System; + +namespace VRChat.API.Realtime.Models +{ + /// + /// Generic event arguments for VRChat realtime events containing typed message data + /// + /// The type of the message content + public class VRChatEventArgs : EventArgs + { + /// + /// The typed message content + /// + public T Message { get; set; } + + /// + /// The complete raw JSON string received from the WebSocket + /// + public string RawMessage { get; set; } + + /// + /// The raw "content" field as a JSON string from the VRChat message + /// + public string RawContent { get; set; } + + /// + /// The message type identifier + /// + public string Type { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs index fbe520c1..d4d5af58 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs @@ -14,27 +14,29 @@ public partial class VRChatRealtimeClient PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; - private void ProcessMessage(string messageType, string json) + private void ProcessMessage(string messageType, string json, string rawContent) { + object parsedContent = null; + try { switch (messageType) { // Notification Events case "notification": - ProcessNotification(json); + ProcessNotification(json, rawContent); break; case "response-notification": - ProcessResponseNotification(json); + ProcessResponseNotification(json, rawContent); break; case "see-notification": - ProcessSeeNotification(json); + ProcessSeeNotification(json, rawContent); break; case "hide-notification": - ProcessHideNotification(json); + ProcessHideNotification(json, rawContent); break; case "clear-notification": @@ -42,94 +44,94 @@ private void ProcessMessage(string messageType, string json) break; case "notification-v2": - ProcessNotificationV2(json); + ProcessNotificationV2(json, rawContent); break; case "notification-v2-update": - ProcessNotificationV2Update(json); + ProcessNotificationV2Update(json, rawContent); break; case "notification-v2-delete": - ProcessNotificationV2Delete(json); + ProcessNotificationV2Delete(json, rawContent); break; // Friend Events case "friend-add": - ProcessFriendAdd(json); + ProcessFriendAdd(json, rawContent); break; case "friend-delete": - ProcessFriendDelete(json); + ProcessFriendDelete(json, rawContent); break; case "friend-online": - ProcessFriendOnline(json); + ProcessFriendOnline(json, rawContent); break; case "friend-active": - ProcessFriendActive(json); + ProcessFriendActive(json, rawContent); break; case "friend-offline": - ProcessFriendOffline(json); + ProcessFriendOffline(json, rawContent); break; case "friend-update": - ProcessFriendUpdate(json); + ProcessFriendUpdate(json, rawContent); break; case "friend-location": - ProcessFriendLocation(json); + ProcessFriendLocation(json, rawContent); break; // User Events case "user-update": - ProcessUserUpdate(json); + ProcessUserUpdate(json, rawContent); break; case "user-location": - ProcessUserLocation(json); + ProcessUserLocation(json, rawContent); break; case "user-badge-assigned": - ProcessUserBadgeAssigned(json); + ProcessUserBadgeAssigned(json, rawContent); break; case "user-badge-unassigned": - ProcessUserBadgeUnassigned(json); + ProcessUserBadgeUnassigned(json, rawContent); break; case "content-refresh": - ProcessContentRefresh(json); + ProcessContentRefresh(json, rawContent); break; case "modified-image-update": - ProcessModifiedImageUpdate(json); + ProcessModifiedImageUpdate(json, rawContent); break; case "instance-queue-joined": - ProcessInstanceQueueJoined(json); + ProcessInstanceQueueJoined(json, rawContent); break; case "instance-queue-ready": - ProcessInstanceQueueReady(json); + ProcessInstanceQueueReady(json, rawContent); break; // Group Events case "group-joined": - ProcessGroupJoined(json); + ProcessGroupJoined(json, rawContent); break; case "group-left": - ProcessGroupLeft(json); + ProcessGroupLeft(json, rawContent); break; case "group-member-updated": - ProcessGroupMemberUpdated(json); + ProcessGroupMemberUpdated(json, rawContent); break; case "group-role-updated": - ProcessGroupRoleUpdated(json); + ProcessGroupRoleUpdated(json, rawContent); break; default: @@ -141,179 +143,399 @@ private void ProcessMessage(string messageType, string json) { LogMessage(LogLevel.Error, $"Error processing {messageType} message: {ex.Message}", ex); } + + // Fire generic OnEvent with parsed content + if (parsedContent != null) + { + OnEvent?.Invoke(this, new VRChatEventArgs + { + Message = parsedContent, + RawMessage = json, + RawContent = rawContent, + Type = messageType + }); + } } #region Notification Event Processors - private void ProcessNotification(string json) + private void ProcessNotification(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); + parsedContent = message.Content; + var args = new NotificationEventArgs { Notification = message.Content }; - - OnNotificationReceived?.Invoke(this, args); OnNotification?.Invoke(this, args); // Legacy event + + OnNotificationReceived?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessResponseNotification(string json) + private void ProcessResponseNotification(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnResponseNotification?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnResponseNotification?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessSeeNotification(string json) + private void ProcessSeeNotification(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnSeeNotification?.Invoke(this, new SeeNotificationEventArgs { NotificationId = message.Content }); + parsedContent = message.Content; + + OnSeeNotification?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessHideNotification(string json) + private void ProcessHideNotification(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnHideNotification?.Invoke(this, new HideNotificationEventArgs { NotificationId = message.Content }); + parsedContent = message.Content; + + OnHideNotification?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessNotificationV2(string json) + private void ProcessNotificationV2(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnNotificationV2?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnNotificationV2?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessNotificationV2Update(string json) + private void ProcessNotificationV2Update(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnNotificationV2Update?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnNotificationV2Update?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessNotificationV2Delete(string json) + private void ProcessNotificationV2Delete(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnNotificationV2Delete?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnNotificationV2Delete?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } #endregion #region Friend Event Processors - private void ProcessFriendAdd(string json) + private void ProcessFriendAdd(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnFriendAdd?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnFriendAdd?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessFriendDelete(string json) + private void ProcessFriendDelete(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnFriendDelete?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnFriendDelete?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessFriendOnline(string json) + private void ProcessFriendOnline(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnFriendOnline?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnFriendOnline?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessFriendActive(string json) + private void ProcessFriendActive(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnFriendActive?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnFriendActive?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessFriendOffline(string json) + private void ProcessFriendOffline(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnFriendOffline?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnFriendOffline?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessFriendUpdate(string json) + private void ProcessFriendUpdate(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnFriendUpdate?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnFriendUpdate?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessFriendLocation(string json) + private void ProcessFriendLocation(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnFriendLocation?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnFriendLocation?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } #endregion #region User Event Processors - private void ProcessUserUpdate(string json) + private void ProcessUserUpdate(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnUserUpdate?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnUserUpdate?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessUserLocation(string json) + private void ProcessUserLocation(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnUserLocation?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnUserLocation?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessUserBadgeAssigned(string json) + private void ProcessUserBadgeAssigned(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnUserBadgeAssigned?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnUserBadgeAssigned?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessUserBadgeUnassigned(string json) + private void ProcessUserBadgeUnassigned(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnUserBadgeUnassigned?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnUserBadgeUnassigned?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessContentRefresh(string json) + private void ProcessContentRefresh(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnContentRefresh?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnContentRefresh?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessModifiedImageUpdate(string json) + private void ProcessModifiedImageUpdate(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnModifiedImageUpdate?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnModifiedImageUpdate?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessInstanceQueueJoined(string json) + private void ProcessInstanceQueueJoined(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnInstanceQueueJoined?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnInstanceQueueJoined?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessInstanceQueueReady(string json) + private void ProcessInstanceQueueReady(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnInstanceQueueReady?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnInstanceQueueReady?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } #endregion #region Group Event Processors - private void ProcessGroupJoined(string json) + private void ProcessGroupJoined(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnGroupJoined?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnGroupJoined?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessGroupLeft(string json) + private void ProcessGroupLeft(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnGroupLeft?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnGroupLeft?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessGroupMemberUpdated(string json) + private void ProcessGroupMemberUpdated(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnGroupMemberUpdated?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnGroupMemberUpdated?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } - private void ProcessGroupRoleUpdated(string json) + private void ProcessGroupRoleUpdated(string json, string rawContent) { var message = JsonSerializer.Deserialize>(json, JsonOptions); - OnGroupRoleUpdated?.Invoke(this, message.Content); + parsedContent = message.Content; + + OnGroupRoleUpdated?.Invoke(this, new VRChatEventArgs + { + Message = message.Content, + RawMessage = json, + RawContent = rawContent, + Type = message.Type + }); } #endregion diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs index 35d88d18..f1664c94 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs @@ -9,56 +9,231 @@ namespace VRChat.API.Realtime { + /// + /// A generic interface for communicating with VRChat's Realtime WebSocket API (Pipeline). + /// public interface IVRChatRealtime { - // Connection Events + #region Connection Events + + /// + /// Raised when a log message is generated by the client. + /// event EventHandler Log; + + /// + /// Raised when the WebSocket connection is disconnected. + /// event EventHandler OnDisconnected; + + /// + /// Raised when the WebSocket connection is successfully established. + /// event EventHandler OnConnected; + + /// + /// Raised when the client is attempting to auto-reconnect to the WebSocket. + /// event EventHandler OnAutoReconnecting; - // Notification Events (legacy) - event EventHandler OnNotification; + /// + /// Raised when any raw message is received from the WebSocket. + /// + event EventHandler> OnMessageReceived; - // Notification Events - event EventHandler OnNotificationReceived; - event EventHandler OnResponseNotification; - event EventHandler OnSeeNotification; - event EventHandler OnHideNotification; - event EventHandler OnClearNotification; - event EventHandler OnNotificationV2; - event EventHandler OnNotificationV2Update; - event EventHandler OnNotificationV2Delete; + /// + /// Raised when a heartbeat message is sent to the server. + /// + event EventHandler OnHeartbeat; - // Friend Events - event EventHandler OnFriendAdd; - event EventHandler OnFriendDelete; - event EventHandler OnFriendOnline; - event EventHandler OnFriendActive; - event EventHandler OnFriendOffline; - event EventHandler OnFriendUpdate; - event EventHandler OnFriendLocation; + /// + /// Raised when any parsed event is received from the WebSocket. + /// + event EventHandler> OnEvent; - // User Events - event EventHandler OnUserUpdate; - event EventHandler OnUserLocation; - event EventHandler OnUserBadgeAssigned; - event EventHandler OnUserBadgeUnassigned; - event EventHandler OnContentRefresh; - event EventHandler OnModifiedImageUpdate; - event EventHandler OnInstanceQueueJoined; - event EventHandler OnInstanceQueueReady; + #endregion - // Group Events - event EventHandler OnGroupJoined; - event EventHandler OnGroupLeft; - event EventHandler OnGroupMemberUpdated; - event EventHandler OnGroupRoleUpdated; + #region Notification Events - // Methods + /// + /// [Legacy] Raised when a notification is received.
+ /// Use instead for consistency. + ///
+ event EventHandler OnNotification; + + /// + /// Raised when a notification is received from VRChat.
+ /// This includes friend requests, invites, and other in-game notifications. + ///
+ event EventHandler> OnNotificationReceived; + + /// + /// Raised when a response to a previously sent notification is received. + /// + event EventHandler> OnResponseNotification; + + /// + /// Raised when the client should mark a specific notification as seen. + /// + event EventHandler> OnSeeNotification; + + /// + /// Raised when the client should hide a specific notification. + /// + event EventHandler> OnHideNotification; + + /// + /// Raised when the client should clear all notifications. + /// + event EventHandler OnClearNotification; + + /// + /// Raised when a V2 notification is received from VRChat.
+ /// V2 notifications include group announcements and other system messages. + ///
+ event EventHandler> OnNotificationV2; + + /// + /// Raised when a V2 notification should be updated with new properties. + /// + event EventHandler> OnNotificationV2Update; + + /// + /// Raised when one or more V2 notifications should be deleted. + /// + event EventHandler> OnNotificationV2Delete; + + #endregion + + #region Friend Events + + /// + /// Raised when a friend is added or a friend request is accepted. + /// + event EventHandler> OnFriendAdd; + + /// + /// Raised when a friend is removed or unfriended. + /// + event EventHandler> OnFriendDelete; + + /// + /// Raised when a friend comes online in VRChat. + /// + event EventHandler> OnFriendOnline; + + /// + /// Raised when a friend becomes active on the VRChat website. + /// + event EventHandler> OnFriendActive; + + /// + /// Raised when a friend goes offline. + /// + event EventHandler> OnFriendOffline; + + /// + /// Raised when a friend's profile information is updated. + /// + event EventHandler> OnFriendUpdate; + + /// + /// Raised when a friend changes their location or instance. + /// + event EventHandler> OnFriendLocation; + + #endregion + + #region User Events + + /// + /// Raised when the current user's profile information is updated. + /// + event EventHandler> OnUserUpdate; + + /// + /// Raised when the current user changes their location or instance. + /// + event EventHandler> OnUserLocation; + + /// + /// Raised when the current user is assigned a badge (e.g., VRChat+ subscription). + /// + event EventHandler> OnUserBadgeAssigned; + + /// + /// Raised when the current user loses a badge (e.g., VRChat+ subscription expires). + /// + event EventHandler> OnUserBadgeUnassigned; + + /// + /// Raised when content is added or removed from the user's profile.
+ /// This includes avatars, worlds, images, and other user-uploaded content. + ///
+ event EventHandler> OnContentRefresh; + + /// + /// Raised when an image file is modified or updated. + /// + event EventHandler> OnModifiedImageUpdate; + + /// + /// Raised when the user joins a queue to enter an instance. + /// + event EventHandler> OnInstanceQueueJoined; + + /// + /// Raised when the user reaches the front of the instance queue and can join. + /// + event EventHandler> OnInstanceQueueReady; + + #endregion + + #region Group Events + + /// + /// Raised when the user joins a group or has a group join request accepted. + /// + event EventHandler> OnGroupJoined; + + /// + /// Raised when the user leaves a group or is removed from a group. + /// + event EventHandler> OnGroupLeft; + + /// + /// Raised when the user's group membership information is updated. + /// + event EventHandler> OnGroupMemberUpdated; + + /// + /// Raised when a group role is updated or modified. + /// + event EventHandler> OnGroupRoleUpdated; + + #endregion + + #region Methods + + /// + /// Connects to the VRChat WebSocket API (Pipeline) asynchronously. + /// + /// Cancellation token for cancelling the connection operation. + /// A representing the asynchronous connection operation. Task ConnectAsync(CancellationToken cancellationToken = default); + + /// + /// Disconnects from the VRChat WebSocket API asynchronously. + /// + /// A representing the asynchronous disconnection operation. Task DisconnectAsync(); + + /// + /// Gets a value indicating whether the client is currently connected to the WebSocket. + /// bool IsConnected { get; } + + #endregion } public partial class VRChatRealtimeClient : IVRChatRealtime, IDisposable @@ -78,44 +253,47 @@ public partial class VRChatRealtimeClient : IVRChatRealtime, IDisposable public event EventHandler OnDisconnected; public event EventHandler OnConnected; public event EventHandler OnAutoReconnecting; + public event EventHandler> OnMessageReceived; + public event EventHandler OnHeartbeat; + public event EventHandler> OnEvent; // Notification Events (legacy) public event EventHandler OnNotification; // Notification Events - public event EventHandler OnNotificationReceived; - public event EventHandler OnResponseNotification; - public event EventHandler OnSeeNotification; - public event EventHandler OnHideNotification; + public event EventHandler> OnNotificationReceived; + public event EventHandler> OnResponseNotification; + public event EventHandler> OnSeeNotification; + public event EventHandler> OnHideNotification; public event EventHandler OnClearNotification; - public event EventHandler OnNotificationV2; - public event EventHandler OnNotificationV2Update; - public event EventHandler OnNotificationV2Delete; + public event EventHandler> OnNotificationV2; + public event EventHandler> OnNotificationV2Update; + public event EventHandler> OnNotificationV2Delete; // Friend Events - public event EventHandler OnFriendAdd; - public event EventHandler OnFriendDelete; - public event EventHandler OnFriendOnline; - public event EventHandler OnFriendActive; - public event EventHandler OnFriendOffline; - public event EventHandler OnFriendUpdate; - public event EventHandler OnFriendLocation; + public event EventHandler> OnFriendAdd; + public event EventHandler> OnFriendDelete; + public event EventHandler> OnFriendOnline; + public event EventHandler> OnFriendActive; + public event EventHandler> OnFriendOffline; + public event EventHandler> OnFriendUpdate; + public event EventHandler> OnFriendLocation; // User Events - public event EventHandler OnUserUpdate; - public event EventHandler OnUserLocation; - public event EventHandler OnUserBadgeAssigned; - public event EventHandler OnUserBadgeUnassigned; - public event EventHandler OnContentRefresh; - public event EventHandler OnModifiedImageUpdate; - public event EventHandler OnInstanceQueueJoined; - public event EventHandler OnInstanceQueueReady; + public event EventHandler> OnUserUpdate; + public event EventHandler> OnUserLocation; + public event EventHandler> OnUserBadgeAssigned; + public event EventHandler> OnUserBadgeUnassigned; + public event EventHandler> OnContentRefresh; + public event EventHandler> OnModifiedImageUpdate; + public event EventHandler> OnInstanceQueueJoined; + public event EventHandler> OnInstanceQueueReady; // Group Events - public event EventHandler OnGroupJoined; - public event EventHandler OnGroupLeft; - public event EventHandler OnGroupMemberUpdated; - public event EventHandler OnGroupRoleUpdated; + public event EventHandler> OnGroupJoined; + public event EventHandler> OnGroupLeft; + public event EventHandler> OnGroupMemberUpdated; + public event EventHandler> OnGroupRoleUpdated; public bool IsConnected => _client?.State == WebSocketState.Open; @@ -294,6 +472,7 @@ await _client.SendAsync( CancellationToken.None); LogMessage(LogLevel.Trace, $"Heartbeat sent: {heartbeat.Nonce}"); + OnHeartbeat?.Invoke(this, EventArgs.Empty); } finally { @@ -355,6 +534,15 @@ private void HandleMessage(string json) { LogMessage(LogLevel.Trace, $"Received message: {json}"); + // Fire raw message received event + OnMessageReceived?.Invoke(this, new VRChatEventArgs + { + Message = json, + RawMessage = json, + RawContent = null, + Type = "raw" + }); + using var document = JsonDocument.Parse(json); var root = document.RootElement; @@ -371,7 +559,14 @@ private void HandleMessage(string json) return; } - ProcessMessage(messageType, json); + // Extract raw content if it exists + string rawContent = null; + if (root.TryGetProperty("content", out var contentElement)) + { + rawContent = contentElement.GetRawText(); + } + + ProcessMessage(messageType, json, rawContent); } catch (Exception ex) { diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs index 5292d2c2..130b2104 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs @@ -38,6 +38,13 @@ public VRChatRealtimeClientBuilder WithUserAgent(string userAgent) return this; } + public VRChatRealtimeClientBuilder WithApplication(string name, string version, string contact) + { + string libraryVersion = Assembly.GetExecutingAssembly().GetName().Version!.ToString(); + string userAgent = $"{name}/{version} ({contact}), VRChat.API.Realtime/{libraryVersion} (https://vrchat.community/dotnet)"; + return this.WithUserAgent(userAgent); + } + /// /// Set the auto-reconnect mode /// @@ -48,9 +55,9 @@ public VRChatRealtimeClientBuilder WithAutoReconnect(AutoReconnectMode mode) } /// - /// Build the VRChatRealtimeClient with the configured settings + /// Build the with the configured settings /// - public VRChatRealtimeClient Build() + public IVRChatRealtimeClient Build() { if (string.IsNullOrWhiteSpace(_configuration.AuthToken)) throw new InvalidOperationException("AuthToken is required. Use WithAuthToken() to set it."); From dbc0a0f8a91ffa18bd9937ae3907d91162cffce2 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Thu, 27 Nov 2025 20:44:10 -0600 Subject: [PATCH 03/25] updates to websocket PR --- VRChat.API.sln | 6 + .../VRChat.API.Examples.WebSocket/Program.cs | 74 +++ .../VRChat.API.Examples.WebSocket.csproj | 15 + .../Messages/Friend/FriendActiveContent.cs | 7 +- .../Messages/Friend/FriendAddContent.cs | 2 - .../Messages/Friend/FriendLocationContent.cs | 2 - .../Messages/Friend/FriendOnlineContent.cs | 2 - .../Messages/Friend/FriendUpdateContent.cs | 2 - .../Messages/Group/GroupLimitedMember.cs | 29 ++ .../Group/GroupMemberUpdatedContent.cs | 2 - .../Messages/Group/GroupRole.cs | 25 + .../Messages/Group/GroupRoleUpdatedContent.cs | 2 - .../Messages/LimitedUser.cs | 75 +++ .../Messages/Notification.cs | 26 + .../Notification/NotificationContent.cs | 2 - .../Messages/User/UserLocationContent.cs | 2 - .../Messages/WebSocketMessageString.cs | 12 + .../Models/NotificationEventArgs.cs | 2 +- .../VRChat.API.Realtime.csproj | 6 +- .../VRChatRealtimeClient.MessageProcessor.cs | 490 +++++++++--------- .../VRChatRealtimeClient.cs | 15 +- .../VRChatRealtimeClientBuilder.cs | 3 +- 22 files changed, 530 insertions(+), 271 deletions(-) create mode 100644 examples/VRChat.API.Examples.WebSocket/Program.cs create mode 100644 examples/VRChat.API.Examples.WebSocket/VRChat.API.Examples.WebSocket.csproj create mode 100644 wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/Notification.cs create mode 100644 wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs diff --git a/VRChat.API.sln b/VRChat.API.sln index f7325949..8dabd6cf 100644 --- a/VRChat.API.sln +++ b/VRChat.API.sln @@ -14,6 +14,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VRChat.API.Examples.Console EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VRChat.API.Realtime", "wrapper\VRChat.API.Realtime\VRChat.API.Realtime.csproj", "{91F01661-9DA8-D3A5-FCC4-9D988B390EEA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VRChat.API.Examples.WebSocket", "examples\VRChat.API.Examples.WebSocket\VRChat.API.Examples.WebSocket.csproj", "{B64A5069-1CC9-3A01-58BE-C9DCE00F8D5F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -44,6 +46,10 @@ Global {91F01661-9DA8-D3A5-FCC4-9D988B390EEA}.Debug|Any CPU.Build.0 = Debug|Any CPU {91F01661-9DA8-D3A5-FCC4-9D988B390EEA}.Release|Any CPU.ActiveCfg = Release|Any CPU {91F01661-9DA8-D3A5-FCC4-9D988B390EEA}.Release|Any CPU.Build.0 = Release|Any CPU + {B64A5069-1CC9-3A01-58BE-C9DCE00F8D5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B64A5069-1CC9-3A01-58BE-C9DCE00F8D5F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B64A5069-1CC9-3A01-58BE-C9DCE00F8D5F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B64A5069-1CC9-3A01-58BE-C9DCE00F8D5F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/examples/VRChat.API.Examples.WebSocket/Program.cs b/examples/VRChat.API.Examples.WebSocket/Program.cs new file mode 100644 index 00000000..ed4f65e1 --- /dev/null +++ b/examples/VRChat.API.Examples.WebSocket/Program.cs @@ -0,0 +1,74 @@ +using VRChat.API.Client; +using VRChat.API.Model; +using VRChat.API.Realtime; + +namespace VRChat.API.Examples.WebSocket +{ + public class Program + { + public static async Task Main(string[] args) + { + string username = Environment.GetEnvironmentVariable("VRCHAT_USERNAME"); + string password = Environment.GetEnvironmentVariable("VRCHAT_PASSWORD"); + string twoFactorSecret = Environment.GetEnvironmentVariable("VRCHAT_TWO_FACTOR_SECRET"); + + IVRChat vrchat = new VRChatClientBuilder() + .WithUsername(username) + .WithPassword(password) + .WithTwoFactorSecret(twoFactorSecret) + .WithApplication(name: "WinterApp", version: "1.0.0", contact: "contact@vrchat.community") + .Build(); + + var currentUser = await vrchat.LoginAsync(); + Console.WriteLine($"Logged in as {currentUser.DisplayName}!"); + + var user = await vrchat.Users.GetUserAsync("usr_f2049d71-e76b-42d2-a8bd-43deec9c004e"); + Console.WriteLine($"Found user {user.DisplayName}, joined at {user.DateJoined}"); + + var world = await vrchat.Worlds.GetWorldAsync("wrld_ba913a96-fac4-4048-a062-9aa5db092812"); + Console.WriteLine($"Found world {world.Name}, with {world.Visits} visits"); + + var authToken = vrchat.GetCookies().FirstOrDefault(c => c.Name == "auth")?.Value; + + IVRChatRealtime realtime = new VRChatRealtimeClientBuilder() + .WithAuthToken(authToken) + .WithApplication(name: "WinterApp", version: "1.0.0", contact: "contact@vrchat.community") + .Build(); + + realtime.Log += (sender, e) => + { + // Console.WriteLine($"[VRChat Realtime] [{e.Level.ToString()}] {e.Message}"); + }; + + realtime.OnEvent += (sender, e) => + { + if(e.Type == "friend-offline") + Console.WriteLine($"[VRChat Realtime] [Event] Type: {e.Type}, RawContent: {e.RawContent}"); + }; + + realtime.OnConnected += (sender, e) => + { + Console.WriteLine("Connected to VRChat Realtime WebSocket!"); + }; + + realtime.OnFriendOnline += (sender, e) => + { + //Console.WriteLine($"Friend {e.Message.User.DisplayName} is now online!"); + }; + + realtime.OnFriendOffline += (sender, e) => + { + Console.WriteLine($"Friend {e.Message.UserId} is now offline!"); + }; + + realtime.OnFriendLocation += (sender, e) => + { + //Console.WriteLine($"Friend {e.Message.User.DisplayName} is now in {e.Message.Location}!"); + }; + + await realtime.ConnectAsync(); + + Console.ReadLine(); + } + } +} \ No newline at end of file diff --git a/examples/VRChat.API.Examples.WebSocket/VRChat.API.Examples.WebSocket.csproj b/examples/VRChat.API.Examples.WebSocket/VRChat.API.Examples.WebSocket.csproj new file mode 100644 index 00000000..f179300d --- /dev/null +++ b/examples/VRChat.API.Examples.WebSocket/VRChat.API.Examples.WebSocket.csproj @@ -0,0 +1,15 @@ + + + + Exe + net8.0 + enable + disable + + + + + + + + diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs index f77cd07f..082dc6e8 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs @@ -1,10 +1,15 @@ -using VRChat.API.Model; +using System.Text.Json.Serialization; namespace VRChat.API.Realtime.Messages { public class FriendActiveContent { + /// + /// Note: API sends this as lowercase "userid" instead of "userId" + /// + [JsonPropertyName("userid")] public string UserId { get; set; } + public string Platform { get; set; } public LimitedUser User { get; set; } } diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs index f55721d3..d53f7fce 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class FriendAddContent diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs index 01ea55e3..e9491e38 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class FriendLocationContent diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs index c51b1b3d..c30718e9 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class FriendOnlineContent diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs index 5320d879..988c2493 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class FriendUpdateContent diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs new file mode 100644 index 00000000..acf0c16e --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +namespace VRChat.API.Realtime.Messages +{ + /// + /// Group member information received in WebSocket messages + /// + public class GroupLimitedMember + { + public string Id { get; set; } + public string GroupId { get; set; } + public string UserId { get; set; } + public bool IsRepresenting { get; set; } + public List RoleIds { get; set; } + public List MRoleIds { get; set; } + public DateTime JoinedAt { get; set; } + public string MembershipStatus { get; set; } + public string Visibility { get; set; } + public bool IsSubscribedToAnnouncements { get; set; } + public bool IsSubscribedToEventAnnouncements { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime? BannedAt { get; set; } + public string ManagerNotes { get; set; } + public DateTime? LastPostReadAt { get; set; } + public bool HasJoinedFromPurchase { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs index 2cefb9f5..59b31547 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class GroupMemberUpdatedContent diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs new file mode 100644 index 00000000..bca86f1c --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace VRChat.API.Realtime.Messages +{ + /// + /// Group role information received in WebSocket messages + /// + public class GroupRole + { + public string Id { get; set; } + public string GroupId { get; set; } + public string Name { get; set; } + public string Description { get; set; } + public bool IsSelfAssignable { get; set; } + public List Permissions { get; set; } + public bool IsManagementRole { get; set; } + public bool RequiresTwoFactor { get; set; } + public bool RequiresPurchase { get; set; } + public int Order { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime UpdatedAt { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs index 6d0c02a8..f4bd64f6 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class GroupRoleUpdatedContent diff --git a/wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs b/wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs new file mode 100644 index 00000000..d9478e3d --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; + +namespace VRChat.API.Realtime.Messages +{ + /// + /// User information received in WebSocket messages + /// + public class LimitedUser + { + public string Id { get; set; } + public string Username { get; set; } + public string DisplayName { get; set; } + public string Bio { get; set; } + public List BioLinks { get; set; } + public string CurrentAvatarImageUrl { get; set; } + public string CurrentAvatarThumbnailImageUrl { get; set; } + public List CurrentAvatarTags { get; set; } + public string DeveloperType { get; set; } + public bool IsFriend { get; set; } + public string FriendKey { get; set; } + public string FriendRequestStatus { get; set; } + public string LastPlatform { get; set; } + public string Location { get; set; } + public string InstanceId { get; set; } + public string WorldId { get; set; } + public string Platform { get; set; } + public string ProfilePicOverride { get; set; } + public string ProfilePicOverrideThumbnail { get; set; } + public string Pronouns { get; set; } + public string Status { get; set; } + public string StatusDescription { get; set; } + public string State { get; set; } + public List Tags { get; set; } + public string UserIcon { get; set; } + public string Note { get; set; } + public string AgeVerificationStatus { get; set; } + public bool AgeVerified { get; set; } + public bool AllowAvatarCopying { get; set; } + public string TravelingToInstance { get; set; } + public string TravelingToLocation { get; set; } + public string TravelingToWorld { get; set; } + + [JsonPropertyName("date_joined")] + public string DateJoined { get; set; } + + [JsonPropertyName("last_activity")] + public string LastActivity { get; set; } + + [JsonPropertyName("last_login")] + public string LastLogin { get; set; } + + [JsonPropertyName("last_mobile")] + public string LastMobile { get; set; } + + public List Badges { get; set; } + } + + /// + /// Badge information + /// + public class Badge + { + public string BadgeId { get; set; } + public string BadgeName { get; set; } + public string BadgeDescription { get; set; } + public string BadgeImageUrl { get; set; } + public DateTime AssignedAt { get; set; } + public DateTime UpdatedAt { get; set; } + public bool Hidden { get; set; } + public bool Showcased { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification.cs b/wrapper/VRChat.API.Realtime/Messages/Notification.cs new file mode 100644 index 00000000..fe5cedb6 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/Notification.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text.Json.Serialization; + +namespace VRChat.API.Realtime.Messages +{ + /// + /// Notification information received in WebSocket messages + /// + public class Notification + { + public string Id { get; set; } + public string Type { get; set; } + public string SenderUserId { get; set; } + public string SenderUsername { get; set; } + public string ReceiverUserId { get; set; } + public string Message { get; set; } + public Dictionary Details { get; set; } + + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + + public bool Seen { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs index 466e2983..be9c83e0 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class NotificationContent diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs index 96d5c98b..19265478 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs @@ -1,5 +1,3 @@ -using VRChat.API.Model; - namespace VRChat.API.Realtime.Messages { public class UserLocationContent diff --git a/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs b/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs new file mode 100644 index 00000000..54b3d050 --- /dev/null +++ b/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs @@ -0,0 +1,12 @@ +namespace VRChat.API.Realtime.Messages +{ + /// + /// WebSocket message wrapper where content is a string (double-encoded JSON) + /// + public class WebSocketMessageString + { + public string Type { get; set; } + public string Content { get; set; } + } +} + diff --git a/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs index 1219da1e..549d252e 100644 --- a/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs +++ b/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs @@ -1,5 +1,5 @@ using System; -using VRChat.API.Model; +using VRChat.API.Realtime.Messages; namespace VRChat.API.Realtime.Models { diff --git a/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj b/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj index a5dbcd9a..5f493037 100644 --- a/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj +++ b/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj @@ -19,7 +19,7 @@ git Automated deployment README.md - vrchat,vrcapi,websocket,realtime,aspnetcore,vrc-api,vrc + vrchat,vrcapi,websocket,realtime,vrc-api,vrc vrc_cat.ico @@ -27,10 +27,6 @@ - - - - True diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs index d4d5af58..408b219c 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs @@ -1,8 +1,7 @@ -using System; using System.Text.Json; -using VRChat.API.Model; using VRChat.API.Realtime.Models; using VRChat.API.Realtime.Messages; +using System; namespace VRChat.API.Realtime { @@ -14,129 +13,58 @@ public partial class VRChatRealtimeClient PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; - private void ProcessMessage(string messageType, string json, string rawContent) + private void ProcessMessage(string messageType, string json) { object parsedContent = null; + string rawContent = null; try { - switch (messageType) + var result = messageType switch { // Notification Events - case "notification": - ProcessNotification(json, rawContent); - break; - - case "response-notification": - ProcessResponseNotification(json, rawContent); - break; - - case "see-notification": - ProcessSeeNotification(json, rawContent); - break; - - case "hide-notification": - ProcessHideNotification(json, rawContent); - break; - - case "clear-notification": - OnClearNotification?.Invoke(this, EventArgs.Empty); - break; - - case "notification-v2": - ProcessNotificationV2(json, rawContent); - break; - - case "notification-v2-update": - ProcessNotificationV2Update(json, rawContent); - break; - - case "notification-v2-delete": - ProcessNotificationV2Delete(json, rawContent); - break; + "notification" => ProcessNotification(json), + "response-notification" => ProcessResponseNotification(json), + "see-notification" => ProcessSeeNotification(json), + "hide-notification" => ProcessHideNotification(json), + "clear-notification" => ProcessClearNotification(), + "notification-v2" => ProcessNotificationV2(json), + "notification-v2-update" => ProcessNotificationV2Update(json), + "notification-v2-delete" => ProcessNotificationV2Delete(json), // Friend Events - case "friend-add": - ProcessFriendAdd(json, rawContent); - break; - - case "friend-delete": - ProcessFriendDelete(json, rawContent); - break; - - case "friend-online": - ProcessFriendOnline(json, rawContent); - break; - - case "friend-active": - ProcessFriendActive(json, rawContent); - break; - - case "friend-offline": - ProcessFriendOffline(json, rawContent); - break; - - case "friend-update": - ProcessFriendUpdate(json, rawContent); - break; - - case "friend-location": - ProcessFriendLocation(json, rawContent); - break; + "friend-add" => ProcessFriendAdd(json), + "friend-delete" => ProcessFriendDelete(json), + "friend-online" => ProcessFriendOnline(json), + "friend-active" => ProcessFriendActive(json), + "friend-offline" => ProcessFriendOffline(json), + "friend-update" => ProcessFriendUpdate(json), + "friend-location" => ProcessFriendLocation(json), // User Events - case "user-update": - ProcessUserUpdate(json, rawContent); - break; - - case "user-location": - ProcessUserLocation(json, rawContent); - break; - - case "user-badge-assigned": - ProcessUserBadgeAssigned(json, rawContent); - break; - - case "user-badge-unassigned": - ProcessUserBadgeUnassigned(json, rawContent); - break; - - case "content-refresh": - ProcessContentRefresh(json, rawContent); - break; - - case "modified-image-update": - ProcessModifiedImageUpdate(json, rawContent); - break; - - case "instance-queue-joined": - ProcessInstanceQueueJoined(json, rawContent); - break; - - case "instance-queue-ready": - ProcessInstanceQueueReady(json, rawContent); - break; + "user-update" => ProcessUserUpdate(json), + "user-location" => ProcessUserLocation(json), + "user-badge-assigned" => ProcessUserBadgeAssigned(json), + "user-badge-unassigned" => ProcessUserBadgeUnassigned(json), + "content-refresh" => ProcessContentRefresh(json), + "modified-image-update" => ProcessModifiedImageUpdate(json), + "instance-queue-joined" => ProcessInstanceQueueJoined(json), + "instance-queue-ready" => ProcessInstanceQueueReady(json), // Group Events - case "group-joined": - ProcessGroupJoined(json, rawContent); - break; - - case "group-left": - ProcessGroupLeft(json, rawContent); - break; - - case "group-member-updated": - ProcessGroupMemberUpdated(json, rawContent); - break; + "group-joined" => ProcessGroupJoined(json), + "group-left" => ProcessGroupLeft(json), + "group-member-updated" => ProcessGroupMemberUpdated(json), + "group-role-updated" => ProcessGroupRoleUpdated(json), - case "group-role-updated": - ProcessGroupRoleUpdated(json, rawContent); - break; + // Unknown + _ => LogUnknownMessage(messageType) + }; - default: - LogMessage(LogLevel.Debug, $"Unknown message type: {messageType}"); - break; + if (result is (object content, string raw)) + { + parsedContent = content; + rawContent = raw; } } catch (Exception ex) @@ -157,385 +85,473 @@ private void ProcessMessage(string messageType, string json, string rawContent) } } + private (object, string) LogUnknownMessage(string messageType) + { + LogMessage(LogLevel.Debug, $"Unknown message type: {messageType}"); + return (null, null); + } + + private (object, string) ProcessClearNotification() + { + OnClearNotification?.Invoke(this, EventArgs.Empty); + return (null, null); + } + #region Notification Event Processors - private void ProcessNotification(string json, string rawContent) + private (object, string) ProcessNotification(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - var args = new NotificationEventArgs { Notification = message.Content }; + var args = new NotificationEventArgs { Notification = content }; OnNotification?.Invoke(this, args); // Legacy event OnNotificationReceived?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessResponseNotification(string json, string rawContent) + private (object, string) ProcessResponseNotification(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnResponseNotification?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessSeeNotification(string json, string rawContent) + private (object, string) ProcessSeeNotification(string json) { + // NOT double-encoded: content is just the notification ID string var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; OnSeeNotification?.Invoke(this, new VRChatEventArgs { Message = message.Content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (message.Content, message.Content); } - private void ProcessHideNotification(string json, string rawContent) + private (object, string) ProcessHideNotification(string json) { + // NOT double-encoded: content is just the notification ID string var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; OnHideNotification?.Invoke(this, new VRChatEventArgs { Message = message.Content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (message.Content, message.Content); } - private void ProcessNotificationV2(string json, string rawContent) + private (object, string) ProcessNotificationV2(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnNotificationV2?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessNotificationV2Update(string json, string rawContent) + private (object, string) ProcessNotificationV2Update(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnNotificationV2Update?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessNotificationV2Delete(string json, string rawContent) + private (object, string) ProcessNotificationV2Delete(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnNotificationV2Delete?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } #endregion #region Friend Event Processors - private void ProcessFriendAdd(string json, string rawContent) + private (object, string) ProcessFriendAdd(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnFriendAdd?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessFriendDelete(string json, string rawContent) + private (object, string) ProcessFriendDelete(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnFriendDelete?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessFriendOnline(string json, string rawContent) + private (object, string) ProcessFriendOnline(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnFriendOnline?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessFriendActive(string json, string rawContent) + private (object, string) ProcessFriendActive(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnFriendActive?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessFriendOffline(string json, string rawContent) + private (object, string) ProcessFriendOffline(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnFriendOffline?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessFriendUpdate(string json, string rawContent) + private (object, string) ProcessFriendUpdate(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnFriendUpdate?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessFriendLocation(string json, string rawContent) + private (object, string) ProcessFriendLocation(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnFriendLocation?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } #endregion #region User Event Processors - private void ProcessUserUpdate(string json, string rawContent) + private (object, string) ProcessUserUpdate(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnUserUpdate?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessUserLocation(string json, string rawContent) + private (object, string) ProcessUserLocation(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnUserLocation?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessUserBadgeAssigned(string json, string rawContent) + private (object, string) ProcessUserBadgeAssigned(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnUserBadgeAssigned?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessUserBadgeUnassigned(string json, string rawContent) + private (object, string) ProcessUserBadgeUnassigned(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnUserBadgeUnassigned?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessContentRefresh(string json, string rawContent) + private (object, string) ProcessContentRefresh(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnContentRefresh?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessModifiedImageUpdate(string json, string rawContent) + private (object, string) ProcessModifiedImageUpdate(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnModifiedImageUpdate?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessInstanceQueueJoined(string json, string rawContent) + private (object, string) ProcessInstanceQueueJoined(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnInstanceQueueJoined?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessInstanceQueueReady(string json, string rawContent) + private (object, string) ProcessInstanceQueueReady(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnInstanceQueueReady?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } #endregion #region Group Event Processors - private void ProcessGroupJoined(string json, string rawContent) + private (object, string) ProcessGroupJoined(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnGroupJoined?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessGroupLeft(string json, string rawContent) + private (object, string) ProcessGroupLeft(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnGroupLeft?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessGroupMemberUpdated(string json, string rawContent) + private (object, string) ProcessGroupMemberUpdated(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnGroupMemberUpdated?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } - private void ProcessGroupRoleUpdated(string json, string rawContent) + private (object, string) ProcessGroupRoleUpdated(string json) { - var message = JsonSerializer.Deserialize>(json, JsonOptions); - parsedContent = message.Content; + // Double-encoded: content is a stringified JSON object + var message = JsonSerializer.Deserialize(json, JsonOptions); + var content = JsonSerializer.Deserialize(message.Content, JsonOptions); OnGroupRoleUpdated?.Invoke(this, new VRChatEventArgs { - Message = message.Content, + Message = content, RawMessage = json, - RawContent = rawContent, + RawContent = message.Content, Type = message.Type }); + + return (content, message.Content); } #endregion diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs index f1664c94..6df6ee11 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs @@ -12,7 +12,7 @@ namespace VRChat.API.Realtime /// /// A generic interface for communicating with VRChat's Realtime WebSocket API (Pipeline). /// - public interface IVRChatRealtime + public interface IVRChatRealtime : IDisposable { #region Connection Events @@ -233,6 +233,8 @@ public interface IVRChatRealtime /// bool IsConnected { get; } + void Dispose(); + #endregion } @@ -553,20 +555,13 @@ private void HandleMessage(string json) } var messageType = typeElement.GetString(); - if (string.IsNullOrEmpty(messageType)) + if (string.IsNullOrWhiteSpace(messageType)) { LogMessage(LogLevel.Warning, "Received message with empty type"); return; } - // Extract raw content if it exists - string rawContent = null; - if (root.TryGetProperty("content", out var contentElement)) - { - rawContent = contentElement.GetRawText(); - } - - ProcessMessage(messageType, json, rawContent); + ProcessMessage(messageType, json); } catch (Exception ex) { diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs index 130b2104..41a9d03d 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs @@ -1,4 +1,5 @@ using System; +using System.Reflection; namespace VRChat.API.Realtime { @@ -57,7 +58,7 @@ public VRChatRealtimeClientBuilder WithAutoReconnect(AutoReconnectMode mode) /// /// Build the with the configured settings /// - public IVRChatRealtimeClient Build() + public IVRChatRealtime Build() { if (string.IsNullOrWhiteSpace(_configuration.AuthToken)) throw new InvalidOperationException("AuthToken is required. Use WithAuthToken() to set it."); From a42da201db6f2eb644288c80042d9b2b009934ef Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Thu, 4 Dec 2025 16:57:56 -0600 Subject: [PATCH 04/25] make some core changes and introduce xmldoc to realtime wrapper, update examples --- .../VRChat.API.Examples.WebSocket/Program.cs | 17 +- global.json | 2 +- wrapper/VRChat.API.Realtime/Example.cs | 217 ------- .../Messages/Friend/FriendActiveContent.cs | 37 +- .../Messages/Friend/FriendAddContent.cs | 25 +- .../Messages/Friend/FriendDeleteContent.cs | 16 +- .../Messages/Friend/FriendLocationContent.cs | 57 +- .../Messages/Friend/FriendOfflineContent.cs | 23 +- .../Messages/Friend/FriendOnlineContent.cs | 51 +- .../Messages/Friend/FriendUpdateContent.cs | 23 +- .../Messages/Group/GroupJoinedContent.cs | 15 +- .../Messages/Group/GroupLeftContent.cs | 14 +- .../Messages/Group/GroupLimitedMember.cs | 119 +++- .../Group/GroupMemberUpdatedContent.cs | 16 +- .../Messages/Group/GroupRole.cs | 92 ++- .../Messages/Group/GroupRoleUpdatedContent.cs | 16 +- .../Messages/HeartbeatMessage.cs | 30 +- .../Messages/LimitedUser.cs | 350 ++++++++++- .../Messages/Notification.cs | 89 ++- .../Notification/NotificationContent.cs | 25 +- .../Notification/NotificationV2Content.cs | 174 +++++- .../NotificationV2DeleteContent.cs | 22 +- .../NotificationV2ResponseItem.cs | 37 +- .../NotificationV2UpdateContent.cs | 31 +- .../ResponseNotificationContent.cs | 30 +- .../Messages/User/ContentRefreshContent.cs | 44 +- .../Messages/User/CurrentUserInfo.cs | 107 +++- .../User/InstanceQueueJoinedContent.cs | 24 +- .../User/InstanceQueueReadyContent.cs | 23 +- .../User/ModifiedImageUpdateContent.cs | 36 +- .../Messages/User/UserBadgeAssignedContent.cs | 21 +- .../User/UserBadgeUnassignedContent.cs | 15 +- .../Messages/User/UserLocationContent.cs | 47 +- .../Messages/User/UserUpdateContent.cs | 23 +- .../Messages/WebSocketMessageString.cs | 12 - .../Messages/WebSocketMessageWrapper.cs | 88 ++- .../Models/LogEventArgs.cs | 69 ++- .../Models/NotificationEventArgs.cs | 11 - .../Models/VRChatEventArgs.cs | 39 +- .../VRChatRealtimeClient.MessageProcessor.cs | 564 +++--------------- .../VRChatRealtimeClient.cs | 141 ++++- .../VRChatRealtimeClientBuilder.cs | 99 ++- .../VRChatRealtimeConfiguration.cs | 98 ++- 43 files changed, 2172 insertions(+), 817 deletions(-) delete mode 100644 wrapper/VRChat.API.Realtime/Example.cs delete mode 100644 wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs delete mode 100644 wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs diff --git a/examples/VRChat.API.Examples.WebSocket/Program.cs b/examples/VRChat.API.Examples.WebSocket/Program.cs index ed4f65e1..e867df8b 100644 --- a/examples/VRChat.API.Examples.WebSocket/Program.cs +++ b/examples/VRChat.API.Examples.WebSocket/Program.cs @@ -16,23 +16,17 @@ public static async Task Main(string[] args) .WithUsername(username) .WithPassword(password) .WithTwoFactorSecret(twoFactorSecret) - .WithApplication(name: "WinterApp", version: "1.0.0", contact: "contact@vrchat.community") + .WithApplication(name: "Example", version: "1.0.0", contact: "youremail.com") .Build(); var currentUser = await vrchat.LoginAsync(); Console.WriteLine($"Logged in as {currentUser.DisplayName}!"); - var user = await vrchat.Users.GetUserAsync("usr_f2049d71-e76b-42d2-a8bd-43deec9c004e"); - Console.WriteLine($"Found user {user.DisplayName}, joined at {user.DateJoined}"); - - var world = await vrchat.Worlds.GetWorldAsync("wrld_ba913a96-fac4-4048-a062-9aa5db092812"); - Console.WriteLine($"Found world {world.Name}, with {world.Visits} visits"); - var authToken = vrchat.GetCookies().FirstOrDefault(c => c.Name == "auth")?.Value; IVRChatRealtime realtime = new VRChatRealtimeClientBuilder() .WithAuthToken(authToken) - .WithApplication(name: "WinterApp", version: "1.0.0", contact: "contact@vrchat.community") + .WithApplication(name: "Example", version: "1.0.0", contact: "youremail.com") .Build(); realtime.Log += (sender, e) => @@ -53,7 +47,7 @@ public static async Task Main(string[] args) realtime.OnFriendOnline += (sender, e) => { - //Console.WriteLine($"Friend {e.Message.User.DisplayName} is now online!"); + Console.WriteLine($"Friend {e.Message.User.DisplayName} is now online!"); }; realtime.OnFriendOffline += (sender, e) => @@ -63,12 +57,15 @@ public static async Task Main(string[] args) realtime.OnFriendLocation += (sender, e) => { - //Console.WriteLine($"Friend {e.Message.User.DisplayName} is now in {e.Message.Location}!"); + Console.WriteLine($"Friend {e.Message.User.DisplayName} is now in {e.Message.Location}!"); }; await realtime.ConnectAsync(); Console.ReadLine(); + + await realtime.DisconnectAsync(); + realtime.Dispose(); } } } \ No newline at end of file diff --git a/global.json b/global.json index 425f399a..efa332c3 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { "version": "8.0.301", - "rollForward": "disable" + "rollForward": "latestMinor" } } \ No newline at end of file diff --git a/wrapper/VRChat.API.Realtime/Example.cs b/wrapper/VRChat.API.Realtime/Example.cs deleted file mode 100644 index 4c064b4a..00000000 --- a/wrapper/VRChat.API.Realtime/Example.cs +++ /dev/null @@ -1,217 +0,0 @@ -using System; -using System.Threading.Tasks; -using VRChat.API.Realtime; -using VRChat.API.Realtime.Models; - -namespace VRChat.API.Realtime.Examples -{ - /// - /// Example usage of the VRChat Realtime WebSocket client - /// - public class Example - { - public static async Task BasicUsageExample() - { - // Create client using builder pattern - var client = new VRChatRealtimeClientBuilder() - .WithAuthToken("authcookie_...") - .WithUserAgent("MyApp/1.0") - .WithAutoReconnect(AutoReconnectMode.OnDisconnect) - .Build(); - - // Subscribe to connection events - client.OnConnected += (sender, e) => - { - Console.WriteLine("Connected to VRChat Pipeline!"); - }; - - client.OnDisconnected += (sender, e) => - { - Console.WriteLine("Disconnected from VRChat Pipeline"); - }; - - client.Log += (sender, e) => - { - Console.WriteLine($"[{e.Level}] {e.Message}"); - if (e.Exception != null) - { - Console.WriteLine($"Exception: {e.Exception}"); - } - }; - - // Subscribe to friend events - client.OnFriendOnline += (sender, e) => - { - Console.WriteLine($"Friend {e.Message.User?.DisplayName} came online!"); - Console.WriteLine($" Platform: {e.Message.Platform}"); - Console.WriteLine($" Location: {e.Message.Location}"); - Console.WriteLine($" Message Type: {e.Type}"); - // e.RawMessage = full JSON: {"type":"friend-online","content":{...}} - // e.RawContent = just content: {...} - }; - - client.OnFriendOffline += (sender, e) => - { - Console.WriteLine($"Friend {e.Message.UserId} went offline"); - }; - - client.OnFriendLocation += (sender, e) => - { - Console.WriteLine($"Friend {e.Message.User?.DisplayName} changed location"); - Console.WriteLine($" New location: {e.Message.Location}"); - Console.WriteLine($" World: {e.Message.WorldId}"); - }; - - // Subscribe to notification events - client.OnNotificationReceived += (sender, e) => - { - Console.WriteLine($"Notification received: {e.Message?.Type}"); - }; - - client.OnNotificationV2 += (sender, e) => - { - Console.WriteLine($"V2 Notification: {e.Message.Title}"); - Console.WriteLine($" Message: {e.Message.Message}"); - }; - - // Subscribe to user events - client.OnUserLocation += (sender, e) => - { - Console.WriteLine($"You changed location to: {e.Message.Location}"); - }; - - client.OnUserUpdate += (sender, e) => - { - Console.WriteLine($"Your profile was updated"); - Console.WriteLine($" Status: {e.Message.User?.Status}"); - Console.WriteLine($" Bio: {e.Message.User?.Bio}"); - }; - - // Subscribe to group events - client.OnGroupJoined += (sender, e) => - { - Console.WriteLine($"Joined group: {e.Message.GroupId}"); - }; - - client.OnGroupMemberUpdated += (sender, e) => - { - Console.WriteLine($"Group member updated: {e.Message.Member?.Id}"); - }; - - // Connect to the WebSocket - await client.ConnectAsync(); - - // Keep the application running - Console.WriteLine("Press any key to disconnect..."); - Console.ReadKey(); - - // Disconnect - await client.DisconnectAsync(); - client.Dispose(); - } - - public static async Task CustomConfigurationExample() - { - // Create client with custom configuration - var config = new VRChatRealtimeConfiguration - { - EndpointURL = "wss://pipeline.vrchat.cloud/", - AuthToken = "authcookie_...", - UserAgent = "MyCustomApp/2.0", - AutoReconnectMode = AutoReconnectMode.Every10Minutes - }; - - var client = new VRChatRealtimeClient(config); - - // Subscribe to events and connect - client.OnConnected += (sender, e) => Console.WriteLine("Connected!"); - - await client.ConnectAsync(); - - // Use the client... - - await client.DisconnectAsync(); - client.Dispose(); - } - - public static async Task AutoReconnectExample() - { - var client = new VRChatRealtimeClientBuilder() - .WithAuthToken("authcookie_...") - .WithAutoReconnect(AutoReconnectMode.Every20Minutes) - .Build(); - - client.OnAutoReconnecting += (sender, e) => - { - Console.WriteLine("Auto-reconnecting..."); - }; - - client.OnConnected += (sender, e) => - { - Console.WriteLine("Connected!"); - }; - - await client.ConnectAsync(); - - // The client will automatically reconnect every 20 minutes - // and also reconnect on unexpected disconnections - - await Task.Delay(TimeSpan.FromHours(1)); - - await client.DisconnectAsync(); - client.Dispose(); - } - - public static async Task RawDataAccessExample() - { - var client = new VRChatRealtimeClientBuilder() - .WithAuthToken("authcookie_...") - .WithUserAgent("MyApp/1.0") - .Build(); - - // Access raw WebSocket messages - client.OnMessageReceived += (sender, e) => - { - Console.WriteLine("=== Raw WebSocket Message ==="); - Console.WriteLine(e.RawMessage); // Full JSON string - }; - - // Access parsed events with raw data - client.OnFriendOnline += (sender, e) => - { - Console.WriteLine("=== Friend Online Event ==="); - Console.WriteLine($"Typed Message: {e.Message.User?.DisplayName}"); - Console.WriteLine($"Type: {e.Type}"); - Console.WriteLine($"RawMessage (full JSON): {e.RawMessage}"); - Console.WriteLine($"RawContent (content only): {e.RawContent}"); - }; - - // Generic event handler for all parsed events - client.OnEvent += (sender, e) => - { - Console.WriteLine($"Event Type: {e.Type}"); - Console.WriteLine($"Parsed Content Type: {e.Message?.GetType().Name}"); - // Access raw JSON for custom processing - if (!string.IsNullOrEmpty(e.RawContent)) - { - // You can re-parse or log the raw content - Console.WriteLine($"Raw Content: {e.RawContent}"); - } - }; - - // Heartbeat monitoring - client.OnHeartbeat += (sender, e) => - { - Console.WriteLine("Heartbeat sent to keep connection alive"); - }; - - await client.ConnectAsync(); - - await Task.Delay(TimeSpan.FromMinutes(1)); - - await client.DisconnectAsync(); - client.Dispose(); - } - } -} - diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs index 082dc6e8..67a0806c 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendActiveContent.cs @@ -2,16 +2,47 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "friend-active" WebSocket event. + /// + /// + /// This event is raised when a friend becomes active on the VRChat website + /// (not in-game). This is different from which + /// indicates a friend is online in the VRChat game client. + /// + /// + /// public class FriendActiveContent { /// - /// Note: API sends this as lowercase "userid" instead of "userId" + /// Gets or sets the unique identifier of the friend who became active. /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// + /// + /// Note: The VRChat API sends this as lowercase "userid" instead of "userId", + /// hence the . + /// [JsonPropertyName("userid")] public string UserId { get; set; } - + + /// + /// Gets or sets the platform the friend is active on. + /// + /// + /// The platform identifier, typically "web" for website activity. + /// public string Platform { get; set; } + + /// + /// Gets or sets the friend's user information. + /// + /// + /// A object containing the friend's profile information, + /// or null if not provided. + /// public LimitedUser User { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs index d53f7fce..09f0270a 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendAddContent.cs @@ -1,9 +1,32 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "friend-add" WebSocket event. + /// + /// + /// This event is raised when a new friend is added to your friends list. + /// This occurs when either you accept a friend request, or someone accepts + /// your friend request. + /// + /// public class FriendAddContent { + /// + /// Gets or sets the unique identifier of the newly added friend. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string UserId { get; set; } + + /// + /// Gets or sets the new friend's user information. + /// + /// + /// A object containing the friend's profile information, + /// or null if not provided. + /// public LimitedUser User { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs index 98438dc4..659bb065 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendDeleteContent.cs @@ -1,8 +1,22 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "friend-delete" WebSocket event. + /// + /// + /// This event is raised when a friend is removed from your friends list. + /// This can occur when either you unfriend someone, or they unfriend you. + /// + /// public class FriendDeleteContent { + /// + /// Gets or sets the unique identifier of the friend who was removed. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string UserId { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs index e9491e38..85a7f4ca 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendLocationContent.cs @@ -1,13 +1,68 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "friend-location" WebSocket event. + /// + /// + /// This event is raised when a friend changes their location (world/instance). + /// The location may be "private" if the friend is in a private instance and + /// you don't have permission to see their location. + /// + /// public class FriendLocationContent { + /// + /// Gets or sets the unique identifier of the friend whose location changed. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string UserId { get; set; } + + /// + /// Gets or sets the friend's current location. + /// + /// + /// A location string in the format worldId:instanceId, such as + /// wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd:12345~private(usr_xxx). + /// May be "private" or "offline" depending on visibility settings. + /// public string Location { get; set; } + + /// + /// Gets or sets the location the friend is currently traveling to. + /// + /// + /// A location string if the friend is in transit to a new world, or null + /// if they are not currently traveling. + /// public string TravelingToLocation { get; set; } + + /// + /// Gets or sets the world ID of the friend's current world. + /// + /// + /// A world's unique ID in the form of wrld_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string WorldId { get; set; } + + /// + /// Gets or sets whether you can request an invite to the friend's instance. + /// + /// + /// true if you can request an invite to join the friend's instance; + /// false if the instance is private or invites are restricted. + /// public bool CanRequestInvite { get; set; } + + /// + /// Gets or sets the friend's user information. + /// + /// + /// A object containing updated profile information, + /// or null if not provided. + /// public LimitedUser User { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs index 7cc65143..1b3b929f 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOfflineContent.cs @@ -1,9 +1,30 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "friend-offline" WebSocket event. + /// + /// + /// This event is raised when a friend goes offline from VRChat. + /// + /// + /// public class FriendOfflineContent { + /// + /// Gets or sets the unique identifier of the friend who went offline. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string UserId { get; set; } + + /// + /// Gets or sets the platform the friend was on before going offline. + /// + /// + /// The platform identifier, such as "standalonewindows", "android", or other Unity version strings. + /// public string Platform { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs index c30718e9..d9fcde4c 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendOnlineContent.cs @@ -1,12 +1,61 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "friend-online" WebSocket event. + /// + /// + /// This event is raised when a friend comes online in the VRChat game client. + /// This is different from which indicates + /// a friend is active on the VRChat website. + /// + /// + /// + /// public class FriendOnlineContent { + /// + /// Gets or sets the unique identifier of the friend who came online. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string UserId { get; set; } + + /// + /// Gets or sets the platform the friend is online on. + /// + /// + /// The platform identifier, such as "standalonewindows", "android", or other Unity version strings. + /// public string Platform { get; set; } + + /// + /// Gets or sets the friend's current location. + /// + /// + /// A location string in the format worldId:instanceId, such as + /// wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd:12345~private(usr_xxx). + /// May be "private" depending on visibility settings. + /// public string Location { get; set; } + + /// + /// Gets or sets whether you can request an invite to the friend's instance. + /// + /// + /// true if you can request an invite to join the friend's instance; + /// false if the instance is private or invites are restricted. + /// public bool CanRequestInvite { get; set; } + + /// + /// Gets or sets the friend's user information. + /// + /// + /// A object containing the friend's profile information, + /// or null if not provided. + /// public LimitedUser User { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs index 988c2493..bcf396c3 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Friend/FriendUpdateContent.cs @@ -1,9 +1,30 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "friend-update" WebSocket event. + /// + /// + /// This event is raised when a friend's profile information is updated. + /// This includes changes to display name, status, avatar, bio, and other profile fields. + /// + /// public class FriendUpdateContent { + /// + /// Gets or sets the unique identifier of the friend whose profile was updated. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string UserId { get; set; } + + /// + /// Gets or sets the friend's updated user information. + /// + /// + /// A object containing the friend's updated profile information. + /// public LimitedUser User { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs index b3b1e5b2..82fa7e4f 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupJoinedContent.cs @@ -1,8 +1,21 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "group-joined" WebSocket event. + /// + /// + /// This event is raised when you join a group or have a group join request accepted. + /// + /// + /// public class GroupJoinedContent { + /// + /// Gets or sets the unique identifier of the group that was joined. + /// + /// + /// A group's unique ID in the form of grp_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string GroupId { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs index 97c68b32..f8e2498d 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLeftContent.cs @@ -1,8 +1,20 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "group-left" WebSocket event. + /// + /// + /// This event is raised when you leave a group or are removed from a group. + /// + /// public class GroupLeftContent { + /// + /// Gets or sets the unique identifier of the group that was left. + /// + /// + /// A group's unique ID in the form of grp_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string GroupId { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs index acf0c16e..ce1a72b2 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupLimitedMember.cs @@ -4,26 +4,141 @@ namespace VRChat.API.Realtime.Messages { /// - /// Group member information received in WebSocket messages + /// Represents group member information received in WebSocket messages. /// + /// + /// This class contains membership details for a user within a group, + /// including their roles, status, and subscription preferences. + /// + /// public class GroupLimitedMember { + /// + /// Gets or sets the unique identifier of this membership record. + /// + /// + /// A membership record ID in the form of gmem_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string Id { get; set; } + + /// + /// Gets or sets the unique identifier of the group. + /// + /// + /// A group's unique ID in the form of grp_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string GroupId { get; set; } + + /// + /// Gets or sets the unique identifier of the user. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// public string UserId { get; set; } + + /// + /// Gets or sets whether the user is representing this group. + /// + /// + /// true if the user has this group set as their represented group; otherwise, false. + /// public bool IsRepresenting { get; set; } + + /// + /// Gets or sets the list of role IDs assigned to this member. + /// + /// + /// A list of role IDs in the form of grol_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public List RoleIds { get; set; } + + /// + /// Gets or sets the list of management role IDs assigned to this member. + /// + /// + /// A list of management role IDs that grant administrative permissions. + /// public List MRoleIds { get; set; } + + /// + /// Gets or sets the date and time when the user joined the group. + /// + /// + /// The UTC timestamp of when the membership was created. + /// public DateTime JoinedAt { get; set; } + + /// + /// Gets or sets the current membership status. + /// + /// + /// The membership status, such as "member", "requested", "invited", or "banned". + /// public string MembershipStatus { get; set; } + + /// + /// Gets or sets the visibility of the membership. + /// + /// + /// The visibility setting, such as "visible" or "hidden". + /// public string Visibility { get; set; } + + /// + /// Gets or sets whether the member is subscribed to group announcements. + /// + /// + /// true if the member receives notifications for group announcements; otherwise, false. + /// public bool IsSubscribedToAnnouncements { get; set; } + + /// + /// Gets or sets whether the member is subscribed to event announcements. + /// + /// + /// true if the member receives notifications for group events; otherwise, false. + /// public bool IsSubscribedToEventAnnouncements { get; set; } + + /// + /// Gets or sets the date and time when the membership record was created. + /// + /// + /// The UTC timestamp of record creation. + /// public DateTime CreatedAt { get; set; } + + /// + /// Gets or sets the date and time when the member was banned, if applicable. + /// + /// + /// The UTC timestamp of when the ban was applied, or null if the member is not banned. + /// public DateTime? BannedAt { get; set; } + + /// + /// Gets or sets notes about this member visible to group managers. + /// + /// + /// Manager notes as a string, or null if no notes exist. + /// public string ManagerNotes { get; set; } + + /// + /// Gets or sets the date and time when the member last read group posts. + /// + /// + /// The UTC timestamp of the last post read, or null if no posts have been read. + /// public DateTime? LastPostReadAt { get; set; } + + /// + /// Gets or sets whether the member joined through a purchase. + /// + /// + /// true if the membership was gained through a purchase; otherwise, false. + /// public bool HasJoinedFromPurchase { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs index 59b31547..69460f0b 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupMemberUpdatedContent.cs @@ -1,8 +1,22 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "group-member-updated" WebSocket event. + /// + /// + /// This event is raised when your group membership information is updated, + /// such as role changes, visibility settings, or subscription preferences. + /// + /// + /// public class GroupMemberUpdatedContent { + /// + /// Gets or sets the updated group member information. + /// + /// + /// A object containing the updated membership details. + /// public GroupLimitedMember Member { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs index bca86f1c..ca0b304f 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRole.cs @@ -4,22 +4,110 @@ namespace VRChat.API.Realtime.Messages { /// - /// Group role information received in WebSocket messages + /// Represents group role information received in WebSocket messages. /// + /// + /// Group roles define permissions and capabilities for members within a group. + /// Roles can be assigned to members and may grant various permissions. + /// + /// + /// public class GroupRole { + /// + /// Gets or sets the unique identifier of this role. + /// + /// + /// A role ID in the form of grol_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string Id { get; set; } + + /// + /// Gets or sets the unique identifier of the group this role belongs to. + /// + /// + /// A group's unique ID in the form of grp_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string GroupId { get; set; } + + /// + /// Gets or sets the display name of the role. + /// + /// + /// The human-readable name of the role, such as "Member" or "Moderator". + /// public string Name { get; set; } + + /// + /// Gets or sets the description of the role. + /// + /// + /// A description explaining the purpose and permissions of the role. + /// public string Description { get; set; } + + /// + /// Gets or sets whether members can self-assign this role. + /// + /// + /// true if members can assign this role to themselves; otherwise, false. + /// public bool IsSelfAssignable { get; set; } + + /// + /// Gets or sets the list of permissions granted by this role. + /// + /// + /// A list of permission strings, such as "group-posts-manage" or "group-members-manage". + /// public List Permissions { get; set; } + + /// + /// Gets or sets whether this is a management role. + /// + /// + /// true if this role grants management/administrative capabilities; otherwise, false. + /// public bool IsManagementRole { get; set; } + + /// + /// Gets or sets whether this role requires two-factor authentication. + /// + /// + /// true if members must have 2FA enabled to use this role; otherwise, false. + /// public bool RequiresTwoFactor { get; set; } + + /// + /// Gets or sets whether this role requires a purchase to obtain. + /// + /// + /// true if this role must be purchased; otherwise, false. + /// public bool RequiresPurchase { get; set; } + + /// + /// Gets or sets the display order of the role. + /// + /// + /// An integer indicating the sort order, with lower numbers appearing first. + /// public int Order { get; set; } + + /// + /// Gets or sets the date and time when the role was created. + /// + /// + /// The UTC timestamp of role creation. + /// public DateTime CreatedAt { get; set; } + + /// + /// Gets or sets the date and time when the role was last updated. + /// + /// + /// The UTC timestamp of the last modification. + /// public DateTime UpdatedAt { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs index f4bd64f6..07bbd056 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Group/GroupRoleUpdatedContent.cs @@ -1,8 +1,22 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "group-role-updated" WebSocket event. + /// + /// + /// This event is raised when a group role is updated or modified. + /// This includes changes to role permissions, name, description, or other properties. + /// + /// + /// public class GroupRoleUpdatedContent { + /// + /// Gets or sets the updated group role information. + /// + /// + /// A object containing the updated role details. + /// public GroupRole Role { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs b/wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs index 601acad9..420f1c92 100644 --- a/wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs +++ b/wrapper/VRChat.API.Realtime/Messages/HeartbeatMessage.cs @@ -1,10 +1,38 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents a heartbeat message sent to keep the WebSocket connection alive. + /// + /// + /// Heartbeat messages are sent periodically (typically every 30 seconds) to maintain + /// the WebSocket connection with VRChat's Pipeline API. The server uses these to + /// detect disconnected clients. + /// + /// public class HeartbeatMessage { + /// + /// Gets or sets the message type identifier. + /// + /// + /// Always "heartbeat" for heartbeat messages. + /// public string Type { get; set; } = "heartbeat"; + + /// + /// Gets or sets whether the client is connected. + /// + /// + /// Always true for heartbeat messages. + /// public bool Connected { get; set; } = true; + + /// + /// Gets or sets a unique nonce for this heartbeat. + /// + /// + /// A unique identifier (typically a GUID) to track this specific heartbeat message. + /// public string Nonce { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs b/wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs index d9478e3d..598b81a4 100644 --- a/wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs +++ b/wrapper/VRChat.API.Realtime/Messages/LimitedUser.cs @@ -5,71 +5,405 @@ namespace VRChat.API.Realtime.Messages { /// - /// User information received in WebSocket messages + /// Represents limited user information received in WebSocket messages. /// + /// + /// This class contains a subset of user profile information that is included + /// in various WebSocket events such as friend updates and location changes. + /// For full user information, use the REST API. + /// + /// + /// + /// public class LimitedUser { + /// + /// Gets or sets the unique identifier of the user. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string Id { get; set; } + + /// + /// Gets or sets the user's unique username. + /// + /// + /// The user's login name, which is different from . + /// + /// + /// DEPRECATED: VRChat API no longer returns usernames of other users. + /// See this issue for more information. + /// + [Obsolete("VRChat API no longer returns usernames of other users.")] public string Username { get; set; } + + /// + /// Gets or sets the user's display name. + /// + /// + /// The user's visual display name shown in-game. Changing display name is restricted to a cooldown period. + /// public string DisplayName { get; set; } + + /// + /// Gets or sets the user's biography text. + /// + /// + /// The user's bio, limited to 512 characters. + /// public string Bio { get; set; } + + /// + /// Gets or sets the user's biography links. + /// + /// + /// A list of URLs included in the user's bio. + /// public List BioLinks { get; set; } + + /// + /// Gets or sets the URL of the user's current avatar image. + /// + /// + /// A URL to the full avatar image. When is not empty, + /// that should be used instead. + /// public string CurrentAvatarImageUrl { get; set; } + + /// + /// Gets or sets the URL of the user's current avatar thumbnail image. + /// + /// + /// A URL to the avatar thumbnail image. When is not empty, + /// that should be used instead. + /// public string CurrentAvatarThumbnailImageUrl { get; set; } + + /// + /// Gets or sets the tags associated with the user's current avatar. + /// + /// + /// A list of avatar feature tags. + /// public List CurrentAvatarTags { get; set; } + + /// + /// Gets or sets the user's developer type. + /// + /// + /// The developer type, such as "none", "trusted", or "internal". + /// public string DeveloperType { get; set; } + + /// + /// Gets or sets whether the user is a friend. + /// + /// + /// true if the user is in your friends list; otherwise, false. + /// public bool IsFriend { get; set; } + + /// + /// Gets or sets the friend key. + /// + /// + /// Either the user's friend key, or an empty string if you are not friends. + /// public string FriendKey { get; set; } + + /// + /// Gets or sets the friend request status. + /// + /// + /// The status of any pending friend request between you and this user. + /// public string FriendRequestStatus { get; set; } + + /// + /// Gets or sets the platform the user was last active on. + /// + /// + /// The platform identifier, such as "standalonewindows", "android", or other Unity version strings. + /// public string LastPlatform { get; set; } + + /// + /// Gets or sets the user's current location. + /// + /// + /// A location string in the format worldId:instanceId. + /// May be "offline" if not friends, or "private" if in a private instance. + /// public string Location { get; set; } + + /// + /// Gets or sets the instance ID of the user's current location. + /// + /// + /// The instance portion of the location, or "offline"/"private" depending on visibility. + /// public string InstanceId { get; set; } + + /// + /// Gets or sets the world ID of the user's current world. + /// + /// + /// A world's unique ID in the form of wrld_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, + /// or "offline" if not friends with the user. + /// public string WorldId { get; set; } + + /// + /// Gets or sets the user's current platform. + /// + /// + /// The platform identifier for the user's current session. + /// public string Platform { get; set; } + + /// + /// Gets or sets the URL of the user's profile picture override. + /// + /// + /// A URL to a custom profile picture. When set, this should be displayed + /// instead of the avatar image URLs. + /// public string ProfilePicOverride { get; set; } + + /// + /// Gets or sets the URL of the user's profile picture override thumbnail. + /// + /// + /// A URL to a thumbnail version of the custom profile picture. + /// public string ProfilePicOverrideThumbnail { get; set; } + + /// + /// Gets or sets the user's pronouns. + /// + /// + /// The user's preferred pronouns as displayed on their profile. + /// public string Pronouns { get; set; } + + /// + /// Gets or sets the user's current status. + /// + /// + /// The status type, such as "active", "join me", "ask me", "busy", or "offline". + /// public string Status { get; set; } + + /// + /// Gets or sets the user's custom status description. + /// + /// + /// A custom status message set by the user. + /// public string StatusDescription { get; set; } + + /// + /// Gets or sets the user's state. + /// + /// + /// The user's current state, such as "online", "active", or "offline". + /// public string State { get; set; } + + /// + /// Gets or sets the user's tags. + /// + /// + /// A list of system and user-assigned tags, such as trust rank tags and feature flags. + /// Note: This is always empty when querying friends via the friend list endpoint. + /// public List Tags { get; set; } + + /// + /// Gets or sets the URL of the user's custom icon. + /// + /// + /// A URL to the user's custom icon image, or null if not set. + /// public string UserIcon { get; set; } + + /// + /// Gets or sets a note about this user. + /// + /// + /// A personal note you've saved about this user, or null if no note exists. + /// public string Note { get; set; } + + /// + /// Gets or sets the user's age verification status. + /// + /// + /// The age verification status string. + /// public string AgeVerificationStatus { get; set; } + + /// + /// Gets or sets whether the user is age verified. + /// + /// + /// true if the user has completed age verification; otherwise, false. + /// Note: This is not the same as being 18+ verified. + /// public bool AgeVerified { get; set; } + + /// + /// Gets or sets whether the user allows avatar copying. + /// + /// + /// true if the user allows their avatar to be cloned; otherwise, false. + /// public bool AllowAvatarCopying { get; set; } + + /// + /// Gets or sets the instance the user is traveling to. + /// + /// + /// The target instance ID if the user is traveling, or null if not traveling. + /// public string TravelingToInstance { get; set; } + + /// + /// Gets or sets the location the user is traveling to. + /// + /// + /// The full location string of the destination, or null if not traveling. + /// public string TravelingToLocation { get; set; } + + /// + /// Gets or sets the world the user is traveling to. + /// + /// + /// The world ID of the destination, or null if not traveling. + /// public string TravelingToWorld { get; set; } - + + /// + /// Gets or sets the date the user joined VRChat. + /// + /// + /// A date string in ISO format, or null if not available. + /// [JsonPropertyName("date_joined")] public string DateJoined { get; set; } - + + /// + /// Gets or sets the user's last activity timestamp. + /// + /// + /// A date-time string of the user's last activity, or an empty string. + /// [JsonPropertyName("last_activity")] public string LastActivity { get; set; } - + + /// + /// Gets or sets the user's last login timestamp. + /// + /// + /// A date-time string of the user's last login, or an empty string. + /// [JsonPropertyName("last_login")] public string LastLogin { get; set; } - + + /// + /// Gets or sets the user's last mobile login timestamp. + /// + /// + /// A date-time string of the user's last mobile login, or null. + /// [JsonPropertyName("last_mobile")] public string LastMobile { get; set; } - + + /// + /// Gets or sets the user's badges. + /// + /// + /// A list of objects representing the user's earned badges. + /// public List Badges { get; set; } } /// - /// Badge information + /// Represents a badge that can be assigned to a user. /// + /// + /// Badges are visual indicators of achievements, subscriptions (like VRChat+), + /// or special recognitions displayed on user profiles. + /// + /// + /// public class Badge { + /// + /// Gets or sets the unique identifier of the badge. + /// + /// + /// A badge ID in the form of bdge_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string BadgeId { get; set; } + + /// + /// Gets or sets the display name of the badge. + /// + /// + /// The human-readable name of the badge, such as "VRChat Plus Supporter". + /// public string BadgeName { get; set; } + + /// + /// Gets or sets the description of the badge. + /// + /// + /// A description explaining how the badge was earned or what it represents. + /// public string BadgeDescription { get; set; } + + /// + /// Gets or sets the URL of the badge image. + /// + /// + /// A URL to the badge icon image. + /// public string BadgeImageUrl { get; set; } + + /// + /// Gets or sets the date and time when the badge was assigned. + /// + /// + /// The UTC timestamp of when the badge was given to the user. + /// public DateTime AssignedAt { get; set; } + + /// + /// Gets or sets the date and time when the badge was last updated. + /// + /// + /// The UTC timestamp of the last modification to this badge assignment. + /// public DateTime UpdatedAt { get; set; } + + /// + /// Gets or sets whether the badge is hidden. + /// + /// + /// true if the user has chosen to hide this badge; otherwise, false. + /// public bool Hidden { get; set; } + + /// + /// Gets or sets whether the badge is showcased on the user's profile. + /// + /// + /// true if the badge is featured/showcased; otherwise, false. + /// public bool Showcased { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification.cs b/wrapper/VRChat.API.Realtime/Messages/Notification.cs index fe5cedb6..3e7523d1 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification.cs @@ -5,22 +5,103 @@ namespace VRChat.API.Realtime.Messages { /// - /// Notification information received in WebSocket messages + /// Represents a notification received from the VRChat WebSocket API. /// + /// + /// Notifications include friend requests, invites, invite responses, and other + /// in-game notifications. The property contains additional + /// information specific to the notification type. + /// + /// + /// public class Notification { + /// + /// Gets or sets the unique identifier of the notification. + /// + /// + /// A notification ID in the form of not_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string Id { get; set; } + + /// + /// Gets or sets the type of notification. + /// + /// + /// The notification type, such as "friendRequest", "invite", "requestInvite", + /// "inviteResponse", "requestInviteResponse", or "votetokick". + /// public string Type { get; set; } + + /// + /// Gets or sets the unique identifier of the user who sent the notification. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string SenderUserId { get; set; } + + /// + /// Gets or sets the username of the sender. + /// + /// + /// The sender's username, or null if not provided. + /// + /// + /// DEPRECATED: VRChat API no longer returns usernames of other users. + /// See this issue for more information. + /// + [Obsolete("VRChat API no longer returns usernames of other users.")] public string SenderUsername { get; set; } + + /// + /// Gets or sets the unique identifier of the user receiving the notification. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// public string ReceiverUserId { get; set; } + + /// + /// Gets or sets the notification message text. + /// + /// + /// The human-readable notification message, such as "This is a generated invite to VRChat Hub". + /// public string Message { get; set; } + + /// + /// Gets or sets additional details specific to the notification type. + /// + /// + /// A dictionary containing notification-specific data. The contents vary based on + /// and may include world information, invite details, etc. + /// + /// + /// NOTICE: When received from the WebSocket API, this is already deserialized as an object. + /// When received from the REST API, this is a JSON-encoded string that must be parsed separately. + /// public Dictionary Details { get; set; } - + + /// + /// Gets or sets the date and time when the notification was created. + /// + /// + /// The UTC timestamp of notification creation. + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } - + + /// + /// Gets or sets whether the notification has been seen. + /// + /// + /// true if the notification has been marked as seen; otherwise, false. + /// + /// + /// This property is not included in notification objects received from the WebSocket API. + /// public bool Seen { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs index be9c83e0..5d467cbd 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationContent.cs @@ -1,9 +1,32 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents generic notification content containing user information. + /// + /// + /// This is a base content type used for notifications that include user data. + /// For the full notification object, see . + /// + /// + /// public class NotificationContent { + /// + /// Gets or sets the unique identifier of the user associated with the notification. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string UserId { get; set; } + + /// + /// Gets or sets the user information associated with the notification. + /// + /// + /// A object containing user profile information, + /// or null if not provided. + /// public LimitedUser User { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs index 15cbd390..421ee7d4 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2Content.cs @@ -3,31 +3,203 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "notification-v2" WebSocket event. + /// + /// + /// V2 notifications are an enhanced notification system used for group announcements, + /// system messages, and other rich notifications that support responses and expiration. + /// + /// + /// + /// public class NotificationV2Content { + /// + /// Gets or sets the unique identifier of the notification. + /// + /// + /// A notification ID in the form of not_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string Id { get; set; } + + /// + /// Gets or sets the version number of the notification. + /// + /// + /// An integer version number that increments when the notification is updated. + /// public int Version { get; set; } + + /// + /// Gets or sets the type of the notification. + /// + /// + /// The notification type, such as "group.announcement", "group.informative", etc. + /// public string Type { get; set; } + + /// + /// Gets or sets the category of the notification. + /// + /// + /// The notification category, such as "social", "system", etc. + /// public string Category { get; set; } + + /// + /// Gets or sets whether this is a system notification. + /// + /// + /// true if this is a system-generated notification; otherwise, false. + /// public bool IsSystem { get; set; } + + /// + /// Gets or sets whether this notification should ignore Do Not Disturb settings. + /// + /// + /// true if the notification should bypass DND; otherwise, false. + /// public bool IgnoreDND { get; set; } + + /// + /// Gets or sets the unique identifier of the user who sent the notification. + /// + /// + /// A user's unique ID, or null for system notifications. + /// public string SenderUserId { get; set; } + + /// + /// Gets or sets the username of the sender. + /// + /// + /// The sender's username, or null for system notifications. + /// Note: VRChat no longer returns usernames in most API responses. + /// + [Obsolete("VRChat API no longer returns usernames of other users in most cases.")] public string SenderUsername { get; set; } + + /// + /// Gets or sets the unique identifier of the user receiving the notification. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// public string ReceiverUserId { get; set; } + + /// + /// Gets or sets the ID of related notifications. + /// + /// + /// An ID linking related notifications together, or null if standalone. + /// public string RelatedNotificationsId { get; set; } + + /// + /// Gets or sets the title of the notification. + /// + /// + /// The notification title displayed to the user. + /// public string Title { get; set; } + + /// + /// Gets or sets the main message content of the notification. + /// + /// + /// The notification body text. + /// public string Message { get; set; } + + /// + /// Gets or sets the URL of an image associated with the notification. + /// + /// + /// A URL to an image, or null if no image is attached. + /// public string ImageUrl { get; set; } + + /// + /// Gets or sets a link associated with the notification. + /// + /// + /// A URL the user can navigate to, or null if no link is provided. + /// public string Link { get; set; } + + /// + /// Gets or sets the display text for the link. + /// + /// + /// The text shown for the link, or null if no link is provided. + /// public string LinkText { get; set; } + + /// + /// Gets or sets the available response options for the notification. + /// + /// + /// A list of objects representing + /// possible user responses, or null if no responses are available. + /// public List Responses { get; set; } + + /// + /// Gets or sets the expiration date and time of the notification. + /// + /// + /// The UTC timestamp when the notification expires and should be removed. + /// public DateTime ExpiresAt { get; set; } + + /// + /// Gets or sets the number of seconds after being seen before the notification expires. + /// + /// + /// The expiry delay in seconds after the notification is marked as seen. + /// public int ExpiryAfterSeen { get; set; } + + /// + /// Gets or sets whether the notification requires acknowledgment. + /// + /// + /// true if the notification must be marked as seen; otherwise, false. + /// public bool RequireSeen { get; set; } + + /// + /// Gets or sets whether the notification has been seen. + /// + /// + /// true if the notification has been marked as seen; otherwise, false. + /// public bool Seen { get; set; } + + /// + /// Gets or sets whether the notification can be deleted by the user. + /// + /// + /// true if the user can delete this notification; otherwise, false. + /// public bool CanDelete { get; set; } + + /// + /// Gets or sets the date and time when the notification was created. + /// + /// + /// The UTC timestamp of notification creation. + /// public DateTime CreatedAt { get; set; } + + /// + /// Gets or sets the date and time when the notification was last updated. + /// + /// + /// The UTC timestamp of the last modification. + /// public DateTime UpdatedAt { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs index 55b9083d..d54716d5 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2DeleteContent.cs @@ -2,10 +2,30 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "notification-v2-delete" WebSocket event. + /// + /// + /// This event is raised when one or more V2 notifications should be deleted from the client. + /// + /// + /// public class NotificationV2DeleteContent { + /// + /// Gets or sets the list of notification IDs to delete. + /// + /// + /// A list of notification IDs in the form of not_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public List Ids { get; set; } + + /// + /// Gets or sets the version number of this delete operation. + /// + /// + /// An integer version number for tracking purposes. + /// public int Version { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs index ce8eaee4..b95f0b6d 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2ResponseItem.cs @@ -1,11 +1,46 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents a response option for a V2 notification. + /// + /// + /// V2 notifications can include interactive response options that users can select. + /// Each response item defines an action the user can take in response to the notification. + /// + /// public class NotificationV2ResponseItem { + /// + /// Gets or sets the type of response action. + /// + /// + /// The response type, such as "accept", "decline", "block", etc. + /// public string Type { get; set; } + + /// + /// Gets or sets additional data associated with the response. + /// + /// + /// Response-specific data that will be sent when this response is selected, + /// or null if no additional data is needed. + /// public string Data { get; set; } + + /// + /// Gets or sets the icon identifier for the response button. + /// + /// + /// An icon identifier or URL for display, or null if no icon is specified. + /// public string Icon { get; set; } + + /// + /// Gets or sets the display text for the response button. + /// + /// + /// The human-readable text shown on the response button. + /// public string Text { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs index 9db94734..6f5fde58 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/NotificationV2UpdateContent.cs @@ -2,11 +2,40 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "notification-v2-update" WebSocket event. + /// + /// + /// This event is raised when a V2 notification should be updated with new property values. + /// Only the properties that changed are included in the update. + /// + /// + /// public class NotificationV2UpdateContent { + /// + /// Gets or sets the unique identifier of the notification to update. + /// + /// + /// A notification ID in the form of not_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string Id { get; set; } + + /// + /// Gets or sets the new version number of the notification. + /// + /// + /// An integer version number that increments with each update. + /// public int Version { get; set; } + + /// + /// Gets or sets the property updates to apply to the notification. + /// + /// + /// A dictionary containing property names as keys and their new values. + /// Only changed properties are included. + /// public Dictionary Updates { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs b/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs index 709b71e4..4296236e 100644 --- a/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/Notification/ResponseNotificationContent.cs @@ -1,10 +1,38 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "response-notification" WebSocket event. + /// + /// + /// This event is raised when a response to a previously sent notification is received. + /// This typically occurs when another user responds to a notification you sent, + /// such as accepting or declining an invite request. + /// + /// public class ResponseNotificationContent { + /// + /// Gets or sets the unique identifier of the notification that was responded to. + /// + /// + /// A notification ID in the form of not_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string NotificationId { get; set; } + + /// + /// Gets or sets the unique identifier of the user who received and responded to the notification. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// public string ReceiverId { get; set; } + + /// + /// Gets or sets the unique identifier of the response. + /// + /// + /// A response ID identifying the specific response action taken. + /// public string ResponseId { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs index c49cb9e2..2168e20c 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/ContentRefreshContent.cs @@ -1,12 +1,54 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "content-refresh" WebSocket event. + /// + /// + /// This event is raised when content is added, removed, or modified on your profile. + /// This includes avatars, worlds, images, stickers, and other user-uploaded content. + /// public class ContentRefreshContent { + /// + /// Gets or sets the type of content that was refreshed. + /// + /// + /// The content type, such as "gallery", "avatar", "world", "emoji", etc. + /// public string ContentType { get; set; } + + /// + /// Gets or sets the unique identifier of the associated file. + /// + /// + /// A file ID in the form of file_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, + /// or null if not applicable. + /// public string FileId { get; set; } + + /// + /// Gets or sets the unique identifier of the content item. + /// + /// + /// The item ID, such as an avatar ID (avtr_xxx), world ID (wrld_xxx), + /// or other content-specific identifier. + /// public string ItemId { get; set; } + + /// + /// Gets or sets the type of the content item. + /// + /// + /// The item type classification, providing more specific information about the content. + /// public string ItemType { get; set; } + + /// + /// Gets or sets the action that triggered the refresh. + /// + /// + /// The action type, such as "add", "remove", "update", etc. + /// public string ActionType { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs b/wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs index ffd6e7d5..2c893a9b 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/CurrentUserInfo.cs @@ -2,21 +2,126 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the current user's profile information in WebSocket messages. + /// + /// + /// This class contains a subset of user profile fields that are included + /// in user update events. For full user information, use the REST API. + /// + /// public class CurrentUserInfo { + /// + /// Gets or sets the user's biography text. + /// + /// + /// The user's bio, limited to 512 characters. + /// public string Bio { get; set; } + + /// + /// Gets or sets the unique identifier of the user's current avatar. + /// + /// + /// An avatar ID in the form of avtr_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string CurrentAvatar { get; set; } + + /// + /// Gets or sets the URL of the user's current avatar image. + /// + /// + /// A URL to the full avatar image. When is not empty, + /// that should be used instead. + /// public string CurrentAvatarImageUrl { get; set; } + + /// + /// Gets or sets the URL of the user's current avatar thumbnail image. + /// + /// + /// A URL to the avatar thumbnail image. When is not empty, + /// that should be used instead. + /// public string CurrentAvatarThumbnailImageUrl { get; set; } + + /// + /// Gets or sets the user's display name. + /// + /// + /// The user's visual display name shown in-game. This can be different from the username. + /// public string DisplayName { get; set; } + + /// + /// Gets or sets the unique identifier of the user's fallback avatar. + /// + /// + /// An avatar ID used when the primary avatar cannot be loaded. + /// public string FallbackAvatar { get; set; } + + /// + /// Gets or sets the unique identifier of the user. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// Legacy players can have old IDs in the form of 8JoV9XEdpo. + /// public string Id { get; set; } + + /// + /// Gets or sets the URL of the user's profile picture override. + /// + /// + /// A URL to a custom profile picture, or null if using the avatar image. + /// When set, this should be displayed instead of the avatar image URLs. + /// public string ProfilePicOverride { get; set; } + + /// + /// Gets or sets the user's current status. + /// + /// + /// The status type, such as "active", "join me", "ask me", "busy", or "offline". + /// public string Status { get; set; } + + /// + /// Gets or sets the user's custom status description. + /// + /// + /// A custom status message set by the user. + /// public string StatusDescription { get; set; } + + /// + /// Gets or sets the user's tags. + /// + /// + /// A list of system and user-assigned tags, such as trust rank tags and feature flags. + /// public List Tags { get; set; } + + /// + /// Gets or sets the URL of the user's custom icon. + /// + /// + /// A URL to the user's custom icon image, or null if not set. + /// public string UserIcon { get; set; } + + /// + /// Gets or sets the user's username. + /// + /// + /// The user's unique login name. This is different from . + /// + /// + /// Note: VRChat no longer returns usernames of other users in most API responses, + /// but this may be available for the current user. + /// public string Username { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs index 13990b9d..2e19ebe7 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueJoinedContent.cs @@ -1,9 +1,31 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of an "instance-queue-joined" WebSocket event. + /// + /// + /// This event is raised when you join a queue to enter a full or restricted instance. + /// You will receive an event when you reach + /// the front of the queue and can join. + /// + /// public class InstanceQueueJoinedContent { + /// + /// Gets or sets the location of the instance you are queued for. + /// + /// + /// A location string in the format worldId:instanceId, such as + /// wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd:12345~private(usr_xxx). + /// public string InstanceLocation { get; set; } + + /// + /// Gets or sets your current position in the queue. + /// + /// + /// A 1-based position number, where 1 means you are next in line to join. + /// public int Position { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs index 37ad0da2..470f8e7e 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/InstanceQueueReadyContent.cs @@ -2,10 +2,31 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of an "instance-queue-ready" WebSocket event. + /// + /// + /// This event is raised when you reach the front of an instance queue and can join. + /// You should join the instance before the expiry time, or you will lose your spot. + /// + /// public class InstanceQueueReadyContent { + /// + /// Gets or sets the location of the instance you can now join. + /// + /// + /// A location string in the format worldId:instanceId, such as + /// wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd:12345~private(usr_xxx). + /// public string InstanceLocation { get; set; } + + /// + /// Gets or sets the expiration time for joining the instance. + /// + /// + /// The UTC timestamp by which you must join the instance, or you will lose your queue spot. + /// public DateTime Expiry { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs index 212ed228..d7fd772a 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/ModifiedImageUpdateContent.cs @@ -1,11 +1,45 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "modified-image-update" WebSocket event. + /// + /// + /// This event is raised when an image file is modified or processed. + /// This typically occurs when uploading new images or when VRChat processes + /// images for different resolutions. + /// public class ModifiedImageUpdateContent { + /// + /// Gets or sets the unique identifier of the file that was modified. + /// + /// + /// A file ID in the form of file_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string FileId { get; set; } + + /// + /// Gets or sets the pixel size of the processed image. + /// + /// + /// The size in pixels, such as 256, 512, or 1024 for standard thumbnail sizes. + /// public int PixelSize { get; set; } + + /// + /// Gets or sets the version number of the file. + /// + /// + /// An integer version number that increments with each file modification. + /// public int VersionNumber { get; set; } + + /// + /// Gets or sets whether the image still needs processing. + /// + /// + /// true if additional processing is required; false if processing is complete. + /// public bool NeedsProcessing { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs index 994884c3..b8a7df94 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeAssignedContent.cs @@ -1,8 +1,27 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "user-badge-assigned" WebSocket event. + /// + /// + /// This event is raised when you are assigned a badge, such as a VRChat+ + /// subscription badge or special event badges. + /// + /// + /// public class UserBadgeAssignedContent { + /// + /// Gets or sets the badge information as a JSON string. + /// + /// + /// A JSON string containing the badge details, including badgeId, badgeName, + /// badgeDescription, and badgeImageUrl. + /// + /// + /// This is provided as a string and may need to be deserialized separately + /// to access individual badge properties. + /// public string Badge { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs index 98738192..44665fd7 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserBadgeUnassignedContent.cs @@ -1,8 +1,21 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "user-badge-unassigned" WebSocket event. + /// + /// + /// This event is raised when a badge is removed from your account, such as when + /// a VRChat+ subscription expires or a temporary badge is revoked. + /// + /// public class UserBadgeUnassignedContent { + /// + /// Gets or sets the unique identifier of the badge that was removed. + /// + /// + /// A badge ID in the form of bdge_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + /// public string BadgeId { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs index 19265478..7954d306 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserLocationContent.cs @@ -1,12 +1,57 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "user-location" WebSocket event. + /// + /// + /// This event is raised when the current user changes their location (world/instance). + /// This is different from which tracks friends' locations. + /// + /// + /// public class UserLocationContent { + /// + /// Gets or sets the unique identifier of the current user. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// public string UserId { get; set; } + + /// + /// Gets or sets the current user's information. + /// + /// + /// A object containing profile information, + /// or null if not provided. + /// public LimitedUser User { get; set; } + + /// + /// Gets or sets the current location. + /// + /// + /// A location string in the format worldId:instanceId, such as + /// wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd:12345~private(usr_xxx). + /// public string Location { get; set; } + + /// + /// Gets or sets the current instance identifier. + /// + /// + /// The instance portion of the location string, such as 12345~private(usr_xxx). + /// public string Instance { get; set; } + + /// + /// Gets or sets the location the user is currently traveling to. + /// + /// + /// A location string if the user is in transit to a new world, or null + /// if they are not currently traveling. + /// public string TravelingToLocation { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs b/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs index afdcaaa1..952e66e6 100644 --- a/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs +++ b/wrapper/VRChat.API.Realtime/Messages/User/UserUpdateContent.cs @@ -1,9 +1,30 @@ namespace VRChat.API.Realtime.Messages { + /// + /// Represents the content of a "user-update" WebSocket event. + /// + /// + /// This event is raised when the current user's profile information is updated. + /// This includes changes to display name, status, avatar, bio, and other profile fields. + /// + /// + /// public class UserUpdateContent { + /// + /// Gets or sets the unique identifier of the current user. + /// + /// + /// A user's unique ID, usually in the form of usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469. + /// public string UserId { get; set; } + + /// + /// Gets or sets the current user's updated information. + /// + /// + /// A object containing the updated profile information. + /// public CurrentUserInfo User { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs b/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs deleted file mode 100644 index 54b3d050..00000000 --- a/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageString.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace VRChat.API.Realtime.Messages -{ - /// - /// WebSocket message wrapper where content is a string (double-encoded JSON) - /// - public class WebSocketMessageString - { - public string Type { get; set; } - public string Content { get; set; } - } -} - diff --git a/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs b/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs index 2090029b..273a8748 100644 --- a/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs +++ b/wrapper/VRChat.API.Realtime/Messages/WebSocketMessageWrapper.cs @@ -1,9 +1,95 @@ +using System.Text.Json; + namespace VRChat.API.Realtime.Messages { + /// + /// Represents a parsed WebSocket message received from the VRChat Pipeline API. + /// + /// The type of the deserialized message content. + /// + /// VRChat WebSocket messages typically have a "type" field indicating the event type + /// and a "content" field containing the event data. This class provides convenient + /// access to both the typed content and raw JSON for debugging or custom processing. + /// public class WebSocketMessage { + /// + /// Gets or sets the message type identifier from VRChat. + /// + /// + /// The message type string, such as "friend-online", "notification", or "user-update". + /// public string Type { get; set; } + + /// + /// Gets or sets the deserialized message content. + /// + /// + /// The strongly-typed content object deserialized from the JSON payload. + /// public T Content { get; set; } + + /// + /// Gets or sets the complete raw JSON string of the entire WebSocket message. + /// + /// + /// The original JSON string as received from the WebSocket, including type and content fields. + /// Useful for debugging, logging, or custom deserialization scenarios. + /// + public string RawMessage { get; set; } + + /// + /// Gets or sets the raw JSON string of just the content field. + /// + /// + /// The JSON string representation of the content field before deserialization. + /// For double-encoded messages, this is the inner JSON string that was decoded. + /// + public string RawContent { get; set; } + + /// + /// Creates a new from pre-extracted type and content. + /// + /// The message type identifier. + /// The complete raw JSON message string. + /// The raw content JSON string to deserialize. + /// The to use for deserialization. + /// A new with the deserialized content. + /// + /// Use this method for double-encoded messages where the content is already extracted + /// as a JSON string from the outer message structure. + /// + public static WebSocketMessage FromContent(string type, string rawMessage, string rawContent, JsonSerializerOptions options) + { + return new WebSocketMessage + { + Type = type, + Content = JsonSerializer.Deserialize(rawContent, options), + RawMessage = rawMessage, + RawContent = rawContent + }; + } + + /// + /// Creates a new with string content that requires no deserialization. + /// + /// The message type identifier. + /// The complete raw JSON message string. + /// The string content value. + /// A new where T is . + /// + /// Use this method for simple messages where the content is a plain string value, + /// such as notification IDs in "see-notification" or "hide-notification" events. + /// + public static WebSocketMessage FromStringContent(string type, string rawMessage, string rawContent) + { + return new WebSocketMessage + { + Type = type, + Content = rawContent, + RawMessage = rawMessage, + RawContent = rawContent + }; + } } } - diff --git a/wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs index 30de8146..ee490e19 100644 --- a/wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs +++ b/wrapper/VRChat.API.Realtime/Models/LogEventArgs.cs @@ -2,21 +2,88 @@ namespace VRChat.API.Realtime.Models { + /// + /// Provides data for log events generated by the . + /// + /// + /// Subscribe to the event to receive + /// diagnostic messages from the realtime client, including connection status, + /// message processing details, and error information. + /// + /// + /// public class LogEventArgs : EventArgs { + /// + /// Gets or sets the exception associated with this log entry, if any. + /// + /// + /// The that caused this log entry, or null + /// if no exception is associated with this log message. + /// public Exception Exception { get; set; } + + /// + /// Gets or sets the log message text. + /// + /// + /// A human-readable description of the log event, such as connection status changes, + /// processing information, or error details. + /// public string Message { get; set; } + + /// + /// Gets or sets the severity level of this log entry. + /// + /// + /// The indicating the importance and type of the log message. + /// public LogLevel Level { get; set; } } + /// + /// Specifies the severity level of a log message. + /// + /// + /// Log levels are ordered from most verbose () to most severe (). + /// Use these levels to filter log output based on your debugging needs. + /// public enum LogLevel { + /// + /// Very detailed diagnostic information, typically only useful for debugging specific issues. + /// Includes raw message data and internal processing details. + /// Trace, + + /// + /// Diagnostic information useful during development. + /// Includes detailed operation information and state changes. + /// Debug, + + /// + /// General operational information about normal application flow. + /// Includes connection status and major state transitions. + /// Info, + + /// + /// Indicates a potential problem that doesn't prevent operation but may require attention. + /// Includes recoverable errors and unexpected but handled conditions. + /// Warning, + + /// + /// Indicates an error that prevented an operation from completing. + /// The application can continue but some functionality may be impaired. + /// Error, + + /// + /// Indicates a severe error that may cause the application to terminate or become unstable. + /// Immediate attention is required. + /// Critical } } - diff --git a/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs deleted file mode 100644 index 549d252e..00000000 --- a/wrapper/VRChat.API.Realtime/Models/NotificationEventArgs.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using VRChat.API.Realtime.Messages; - -namespace VRChat.API.Realtime.Models -{ - public class NotificationEventArgs : EventArgs - { - public Notification Notification { get; set; } - } -} - diff --git a/wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs b/wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs index a789b05e..93e09603 100644 --- a/wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs +++ b/wrapper/VRChat.API.Realtime/Models/VRChatEventArgs.cs @@ -3,30 +3,55 @@ namespace VRChat.API.Realtime.Models { /// - /// Generic event arguments for VRChat realtime events containing typed message data + /// Provides data for VRChat realtime events containing typed message content. /// - /// The type of the message content + /// The type of the deserialized message content. + /// + /// This class is used as the event argument for all typed VRChat WebSocket events, + /// providing access to both the strongly-typed content and raw JSON data for + /// debugging or custom processing scenarios. + /// + /// public class VRChatEventArgs : EventArgs { /// - /// The typed message content + /// Gets or sets the deserialized message content. /// + /// + /// The strongly-typed content object deserialized from the WebSocket message. + /// The type depends on the specific event (e.g., + /// for friend-online events). + /// public T Message { get; set; } /// - /// The complete raw JSON string received from the WebSocket + /// Gets or sets the complete raw JSON string received from the WebSocket. /// + /// + /// The original JSON string as received from VRChat's Pipeline API, + /// including both the "type" and "content" fields. + /// Useful for debugging, logging, or custom deserialization scenarios. + /// public string RawMessage { get; set; } /// - /// The raw "content" field as a JSON string from the VRChat message + /// Gets or sets the raw JSON string of the content field before deserialization. /// + /// + /// The JSON string representation of the "content" field from the VRChat message. + /// For double-encoded messages, this is the inner JSON string that was decoded + /// before being deserialized to type . + /// public string RawContent { get; set; } /// - /// The message type identifier + /// Gets or sets the message type identifier. /// + /// + /// The message type string from VRChat, such as "friend-online", "notification", + /// "user-update", "group-joined", etc. + /// + /// VRChat WebSocket API Documentation public string Type { get; set; } } } - diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs index 408b219c..7c7297da 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs @@ -7,65 +7,69 @@ namespace VRChat.API.Realtime { public partial class VRChatRealtimeClient { + /// + /// JSON serialization options used for deserializing WebSocket message content. + /// private static readonly JsonSerializerOptions JsonOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; - private void ProcessMessage(string messageType, string json) + /// + /// Routes and processes an incoming WebSocket message based on its type. + /// + /// The message type identifier from VRChat. + /// The complete raw JSON message string. + /// The extracted content field as a JSON string. + private void ProcessMessage(string messageType, string rawJson, string rawContent) { object parsedContent = null; - string rawContent = null; try { var result = messageType switch { // Notification Events - "notification" => ProcessNotification(json), - "response-notification" => ProcessResponseNotification(json), - "see-notification" => ProcessSeeNotification(json), - "hide-notification" => ProcessHideNotification(json), + "notification" => ProcessContent(messageType, rawJson, rawContent, OnNotificationReceived), + "response-notification" => ProcessContent(messageType, rawJson, rawContent, OnResponseNotification), + "see-notification" => ProcessStringContent(messageType, rawJson, rawContent, OnSeeNotification), + "hide-notification" => ProcessStringContent(messageType, rawJson, rawContent, OnHideNotification), "clear-notification" => ProcessClearNotification(), - "notification-v2" => ProcessNotificationV2(json), - "notification-v2-update" => ProcessNotificationV2Update(json), - "notification-v2-delete" => ProcessNotificationV2Delete(json), + "notification-v2" => ProcessContent(messageType, rawJson, rawContent, OnNotificationV2), + "notification-v2-update" => ProcessContent(messageType, rawJson, rawContent, OnNotificationV2Update), + "notification-v2-delete" => ProcessContent(messageType, rawJson, rawContent, OnNotificationV2Delete), // Friend Events - "friend-add" => ProcessFriendAdd(json), - "friend-delete" => ProcessFriendDelete(json), - "friend-online" => ProcessFriendOnline(json), - "friend-active" => ProcessFriendActive(json), - "friend-offline" => ProcessFriendOffline(json), - "friend-update" => ProcessFriendUpdate(json), - "friend-location" => ProcessFriendLocation(json), + "friend-add" => ProcessContent(messageType, rawJson, rawContent, OnFriendAdd), + "friend-delete" => ProcessContent(messageType, rawJson, rawContent, OnFriendDelete), + "friend-online" => ProcessContent(messageType, rawJson, rawContent, OnFriendOnline), + "friend-active" => ProcessContent(messageType, rawJson, rawContent, OnFriendActive), + "friend-offline" => ProcessContent(messageType, rawJson, rawContent, OnFriendOffline), + "friend-update" => ProcessContent(messageType, rawJson, rawContent, OnFriendUpdate), + "friend-location" => ProcessContent(messageType, rawJson, rawContent, OnFriendLocation), // User Events - "user-update" => ProcessUserUpdate(json), - "user-location" => ProcessUserLocation(json), - "user-badge-assigned" => ProcessUserBadgeAssigned(json), - "user-badge-unassigned" => ProcessUserBadgeUnassigned(json), - "content-refresh" => ProcessContentRefresh(json), - "modified-image-update" => ProcessModifiedImageUpdate(json), - "instance-queue-joined" => ProcessInstanceQueueJoined(json), - "instance-queue-ready" => ProcessInstanceQueueReady(json), + "user-update" => ProcessContent(messageType, rawJson, rawContent, OnUserUpdate), + "user-location" => ProcessContent(messageType, rawJson, rawContent, OnUserLocation), + "user-badge-assigned" => ProcessContent(messageType, rawJson, rawContent, OnUserBadgeAssigned), + "user-badge-unassigned" => ProcessContent(messageType, rawJson, rawContent, OnUserBadgeUnassigned), + "content-refresh" => ProcessContent(messageType, rawJson, rawContent, OnContentRefresh), + "modified-image-update" => ProcessContent(messageType, rawJson, rawContent, OnModifiedImageUpdate), + "instance-queue-joined" => ProcessContent(messageType, rawJson, rawContent, OnInstanceQueueJoined), + "instance-queue-ready" => ProcessContent(messageType, rawJson, rawContent, OnInstanceQueueReady), // Group Events - "group-joined" => ProcessGroupJoined(json), - "group-left" => ProcessGroupLeft(json), - "group-member-updated" => ProcessGroupMemberUpdated(json), - "group-role-updated" => ProcessGroupRoleUpdated(json), + "group-joined" => ProcessContent(messageType, rawJson, rawContent, OnGroupJoined), + "group-left" => ProcessContent(messageType, rawJson, rawContent, OnGroupLeft), + "group-member-updated" => ProcessContent(messageType, rawJson, rawContent, OnGroupMemberUpdated), + "group-role-updated" => ProcessContent(messageType, rawJson, rawContent, OnGroupRoleUpdated), // Unknown _ => LogUnknownMessage(messageType) }; - if (result is (object content, string raw)) - { - parsedContent = content; - rawContent = raw; - } + parsedContent = result; } catch (Exception ex) { @@ -78,483 +82,79 @@ private void ProcessMessage(string messageType, string json) OnEvent?.Invoke(this, new VRChatEventArgs { Message = parsedContent, - RawMessage = json, + RawMessage = rawJson, RawContent = rawContent, Type = messageType }); } } - private (object, string) LogUnknownMessage(string messageType) - { - LogMessage(LogLevel.Debug, $"Unknown message type: {messageType}"); - return (null, null); - } - - private (object, string) ProcessClearNotification() - { - OnClearNotification?.Invoke(this, EventArgs.Empty); - return (null, null); - } - - #region Notification Event Processors - - private (object, string) ProcessNotification(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - var args = new NotificationEventArgs { Notification = content }; - OnNotification?.Invoke(this, args); // Legacy event - - OnNotificationReceived?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessResponseNotification(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnResponseNotification?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessSeeNotification(string json) + /// + /// Deserializes and processes a typed message content, invoking the specified event handler. + /// + /// The type to deserialize the content to. + /// The message type identifier. + /// The complete raw JSON message string. + /// The content field JSON string to deserialize. + /// The event handler to invoke with the deserialized content. + /// The deserialized content object, or null if deserialization fails. + private object ProcessContent(string type, string rawJson, string rawContent, EventHandler> eventHandler) { - // NOT double-encoded: content is just the notification ID string - var message = JsonSerializer.Deserialize>(json, JsonOptions); + var message = WebSocketMessage.FromContent(type, rawJson, rawContent, JsonOptions); - OnSeeNotification?.Invoke(this, new VRChatEventArgs + eventHandler?.Invoke(this, new VRChatEventArgs { Message = message.Content, - RawMessage = json, - RawContent = message.Content, + RawMessage = message.RawMessage, + RawContent = message.RawContent, Type = message.Type }); - return (message.Content, message.Content); + return message.Content; } - private (object, string) ProcessHideNotification(string json) + /// + /// Processes string content that requires no JSON deserialization. + /// + /// The message type identifier. + /// The complete raw JSON message string. + /// The string content value. + /// The event handler to invoke with the string content. + /// The string content value. + private object ProcessStringContent(string type, string rawJson, string rawContent, EventHandler> eventHandler) { - // NOT double-encoded: content is just the notification ID string - var message = JsonSerializer.Deserialize>(json, JsonOptions); + var message = WebSocketMessage.FromStringContent(type, rawJson, rawContent); - OnHideNotification?.Invoke(this, new VRChatEventArgs + eventHandler?.Invoke(this, new VRChatEventArgs { Message = message.Content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (message.Content, message.Content); - } - - private (object, string) ProcessNotificationV2(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnNotificationV2?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessNotificationV2Update(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnNotificationV2Update?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessNotificationV2Delete(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnNotificationV2Delete?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - #endregion - - #region Friend Event Processors - - private (object, string) ProcessFriendAdd(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnFriendAdd?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessFriendDelete(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnFriendDelete?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessFriendOnline(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnFriendOnline?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessFriendActive(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnFriendActive?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessFriendOffline(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnFriendOffline?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, + RawMessage = message.RawMessage, + RawContent = message.RawContent, Type = message.Type }); - return (content, message.Content); + return message.Content; } - private (object, string) ProcessFriendUpdate(string json) + /// + /// Logs an unknown message type for debugging purposes. + /// + /// The unrecognized message type identifier. + /// null as no content is processed. + private object LogUnknownMessage(string messageType) { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnFriendUpdate?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessFriendLocation(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnFriendLocation?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - #endregion - - #region User Event Processors - - private (object, string) ProcessUserUpdate(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnUserUpdate?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessUserLocation(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnUserLocation?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessUserBadgeAssigned(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnUserBadgeAssigned?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessUserBadgeUnassigned(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnUserBadgeUnassigned?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessContentRefresh(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnContentRefresh?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessModifiedImageUpdate(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnModifiedImageUpdate?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessInstanceQueueJoined(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnInstanceQueueJoined?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessInstanceQueueReady(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnInstanceQueueReady?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - #endregion - - #region Group Event Processors - - private (object, string) ProcessGroupJoined(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnGroupJoined?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessGroupLeft(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnGroupLeft?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); - } - - private (object, string) ProcessGroupMemberUpdated(string json) - { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnGroupMemberUpdated?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); + LogMessage(LogLevel.Debug, $"Unknown message type: {messageType}"); + return null; } - private (object, string) ProcessGroupRoleUpdated(string json) + /// + /// Processes the clear-notification event which has no content payload. + /// + /// null as no content is associated with this event. + private object ProcessClearNotification() { - // Double-encoded: content is a stringified JSON object - var message = JsonSerializer.Deserialize(json, JsonOptions); - var content = JsonSerializer.Deserialize(message.Content, JsonOptions); - - OnGroupRoleUpdated?.Invoke(this, new VRChatEventArgs - { - Message = content, - RawMessage = json, - RawContent = message.Content, - Type = message.Type - }); - - return (content, message.Content); + OnClearNotification?.Invoke(this, EventArgs.Empty); + return null; } - - #endregion } } - diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs index 6df6ee11..30762613 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs @@ -59,7 +59,7 @@ public interface IVRChatRealtime : IDisposable /// [Legacy] Raised when a notification is received.
/// Use instead for consistency. /// - event EventHandler OnNotification; + event EventHandler> OnNotification; /// /// Raised when a notification is received from VRChat.
@@ -233,11 +233,26 @@ public interface IVRChatRealtime : IDisposable ///
bool IsConnected { get; } - void Dispose(); + /// + /// Releases all resources used by the VRChat realtime client. + /// + /// + /// This method is inherited from . + /// + new void Dispose(); #endregion } + /// + /// Implementation of that provides realtime communication + /// with VRChat's Pipeline WebSocket API. + /// + /// + /// Use to create and configure instances of this class. + /// + /// + /// public partial class VRChatRealtimeClient : IVRChatRealtime, IDisposable { private readonly VRChatRealtimeConfiguration _configuration; @@ -250,55 +265,143 @@ public partial class VRChatRealtimeClient : IVRChatRealtime, IDisposable private bool _disposed; private readonly SemaphoreSlim _sendLock = new SemaphoreSlim(1, 1); - // Connection Events + #region Connection Events + + /// public event EventHandler Log; + + /// public event EventHandler OnDisconnected; + + /// public event EventHandler OnConnected; + + /// public event EventHandler OnAutoReconnecting; + + /// public event EventHandler> OnMessageReceived; + + /// public event EventHandler OnHeartbeat; + + /// public event EventHandler> OnEvent; - // Notification Events (legacy) - public event EventHandler OnNotification; + #endregion + + #region Notification Events + + /// + public event EventHandler> OnNotification; - // Notification Events + /// public event EventHandler> OnNotificationReceived; + + /// public event EventHandler> OnResponseNotification; + + /// public event EventHandler> OnSeeNotification; + + /// public event EventHandler> OnHideNotification; + + /// public event EventHandler OnClearNotification; + + /// public event EventHandler> OnNotificationV2; + + /// public event EventHandler> OnNotificationV2Update; + + /// public event EventHandler> OnNotificationV2Delete; - // Friend Events + #endregion + + #region Friend Events + + /// public event EventHandler> OnFriendAdd; + + /// public event EventHandler> OnFriendDelete; + + /// public event EventHandler> OnFriendOnline; + + /// public event EventHandler> OnFriendActive; + + /// public event EventHandler> OnFriendOffline; + + /// public event EventHandler> OnFriendUpdate; + + /// public event EventHandler> OnFriendLocation; - // User Events + #endregion + + #region User Events + + /// public event EventHandler> OnUserUpdate; + + /// public event EventHandler> OnUserLocation; + + /// public event EventHandler> OnUserBadgeAssigned; + + /// public event EventHandler> OnUserBadgeUnassigned; + + /// public event EventHandler> OnContentRefresh; + + /// public event EventHandler> OnModifiedImageUpdate; + + /// public event EventHandler> OnInstanceQueueJoined; + + /// public event EventHandler> OnInstanceQueueReady; - // Group Events + #endregion + + #region Group Events + + /// public event EventHandler> OnGroupJoined; + + /// public event EventHandler> OnGroupLeft; + + /// public event EventHandler> OnGroupMemberUpdated; + + /// public event EventHandler> OnGroupRoleUpdated; + #endregion + + /// public bool IsConnected => _client?.State == WebSocketState.Open; + /// + /// Initializes a new instance of the class. + /// + /// The configuration settings for the client. + /// Thrown if is null. + /// Thrown if is not set. + /// + /// Use for a more convenient way to create and configure the client. + /// public VRChatRealtimeClient(VRChatRealtimeConfiguration configuration) { _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); @@ -307,6 +410,7 @@ public VRChatRealtimeClient(VRChatRealtimeConfiguration configuration) throw new ArgumentException("AuthToken is required", nameof(configuration)); } + /// public async Task ConnectAsync(CancellationToken cancellationToken = default) { if (_client?.State == WebSocketState.Open) @@ -353,6 +457,7 @@ public async Task ConnectAsync(CancellationToken cancellationToken = default) } } + /// public async Task DisconnectAsync() { _isManualDisconnect = true; @@ -561,7 +666,16 @@ private void HandleMessage(string json) return; } - ProcessMessage(messageType, json); + // Extract content once at the top level to avoid re-parsing JSON in processors + string rawContent = null; + if (root.TryGetProperty("content", out var contentElement)) + { + rawContent = contentElement.ValueKind == JsonValueKind.String + ? contentElement.GetString() + : contentElement.GetRawText(); + } + + ProcessMessage(messageType, json, rawContent); } catch (Exception ex) { @@ -603,6 +717,13 @@ private void LogMessage(LogLevel level, string message, Exception exception = nu }); } + /// + /// Releases all resources used by the . + /// + /// + /// Call this method when you are done using the client to release WebSocket connections, + /// timers, and other resources. After calling Dispose, the client cannot be reused. + /// public void Dispose() { if (!_disposed) diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs index 41a9d03d..1d599f93 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClientBuilder.cs @@ -3,18 +3,51 @@ namespace VRChat.API.Realtime { + /// + /// Provides a fluent builder pattern for creating and configuring instances. + /// + /// + /// Use this builder to configure the VRChat realtime client with the required authentication token, + /// optional User-Agent header, and reconnection settings. + /// + /// + /// + /// var client = new VRChatRealtimeClientBuilder(new VRChatRealtimeConfiguration()) + /// .WithAuthToken("authcookie_xxx") + /// .WithApplication("MyApp", "1.0.0", "myapp@example.com") + /// .WithAutoReconnect(AutoReconnectMode.OnDisconnect) + /// .Build(); + /// + /// + /// + /// public class VRChatRealtimeClientBuilder { + /// + /// The configuration being built. + /// private readonly VRChatRealtimeConfiguration _configuration; - public VRChatRealtimeClientBuilder() + /// + /// Initializes a new instance of the class. + /// + /// + /// An existing to start with, or null to use defaults. + /// + public VRChatRealtimeClientBuilder(VRChatRealtimeConfiguration incomingConfiguration = null) { - _configuration = new VRChatRealtimeConfiguration(); + _configuration = incomingConfiguration ?? new VRChatRealtimeConfiguration(); } /// - /// Set the WebSocket endpoint URL + /// Sets the WebSocket endpoint URL for the VRChat Pipeline API. /// + /// The WebSocket URL to connect to. + /// The current instance for method chaining. + /// + /// The default endpoint is wss://pipeline.vrchat.cloud/. Only change this if you + /// need to connect to a different server for testing or development purposes. + /// public VRChatRealtimeClientBuilder WithEndpoint(string endpointUrl) { _configuration.EndpointURL = endpointUrl; @@ -22,8 +55,17 @@ public VRChatRealtimeClientBuilder WithEndpoint(string endpointUrl) } /// - /// Set the authentication token (authcookie) + /// Sets the authentication token (authcookie) for the WebSocket connection. /// + /// The VRChat authentication cookie value. + /// The current instance for method chaining. + /// + /// This is required. The authcookie can be obtained after logging in via the VRChat API. + /// It is typically found in the Set-Cookie header of the authentication response. + /// + /// + /// Thrown by if this method is not called with a valid token. + /// public VRChatRealtimeClientBuilder WithAuthToken(string authToken) { _configuration.AuthToken = authToken; @@ -31,24 +73,57 @@ public VRChatRealtimeClientBuilder WithAuthToken(string authToken) } /// - /// Set the User-Agent header + /// Sets a custom User-Agent header for the WebSocket connection. /// + /// The User-Agent string to send with WebSocket requests. + /// The current instance for method chaining. + /// + /// VRChat requires applications to identify themselves with a proper User-Agent header. + /// Consider using instead for automatic formatting. + /// + /// public VRChatRealtimeClientBuilder WithUserAgent(string userAgent) { _configuration.UserAgent = userAgent; return this; } + /// + /// Configures the User-Agent header with standardized application information. + /// + /// The name of your application. + /// The version of your application. + /// Contact information (typically an email or URL) for the application author. + /// The current instance for method chaining. + /// + /// This method automatically formats the User-Agent string to include your application + /// information along with the VRChat.API.Realtime library version. The format follows + /// VRChat's recommended User-Agent guidelines. + /// + /// + /// + /// builder.WithApplication("MyVRChatBot", "2.1.0", "contact@example.com"); + /// // Produces: MyVRChatBot/2.1.0 (contact@example.com), VRChat.API.Realtime/x.x.x (https://vrchat.community/dotnet) + /// + /// public VRChatRealtimeClientBuilder WithApplication(string name, string version, string contact) { string libraryVersion = Assembly.GetExecutingAssembly().GetName().Version!.ToString(); - string userAgent = $"{name}/{version} ({contact}), VRChat.API.Realtime/{libraryVersion} (https://vrchat.community/dotnet)"; + string userAgent = $"{name}/{version} ({contact}), VRChat.API/{libraryVersion} (https://vrchat.community/dotnet)"; return this.WithUserAgent(userAgent); } /// - /// Set the auto-reconnect mode + /// Sets the auto-reconnect behavior for the WebSocket connection. /// + /// The specifying when to reconnect. + /// The current instance for method chaining. + /// + /// Auto-reconnection helps maintain a stable connection to VRChat's Pipeline API. + /// Some users prefer periodic reconnection (every 10-30 minutes) to avoid connection + /// issues that can occur with long-lived WebSocket connections. + /// + /// public VRChatRealtimeClientBuilder WithAutoReconnect(AutoReconnectMode mode) { _configuration.AutoReconnectMode = mode; @@ -56,8 +131,16 @@ public VRChatRealtimeClientBuilder WithAutoReconnect(AutoReconnectMode mode) } /// - /// Build the with the configured settings + /// Builds and returns a configured instance. /// + /// A new instance ready for connection. + /// + /// Thrown if was not called with a valid authentication token. + /// + /// + /// After building, call to establish the + /// WebSocket connection to VRChat's Pipeline API. + /// public IVRChatRealtime Build() { if (string.IsNullOrWhiteSpace(_configuration.AuthToken)) diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs index 13932e54..7daea573 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeConfiguration.cs @@ -1,56 +1,130 @@ -using System; - namespace VRChat.API.Realtime { + /// + /// Configuration options for the VRChat realtime WebSocket client. + /// + /// + /// Use this class to configure the WebSocket endpoint, authentication, and reconnection behavior. + /// Pass an instance to to create a configured client. + /// + /// + /// + /// var config = new VRChatRealtimeConfiguration + /// { + /// AuthToken = "authcookie_xxx", + /// AutoReconnectMode = AutoReconnectMode.Every20Minutes + /// }; + /// var client = new VRChatRealtimeClientBuilder(config).Build(); + /// + /// + /// + /// public class VRChatRealtimeConfiguration { /// - /// The WebSocket endpoint URL for VRChat's Pipeline API + /// Gets or sets the WebSocket endpoint URL for VRChat's Pipeline API. /// + /// + /// The WebSocket URL to connect to. Defaults to wss://pipeline.vrchat.cloud/. + /// + /// + /// You typically don't need to change this unless connecting to a test server. + /// public string EndpointURL { get; set; } = "wss://pipeline.vrchat.cloud/"; /// - /// Auto-reconnection mode for the WebSocket connection + /// Gets or sets the auto-reconnection mode for the WebSocket connection. /// + /// + /// The determining when to automatically reconnect. + /// Defaults to . + /// + /// + /// Some users find that periodic reconnection helps maintain a more stable connection + /// over extended periods of use. + /// public AutoReconnectMode AutoReconnectMode { get; set; } = AutoReconnectMode.OnDisconnect; /// - /// VRChat authentication token (authcookie) + /// Gets or sets the VRChat authentication token (authcookie). /// + /// + /// The authentication cookie value obtained from logging in to VRChat. + /// This is required for establishing a WebSocket connection. + /// + /// + /// The authcookie is obtained from the REST API authentication response. + /// It is included in the Set-Cookie header after successful login. + /// public string AuthToken { get; set; } /// - /// User-Agent header for the WebSocket connection + /// Gets or sets the User-Agent header for the WebSocket connection. /// + /// + /// A User-Agent string identifying your application to VRChat's servers. + /// + /// + /// VRChat requires applications to identify themselves with a proper User-Agent header. + /// Use for automatic formatting, + /// or set this manually with a string in the format: + /// AppName/Version (Contact), VRChat.API.Realtime/Version (URL) + /// + /// public string UserAgent { get; set; } } + /// + /// Specifies when the VRChat realtime client should automatically reconnect to the WebSocket. + /// + /// + /// Periodic reconnection can help maintain a stable connection over long periods. + /// Choose a mode based on your application's requirements and VRChat's connection stability. + /// + /// public enum AutoReconnectMode { /// - /// Do not automatically reconnect + /// Do not automatically reconnect. The client will remain disconnected if the connection is lost. /// + /// + /// Use this mode if you want full control over reconnection logic in your application. + /// None, /// - /// Reconnect when disconnected unexpectedly + /// Automatically reconnect when the connection is unexpectedly lost. /// + /// + /// This is the default mode. The client will attempt to reconnect after a brief delay + /// when the WebSocket connection is closed unexpectedly. + /// OnDisconnect, /// - /// Reconnect every 10 minutes + /// Automatically reconnect every 10 minutes, in addition to reconnecting on disconnect. /// + /// + /// Periodic reconnection can help prevent connection issues that may occur + /// with very long-lived WebSocket connections. + /// Every10Minutes, /// - /// Reconnect every 20 minutes + /// Automatically reconnect every 20 minutes, in addition to reconnecting on disconnect. /// + /// + /// A balance between frequent reconnection and connection stability. + /// Every20Minutes, /// - /// Reconnect every 30 minutes + /// Automatically reconnect every 30 minutes, in addition to reconnecting on disconnect. /// + /// + /// Less frequent reconnection, suitable for applications that prefer + /// longer uninterrupted connection periods. + /// Every30Minutes } } - From 36b5f3b0f2c109ba77d4237c59f22e6c1a17a9e6 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Thu, 4 Dec 2025 17:05:41 -0600 Subject: [PATCH 05/25] update docs --- README.md | 8 +++ WEBSOCKET.md | 71 +++++++++++++++++++ .../VRChat.API.Examples.WebSocket/Program.cs | 11 --- 3 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 WEBSOCKET.md diff --git a/README.md b/README.md index 9e22bca6..2e8c7b7e 100644 --- a/README.md +++ b/README.md @@ -133,8 +133,16 @@ public class MyController : Controller Console app (login): see [VRChat.API.Examples.Console](examples/VRChat.API.Examples.Console/) +Console app (WebSocket): see [VRChat.API.Examples.WebSocket](examples/VRChat.API.Examples.WebSocket/) + ASP.NET Core (depedency injection): see [VRChat.API.Examples.AspNetCore](examples/VRChat.API.Examples.AspNetCore/) +# WebSockets / VRChat Pipeline + +You can use the `VRChat.API.Realtime` library to connect to VRChat's WebSocket and listen to events. + +The documentation for it is available at [WEBSOCKET.md](WEBSOCKET.md). + # Manually authenticating Sometimes, we don't have two-factor authentication set up on our accounts. While it's **reccomended** for most bots or apps, your app may be a WPF/WinForms application that requires user credential input. In these cases, the `LoginAsync()` methods on `IVRChat` won't work, because they only support token-based two-factor authentication. diff --git a/WEBSOCKET.md b/WEBSOCKET.md new file mode 100644 index 00000000..7c2073ff --- /dev/null +++ b/WEBSOCKET.md @@ -0,0 +1,71 @@ +![](https://raw.githubusercontent.com/vrchatapi/vrchatapi.github.io/main/static/assets/img/lang/lang_csharp_banner_1500x300.png) + +# VRChat API Library for .NET + +A .NET client to interact with the unofficial VRChat API. Supports all REST calls specified in https://github.com/vrchatapi/specification. + +This documentation covers how to use the WebSocket (Pipeline) API with VRChat. + +## Installation + +Install with NuGet: + +```bash +# With .NET CLI +dotnet add package VRChat.API.Realtime + +# Or with Package Manager +Install-Package VRChat.API.Realtime +``` + +## Getting Started + +The following example code authenticates you with the API, and starts listenting to some events. + +```cs +using System; +using VRChat.API.Realtime; + +string authToken = Environment.GetEnvironmentVariable("VRCHAT_AUTH_TOKEN"); +// You can also use IVRChat.GetCookies() and grab the cookies from your IVRChat instance. +// Example: vrchat.GetCookies().FirstOrDefault(c => c.Name == "auth")?.Value; + +// WithApplication or WithUserAgent is required or VRChat will reject your requests +IVRChatRealtime realtime = new VRChatRealtimeClientBuilder() + .WithAuthToken(authToken) + .WithAutoReconnect(AutoReconnectMode.OnDisconnect) + .WithApplication(name: "Example", version: "1.0.0", contact: "youremail.com") + .Build(); + +realtime.OnConnected += (sender, e) => +{ + Console.WriteLine("Connected to VRChat Realtime WebSocket!"); +}; + +realtime.OnFriendOnline += (sender, e) => +{ + Console.WriteLine($"Friend {e.Message.User.DisplayName} is now online!"); +}; + +realtime.OnFriendOffline += (sender, e) => +{ + Console.WriteLine($"Friend {e.Message.UserId} is now offline!"); +}; + +realtime.OnFriendLocation += (sender, e) => +{ + Console.WriteLine($"Friend {e.Message.User.DisplayName} is now in {e.Message.Location}!"); +}; + +await realtime.ConnectAsync(); +``` + +# Example Projects + +Console app (login and listen to events): see [VRChat.API.Examples.WebSocket](examples/VRChat.API.Examples.WebSocket/) + +## Contributing + +Contributions are welcome, but do not add features that should be handled by the OpenAPI specification. + +Join the [Discord server](https://discord.gg/Ge2APMhPfD) to get in touch with us. diff --git a/examples/VRChat.API.Examples.WebSocket/Program.cs b/examples/VRChat.API.Examples.WebSocket/Program.cs index e867df8b..baeaacda 100644 --- a/examples/VRChat.API.Examples.WebSocket/Program.cs +++ b/examples/VRChat.API.Examples.WebSocket/Program.cs @@ -29,17 +29,6 @@ public static async Task Main(string[] args) .WithApplication(name: "Example", version: "1.0.0", contact: "youremail.com") .Build(); - realtime.Log += (sender, e) => - { - // Console.WriteLine($"[VRChat Realtime] [{e.Level.ToString()}] {e.Message}"); - }; - - realtime.OnEvent += (sender, e) => - { - if(e.Type == "friend-offline") - Console.WriteLine($"[VRChat Realtime] [Event] Type: {e.Type}, RawContent: {e.RawContent}"); - }; - realtime.OnConnected += (sender, e) => { Console.WriteLine("Connected to VRChat Realtime WebSocket!"); From 2522c46b6db6de63ebd08bf61cc0b136880f7a3c Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Thu, 4 Dec 2025 17:09:03 -0600 Subject: [PATCH 06/25] final touch ups --- .../VRChatRealtimeClient.MessageProcessor.cs | 2 +- wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs | 11 +---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs index 7c7297da..78bd0789 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.MessageProcessor.cs @@ -31,7 +31,7 @@ private void ProcessMessage(string messageType, string rawJson, string rawConten var result = messageType switch { // Notification Events - "notification" => ProcessContent(messageType, rawJson, rawContent, OnNotificationReceived), + "notification" => ProcessContent(messageType, rawJson, rawContent, OnNotification), "response-notification" => ProcessContent(messageType, rawJson, rawContent, OnResponseNotification), "see-notification" => ProcessStringContent(messageType, rawJson, rawContent, OnSeeNotification), "hide-notification" => ProcessStringContent(messageType, rawJson, rawContent, OnHideNotification), diff --git a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs index 30762613..69dd21e6 100644 --- a/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs +++ b/wrapper/VRChat.API.Realtime/VRChatRealtimeClient.cs @@ -55,17 +55,11 @@ public interface IVRChatRealtime : IDisposable #region Notification Events - /// - /// [Legacy] Raised when a notification is received.
- /// Use instead for consistency. - ///
- event EventHandler> OnNotification; - /// /// Raised when a notification is received from VRChat.
/// This includes friend requests, invites, and other in-game notifications. ///
- event EventHandler> OnNotificationReceived; + event EventHandler> OnNotification; /// /// Raised when a response to a previously sent notification is received. @@ -295,9 +289,6 @@ public partial class VRChatRealtimeClient : IVRChatRealtime, IDisposable /// public event EventHandler> OnNotification; - /// - public event EventHandler> OnNotificationReceived; - /// public event EventHandler> OnResponseNotification; From a361a14cae3ced0ed85b7561442a0fd46fff7da8 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Thu, 4 Dec 2025 17:10:41 -0600 Subject: [PATCH 07/25] update CI with new package --- .github/workflows/ci.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e3f06b6d..afccd800 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -100,3 +100,18 @@ jobs: # NUGET_SOURCE: https://api.nuget.org # Flag to toggle pushing symbols along with nuget package to the server, disabled by default INCLUDE_SYMBOLS: true + + - name: Publish to VRChat.API.Realtime to NuGet + if: github.event_name != 'workflow_dispatch' + uses: pairbit/publish-nuget@v2.5.8 + with: + # Filepath of the project to be packaged, relative to root of repository + PROJECT_FILE_PATH: wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj + # NuGet package id, used for version detection & defaults to project name + PACKAGE_NAME: VRChat.API.Realtime + # API key to authenticate with NuGet server + NUGET_KEY: ${{secrets.NUGET_KEY}} + # NuGet server uri hosting the packages, defaults to https://api.nuget.org + # NUGET_SOURCE: https://api.nuget.org + # Flag to toggle pushing symbols along with nuget package to the server, disabled by default + INCLUDE_SYMBOLS: true \ No newline at end of file From 14595da181830e0661e945a62f8b504096996914 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Thu, 4 Dec 2025 17:18:20 -0600 Subject: [PATCH 08/25] remove claude code stuff --- wrapper/VRChat.API.Realtime/CHANGELOG.md | 124 ----------------------- 1 file changed, 124 deletions(-) delete mode 100644 wrapper/VRChat.API.Realtime/CHANGELOG.md diff --git a/wrapper/VRChat.API.Realtime/CHANGELOG.md b/wrapper/VRChat.API.Realtime/CHANGELOG.md deleted file mode 100644 index 390ca15f..00000000 --- a/wrapper/VRChat.API.Realtime/CHANGELOG.md +++ /dev/null @@ -1,124 +0,0 @@ -# VRChat.API.Realtime Changelog - -## Refactor - System.Text.Json & Built-in WebSocket Implementation - -### Major Changes - -#### 1. **Removed Third-Party Dependencies** -- ❌ Removed `Newtonsoft.Json` dependency -- ❌ Removed `Websocket.Client` dependency -- ✅ Now using built-in `System.Text.Json` -- ✅ Now using built-in `System.Net.WebSockets.ClientWebSocket` - -#### 2. **Message Deserialization Architecture** -- **Before**: Manual JSON parsing with JObject/JToken -- **After**: Direct deserialization to strongly-typed classes - -Created new `Messages/` namespace with: -- `WebSocketMessage` - Generic wrapper for all messages -- Strongly-typed content classes for each message type: - - `NotificationContent`, `ResponseNotificationContent` - - `NotificationV2Content`, `NotificationV2UpdateContent`, `NotificationV2DeleteContent` - - `FriendAddContent`, `FriendOnlineContent`, `FriendLocationContent`, etc. - - `UserUpdateContent`, `UserLocationContent`, `ContentRefreshContent`, etc. - - `GroupJoinedContent`, `GroupMemberUpdatedContent`, etc. - - `HeartbeatMessage` for outgoing heartbeats - -#### 3. **WebSocket Implementation** -- **Before**: Used `Websocket.Client` library with Reactive Extensions -- **After**: Custom implementation using `ClientWebSocket` - -New features: -- Manual receive loop with proper cancellation support -- Thread-safe send operations using `SemaphoreSlim` -- Better error handling and reconnection logic -- Full control over WebSocket lifecycle - -#### 4. **Heartbeat Functionality** ✨ NEW -- Sends heartbeat every 30 seconds: `{"type": "heartbeat", "connected": true, "nonce": ""}` -- Automatic timer-based sending -- Unique GUID nonce for each heartbeat -- Helps keep connection alive and detect disconnections faster - -### Implementation Details - -#### WebSocket Receive Loop -```csharp -private async Task ReceiveLoop(CancellationToken cancellationToken) -{ - var buffer = new byte[8192]; - var messageBuffer = new StringBuilder(); - - while (!cancellationToken.IsCancellationRequested && _client.State == WebSocketState.Open) - { - // Receive message in chunks - // Handle text messages - // Process through message processor - } -} -``` - -#### Message Processing -```csharp -// Before (Newtonsoft.Json) -var baseMessage = JObject.Parse(json); -var content = baseMessage["content"]; -var userId = content["userId"]?.ToString(); - -// After (System.Text.Json) -var message = JsonSerializer.Deserialize>(json, JsonOptions); -var userId = message.Content.UserId; -``` - -#### Heartbeat Timer -```csharp -private void SetupHeartbeatTimer() -{ - _heartbeatTimer = new Timer(async _ => - { - await SendHeartbeatAsync(); - }, null, TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(30)); -} -``` - -### Benefits - -1. **No External Dependencies**: Relies only on .NET 8.0 built-in libraries -2. **Better Performance**: System.Text.Json is faster than Newtonsoft.Json -3. **Type Safety**: Direct deserialization to classes catches errors at compile time -4. **Full Control**: Custom WebSocket implementation allows for better debugging and customization -5. **Keep-Alive**: Heartbeat ensures connection stays active -6. **Cleaner Code**: Less manual JSON parsing, more declarative - -### File Structure - -``` -wrapper/VRChat.API.Realtime/ -├── Messages/ -│ └── WebSocketMessage.cs # All message content classes -├── Models/ -│ └── [27 EventArgs classes] # Event argument classes -├── VRChatRealtimeClient.cs # Main client (partial) -├── VRChatRealtimeClient.MessageProcessor.cs # Message processing (partial) -├── VRChatRealtimeClientBuilder.cs # Fluent builder -├── VRChatRealtimeConfiguration.cs # Configuration class -├── Example.cs # Usage examples -└── README.md # Documentation -``` - -### Breaking Changes - -⚠️ **None** - The public API remains unchanged. All changes are internal implementation details. - -### Migration Guide - -No migration needed! The public API (events, configuration, methods) remains exactly the same. - -### Testing - -- ✅ No linter errors -- ✅ All event types supported -- ✅ Heartbeat functionality implemented -- ✅ Auto-reconnect modes working -- ✅ Proper resource disposal - From c2821b4e102ce5cf91b7c9434662b84bbe706016 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 09:59:05 -0600 Subject: [PATCH 09/25] fix readme --- wrapper/VRChat.API.Realtime/README.md | 60 +++------------------------ 1 file changed, 6 insertions(+), 54 deletions(-) diff --git a/wrapper/VRChat.API.Realtime/README.md b/wrapper/VRChat.API.Realtime/README.md index e1fd25c0..d26e4576 100644 --- a/wrapper/VRChat.API.Realtime/README.md +++ b/wrapper/VRChat.API.Realtime/README.md @@ -28,16 +28,6 @@ dotnet add package VRChat.API.Realtime Install-Package VRChat.API.Realtime ``` -## Features - -- ✅ **Real-time WebSocket connection** to VRChat Pipeline -- ✅ **All event types supported**: Notifications, Friends, User, Groups -- ✅ **Auto-reconnect modes**: On disconnect, every 10/20/30 minutes -- ✅ **Strongly-typed event arguments** for all events -- ✅ **Fluent builder pattern** for easy configuration -- ✅ **Full async/await support** -- ✅ **Logging events** for debugging - ## Quick Start ```cs @@ -47,7 +37,7 @@ using VRChat.API.Realtime.Models; // Create client using builder pattern var client = new VRChatRealtimeClientBuilder() .WithAuthToken("authcookie_...") - .WithUserAgent("MyApp/1.0") + .WithApplication(name: "Example", version: "1.0.0", contact: "youremail.com") .WithAutoReconnect(AutoReconnectMode.OnDisconnect) .Build(); @@ -62,47 +52,14 @@ client.OnFriendOnline += (sender, e) => Console.WriteLine($"Friend {e.User?.DisplayName} came online!"); }; -client.OnNotificationReceived += (sender, e) => +client.OnNotification += (sender, e) => { Console.WriteLine($"Notification: {e.Notification?.Type}"); }; // Connect await client.ConnectAsync(); - -// Keep running... -Console.ReadKey(); - -// Disconnect -await client.DisconnectAsync(); -client.Dispose(); -``` - -## Configuration - -### Using Builder Pattern - -```cs -var client = new VRChatRealtimeClientBuilder() - .WithEndpoint("wss://pipeline.vrchat.cloud/") - .WithAuthToken("authcookie_...") - .WithUserAgent("MyApp/1.0") - .WithAutoReconnect(AutoReconnectMode.Every10Minutes) - .Build(); -``` - -### Using Configuration Object - -```cs -var config = new VRChatRealtimeConfiguration -{ - EndpointURL = "wss://pipeline.vrchat.cloud/", - AuthToken = "authcookie_...", - UserAgent = "MyApp/1.0", - AutoReconnectMode = AutoReconnectMode.OnDisconnect -}; - -var client = new VRChatRealtimeClient(config); +await Task.Delay(-1); ``` ## Auto-Reconnect Modes @@ -122,7 +79,7 @@ var client = new VRChatRealtimeClient(config); - `Log` - Log messages with levels (Trace, Debug, Info, Warning, Error, Critical) ### Notification Events -- `OnNotificationReceived` - Standard notification +- `OnNotification` - Standard notification - `OnResponseNotification` - Response to previous notification - `OnSeeNotification` - Mark notification as seen - `OnHideNotification` - Hide notification @@ -156,20 +113,15 @@ var client = new VRChatRealtimeClient(config); - `OnGroupMemberUpdated` - Group membership changed - `OnGroupRoleUpdated` - Group role changed -## Example Usage +## Examples -See [Example.cs](Example.cs) for complete examples including: -- Basic usage -- Custom configuration -- Auto-reconnect handling -- All event types +See the [example code](../../examples/VRChat.API.Examples.WebSocket/) for a sample codebase. ## Authentication You need a VRChat authentication cookie (`authcookie_...`) to connect to the Pipeline. You can obtain this by: 1. Using the main VRChat.API library to authenticate 2. Logging in through the VRChat website and extracting the cookie -3. Logging in through the VRChat client and extracting the cookie **Note**: Keep your auth token secure and never commit it to version control! From 9b6bc82dda959254937e5f6d2059f2b5916a500a Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 10:54:50 -0600 Subject: [PATCH 10/25] CI changes for new spec release --- .github/workflows/ci.yaml | 85 +++++++++---------- .github/workflows/realtime-ci.yml | 30 +++++++ generate.sh | 28 +++--- .../VRChat.API.Realtime.csproj | 2 +- 4 files changed, 81 insertions(+), 64 deletions(-) create mode 100644 .github/workflows/realtime-ci.yml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index afccd800..fdea36f4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,9 +1,17 @@ on: repository_dispatch: - types: [spec_release] + types: [release] workflow_dispatch: - -#on: push + inputs: + json: + description: 'Passed json from repository_dispatch' + required: true + type: string + version_postfix: + description: 'Additional string to concatenate onto the existing version before release' + required: false + type: string + default: '' name: Generate VRChat API SDK @@ -11,22 +19,25 @@ jobs: generate: runs-on: ubuntu-latest name: Generate VRChat API SDK + env: + ARTIFACT_NAME: "openapi.json" + INPUT: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload || inputs.json }} + SPEC_URL: ${{ fromJSON(github.event_name == 'repository_dispatch' && github.event.client_payload || inputs.json)['artifacts']['openapi.json'] }} + PASSED_VERSION: ${{ fromJSON(github.event_name == 'repository_dispatch' && github.event.client_payload || inputs.json)['version'] }} + VERSION_POSTPEND: ${{ github.event_name == 'workflow_dispatch' && inputs.version_postfix || '' }} steps: - - name: Install yq via apt - run: sudo apt install -y yq - - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 22 - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: 'Cache node_modules' - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: node_modules - key: ${{ runner.os }}-node-v18-${{ hashFiles('**/generate.sh') }} + key: ${{ runner.os }}-node-v22-${{ hashFiles('**/generate.sh') }} restore-keys: | - ${{ runner.os }}-node-v18 + ${{ runner.os }}-node-v22 - name: Install OpenAPI Generator CLI run: npm install @openapitools/openapi-generator-cli @@ -37,32 +48,31 @@ jobs: - name: Setup NuGet uses: NuGet/setup-nuget@v1.1.1 - - uses: actions/setup-dotnet@v3 + - uses: actions/setup-dotnet@v5 with: dotnet-version: '8.0.x' - - name: Generate SDK Client - run: bash ./generate.sh - - - name: Copy README.md into src/ - run: cp README.md src/ + - name: Download Specification + run: wget "${SPEC_URL}" '--output' "${ARTIFACT_NAME}" - name: Check version number run: | - vrchat_sdk_version=$(yq '.info.version' openapi.yaml | tr -d '"') + major=$(echo ${PASSED_VERSION} | cut -d. -f1) + minor=$(echo ${PASSED_VERSION} | cut -d. -f2) + patch=$(echo ${PASSED_VERSION} | cut -d. -f3) - major=$(echo $vrchat_sdk_version | cut -d. -f1) - minor=$(echo $vrchat_sdk_version | cut -d. -f2) - patch=$(echo $vrchat_sdk_version | cut -d. -f3) - - vrchat_sdk_version="$((major+1)).$minor.$patch" + vrchat_sdk_version="$((major+1)).${minor}.${patch}${VERSION_POSTPEND}" + echo "Version is: ${vrchat_sdk_version}" echo "vrchat_sdk_version=$vrchat_sdk_version" >> $GITHUB_ENV - - name: Print version number - run: echo ${{ env.vrchat_sdk_version }} + - name: Generate SDK Client + run: bash ./generate.sh ${ARTIFACT_NAME} ${vrchat_sdk_version} + + - name: Copy README.md into src/ + run: cp README.md src/ - - name: Delete openapi.yaml file - run: rm openapi.yaml + - name: Delete openapi.json file + run: unlink ${ARTIFACT_NAME} - name: Deploy SDK back into main branch uses: JamesIves/github-pages-deploy-action@v4 @@ -72,7 +82,7 @@ jobs: commit-message: "Upgrade .NET SDK to spec ${{ env.vrchat_sdk_version }}" - name: Publish to VRChat.API to NuGet - if: github.event_name != 'workflow_dispatch' + if: github.event_name == 'repository_dispatch' uses: pairbit/publish-nuget@v2.5.8 with: # Filepath of the project to be packaged, relative to root of repository @@ -87,7 +97,7 @@ jobs: INCLUDE_SYMBOLS: true - name: Publish to VRChat.API.Extensions.Hosting to NuGet - if: github.event_name != 'workflow_dispatch' + if: github.event_name == 'repository_dispatch' uses: pairbit/publish-nuget@v2.5.8 with: # Filepath of the project to be packaged, relative to root of repository @@ -100,18 +110,3 @@ jobs: # NUGET_SOURCE: https://api.nuget.org # Flag to toggle pushing symbols along with nuget package to the server, disabled by default INCLUDE_SYMBOLS: true - - - name: Publish to VRChat.API.Realtime to NuGet - if: github.event_name != 'workflow_dispatch' - uses: pairbit/publish-nuget@v2.5.8 - with: - # Filepath of the project to be packaged, relative to root of repository - PROJECT_FILE_PATH: wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj - # NuGet package id, used for version detection & defaults to project name - PACKAGE_NAME: VRChat.API.Realtime - # API key to authenticate with NuGet server - NUGET_KEY: ${{secrets.NUGET_KEY}} - # NuGet server uri hosting the packages, defaults to https://api.nuget.org - # NUGET_SOURCE: https://api.nuget.org - # Flag to toggle pushing symbols along with nuget package to the server, disabled by default - INCLUDE_SYMBOLS: true \ No newline at end of file diff --git a/.github/workflows/realtime-ci.yml b/.github/workflows/realtime-ci.yml new file mode 100644 index 00000000..eef1c066 --- /dev/null +++ b/.github/workflows/realtime-ci.yml @@ -0,0 +1,30 @@ +on: + workflow_dispatch: + +name: Generate VRChat API SDK + +jobs: + generate: + runs-on: ubuntu-latest + name: Build and Publish VRChat Realtime SDK + steps: + - name: Setup NuGet + uses: NuGet/setup-nuget@v1.1.1 + + - uses: actions/setup-dotnet@v5 + with: + dotnet-version: '8.0.x' + + - name: Publish to VRChat.API.Realtime to NuGet + uses: pairbit/publish-nuget@v2.5.8 + with: + # Filepath of the project to be packaged, relative to root of repository + PROJECT_FILE_PATH: wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj + # NuGet package id, used for version detection & defaults to project name + PACKAGE_NAME: VRChat.API.Realtime + # API key to authenticate with NuGet server + NUGET_KEY: ${{secrets.NUGET_KEY}} + # NuGet server uri hosting the packages, defaults to https://api.nuget.org + # NUGET_SOURCE: https://api.nuget.org + # Flag to toggle pushing symbols along with nuget package to the server, disabled by default + INCLUDE_SYMBOLS: true \ No newline at end of file diff --git a/generate.sh b/generate.sh index cb1d6e7d..b68f035c 100755 --- a/generate.sh +++ b/generate.sh @@ -1,29 +1,21 @@ -#!/bin/bash +#!/usr/bin/env bash -npm install @openapitools/openapi-generator-cli +if [ ${#} -le 1 ] +then + echo "Usage: generate.sh " >&2 + exit 1 +fi rm src docs *.nupkg *.snupkg -rf -curl https://raw.githubusercontent.com/vrchatapi/specification/gh-pages/openapi.yaml --output openapi.yaml - -SPEC_VERSION=`grep "^ version:" openapi.yaml | cut -d " " -f 4` - -vrchat_sdk_version=$(yq '.info.version' openapi.yaml | tr -d '"') - -major=$(echo $vrchat_sdk_version | cut -d. -f1) -minor=$(echo $vrchat_sdk_version | cut -d. -f2) -patch=$(echo $vrchat_sdk_version | cut -d. -f3) - -vrchat_sdk_version="$((major+1)).$minor.$patch" - ./node_modules/\@openapitools/openapi-generator-cli/main.js generate \ -g csharp \ --library httpclient \ ---additional-properties=packageGuid=1c420561-97f1-4810-ad2d-cd344d27170a,packageName=VRChat.API,packageTags=vrchat,packageVersion=$vrchat_sdk_version,targetFramework=net8.0,licenseId=MIT,equatable=true \ +--additional-properties=packageGuid=1c420561-97f1-4810-ad2d-cd344d27170a,packageName=VRChat.API,packageTags=vrchat,packageVersion="${2}",targetFramework=net8.0,licenseId=MIT,equatable=true \ --git-user-id=vrchatapi \ --git-repo-id=vrchatapi-csharp \ -o . \ --i openapi.yaml \ +-i "${1}" \ --http-user-agent="vrchatapi-csharp" rm build.sh @@ -67,7 +59,7 @@ sed -i 's/VRChat.API.Client.ClientUtils.Base64Encode(this.Configuration.Username # Fix fields in csproj sed -i 's/OpenAPI Library/VRChat API Library for .NET/' src/VRChat.API/VRChat.API.csproj sed -i 's/A library generated from a OpenAPI doc/VRChat API Library for .NET/' src/VRChat.API/VRChat.API.csproj -sed -i 's/No Copyright/Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors./' src/VRChat.API/VRChat.API.csproj +sed -i 's/No Copyright/Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors./' src/VRChat.API/VRChat.API.csproj sed -i 's/OpenAPI/VRChat API Docs Community/' src/VRChat.API/VRChat.API.csproj sed -i 's/Minor update/Automated deployment/' src/VRChat.API/VRChat.API.csproj @@ -75,7 +67,7 @@ sed -i 's/Minor update/Automated deployment/' src/VRChat.API/VRChat.API.csproj sed -i 's/false<\/GenerateAssemblyInfo>/true<\/GenerateAssemblyInfo>/' src/VRChat.API/VRChat.API.csproj # Update VRChat.API.Extensions.Hosting version -sed -i "s|[^<]*|$vrchat_sdk_version|g" wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj +sed -i "s|[^<]*|${2}|g" wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj # Add README.md to fields sed -i '/PackageTags/a \ README.md<\/PackageReadmeFile>' src/VRChat.API/VRChat.API.csproj diff --git a/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj b/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj index 5f493037..c88085ca 100644 --- a/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj +++ b/wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj @@ -12,7 +12,7 @@ VRChat Realtime WebSocket API library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API.Realtime - 2.20.5 + 1.0.0 bin\$(Configuration)\$(TargetFramework)\VRChat.API.Realtime.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git From 93d83a7da3819b375d2ac58902478a8aad1259c1 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 10:59:14 -0600 Subject: [PATCH 11/25] testt --- .github/workflows/realtime-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/realtime-ci.yml b/.github/workflows/realtime-ci.yml index eef1c066..eb1b588b 100644 --- a/.github/workflows/realtime-ci.yml +++ b/.github/workflows/realtime-ci.yml @@ -1,7 +1,7 @@ on: workflow_dispatch: -name: Generate VRChat API SDK +name: Build and Publish VRChat Realtime SDK jobs: generate: From 2250204c968c9d11b00c3070eb9061a0907280d0 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 10:59:48 -0600 Subject: [PATCH 12/25] ci fixes --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fdea36f4..df0c56c8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -53,7 +53,7 @@ jobs: dotnet-version: '8.0.x' - name: Download Specification - run: wget "${SPEC_URL}" '--output' "${ARTIFACT_NAME}" + run: wget "${SPEC_URL}" '--output-file' "${ARTIFACT_NAME}" - name: Check version number run: | From b0267c67ae4903997777156e2e315b745c90ea48 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:01:43 -0600 Subject: [PATCH 13/25] another fix to ci --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index df0c56c8..414458a5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,9 +20,9 @@ jobs: runs-on: ubuntu-latest name: Generate VRChat API SDK env: - ARTIFACT_NAME: "openapi.json" + ARTIFACT_NAME: "openapi.yaml" INPUT: ${{ github.event_name == 'repository_dispatch' && github.event.client_payload || inputs.json }} - SPEC_URL: ${{ fromJSON(github.event_name == 'repository_dispatch' && github.event.client_payload || inputs.json)['artifacts']['openapi.json'] }} + SPEC_URL: ${{ fromJSON(github.event_name == 'repository_dispatch' && github.event.client_payload || inputs.json)['artifacts']['openapi.yaml'] }} PASSED_VERSION: ${{ fromJSON(github.event_name == 'repository_dispatch' && github.event.client_payload || inputs.json)['version'] }} VERSION_POSTPEND: ${{ github.event_name == 'workflow_dispatch' && inputs.version_postfix || '' }} steps: From fc805939a6c9b1273840b542fdd14fae35e86624 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:07:23 -0600 Subject: [PATCH 14/25] try one more time --- .github/workflows/ci.yaml | 2 +- generate.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 414458a5..2bdbe614 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -66,7 +66,7 @@ jobs: echo "vrchat_sdk_version=$vrchat_sdk_version" >> $GITHUB_ENV - name: Generate SDK Client - run: bash ./generate.sh ${ARTIFACT_NAME} ${vrchat_sdk_version} + run: bash ./generate.sh "${ARTIFACT_NAME}" "${vrchat_sdk_version}" - name: Copy README.md into src/ run: cp README.md src/ diff --git a/generate.sh b/generate.sh index b68f035c..21f7e835 100755 --- a/generate.sh +++ b/generate.sh @@ -2,7 +2,7 @@ if [ ${#} -le 1 ] then - echo "Usage: generate.sh " >&2 + echo "Usage: generate.sh " >&2 exit 1 fi From aa3f168280e8d7b94da1953aaed20cd9da289071 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:08:58 -0600 Subject: [PATCH 15/25] test --- .github/workflows/ci.yaml | 6 +++--- generate.sh | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2bdbe614..da2480b4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,16 +28,16 @@ jobs: steps: - uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 18 - uses: actions/checkout@v4 - name: 'Cache node_modules' uses: actions/cache@v4 with: path: node_modules - key: ${{ runner.os }}-node-v22-${{ hashFiles('**/generate.sh') }} + key: ${{ runner.os }}-node-v18-${{ hashFiles('**/generate.sh') }} restore-keys: | - ${{ runner.os }}-node-v22 + ${{ runner.os }}-node-v18 - name: Install OpenAPI Generator CLI run: npm install @openapitools/openapi-generator-cli diff --git a/generate.sh b/generate.sh index 21f7e835..942bcb67 100755 --- a/generate.sh +++ b/generate.sh @@ -6,6 +6,9 @@ then exit 1 fi +echo "Generating SDK for version ${2}" +echo "Artifact name: ${1}" + rm src docs *.nupkg *.snupkg -rf ./node_modules/\@openapitools/openapi-generator-cli/main.js generate \ From 218d36c00677cc9e50cb7f7a44c37a9818001c40 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:11:14 -0600 Subject: [PATCH 16/25] fix wget --- .github/workflows/ci.yaml | 8 ++++---- generate.sh | 3 --- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index da2480b4..d9b72f2e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,16 +28,16 @@ jobs: steps: - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 22 - uses: actions/checkout@v4 - name: 'Cache node_modules' uses: actions/cache@v4 with: path: node_modules - key: ${{ runner.os }}-node-v18-${{ hashFiles('**/generate.sh') }} + key: ${{ runner.os }}-node-v22-${{ hashFiles('**/generate.sh') }} restore-keys: | - ${{ runner.os }}-node-v18 + ${{ runner.os }}-node-v22 - name: Install OpenAPI Generator CLI run: npm install @openapitools/openapi-generator-cli @@ -53,7 +53,7 @@ jobs: dotnet-version: '8.0.x' - name: Download Specification - run: wget "${SPEC_URL}" '--output-file' "${ARTIFACT_NAME}" + run: wget "${SPEC_URL}" '--output-document' "${ARTIFACT_NAME}" - name: Check version number run: | diff --git a/generate.sh b/generate.sh index 942bcb67..21f7e835 100755 --- a/generate.sh +++ b/generate.sh @@ -6,9 +6,6 @@ then exit 1 fi -echo "Generating SDK for version ${2}" -echo "Artifact name: ${1}" - rm src docs *.nupkg *.snupkg -rf ./node_modules/\@openapitools/openapi-generator-cli/main.js generate \ From eab9a2f4062cbd13b11a6875e5807b8b1f691741 Mon Sep 17 00:00:00 2001 From: binn Date: Fri, 5 Dec 2025 17:11:54 +0000 Subject: [PATCH 17/25] Upgrade .NET SDK to spec 2.20.7-nightly --- .openapi-generator/FILES | 30 +- src/README.md | 8 + src/VRChat.API/Api/AuthenticationApi.cs | 2 +- src/VRChat.API/Api/AvatarsApi.cs | 2 +- src/VRChat.API/Api/CalendarApi.cs | 331 ++++++- src/VRChat.API/Api/EconomyApi.cs | 597 ++++++++++++- src/VRChat.API/Api/FavoritesApi.cs | 2 +- src/VRChat.API/Api/FilesApi.cs | 58 +- src/VRChat.API/Api/FriendsApi.cs | 193 ++++- src/VRChat.API/Api/GroupsApi.cs | 18 +- src/VRChat.API/Api/InstancesApi.cs | 2 +- src/VRChat.API/Api/InventoryApi.cs | 519 ++++++++++- src/VRChat.API/Api/InviteApi.cs | 170 ++-- src/VRChat.API/Api/JamsApi.cs | 2 +- src/VRChat.API/Api/MiscellaneousApi.cs | 2 +- src/VRChat.API/Api/NotificationsApi.cs | 2 +- src/VRChat.API/Api/PlayermoderationApi.cs | 38 +- src/VRChat.API/Api/PrintsApi.cs | 6 +- src/VRChat.API/Api/PropsApi.cs | 2 +- src/VRChat.API/Api/UsersApi.cs | 579 ++++++++++++- src/VRChat.API/Api/WorldsApi.cs | 2 +- src/VRChat.API/Client/ApiClient.cs | 2 +- src/VRChat.API/Client/ApiException.cs | 2 +- src/VRChat.API/Client/ApiResponse.cs | 2 +- src/VRChat.API/Client/ClientUtils.cs | 2 +- src/VRChat.API/Client/Configuration.cs | 8 +- src/VRChat.API/Client/ExceptionFactory.cs | 2 +- src/VRChat.API/Client/FileParameter.cs | 2 +- src/VRChat.API/Client/GlobalConfiguration.cs | 2 +- src/VRChat.API/Client/IApiAccessor.cs | 2 +- src/VRChat.API/Client/IAsynchronousClient.cs | 2 +- .../Client/IReadableConfiguration.cs | 2 +- src/VRChat.API/Client/ISynchronousClient.cs | 2 +- src/VRChat.API/Client/Multimap.cs | 2 +- src/VRChat.API/Client/OpenAPIDateConverter.cs | 2 +- src/VRChat.API/Client/RequestOptions.cs | 2 +- src/VRChat.API/Client/RetryConfiguration.cs | 2 +- .../Client/WebRequestPathBuilder.cs | 2 +- src/VRChat.API/Model/APIConfig.cs | 322 +++---- .../Model/APIConfigAccessLogsUrls.cs | 2 +- src/VRChat.API/Model/APIConfigAnnouncement.cs | 2 +- .../Model/APIConfigAvatarPerfLimiter.cs | 2 +- src/VRChat.API/Model/APIConfigConstants.cs | 2 +- .../Model/APIConfigConstantsGROUPS.cs | 2 +- .../Model/APIConfigConstantsINSTANCE.cs | 2 +- ...nfigConstantsINSTANCEPOPULATIONBRACKETS.cs | 2 +- ...stantsINSTANCEPOPULATIONBRACKETSCROWDED.cs | 2 +- ...gConstantsINSTANCEPOPULATIONBRACKETSFEW.cs | 2 +- ...ConstantsINSTANCEPOPULATIONBRACKETSMANY.cs | 2 +- .../Model/APIConfigConstantsLANGUAGE.cs | 2 +- .../Model/APIConfigDownloadURLList.cs | 64 +- src/VRChat.API/Model/APIConfigEvents.cs | 2 +- .../APIConfigMinSupportedClientBuildNumber.cs | 2 +- .../Model/APIConfigOfflineAnalysis.cs | 2 +- .../Model/APIConfigReportCategories.cs | 38 +- .../Model/APIConfigReportOptions.cs | 2 +- .../Model/APIConfigReportOptionsAvatar.cs | 2 +- .../Model/APIConfigReportOptionsGroup.cs | 2 +- .../Model/APIConfigReportOptionsUser.cs | 2 +- .../Model/APIConfigReportOptionsWorld.cs | 2 +- .../Model/APIConfigReportReasons.cs | 2 +- src/VRChat.API/Model/APIHealth.cs | 62 +- src/VRChat.API/Model/AbstractOpenAPISchema.cs | 2 +- src/VRChat.API/Model/AccountDeletionLog.cs | 58 +- src/VRChat.API/Model/AddFavoriteRequest.cs | 20 +- .../Model/AddGroupGalleryImageRequest.cs | 2 +- src/VRChat.API/Model/AdminAssetBundle.cs | 2 +- src/VRChat.API/Model/AdminUnityPackage.cs | 2 +- src/VRChat.API/Model/AgeVerificationStatus.cs | 18 +- src/VRChat.API/Model/Avatar.cs | 2 +- src/VRChat.API/Model/AvatarModeration.cs | 2 +- .../Model/AvatarModerationCreated.cs | 2 +- src/VRChat.API/Model/AvatarModerationType.cs | 2 +- src/VRChat.API/Model/AvatarPerformance.cs | 2 +- .../Model/AvatarPublishedListingsInner.cs | 2 +- src/VRChat.API/Model/AvatarStyle.cs | 2 +- src/VRChat.API/Model/AvatarStyles.cs | 2 +- .../Model/AvatarUnityPackageUrlObject.cs | 2 +- src/VRChat.API/Model/Badge.cs | 2 +- src/VRChat.API/Model/Balance.cs | 2 +- src/VRChat.API/Model/BanGroupMemberRequest.cs | 2 +- src/VRChat.API/Model/BoopRequest.cs | 298 +++++++ src/VRChat.API/Model/CalendarEvent.cs | 34 +- .../Model/CalendarEventDiscovery.cs | 164 ++++ .../Model/CalendarEventDiscoveryInclusion.cs | 54 ++ .../Model/CalendarEventDiscoveryScope.cs | 54 ++ .../Model/CalendarEventUserInterest.cs | 2 +- src/VRChat.API/Model/ChangeUserTagsRequest.cs | 2 +- .../Model/CreateAvatarModerationRequest.cs | 20 +- src/VRChat.API/Model/CreateAvatarRequest.cs | 229 +++-- .../Model/CreateCalendarEventRequest.cs | 334 +++---- src/VRChat.API/Model/CreateFileRequest.cs | 70 +- .../Model/CreateFileVersionRequest.cs | 76 +- .../Model/CreateGroupAnnouncementRequest.cs | 94 +- .../Model/CreateGroupGalleryRequest.cs | 118 +-- .../Model/CreateGroupInviteRequest.cs | 30 +- .../Model/CreateGroupPostRequest.cs | 136 +-- src/VRChat.API/Model/CreateGroupRequest.cs | 122 +-- .../Model/CreateGroupRoleRequest.cs | 68 +- src/VRChat.API/Model/CreateInstanceRequest.cs | 284 +++--- .../Model/CreatePermissionRequest.cs | 161 ---- src/VRChat.API/Model/CreateWorldRequest.cs | 2 +- src/VRChat.API/Model/CurrentUser.cs | 340 ++++---- .../Model/CurrentUserPlatformHistoryInner.cs | 2 +- src/VRChat.API/Model/CurrentUserPresence.cs | 40 +- src/VRChat.API/Model/DeveloperType.cs | 26 +- src/VRChat.API/Model/Disable2FAResult.cs | 2 +- src/VRChat.API/Model/DiscordDetails.cs | 2 +- src/VRChat.API/Model/DynamicContentRow.cs | 2 +- src/VRChat.API/Model/EconomyAccount.cs | 2 +- .../Model/EquipInventoryItemRequest.cs | 130 +++ src/VRChat.API/Model/Error.cs | 2 +- src/VRChat.API/Model/Favorite.cs | 2 +- src/VRChat.API/Model/FavoriteGroup.cs | 2 +- src/VRChat.API/Model/FavoriteGroupLimits.cs | 2 +- .../Model/FavoriteGroupVisibility.cs | 14 +- src/VRChat.API/Model/FavoriteLimits.cs | 2 +- src/VRChat.API/Model/FavoriteType.cs | 14 +- src/VRChat.API/Model/FavoritedWorld.cs | 186 ++-- src/VRChat.API/Model/Feedback.cs | 2 +- src/VRChat.API/Model/File.cs | 44 +- src/VRChat.API/Model/FileAnalysis.cs | 2 +- .../Model/FileAnalysisAvatarStats.cs | 2 +- src/VRChat.API/Model/FileData.cs | 2 +- src/VRChat.API/Model/FileStatus.cs | 20 +- src/VRChat.API/Model/FileUploadURL.cs | 2 +- src/VRChat.API/Model/FileVersion.cs | 2 +- .../Model/FileVersionUploadStatus.cs | 120 +-- .../Model/FinishFileDataUploadRequest.cs | 70 +- .../Model/FollowCalendarEventRequest.cs | 2 +- src/VRChat.API/Model/FriendStatus.cs | 2 +- .../Model/GetGroupPosts200Response.cs | 2 +- .../Model/GetUserGroupInstances200Response.cs | 2 +- src/VRChat.API/Model/Group.cs | 554 ++++++------ src/VRChat.API/Model/GroupAccessType.cs | 14 +- src/VRChat.API/Model/GroupAnnouncement.cs | 148 ++-- src/VRChat.API/Model/GroupAuditLogEntry.cs | 200 ++--- src/VRChat.API/Model/GroupGallery.cs | 172 ++-- src/VRChat.API/Model/GroupGalleryImage.cs | 212 ++--- src/VRChat.API/Model/GroupInstance.cs | 32 +- .../Model/GroupJoinRequestAction.cs | 2 +- src/VRChat.API/Model/GroupJoinState.cs | 14 +- src/VRChat.API/Model/GroupLimitedMember.cs | 304 +++---- src/VRChat.API/Model/GroupMember.cs | 322 +++---- .../Model/GroupMemberLimitedUser.cs | 130 +-- src/VRChat.API/Model/GroupMemberStatus.cs | 32 +- src/VRChat.API/Model/GroupMyMember.cs | 366 ++++---- src/VRChat.API/Model/GroupPermission.cs | 56 +- src/VRChat.API/Model/GroupPermissions.cs | 66 +- src/VRChat.API/Model/GroupPost.cs | 210 ++--- src/VRChat.API/Model/GroupPostVisibility.cs | 2 +- src/VRChat.API/Model/GroupPrivacy.cs | 2 +- src/VRChat.API/Model/GroupRole.cs | 182 ++-- src/VRChat.API/Model/GroupRoleTemplate.cs | 2 +- .../Model/GroupRoleTemplateValues.cs | 2 +- .../Model/GroupRoleTemplateValuesRoles.cs | 40 +- src/VRChat.API/Model/GroupSearchSort.cs | 2 +- src/VRChat.API/Model/GroupUserVisibility.cs | 14 +- src/VRChat.API/Model/InfoPush.cs | 220 ++--- src/VRChat.API/Model/InfoPushData.cs | 40 +- src/VRChat.API/Model/InfoPushDataArticle.cs | 2 +- .../Model/InfoPushDataArticleContent.cs | 40 +- src/VRChat.API/Model/InfoPushDataClickable.cs | 42 +- src/VRChat.API/Model/Instance.cs | 492 +++++------ .../Model/InstanceContentSettings.cs | 32 +- src/VRChat.API/Model/InstancePlatforms.cs | 2 +- src/VRChat.API/Model/InstanceRegion.cs | 32 +- .../Model/InstanceShortNameResponse.cs | 2 +- src/VRChat.API/Model/InstanceType.cs | 26 +- src/VRChat.API/Model/Inventory.cs | 2 +- .../Model/InventoryConsumptionResults.cs | 178 ++++ .../Model/InventoryDefaultAttributesValue.cs | 2 +- ...nventoryDefaultAttributesValueValidator.cs | 2 +- src/VRChat.API/Model/InventoryDrop.cs | 2 +- src/VRChat.API/Model/InventoryEquipSlot.cs | 10 +- src/VRChat.API/Model/InventoryFlag.cs | 38 +- src/VRChat.API/Model/InventoryItem.cs | 2 +- src/VRChat.API/Model/InventoryItemType.cs | 32 +- src/VRChat.API/Model/InventoryMetadata.cs | 44 +- .../Model/InventoryNotificationDetails.cs | 2 +- src/VRChat.API/Model/InventorySpawn.cs | 2 +- src/VRChat.API/Model/InventoryTemplate.cs | 2 +- .../Model/InventoryUserAttributes.cs | 2 +- src/VRChat.API/Model/InviteMessage.cs | 2 +- src/VRChat.API/Model/InviteMessageType.cs | 18 +- src/VRChat.API/Model/InviteRequest.cs | 2 +- src/VRChat.API/Model/InviteResponse.cs | 2 +- src/VRChat.API/Model/Jam.cs | 2 +- src/VRChat.API/Model/JamStateChangeDates.cs | 2 +- src/VRChat.API/Model/License.cs | 44 +- src/VRChat.API/Model/LicenseAction.cs | 14 +- src/VRChat.API/Model/LicenseGroup.cs | 96 +-- src/VRChat.API/Model/LicenseType.cs | 2 +- src/VRChat.API/Model/LimitedGroup.cs | 334 +++---- src/VRChat.API/Model/LimitedUnityPackage.cs | 2 +- src/VRChat.API/Model/LimitedUserFriend.cs | 184 ++-- src/VRChat.API/Model/LimitedUserGroups.cs | 312 +++---- src/VRChat.API/Model/LimitedUserInstance.cs | 120 +-- src/VRChat.API/Model/LimitedUserSearch.cs | 50 +- src/VRChat.API/Model/LimitedWorld.cs | 110 +-- src/VRChat.API/Model/MIMEType.cs | 86 +- src/VRChat.API/Model/ModerateUserRequest.cs | 2 +- src/VRChat.API/Model/MutualFriend.cs | 334 +++++++ ...{UpdatePermissionRequest.cs => Mutuals.cs} | 87 +- src/VRChat.API/Model/Notification.cs | 36 +- .../Model/NotificationDetailInvite.cs | 2 +- .../Model/NotificationDetailInviteResponse.cs | 2 +- .../Model/NotificationDetailRequestInvite.cs | 2 +- ...NotificationDetailRequestInviteResponse.cs | 2 +- .../Model/NotificationDetailVoteToKick.cs | 2 +- src/VRChat.API/Model/NotificationType.cs | 22 +- src/VRChat.API/Model/OkStatus.cs | 2 +- src/VRChat.API/Model/OkStatus2.cs | 2 +- src/VRChat.API/Model/OrderOption.cs | 2 +- src/VRChat.API/Model/OrderOptionShort.cs | 48 ++ .../Model/PaginatedCalendarEventList.cs | 36 +- .../Model/PaginatedGroupAuditLogEntryList.cs | 34 +- src/VRChat.API/Model/PastDisplayName.cs | 2 +- src/VRChat.API/Model/Pending2FAResult.cs | 2 +- .../Model/PerformanceLimiterInfo.cs | 2 +- src/VRChat.API/Model/PerformanceRatings.cs | 20 +- src/VRChat.API/Model/Permission.cs | 108 +-- src/VRChat.API/Model/PlatformBuildInfo.cs | 2 +- src/VRChat.API/Model/PlayerModeration.cs | 2 +- src/VRChat.API/Model/PlayerModerationType.cs | 44 +- src/VRChat.API/Model/Print.cs | 2 +- src/VRChat.API/Model/PrintFiles.cs | 2 +- src/VRChat.API/Model/Product.cs | 2 +- src/VRChat.API/Model/ProductListing.cs | 2 +- src/VRChat.API/Model/ProductListingType.cs | 16 +- src/VRChat.API/Model/ProductListingVariant.cs | 2 +- src/VRChat.API/Model/ProductPurchase.cs | 816 ++++++++++++++++++ .../Model/ProductPurchasePurchaseContext.cs | 132 +++ src/VRChat.API/Model/ProductType.cs | 14 +- src/VRChat.API/Model/Prop.cs | 2 +- src/VRChat.API/Model/PropUnityPackage.cs | 50 +- .../Model/PurchaseProductListingRequest.cs | 188 ++++ src/VRChat.API/Model/Region.cs | 44 +- .../Model/RegisterUserAccountRequest.cs | 218 ++--- src/VRChat.API/Model/ReleaseStatus.cs | 26 +- src/VRChat.API/Model/ReportCategory.cs | 40 +- src/VRChat.API/Model/ReportReason.cs | 2 +- src/VRChat.API/Model/RepresentedGroup.cs | 236 ++--- src/VRChat.API/Model/RequestInviteRequest.cs | 2 +- .../Model/RespondGroupJoinRequest.cs | 2 +- src/VRChat.API/Model/Response.cs | 2 +- src/VRChat.API/Model/SentNotification.cs | 4 +- src/VRChat.API/Model/ServiceQueueStats.cs | 2 +- src/VRChat.API/Model/ServiceStatus.cs | 2 +- .../Model/ShareInventoryItemDirectRequest.cs | 2 +- src/VRChat.API/Model/SortOption.cs | 110 +-- .../Model/SortOptionProductPurchase.cs | 42 + src/VRChat.API/Model/Store.cs | 200 ++--- src/VRChat.API/Model/StoreShelf.cs | 2 +- src/VRChat.API/Model/StoreType.cs | 18 +- src/VRChat.API/Model/StoreView.cs | 26 +- src/VRChat.API/Model/Submission.cs | 2 +- src/VRChat.API/Model/Subscription.cs | 224 ++--- src/VRChat.API/Model/SubscriptionPeriod.cs | 24 +- src/VRChat.API/Model/Success.cs | 2 +- src/VRChat.API/Model/SuccessFlag.cs | 2 +- src/VRChat.API/Model/TiliaStatus.cs | 40 +- src/VRChat.API/Model/TiliaTOS.cs | 2 +- src/VRChat.API/Model/TokenBundle.cs | 190 ++-- src/VRChat.API/Model/Transaction.cs | 248 +++--- src/VRChat.API/Model/TransactionAgreement.cs | 432 +++++----- src/VRChat.API/Model/TransactionStatus.cs | 14 +- src/VRChat.API/Model/TransactionSteamInfo.cs | 92 +- .../Model/TransactionSteamWalletInfo.cs | 50 +- src/VRChat.API/Model/TwoFactorAuthCode.cs | 2 +- src/VRChat.API/Model/TwoFactorEmailCode.cs | 2 +- .../Model/TwoFactorRecoveryCodes.cs | 42 +- .../Model/TwoFactorRecoveryCodesOtpInner.cs | 2 +- src/VRChat.API/Model/UnityPackage.cs | 154 ++-- src/VRChat.API/Model/UpdateAvatarRequest.cs | 149 ++-- .../Model/UpdateCalendarEventRequest.cs | 292 +++---- .../Model/UpdateFavoriteGroupRequest.cs | 20 +- .../Model/UpdateGroupGalleryRequest.cs | 120 +-- .../Model/UpdateGroupMemberRequest.cs | 20 +- .../Model/UpdateGroupRepresentationRequest.cs | 2 +- src/VRChat.API/Model/UpdateGroupRequest.cs | 134 +-- .../Model/UpdateGroupRoleRequest.cs | 62 +- .../Model/UpdateInventoryItemRequest.cs | 2 +- .../Model/UpdateInviteMessageRequest.cs | 2 +- src/VRChat.API/Model/UpdateTiliaTOSRequest.cs | 2 +- .../Model/UpdateUserBadgeRequest.cs | 2 +- src/VRChat.API/Model/UpdateUserNoteRequest.cs | 50 +- src/VRChat.API/Model/UpdateUserRequest.cs | 328 +++---- src/VRChat.API/Model/UpdateWorldRequest.cs | 2 +- src/VRChat.API/Model/User.cs | 50 +- src/VRChat.API/Model/UserCreditsEligible.cs | 2 +- src/VRChat.API/Model/UserExists.cs | 32 +- src/VRChat.API/Model/UserNote.cs | 2 +- src/VRChat.API/Model/UserNoteTargetUser.cs | 46 +- src/VRChat.API/Model/UserState.cs | 14 +- src/VRChat.API/Model/UserStatus.cs | 18 +- src/VRChat.API/Model/UserSubscription.cs | 366 ++++---- .../Model/UserSubscriptionEligible.cs | 2 +- .../Model/Verify2FAEmailCodeResult.cs | 2 +- src/VRChat.API/Model/Verify2FAResult.cs | 30 +- src/VRChat.API/Model/VerifyAuthTokenResult.cs | 2 +- src/VRChat.API/Model/World.cs | 76 +- src/VRChat.API/Model/WorldMetadata.cs | 2 +- src/VRChat.API/Model/WorldPublishStatus.cs | 2 +- src/VRChat.API/README.md | 8 + src/VRChat.API/VRChat.API.csproj | 4 +- .../VRChat.API.Extensions.Hosting.csproj | 2 +- 307 files changed, 11631 insertions(+), 7112 deletions(-) create mode 100644 src/VRChat.API/Model/BoopRequest.cs create mode 100644 src/VRChat.API/Model/CalendarEventDiscovery.cs create mode 100644 src/VRChat.API/Model/CalendarEventDiscoveryInclusion.cs create mode 100644 src/VRChat.API/Model/CalendarEventDiscoveryScope.cs delete mode 100644 src/VRChat.API/Model/CreatePermissionRequest.cs create mode 100644 src/VRChat.API/Model/EquipInventoryItemRequest.cs create mode 100644 src/VRChat.API/Model/InventoryConsumptionResults.cs create mode 100644 src/VRChat.API/Model/MutualFriend.cs rename src/VRChat.API/Model/{UpdatePermissionRequest.cs => Mutuals.cs} (52%) create mode 100644 src/VRChat.API/Model/OrderOptionShort.cs create mode 100644 src/VRChat.API/Model/ProductPurchase.cs create mode 100644 src/VRChat.API/Model/ProductPurchasePurchaseContext.cs create mode 100644 src/VRChat.API/Model/PurchaseProductListingRequest.cs create mode 100644 src/VRChat.API/Model/SortOptionProductPurchase.cs diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 7e58df1c..14e768f2 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -45,8 +45,12 @@ docs/AvatarsApi.md docs/Badge.md docs/Balance.md docs/BanGroupMemberRequest.md +docs/BoopRequest.md docs/CalendarApi.md docs/CalendarEvent.md +docs/CalendarEventDiscovery.md +docs/CalendarEventDiscoveryInclusion.md +docs/CalendarEventDiscoveryScope.md docs/CalendarEventUserInterest.md docs/ChangeUserTagsRequest.md docs/CreateAvatarModerationRequest.md @@ -61,7 +65,6 @@ docs/CreateGroupPostRequest.md docs/CreateGroupRequest.md docs/CreateGroupRoleRequest.md docs/CreateInstanceRequest.md -docs/CreatePermissionRequest.md docs/CreateWorldRequest.md docs/CurrentUser.md docs/CurrentUserPlatformHistoryInner.md @@ -72,6 +75,7 @@ docs/DiscordDetails.md docs/DynamicContentRow.md docs/EconomyAccount.md docs/EconomyApi.md +docs/EquipInventoryItemRequest.md docs/Error.md docs/Favorite.md docs/FavoriteGroup.md @@ -137,6 +141,7 @@ docs/InstanceType.md docs/InstancesApi.md docs/Inventory.md docs/InventoryApi.md +docs/InventoryConsumptionResults.md docs/InventoryDefaultAttributesValue.md docs/InventoryDefaultAttributesValueValidator.md docs/InventoryDrop.md @@ -171,6 +176,8 @@ docs/LimitedWorld.md docs/MIMEType.md docs/MiscellaneousApi.md docs/ModerateUserRequest.md +docs/MutualFriend.md +docs/Mutuals.md docs/Notification.md docs/NotificationDetailInvite.md docs/NotificationDetailInviteResponse.md @@ -182,6 +189,7 @@ docs/NotificationsApi.md docs/OkStatus.md docs/OkStatus2.md docs/OrderOption.md +docs/OrderOptionShort.md docs/PaginatedCalendarEventList.md docs/PaginatedGroupAuditLogEntryList.md docs/PastDisplayName.md @@ -200,10 +208,13 @@ docs/Product.md docs/ProductListing.md docs/ProductListingType.md docs/ProductListingVariant.md +docs/ProductPurchase.md +docs/ProductPurchasePurchaseContext.md docs/ProductType.md docs/Prop.md docs/PropUnityPackage.md docs/PropsApi.md +docs/PurchaseProductListingRequest.md docs/Region.md docs/RegisterUserAccountRequest.md docs/ReleaseStatus.md @@ -218,6 +229,7 @@ docs/ServiceQueueStats.md docs/ServiceStatus.md docs/ShareInventoryItemDirectRequest.md docs/SortOption.md +docs/SortOptionProductPurchase.md docs/Store.md docs/StoreShelf.md docs/StoreType.md @@ -250,7 +262,6 @@ docs/UpdateGroupRequest.md docs/UpdateGroupRoleRequest.md docs/UpdateInventoryItemRequest.md docs/UpdateInviteMessageRequest.md -docs/UpdatePermissionRequest.md docs/UpdateTiliaTOSRequest.md docs/UpdateUserBadgeRequest.md docs/UpdateUserNoteRequest.md @@ -353,7 +364,11 @@ src/VRChat.API/Model/AvatarUnityPackageUrlObject.cs src/VRChat.API/Model/Badge.cs src/VRChat.API/Model/Balance.cs src/VRChat.API/Model/BanGroupMemberRequest.cs +src/VRChat.API/Model/BoopRequest.cs src/VRChat.API/Model/CalendarEvent.cs +src/VRChat.API/Model/CalendarEventDiscovery.cs +src/VRChat.API/Model/CalendarEventDiscoveryInclusion.cs +src/VRChat.API/Model/CalendarEventDiscoveryScope.cs src/VRChat.API/Model/CalendarEventUserInterest.cs src/VRChat.API/Model/ChangeUserTagsRequest.cs src/VRChat.API/Model/CreateAvatarModerationRequest.cs @@ -368,7 +383,6 @@ src/VRChat.API/Model/CreateGroupPostRequest.cs src/VRChat.API/Model/CreateGroupRequest.cs src/VRChat.API/Model/CreateGroupRoleRequest.cs src/VRChat.API/Model/CreateInstanceRequest.cs -src/VRChat.API/Model/CreatePermissionRequest.cs src/VRChat.API/Model/CreateWorldRequest.cs src/VRChat.API/Model/CurrentUser.cs src/VRChat.API/Model/CurrentUserPlatformHistoryInner.cs @@ -378,6 +392,7 @@ src/VRChat.API/Model/Disable2FAResult.cs src/VRChat.API/Model/DiscordDetails.cs src/VRChat.API/Model/DynamicContentRow.cs src/VRChat.API/Model/EconomyAccount.cs +src/VRChat.API/Model/EquipInventoryItemRequest.cs src/VRChat.API/Model/Error.cs src/VRChat.API/Model/Favorite.cs src/VRChat.API/Model/FavoriteGroup.cs @@ -437,6 +452,7 @@ src/VRChat.API/Model/InstanceRegion.cs src/VRChat.API/Model/InstanceShortNameResponse.cs src/VRChat.API/Model/InstanceType.cs src/VRChat.API/Model/Inventory.cs +src/VRChat.API/Model/InventoryConsumptionResults.cs src/VRChat.API/Model/InventoryDefaultAttributesValue.cs src/VRChat.API/Model/InventoryDefaultAttributesValueValidator.cs src/VRChat.API/Model/InventoryDrop.cs @@ -468,6 +484,8 @@ src/VRChat.API/Model/LimitedUserSearch.cs src/VRChat.API/Model/LimitedWorld.cs src/VRChat.API/Model/MIMEType.cs src/VRChat.API/Model/ModerateUserRequest.cs +src/VRChat.API/Model/MutualFriend.cs +src/VRChat.API/Model/Mutuals.cs src/VRChat.API/Model/Notification.cs src/VRChat.API/Model/NotificationDetailInvite.cs src/VRChat.API/Model/NotificationDetailInviteResponse.cs @@ -478,6 +496,7 @@ src/VRChat.API/Model/NotificationType.cs src/VRChat.API/Model/OkStatus.cs src/VRChat.API/Model/OkStatus2.cs src/VRChat.API/Model/OrderOption.cs +src/VRChat.API/Model/OrderOptionShort.cs src/VRChat.API/Model/PaginatedCalendarEventList.cs src/VRChat.API/Model/PaginatedGroupAuditLogEntryList.cs src/VRChat.API/Model/PastDisplayName.cs @@ -494,9 +513,12 @@ src/VRChat.API/Model/Product.cs src/VRChat.API/Model/ProductListing.cs src/VRChat.API/Model/ProductListingType.cs src/VRChat.API/Model/ProductListingVariant.cs +src/VRChat.API/Model/ProductPurchase.cs +src/VRChat.API/Model/ProductPurchasePurchaseContext.cs src/VRChat.API/Model/ProductType.cs src/VRChat.API/Model/Prop.cs src/VRChat.API/Model/PropUnityPackage.cs +src/VRChat.API/Model/PurchaseProductListingRequest.cs src/VRChat.API/Model/Region.cs src/VRChat.API/Model/RegisterUserAccountRequest.cs src/VRChat.API/Model/ReleaseStatus.cs @@ -511,6 +533,7 @@ src/VRChat.API/Model/ServiceQueueStats.cs src/VRChat.API/Model/ServiceStatus.cs src/VRChat.API/Model/ShareInventoryItemDirectRequest.cs src/VRChat.API/Model/SortOption.cs +src/VRChat.API/Model/SortOptionProductPurchase.cs src/VRChat.API/Model/Store.cs src/VRChat.API/Model/StoreShelf.cs src/VRChat.API/Model/StoreType.cs @@ -543,7 +566,6 @@ src/VRChat.API/Model/UpdateGroupRequest.cs src/VRChat.API/Model/UpdateGroupRoleRequest.cs src/VRChat.API/Model/UpdateInventoryItemRequest.cs src/VRChat.API/Model/UpdateInviteMessageRequest.cs -src/VRChat.API/Model/UpdatePermissionRequest.cs src/VRChat.API/Model/UpdateTiliaTOSRequest.cs src/VRChat.API/Model/UpdateUserBadgeRequest.cs src/VRChat.API/Model/UpdateUserNoteRequest.cs diff --git a/src/README.md b/src/README.md index 9e22bca6..2e8c7b7e 100644 --- a/src/README.md +++ b/src/README.md @@ -133,8 +133,16 @@ public class MyController : Controller Console app (login): see [VRChat.API.Examples.Console](examples/VRChat.API.Examples.Console/) +Console app (WebSocket): see [VRChat.API.Examples.WebSocket](examples/VRChat.API.Examples.WebSocket/) + ASP.NET Core (depedency injection): see [VRChat.API.Examples.AspNetCore](examples/VRChat.API.Examples.AspNetCore/) +# WebSockets / VRChat Pipeline + +You can use the `VRChat.API.Realtime` library to connect to VRChat's WebSocket and listen to events. + +The documentation for it is available at [WEBSOCKET.md](WEBSOCKET.md). + # Manually authenticating Sometimes, we don't have two-factor authentication set up on our accounts. While it's **reccomended** for most bots or apps, your app may be a WPF/WinForms application that requires user credential input. In these cases, the `LoginAsync()` methods on `IVRChat` won't work, because they only support token-based two-factor authentication. diff --git a/src/VRChat.API/Api/AuthenticationApi.cs b/src/VRChat.API/Api/AuthenticationApi.cs index f8762065..d02b821c 100644 --- a/src/VRChat.API/Api/AuthenticationApi.cs +++ b/src/VRChat.API/Api/AuthenticationApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/AvatarsApi.cs b/src/VRChat.API/Api/AvatarsApi.cs index 35017923..f93554a4 100644 --- a/src/VRChat.API/Api/AvatarsApi.cs +++ b/src/VRChat.API/Api/AvatarsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/CalendarApi.cs b/src/VRChat.API/Api/CalendarApi.cs index f33c6d18..38cfd17f 100644 --- a/src/VRChat.API/Api/CalendarApi.cs +++ b/src/VRChat.API/Api/CalendarApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -74,6 +74,47 @@ public interface ICalendarApiSync : IApiAccessor /// ApiResponse of Success ApiResponse DeleteGroupCalendarEventWithHttpInfo(string groupId, string calendarId); /// + /// Discover calendar events + /// + /// + /// Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// CalendarEventDiscovery + CalendarEventDiscovery DiscoverCalendarEvents(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default); + + /// + /// Discover calendar events + /// + /// + /// Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// ApiResponse of CalendarEventDiscovery + ApiResponse DiscoverCalendarEventsWithHttpInfo(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default); + /// /// Follow a calendar event /// /// @@ -358,6 +399,49 @@ public interface ICalendarApiAsync : IApiAccessor /// Task of ApiResponse (Success) System.Threading.Tasks.Task> DeleteGroupCalendarEventWithHttpInfoAsync(string groupId, string calendarId, System.Threading.CancellationToken cancellationToken = default); /// + /// Discover calendar events + /// + /// + /// Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// Cancellation Token to cancel the request. + /// Task of CalendarEventDiscovery + System.Threading.Tasks.Task DiscoverCalendarEventsAsync(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Discover calendar events + /// + /// + /// Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (CalendarEventDiscovery) + System.Threading.Tasks.Task> DiscoverCalendarEventsWithHttpInfoAsync(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default, System.Threading.CancellationToken cancellationToken = default); + /// /// Follow a calendar event /// /// @@ -1097,6 +1181,251 @@ public async System.Threading.Tasks.Task DeleteGroupCalendarEventAsync( return localVarResponse; } + /// + /// Discover calendar events Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// CalendarEventDiscovery + public CalendarEventDiscovery DiscoverCalendarEvents(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default) + { + VRChat.API.Client.ApiResponse localVarResponse = DiscoverCalendarEventsWithHttpInfo(scope, categories, tags, featuredResults, nonFeaturedResults, personalizedResults, minimumInterestCount, minimumRemainingMinutes, upcomingOffsetMinutes, n, nextCursor); + return localVarResponse.Data; + } + + /// + /// Discover calendar events Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// ApiResponse of CalendarEventDiscovery + public VRChat.API.Client.ApiResponse DiscoverCalendarEventsWithHttpInfo(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default) + { + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (scope != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "scope", scope)); + } + if (categories != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "categories", categories)); + } + if (tags != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "tags", tags)); + } + if (featuredResults != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "featuredResults", featuredResults)); + } + if (nonFeaturedResults != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "nonFeaturedResults", nonFeaturedResults)); + } + if (personalizedResults != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "personalizedResults", personalizedResults)); + } + if (minimumInterestCount != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "minimumInterestCount", minimumInterestCount)); + } + if (minimumRemainingMinutes != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "minimumRemainingMinutes", minimumRemainingMinutes)); + } + if (upcomingOffsetMinutes != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "upcomingOffsetMinutes", upcomingOffsetMinutes)); + } + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (nextCursor != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "nextCursor", nextCursor)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get("/calendar/discover", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DiscoverCalendarEvents", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Discover calendar events Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// Cancellation Token to cancel the request. + /// Task of CalendarEventDiscovery + public async System.Threading.Tasks.Task DiscoverCalendarEventsAsync(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await DiscoverCalendarEventsWithHttpInfoAsync(scope, categories, tags, featuredResults, nonFeaturedResults, personalizedResults, minimumInterestCount, minimumRemainingMinutes, upcomingOffsetMinutes, n, nextCursor, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Discover calendar events Get a list of calendar events Initially, call without a `nextCursor` parameter For every successive call, use the `nextCursor` property returned in the previous call & the `number` of entries desired for this call The `nextCursor` internally keeps track of the `offset` of the results, the initial request parameters, and accounts for discrepancies that might arise from time elapsed between calls + /// + /// Thrown when fails to make API call + /// Scope for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// Filter for calendar event discovery. (optional) + /// The number of objects to return. (optional, default to 60) + /// Cursor returned from previous calendar discovery queries (see nextCursor property of the schema CalendarEventDiscovery). (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (CalendarEventDiscovery) + public async System.Threading.Tasks.Task> DiscoverCalendarEventsWithHttpInfoAsync(CalendarEventDiscoveryScope? scope = default, string? categories = default, string? tags = default, CalendarEventDiscoveryInclusion? featuredResults = default, CalendarEventDiscoveryInclusion? nonFeaturedResults = default, CalendarEventDiscoveryInclusion? personalizedResults = default, int? minimumInterestCount = default, int? minimumRemainingMinutes = default, int? upcomingOffsetMinutes = default, int? n = default, string? nextCursor = default, System.Threading.CancellationToken cancellationToken = default) + { + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + if (scope != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "scope", scope)); + } + if (categories != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "categories", categories)); + } + if (tags != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "tags", tags)); + } + if (featuredResults != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "featuredResults", featuredResults)); + } + if (nonFeaturedResults != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "nonFeaturedResults", nonFeaturedResults)); + } + if (personalizedResults != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "personalizedResults", personalizedResults)); + } + if (minimumInterestCount != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "minimumInterestCount", minimumInterestCount)); + } + if (minimumRemainingMinutes != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "minimumRemainingMinutes", minimumRemainingMinutes)); + } + if (upcomingOffsetMinutes != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "upcomingOffsetMinutes", upcomingOffsetMinutes)); + } + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (nextCursor != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "nextCursor", nextCursor)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/calendar/discover", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("DiscoverCalendarEvents", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Follow a calendar event Follow or unfollow an event on a group's calendar /// diff --git a/src/VRChat.API/Api/EconomyApi.cs b/src/VRChat.API/Api/EconomyApi.cs index 5c61debf..1e776494 100644 --- a/src/VRChat.API/Api/EconomyApi.cs +++ b/src/VRChat.API/Api/EconomyApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -194,6 +194,29 @@ public interface IEconomyApiSync : IApiAccessor /// ApiResponse of ProductListing ApiResponse GetProductListingWithHttpInfo(string productId, bool? hydrate = default); /// + /// Get Product Listing (alternate) + /// + /// + /// Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// ProductListing + [Obsolete] + ProductListing GetProductListingAlternate(string productId); + + /// + /// Get Product Listing (alternate) + /// + /// + /// Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// ApiResponse of ProductListing + [Obsolete] + ApiResponse GetProductListingAlternateWithHttpInfo(string productId); + /// /// Get User Product Listings /// /// @@ -225,6 +248,37 @@ public interface IEconomyApiSync : IApiAccessor /// ApiResponse of List<ProductListing> ApiResponse> GetProductListingsWithHttpInfo(string userId, int? n = default, int? offset = default, bool? hydrate = default, string? groupId = default, bool? active = default); /// + /// Get Product Purchases + /// + /// + /// Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// List<ProductPurchase> + List GetProductPurchases(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default); + + /// + /// Get Product Purchases + /// + /// + /// Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// ApiResponse of List<ProductPurchase> + ApiResponse> GetProductPurchasesWithHttpInfo(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default); + /// /// Get Recent Subscription /// /// @@ -460,6 +514,27 @@ public interface IEconomyApiSync : IApiAccessor /// ApiResponse of UserSubscriptionEligible ApiResponse GetUserSubscriptionEligibleWithHttpInfo(string userId, string? steamId = default); /// + /// Purchase Product Listing + /// + /// + /// Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// ProductPurchase + ProductPurchase PurchaseProductListing(PurchaseProductListingRequest? purchaseProductListingRequest = default); + + /// + /// Purchase Product Listing + /// + /// + /// Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of ProductPurchase + ApiResponse PurchaseProductListingWithHttpInfo(PurchaseProductListingRequest? purchaseProductListingRequest = default); + /// /// Update Tilia TOS Agreement Status /// /// @@ -674,6 +749,31 @@ public interface IEconomyApiAsync : IApiAccessor /// Task of ApiResponse (ProductListing) System.Threading.Tasks.Task> GetProductListingWithHttpInfoAsync(string productId, bool? hydrate = default, System.Threading.CancellationToken cancellationToken = default); /// + /// Get Product Listing (alternate) + /// + /// + /// Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// Cancellation Token to cancel the request. + /// Task of ProductListing + [Obsolete] + System.Threading.Tasks.Task GetProductListingAlternateAsync(string productId, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Get Product Listing (alternate) + /// + /// + /// Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ProductListing) + [Obsolete] + System.Threading.Tasks.Task> GetProductListingAlternateWithHttpInfoAsync(string productId, System.Threading.CancellationToken cancellationToken = default); + /// /// Get User Product Listings /// /// @@ -707,6 +807,39 @@ public interface IEconomyApiAsync : IApiAccessor /// Task of ApiResponse (List<ProductListing>) System.Threading.Tasks.Task>> GetProductListingsWithHttpInfoAsync(string userId, int? n = default, int? offset = default, bool? hydrate = default, string? groupId = default, bool? active = default, System.Threading.CancellationToken cancellationToken = default); /// + /// Get Product Purchases + /// + /// + /// Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// Cancellation Token to cancel the request. + /// Task of List<ProductPurchase> + System.Threading.Tasks.Task> GetProductPurchasesAsync(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Get Product Purchases + /// + /// + /// Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<ProductPurchase>) + System.Threading.Tasks.Task>> GetProductPurchasesWithHttpInfoAsync(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default, System.Threading.CancellationToken cancellationToken = default); + /// /// Get Recent Subscription /// /// @@ -964,6 +1097,29 @@ public interface IEconomyApiAsync : IApiAccessor /// Task of ApiResponse (UserSubscriptionEligible) System.Threading.Tasks.Task> GetUserSubscriptionEligibleWithHttpInfoAsync(string userId, string? steamId = default, System.Threading.CancellationToken cancellationToken = default); /// + /// Purchase Product Listing + /// + /// + /// Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ProductPurchase + System.Threading.Tasks.Task PurchaseProductListingAsync(PurchaseProductListingRequest? purchaseProductListingRequest = default, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Purchase Product Listing + /// + /// + /// Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ProductPurchase) + System.Threading.Tasks.Task> PurchaseProductListingWithHttpInfoAsync(PurchaseProductListingRequest? purchaseProductListingRequest = default, System.Threading.CancellationToken cancellationToken = default); + /// /// Update Tilia TOS Agreement Status /// /// @@ -2199,6 +2355,137 @@ public async System.Threading.Tasks.Task GetProductListingAsync( return localVarResponse; } + /// + /// Get Product Listing (alternate) Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// ProductListing + [Obsolete] + public ProductListing GetProductListingAlternate(string productId) + { + VRChat.API.Client.ApiResponse localVarResponse = GetProductListingAlternateWithHttpInfo(productId); + return localVarResponse.Data; + } + + /// + /// Get Product Listing (alternate) Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// ApiResponse of ProductListing + [Obsolete] + public VRChat.API.Client.ApiResponse GetProductListingAlternateWithHttpInfo(string productId) + { + // verify the required parameter 'productId' is set + if (productId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'productId' when calling EconomyApi->GetProductListingAlternate"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("productId", VRChat.API.Client.ClientUtils.ParameterToString(productId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get("/products/{productId}", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetProductListingAlternate", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Product Listing (alternate) Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// Cancellation Token to cancel the request. + /// Task of ProductListing + [Obsolete] + public async System.Threading.Tasks.Task GetProductListingAlternateAsync(string productId, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await GetProductListingAlternateWithHttpInfoAsync(productId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get Product Listing (alternate) Gets a product listing + /// + /// Thrown when fails to make API call + /// Must be a valid product ID. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ProductListing) + [Obsolete] + public async System.Threading.Tasks.Task> GetProductListingAlternateWithHttpInfoAsync(string productId, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'productId' is set + if (productId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'productId' when calling EconomyApi->GetProductListingAlternate"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("productId", VRChat.API.Client.ClientUtils.ParameterToString(productId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/products/{productId}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetProductListingAlternate", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Get User Product Listings Gets the product listings of a given user /// @@ -2386,6 +2673,193 @@ public async System.Threading.Tasks.Task> GetProductListing return localVarResponse; } + /// + /// Get Product Purchases Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// List<ProductPurchase> + public List GetProductPurchases(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default) + { + VRChat.API.Client.ApiResponse> localVarResponse = GetProductPurchasesWithHttpInfo(buyerId, n, offset, mostRecent, sort, order); + return localVarResponse.Data; + } + + /// + /// Get Product Purchases Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// ApiResponse of List<ProductPurchase> + public VRChat.API.Client.ApiResponse> GetProductPurchasesWithHttpInfo(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default) + { + // verify the required parameter 'buyerId' is set + if (buyerId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'buyerId' when calling EconomyApi->GetProductPurchases"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "buyerId", buyerId)); + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (offset != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "offset", offset)); + } + if (mostRecent != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "mostRecent", mostRecent)); + } + if (sort != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "sort", sort)); + } + if (order != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "order", order)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/economy/purchases", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetProductPurchases", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get Product Purchases Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// Cancellation Token to cancel the request. + /// Task of List<ProductPurchase> + public async System.Threading.Tasks.Task> GetProductPurchasesAsync(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse> localVarResponse = await GetProductPurchasesWithHttpInfoAsync(buyerId, n, offset, mostRecent, sort, order, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get Product Purchases Gets product purchases + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// (optional) + /// The sort order of the results. (optional) + /// Result ordering (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<ProductPurchase>) + public async System.Threading.Tasks.Task>> GetProductPurchasesWithHttpInfoAsync(string buyerId, int? n = default, int? offset = default, bool? mostRecent = default, SortOptionProductPurchase? sort = default, OrderOptionShort? order = default, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'buyerId' is set + if (buyerId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'buyerId' when calling EconomyApi->GetProductPurchases"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "buyerId", buyerId)); + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (offset != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "offset", offset)); + } + if (mostRecent != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "mostRecent", mostRecent)); + } + if (sort != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "sort", sort)); + } + if (order != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "order", order)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/economy/purchases", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetProductPurchases", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Get Recent Subscription Get the most recent user subscription. /// @@ -3791,6 +4265,127 @@ public async System.Threading.Tasks.Task GetUserSubscr return localVarResponse; } + /// + /// Purchase Product Listing Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// ProductPurchase + public ProductPurchase PurchaseProductListing(PurchaseProductListingRequest? purchaseProductListingRequest = default) + { + VRChat.API.Client.ApiResponse localVarResponse = PurchaseProductListingWithHttpInfo(purchaseProductListingRequest); + return localVarResponse.Data; + } + + /// + /// Purchase Product Listing Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// ApiResponse of ProductPurchase + public VRChat.API.Client.ApiResponse PurchaseProductListingWithHttpInfo(PurchaseProductListingRequest? purchaseProductListingRequest = default) + { + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = purchaseProductListingRequest; + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/economy/purchase/listing", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("PurchaseProductListing", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Purchase Product Listing Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ProductPurchase + public async System.Threading.Tasks.Task PurchaseProductListingAsync(PurchaseProductListingRequest? purchaseProductListingRequest = default, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await PurchaseProductListingWithHttpInfoAsync(purchaseProductListingRequest, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Purchase Product Listing Purchases a product listing + /// + /// Thrown when fails to make API call + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (ProductPurchase) + public async System.Threading.Tasks.Task> PurchaseProductListingWithHttpInfoAsync(PurchaseProductListingRequest? purchaseProductListingRequest = default, System.Threading.CancellationToken cancellationToken = default) + { + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.Data = purchaseProductListingRequest; + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/economy/purchase/listing", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("PurchaseProductListing", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Update Tilia TOS Agreement Status Updates the status of the agreement of a user to the Tilia TOS /// diff --git a/src/VRChat.API/Api/FavoritesApi.cs b/src/VRChat.API/Api/FavoritesApi.cs index 67d53bd5..3ab2b703 100644 --- a/src/VRChat.API/Api/FavoritesApi.cs +++ b/src/VRChat.API/Api/FavoritesApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/FilesApi.cs b/src/VRChat.API/Api/FilesApi.cs index 8860c262..681a2c42 100644 --- a/src/VRChat.API/Api/FilesApi.cs +++ b/src/VRChat.API/Api/FilesApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -406,12 +406,12 @@ public interface IFilesApiSync : IApiAccessor /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// File - File UploadImage(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default); + File UploadImage(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default); /// /// Upload gallery image, icon, emoji or sticker @@ -422,12 +422,12 @@ public interface IFilesApiSync : IApiAccessor /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// ApiResponse of File - ApiResponse UploadImageWithHttpInfo(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default); + ApiResponse UploadImageWithHttpInfo(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default); #endregion Synchronous Operations } @@ -848,13 +848,13 @@ public interface IFilesApiAsync : IApiAccessor /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// Cancellation Token to cancel the request. /// Task of File - System.Threading.Tasks.Task UploadImageAsync(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task UploadImageAsync(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default); /// /// Upload gallery image, icon, emoji or sticker @@ -865,13 +865,13 @@ public interface IFilesApiAsync : IApiAccessor /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (File) - System.Threading.Tasks.Task> UploadImageWithHttpInfoAsync(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task> UploadImageWithHttpInfoAsync(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default); #endregion Asynchronous Operations } @@ -3275,14 +3275,14 @@ public async System.Threading.Tasks.Task UploadIconAsync(FileParameter fil /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// File - public File UploadImage(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default) + public File UploadImage(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default) { - VRChat.API.Client.ApiResponse localVarResponse = UploadImageWithHttpInfo(file, tag, frames, framesOverTime, animationStyle, maskTag); + VRChat.API.Client.ApiResponse localVarResponse = UploadImageWithHttpInfo(file, tag, animationStyle, frames, framesOverTime, maskTag); return localVarResponse.Data; } @@ -3292,12 +3292,12 @@ public File UploadImage(FileParameter file, string tag, int? frames = default, i /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// ApiResponse of File - public VRChat.API.Client.ApiResponse UploadImageWithHttpInfo(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default) + public VRChat.API.Client.ApiResponse UploadImageWithHttpInfo(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default) { // verify the required parameter 'file' is set if (file == null) @@ -3324,8 +3324,11 @@ public VRChat.API.Client.ApiResponse UploadImageWithHttpInfo(FileParameter var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + if (animationStyle != null) + { + localVarRequestOptions.FormParameters.Add("animationStyle", VRChat.API.Client.ClientUtils.ParameterToString(animationStyle)); // form parameter + } localVarRequestOptions.FileParameters.Add("file", file); - localVarRequestOptions.FormParameters.Add("tag", VRChat.API.Client.ClientUtils.ParameterToString(tag)); // form parameter if (frames != null) { localVarRequestOptions.FormParameters.Add("frames", VRChat.API.Client.ClientUtils.ParameterToString(frames)); // form parameter @@ -3334,14 +3337,11 @@ public VRChat.API.Client.ApiResponse UploadImageWithHttpInfo(FileParameter { localVarRequestOptions.FormParameters.Add("framesOverTime", VRChat.API.Client.ClientUtils.ParameterToString(framesOverTime)); // form parameter } - if (animationStyle != null) - { - localVarRequestOptions.FormParameters.Add("animationStyle", VRChat.API.Client.ClientUtils.ParameterToString(animationStyle)); // form parameter - } if (maskTag != null) { localVarRequestOptions.FormParameters.Add("maskTag", VRChat.API.Client.ClientUtils.ParameterToString(maskTag)); // form parameter } + localVarRequestOptions.FormParameters.Add("tag", VRChat.API.Client.ClientUtils.ParameterToString(tag)); // form parameter // authentication (authCookie) required // cookie parameter support @@ -3368,15 +3368,15 @@ public VRChat.API.Client.ApiResponse UploadImageWithHttpInfo(FileParameter /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// Cancellation Token to cancel the request. /// Task of File - public async System.Threading.Tasks.Task UploadImageAsync(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task UploadImageAsync(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default) { - VRChat.API.Client.ApiResponse localVarResponse = await UploadImageWithHttpInfoAsync(file, tag, frames, framesOverTime, animationStyle, maskTag, cancellationToken).ConfigureAwait(false); + VRChat.API.Client.ApiResponse localVarResponse = await UploadImageWithHttpInfoAsync(file, tag, animationStyle, frames, framesOverTime, maskTag, cancellationToken).ConfigureAwait(false); return localVarResponse.Data; } @@ -3386,13 +3386,13 @@ public async System.Threading.Tasks.Task UploadImageAsync(FileParameter fi /// Thrown when fails to make API call /// The binary blob of the png file. /// Needs to be either icon, gallery, sticker, emoji, or emojianimated + /// Animation style for sticker, required for emoji. (optional) /// Required for emojianimated. Total number of frames to be animated (2-64) (optional) /// Required for emojianimated. Animation frames per second (1-64) (optional) - /// Animation style for sticker, required for emoji. (optional) /// Mask of the sticker, optional for emoji. (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (File) - public async System.Threading.Tasks.Task> UploadImageWithHttpInfoAsync(FileParameter file, string tag, int? frames = default, int? framesOverTime = default, string? animationStyle = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task> UploadImageWithHttpInfoAsync(FileParameter file, string tag, string? animationStyle = default, int? frames = default, int? framesOverTime = default, string? maskTag = default, System.Threading.CancellationToken cancellationToken = default) { // verify the required parameter 'file' is set if (file == null) @@ -3421,8 +3421,11 @@ public async System.Threading.Tasks.Task UploadImageAsync(FileParameter fi var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + if (animationStyle != null) + { + localVarRequestOptions.FormParameters.Add("animationStyle", VRChat.API.Client.ClientUtils.ParameterToString(animationStyle)); // form parameter + } localVarRequestOptions.FileParameters.Add("file", file); - localVarRequestOptions.FormParameters.Add("tag", VRChat.API.Client.ClientUtils.ParameterToString(tag)); // form parameter if (frames != null) { localVarRequestOptions.FormParameters.Add("frames", VRChat.API.Client.ClientUtils.ParameterToString(frames)); // form parameter @@ -3431,14 +3434,11 @@ public async System.Threading.Tasks.Task UploadImageAsync(FileParameter fi { localVarRequestOptions.FormParameters.Add("framesOverTime", VRChat.API.Client.ClientUtils.ParameterToString(framesOverTime)); // form parameter } - if (animationStyle != null) - { - localVarRequestOptions.FormParameters.Add("animationStyle", VRChat.API.Client.ClientUtils.ParameterToString(animationStyle)); // form parameter - } if (maskTag != null) { localVarRequestOptions.FormParameters.Add("maskTag", VRChat.API.Client.ClientUtils.ParameterToString(maskTag)); // form parameter } + localVarRequestOptions.FormParameters.Add("tag", VRChat.API.Client.ClientUtils.ParameterToString(tag)); // form parameter // authentication (authCookie) required // cookie parameter support diff --git a/src/VRChat.API/Api/FriendsApi.cs b/src/VRChat.API/Api/FriendsApi.cs index 0bdd89ba..88f7f2c6 100644 --- a/src/VRChat.API/Api/FriendsApi.cs +++ b/src/VRChat.API/Api/FriendsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -28,6 +28,29 @@ public interface IFriendsApiSync : IApiAccessor { #region Synchronous Operations /// + /// Send Boop + /// + /// + /// Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// Success + Success Boop(string userId, BoopRequest boopRequest); + + /// + /// Send Boop + /// + /// + /// Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// ApiResponse of Success + ApiResponse BoopWithHttpInfo(string userId, BoopRequest boopRequest); + /// /// Delete Friend Request /// /// @@ -146,6 +169,31 @@ public interface IFriendsApiAsync : IApiAccessor { #region Asynchronous Operations /// + /// Send Boop + /// + /// + /// Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// Cancellation Token to cancel the request. + /// Task of Success + System.Threading.Tasks.Task BoopAsync(string userId, BoopRequest boopRequest, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Send Boop + /// + /// + /// Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Success) + System.Threading.Tasks.Task> BoopWithHttpInfoAsync(string userId, BoopRequest boopRequest, System.Threading.CancellationToken cancellationToken = default); + /// /// Delete Friend Request /// /// @@ -477,6 +525,149 @@ public VRChat.API.Client.ExceptionFactory ExceptionFactory set { _exceptionFactory = value; } } + /// + /// Send Boop Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// Success + public Success Boop(string userId, BoopRequest boopRequest) + { + VRChat.API.Client.ApiResponse localVarResponse = BoopWithHttpInfo(userId, boopRequest); + return localVarResponse.Data; + } + + /// + /// Send Boop Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// ApiResponse of Success + public VRChat.API.Client.ApiResponse BoopWithHttpInfo(string userId, BoopRequest boopRequest) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling FriendsApi->Boop"); + + // verify the required parameter 'boopRequest' is set + if (boopRequest == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'boopRequest' when calling FriendsApi->Boop"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + localVarRequestOptions.Data = boopRequest; + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Post("/users/{userId}/boop", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Boop", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Send Boop Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// Cancellation Token to cancel the request. + /// Task of Success + public async System.Threading.Tasks.Task BoopAsync(string userId, BoopRequest boopRequest, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await BoopWithHttpInfoAsync(userId, boopRequest, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Send Boop Send a boop to another user. + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Success) + public async System.Threading.Tasks.Task> BoopWithHttpInfoAsync(string userId, BoopRequest boopRequest, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling FriendsApi->Boop"); + + // verify the required parameter 'boopRequest' is set + if (boopRequest == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'boopRequest' when calling FriendsApi->Boop"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + localVarRequestOptions.Data = boopRequest; + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PostAsync("/users/{userId}/boop", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("Boop", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Delete Friend Request Deletes an outgoing pending friend request to another user. To delete an incoming friend request, use the `deleteNotification` endpoint instead. /// diff --git a/src/VRChat.API/Api/GroupsApi.cs b/src/VRChat.API/Api/GroupsApi.cs index 3f33a702..86ca3f8f 100644 --- a/src/VRChat.API/Api/GroupsApi.cs +++ b/src/VRChat.API/Api/GroupsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -443,7 +443,7 @@ public interface IGroupsApiSync : IApiAccessor /// Get Group Announcement /// /// - /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. @@ -454,7 +454,7 @@ public interface IGroupsApiSync : IApiAccessor /// Get Group Announcement /// /// - /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. @@ -1532,7 +1532,7 @@ public interface IGroupsApiAsync : IApiAccessor /// Get Group Announcement /// /// - /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. @@ -1544,7 +1544,7 @@ public interface IGroupsApiAsync : IApiAccessor /// Get Group Announcement /// /// - /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. @@ -4958,7 +4958,7 @@ public async System.Threading.Tasks.Task GetGroupAsync(string groupId, bo } /// - /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. @@ -4970,7 +4970,7 @@ public GroupAnnouncement GetGroupAnnouncements(string groupId) } /// - /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. @@ -5019,7 +5019,7 @@ public VRChat.API.Client.ApiResponse GetGroupAnnouncementsWit } /// - /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. @@ -5032,7 +5032,7 @@ public async System.Threading.Tasks.Task GetGroupAnnouncement } /// - /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. + /// Get Group Announcement Returns the announcement for a Group. If no announcement has been made, then it returns **empty object**. If an announcement exists, then it will always return all fields except `imageId` and `imageUrl` which may be null. /// /// Thrown when fails to make API call /// Must be a valid group ID. diff --git a/src/VRChat.API/Api/InstancesApi.cs b/src/VRChat.API/Api/InstancesApi.cs index 99644d67..26467b08 100644 --- a/src/VRChat.API/Api/InstancesApi.cs +++ b/src/VRChat.API/Api/InstancesApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/InventoryApi.cs b/src/VRChat.API/Api/InventoryApi.cs index 7337ad34..4beb4c89 100644 --- a/src/VRChat.API/Api/InventoryApi.cs +++ b/src/VRChat.API/Api/InventoryApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -28,6 +28,27 @@ public interface IInventoryApiSync : IApiAccessor { #region Synchronous Operations /// + /// Consume Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// InventoryConsumptionResults + InventoryConsumptionResults ConsumeOwnInventoryItem(string inventoryItemId); + + /// + /// Consume Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// ApiResponse of InventoryConsumptionResults + ApiResponse ConsumeOwnInventoryItemWithHttpInfo(string inventoryItemId); + /// /// Delete Own Inventory Item /// /// @@ -49,6 +70,29 @@ public interface IInventoryApiSync : IApiAccessor /// ApiResponse of SuccessFlag ApiResponse DeleteOwnInventoryItemWithHttpInfo(string inventoryItemId); /// + /// Equip Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// InventoryItem + InventoryItem EquipOwnInventoryItem(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default); + + /// + /// Equip Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// ApiResponse of InventoryItem + ApiResponse EquipOwnInventoryItemWithHttpInfo(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default); + /// /// Get Inventory /// /// @@ -222,6 +266,27 @@ public interface IInventoryApiSync : IApiAccessor /// ApiResponse of InventorySpawn ApiResponse SpawnInventoryItemWithHttpInfo(string id); /// + /// Unequip Own Inventory Slot + /// + /// + /// Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// string + string UnequipOwnInventorySlot(InventoryEquipSlot inventoryItemId); + + /// + /// Unequip Own Inventory Slot + /// + /// + /// Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// ApiResponse of string + ApiResponse UnequipOwnInventorySlotWithHttpInfo(InventoryEquipSlot inventoryItemId); + /// /// Update Own Inventory Item /// /// @@ -254,6 +319,29 @@ public interface IInventoryApiAsync : IApiAccessor { #region Asynchronous Operations /// + /// Consume Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// Cancellation Token to cancel the request. + /// Task of InventoryConsumptionResults + System.Threading.Tasks.Task ConsumeOwnInventoryItemAsync(string inventoryItemId, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Consume Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InventoryConsumptionResults) + System.Threading.Tasks.Task> ConsumeOwnInventoryItemWithHttpInfoAsync(string inventoryItemId, System.Threading.CancellationToken cancellationToken = default); + /// /// Delete Own Inventory Item /// /// @@ -277,6 +365,31 @@ public interface IInventoryApiAsync : IApiAccessor /// Task of ApiResponse (SuccessFlag) System.Threading.Tasks.Task> DeleteOwnInventoryItemWithHttpInfoAsync(string inventoryItemId, System.Threading.CancellationToken cancellationToken = default); /// + /// Equip Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of InventoryItem + System.Threading.Tasks.Task EquipOwnInventoryItemAsync(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Equip Own Inventory Item + /// + /// + /// Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InventoryItem) + System.Threading.Tasks.Task> EquipOwnInventoryItemWithHttpInfoAsync(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default, System.Threading.CancellationToken cancellationToken = default); + /// /// Get Inventory /// /// @@ -464,6 +577,29 @@ public interface IInventoryApiAsync : IApiAccessor /// Task of ApiResponse (InventorySpawn) System.Threading.Tasks.Task> SpawnInventoryItemWithHttpInfoAsync(string id, System.Threading.CancellationToken cancellationToken = default); /// + /// Unequip Own Inventory Slot + /// + /// + /// Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// Cancellation Token to cancel the request. + /// Task of string + System.Threading.Tasks.Task UnequipOwnInventorySlotAsync(InventoryEquipSlot inventoryItemId, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Unequip Own Inventory Slot + /// + /// + /// Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + System.Threading.Tasks.Task> UnequipOwnInventorySlotWithHttpInfoAsync(InventoryEquipSlot inventoryItemId, System.Threading.CancellationToken cancellationToken = default); + /// /// Update Own Inventory Item /// /// @@ -701,6 +837,133 @@ public VRChat.API.Client.ExceptionFactory ExceptionFactory set { _exceptionFactory = value; } } + /// + /// Consume Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// InventoryConsumptionResults + public InventoryConsumptionResults ConsumeOwnInventoryItem(string inventoryItemId) + { + VRChat.API.Client.ApiResponse localVarResponse = ConsumeOwnInventoryItemWithHttpInfo(inventoryItemId); + return localVarResponse.Data; + } + + /// + /// Consume Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// ApiResponse of InventoryConsumptionResults + public VRChat.API.Client.ApiResponse ConsumeOwnInventoryItemWithHttpInfo(string inventoryItemId) + { + // verify the required parameter 'inventoryItemId' is set + if (inventoryItemId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'inventoryItemId' when calling InventoryApi->ConsumeOwnInventoryItem"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("inventoryItemId", VRChat.API.Client.ClientUtils.ParameterToString(inventoryItemId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Put("/inventory/{inventoryItemId}/consume", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ConsumeOwnInventoryItem", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Consume Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// Cancellation Token to cancel the request. + /// Task of InventoryConsumptionResults + public async System.Threading.Tasks.Task ConsumeOwnInventoryItemAsync(string inventoryItemId, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await ConsumeOwnInventoryItemWithHttpInfoAsync(inventoryItemId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Consume Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InventoryConsumptionResults) + public async System.Threading.Tasks.Task> ConsumeOwnInventoryItemWithHttpInfoAsync(string inventoryItemId, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'inventoryItemId' is set + if (inventoryItemId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'inventoryItemId' when calling InventoryApi->ConsumeOwnInventoryItem"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("inventoryItemId", VRChat.API.Client.ClientUtils.ParameterToString(inventoryItemId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/inventory/{inventoryItemId}/consume", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("ConsumeOwnInventoryItem", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Delete Own Inventory Item Deletes an InventoryItem from the inventory of the currently logged in user. /// @@ -828,6 +1091,141 @@ public async System.Threading.Tasks.Task DeleteOwnInventoryItemAsyn return localVarResponse; } + /// + /// Equip Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// InventoryItem + public InventoryItem EquipOwnInventoryItem(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default) + { + VRChat.API.Client.ApiResponse localVarResponse = EquipOwnInventoryItemWithHttpInfo(inventoryItemId, equipInventoryItemRequest); + return localVarResponse.Data; + } + + /// + /// Equip Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// ApiResponse of InventoryItem + public VRChat.API.Client.ApiResponse EquipOwnInventoryItemWithHttpInfo(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default) + { + // verify the required parameter 'inventoryItemId' is set + if (inventoryItemId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'inventoryItemId' when calling InventoryApi->EquipOwnInventoryItem"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("inventoryItemId", VRChat.API.Client.ClientUtils.ParameterToString(inventoryItemId)); // path parameter + localVarRequestOptions.Data = equipInventoryItemRequest; + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Put("/inventory/{inventoryItemId}/equip", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("EquipOwnInventoryItem", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Equip Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of InventoryItem + public async System.Threading.Tasks.Task EquipOwnInventoryItemAsync(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await EquipOwnInventoryItemWithHttpInfoAsync(inventoryItemId, equipInventoryItemRequest, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Equip Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. + /// + /// Thrown when fails to make API call + /// Must be a valid inventory item ID. + /// (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (InventoryItem) + public async System.Threading.Tasks.Task> EquipOwnInventoryItemWithHttpInfoAsync(string inventoryItemId, EquipInventoryItemRequest? equipInventoryItemRequest = default, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'inventoryItemId' is set + if (inventoryItemId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'inventoryItemId' when calling InventoryApi->EquipOwnInventoryItem"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + "application/json" + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("inventoryItemId", VRChat.API.Client.ClientUtils.ParameterToString(inventoryItemId)); // path parameter + localVarRequestOptions.Data = equipInventoryItemRequest; + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.PutAsync("/inventory/{inventoryItemId}/equip", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("EquipOwnInventoryItem", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Get Inventory Returns an Inventory object. /// @@ -1861,6 +2259,125 @@ public async System.Threading.Tasks.Task SpawnInventoryItemAsync return localVarResponse; } + /// + /// Unequip Own Inventory Slot Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// string + public string UnequipOwnInventorySlot(InventoryEquipSlot inventoryItemId) + { + VRChat.API.Client.ApiResponse localVarResponse = UnequipOwnInventorySlotWithHttpInfo(inventoryItemId); + return localVarResponse.Data; + } + + /// + /// Unequip Own Inventory Slot Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// ApiResponse of string + public VRChat.API.Client.ApiResponse UnequipOwnInventorySlotWithHttpInfo(InventoryEquipSlot inventoryItemId) + { + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("inventoryItemId", VRChat.API.Client.ClientUtils.ParameterToString(inventoryItemId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Delete("/inventory/{inventoryItemId}/equip", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UnequipOwnInventorySlot", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Unequip Own Inventory Slot Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// Cancellation Token to cancel the request. + /// Task of string + public async System.Threading.Tasks.Task UnequipOwnInventorySlotAsync(InventoryEquipSlot inventoryItemId, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await UnequipOwnInventorySlotWithHttpInfoAsync(inventoryItemId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Unequip Own Inventory Slot Unequips the InventoryItem in the given slot of the inventory of the currently logged in user. + /// + /// Thrown when fails to make API call + /// Selector for inventory slot management. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (string) + public async System.Threading.Tasks.Task> UnequipOwnInventorySlotWithHttpInfoAsync(InventoryEquipSlot inventoryItemId, System.Threading.CancellationToken cancellationToken = default) + { + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("inventoryItemId", VRChat.API.Client.ClientUtils.ParameterToString(inventoryItemId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.DeleteAsync("/inventory/{inventoryItemId}/equip", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("UnequipOwnInventorySlot", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Update Own Inventory Item Returns the modified InventoryItem object as held by the currently logged in user. /// diff --git a/src/VRChat.API/Api/InviteApi.cs b/src/VRChat.API/Api/InviteApi.cs index 83fff92d..6a46261c 100644 --- a/src/VRChat.API/Api/InviteApi.cs +++ b/src/VRChat.API/Api/InviteApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -129,10 +129,10 @@ public interface IInviteApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// SentNotification - SentNotification InviteUserWithPhoto(string userId, FileParameter image, InviteRequest data); + SentNotification InviteUserWithPhoto(string userId, InviteRequest data, FileParameter image); /// /// Invite User with photo @@ -142,10 +142,10 @@ public interface IInviteApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// ApiResponse of SentNotification - ApiResponse InviteUserWithPhotoWithHttpInfo(string userId, FileParameter image, InviteRequest data); + ApiResponse InviteUserWithPhotoWithHttpInfo(string userId, InviteRequest data, FileParameter image); /// /// Request Invite /// @@ -177,10 +177,10 @@ public interface IInviteApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Notification - Notification RequestInviteWithPhoto(string userId, FileParameter image, RequestInviteRequest data); + Notification RequestInviteWithPhoto(string userId, RequestInviteRequest data, FileParameter image); /// /// Request Invite with photo @@ -190,10 +190,10 @@ public interface IInviteApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// ApiResponse of Notification - ApiResponse RequestInviteWithPhotoWithHttpInfo(string userId, FileParameter image, RequestInviteRequest data); + ApiResponse RequestInviteWithPhotoWithHttpInfo(string userId, RequestInviteRequest data, FileParameter image); /// /// Reset Invite Message /// @@ -250,10 +250,10 @@ public interface IInviteApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Notification - Notification RespondInviteWithPhoto(string notificationId, FileParameter image, InviteResponse data); + Notification RespondInviteWithPhoto(string notificationId, InviteResponse data, FileParameter image); /// /// Respond Invite with photo @@ -263,10 +263,10 @@ public interface IInviteApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// ApiResponse of Notification - ApiResponse RespondInviteWithPhotoWithHttpInfo(string notificationId, FileParameter image, InviteResponse data); + ApiResponse RespondInviteWithPhotoWithHttpInfo(string notificationId, InviteResponse data, FileParameter image); /// /// Update Invite Message /// @@ -413,11 +413,11 @@ public interface IInviteApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of SentNotification - System.Threading.Tasks.Task InviteUserWithPhotoAsync(string userId, FileParameter image, InviteRequest data, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task InviteUserWithPhotoAsync(string userId, InviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default); /// /// Invite User with photo @@ -427,11 +427,11 @@ public interface IInviteApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of ApiResponse (SentNotification) - System.Threading.Tasks.Task> InviteUserWithPhotoWithHttpInfoAsync(string userId, FileParameter image, InviteRequest data, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task> InviteUserWithPhotoWithHttpInfoAsync(string userId, InviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default); /// /// Request Invite /// @@ -465,11 +465,11 @@ public interface IInviteApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of Notification - System.Threading.Tasks.Task RequestInviteWithPhotoAsync(string userId, FileParameter image, RequestInviteRequest data, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task RequestInviteWithPhotoAsync(string userId, RequestInviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default); /// /// Request Invite with photo @@ -479,11 +479,11 @@ public interface IInviteApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of ApiResponse (Notification) - System.Threading.Tasks.Task> RequestInviteWithPhotoWithHttpInfoAsync(string userId, FileParameter image, RequestInviteRequest data, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task> RequestInviteWithPhotoWithHttpInfoAsync(string userId, RequestInviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default); /// /// Reset Invite Message /// @@ -544,11 +544,11 @@ public interface IInviteApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of Notification - System.Threading.Tasks.Task RespondInviteWithPhotoAsync(string notificationId, FileParameter image, InviteResponse data, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task RespondInviteWithPhotoAsync(string notificationId, InviteResponse data, FileParameter image, System.Threading.CancellationToken cancellationToken = default); /// /// Respond Invite with photo @@ -558,11 +558,11 @@ public interface IInviteApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of ApiResponse (Notification) - System.Threading.Tasks.Task> RespondInviteWithPhotoWithHttpInfoAsync(string notificationId, FileParameter image, InviteResponse data, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task> RespondInviteWithPhotoWithHttpInfoAsync(string notificationId, InviteResponse data, FileParameter image, System.Threading.CancellationToken cancellationToken = default); /// /// Update Invite Message /// @@ -1366,12 +1366,12 @@ public async System.Threading.Tasks.Task InviteUserAsync(strin /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// SentNotification - public SentNotification InviteUserWithPhoto(string userId, FileParameter image, InviteRequest data) + public SentNotification InviteUserWithPhoto(string userId, InviteRequest data, FileParameter image) { - VRChat.API.Client.ApiResponse localVarResponse = InviteUserWithPhotoWithHttpInfo(userId, image, data); + VRChat.API.Client.ApiResponse localVarResponse = InviteUserWithPhotoWithHttpInfo(userId, data, image); return localVarResponse.Data; } @@ -1380,23 +1380,23 @@ public SentNotification InviteUserWithPhoto(string userId, FileParameter image, /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// ApiResponse of SentNotification - public VRChat.API.Client.ApiResponse InviteUserWithPhotoWithHttpInfo(string userId, FileParameter image, InviteRequest data) + public VRChat.API.Client.ApiResponse InviteUserWithPhotoWithHttpInfo(string userId, InviteRequest data, FileParameter image) { // verify the required parameter 'userId' is set if (userId == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling InviteApi->InviteUserWithPhoto"); - // verify the required parameter 'image' is set - if (image == null) - throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->InviteUserWithPhoto"); - // verify the required parameter 'data' is set if (data == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'data' when calling InviteApi->InviteUserWithPhoto"); + // verify the required parameter 'image' is set + if (image == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->InviteUserWithPhoto"); + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); string[] _contentTypes = new string[] { @@ -1415,8 +1415,8 @@ public VRChat.API.Client.ApiResponse InviteUserWithPhotoWithHt if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter - localVarRequestOptions.FileParameters.Add("image", image); localVarRequestOptions.FormParameters.Add("data", VRChat.API.Client.ClientUtils.ParameterToString(data)); // form parameter + localVarRequestOptions.FileParameters.Add("image", image); // authentication (authCookie) required // cookie parameter support @@ -1442,13 +1442,13 @@ public VRChat.API.Client.ApiResponse InviteUserWithPhotoWithHt /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of SentNotification - public async System.Threading.Tasks.Task InviteUserWithPhotoAsync(string userId, FileParameter image, InviteRequest data, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task InviteUserWithPhotoAsync(string userId, InviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default) { - VRChat.API.Client.ApiResponse localVarResponse = await InviteUserWithPhotoWithHttpInfoAsync(userId, image, data, cancellationToken).ConfigureAwait(false); + VRChat.API.Client.ApiResponse localVarResponse = await InviteUserWithPhotoWithHttpInfoAsync(userId, data, image, cancellationToken).ConfigureAwait(false); return localVarResponse.Data; } @@ -1457,24 +1457,24 @@ public async System.Threading.Tasks.Task InviteUserWithPhotoAs /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of ApiResponse (SentNotification) - public async System.Threading.Tasks.Task> InviteUserWithPhotoWithHttpInfoAsync(string userId, FileParameter image, InviteRequest data, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task> InviteUserWithPhotoWithHttpInfoAsync(string userId, InviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default) { // verify the required parameter 'userId' is set if (userId == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling InviteApi->InviteUserWithPhoto"); - // verify the required parameter 'image' is set - if (image == null) - throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->InviteUserWithPhoto"); - // verify the required parameter 'data' is set if (data == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'data' when calling InviteApi->InviteUserWithPhoto"); + // verify the required parameter 'image' is set + if (image == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->InviteUserWithPhoto"); + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); @@ -1495,8 +1495,8 @@ public async System.Threading.Tasks.Task InviteUserWithPhotoAs if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter - localVarRequestOptions.FileParameters.Add("image", image); localVarRequestOptions.FormParameters.Add("data", VRChat.API.Client.ClientUtils.ParameterToString(data)); // form parameter + localVarRequestOptions.FileParameters.Add("image", image); // authentication (authCookie) required // cookie parameter support @@ -1658,12 +1658,12 @@ public async System.Threading.Tasks.Task RequestInviteAsync(string /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Notification - public Notification RequestInviteWithPhoto(string userId, FileParameter image, RequestInviteRequest data) + public Notification RequestInviteWithPhoto(string userId, RequestInviteRequest data, FileParameter image) { - VRChat.API.Client.ApiResponse localVarResponse = RequestInviteWithPhotoWithHttpInfo(userId, image, data); + VRChat.API.Client.ApiResponse localVarResponse = RequestInviteWithPhotoWithHttpInfo(userId, data, image); return localVarResponse.Data; } @@ -1672,23 +1672,23 @@ public Notification RequestInviteWithPhoto(string userId, FileParameter image, R /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// ApiResponse of Notification - public VRChat.API.Client.ApiResponse RequestInviteWithPhotoWithHttpInfo(string userId, FileParameter image, RequestInviteRequest data) + public VRChat.API.Client.ApiResponse RequestInviteWithPhotoWithHttpInfo(string userId, RequestInviteRequest data, FileParameter image) { // verify the required parameter 'userId' is set if (userId == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling InviteApi->RequestInviteWithPhoto"); - // verify the required parameter 'image' is set - if (image == null) - throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RequestInviteWithPhoto"); - // verify the required parameter 'data' is set if (data == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'data' when calling InviteApi->RequestInviteWithPhoto"); + // verify the required parameter 'image' is set + if (image == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RequestInviteWithPhoto"); + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); string[] _contentTypes = new string[] { @@ -1707,8 +1707,8 @@ public VRChat.API.Client.ApiResponse RequestInviteWithPhotoWithHtt if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter - localVarRequestOptions.FileParameters.Add("image", image); localVarRequestOptions.FormParameters.Add("data", VRChat.API.Client.ClientUtils.ParameterToString(data)); // form parameter + localVarRequestOptions.FileParameters.Add("image", image); // authentication (authCookie) required // cookie parameter support @@ -1734,13 +1734,13 @@ public VRChat.API.Client.ApiResponse RequestInviteWithPhotoWithHtt /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of Notification - public async System.Threading.Tasks.Task RequestInviteWithPhotoAsync(string userId, FileParameter image, RequestInviteRequest data, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task RequestInviteWithPhotoAsync(string userId, RequestInviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default) { - VRChat.API.Client.ApiResponse localVarResponse = await RequestInviteWithPhotoWithHttpInfoAsync(userId, image, data, cancellationToken).ConfigureAwait(false); + VRChat.API.Client.ApiResponse localVarResponse = await RequestInviteWithPhotoWithHttpInfoAsync(userId, data, image, cancellationToken).ConfigureAwait(false); return localVarResponse.Data; } @@ -1749,24 +1749,24 @@ public async System.Threading.Tasks.Task RequestInviteWithPhotoAsy /// /// Thrown when fails to make API call /// Must be a valid user ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of ApiResponse (Notification) - public async System.Threading.Tasks.Task> RequestInviteWithPhotoWithHttpInfoAsync(string userId, FileParameter image, RequestInviteRequest data, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task> RequestInviteWithPhotoWithHttpInfoAsync(string userId, RequestInviteRequest data, FileParameter image, System.Threading.CancellationToken cancellationToken = default) { // verify the required parameter 'userId' is set if (userId == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling InviteApi->RequestInviteWithPhoto"); - // verify the required parameter 'image' is set - if (image == null) - throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RequestInviteWithPhoto"); - // verify the required parameter 'data' is set if (data == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'data' when calling InviteApi->RequestInviteWithPhoto"); + // verify the required parameter 'image' is set + if (image == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RequestInviteWithPhoto"); + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); @@ -1787,8 +1787,8 @@ public async System.Threading.Tasks.Task RequestInviteWithPhotoAsy if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter - localVarRequestOptions.FileParameters.Add("image", image); localVarRequestOptions.FormParameters.Add("data", VRChat.API.Client.ClientUtils.ParameterToString(data)); // form parameter + localVarRequestOptions.FileParameters.Add("image", image); // authentication (authCookie) required // cookie parameter support @@ -2097,12 +2097,12 @@ public async System.Threading.Tasks.Task RespondInviteAsync(string /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Notification - public Notification RespondInviteWithPhoto(string notificationId, FileParameter image, InviteResponse data) + public Notification RespondInviteWithPhoto(string notificationId, InviteResponse data, FileParameter image) { - VRChat.API.Client.ApiResponse localVarResponse = RespondInviteWithPhotoWithHttpInfo(notificationId, image, data); + VRChat.API.Client.ApiResponse localVarResponse = RespondInviteWithPhotoWithHttpInfo(notificationId, data, image); return localVarResponse.Data; } @@ -2111,23 +2111,23 @@ public Notification RespondInviteWithPhoto(string notificationId, FileParameter /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// ApiResponse of Notification - public VRChat.API.Client.ApiResponse RespondInviteWithPhotoWithHttpInfo(string notificationId, FileParameter image, InviteResponse data) + public VRChat.API.Client.ApiResponse RespondInviteWithPhotoWithHttpInfo(string notificationId, InviteResponse data, FileParameter image) { // verify the required parameter 'notificationId' is set if (notificationId == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'notificationId' when calling InviteApi->RespondInviteWithPhoto"); - // verify the required parameter 'image' is set - if (image == null) - throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RespondInviteWithPhoto"); - // verify the required parameter 'data' is set if (data == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'data' when calling InviteApi->RespondInviteWithPhoto"); + // verify the required parameter 'image' is set + if (image == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RespondInviteWithPhoto"); + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); string[] _contentTypes = new string[] { @@ -2146,8 +2146,8 @@ public VRChat.API.Client.ApiResponse RespondInviteWithPhotoWithHtt if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.PathParameters.Add("notificationId", VRChat.API.Client.ClientUtils.ParameterToString(notificationId)); // path parameter - localVarRequestOptions.FileParameters.Add("image", image); localVarRequestOptions.FormParameters.Add("data", VRChat.API.Client.ClientUtils.ParameterToString(data)); // form parameter + localVarRequestOptions.FileParameters.Add("image", image); // authentication (authCookie) required // cookie parameter support @@ -2173,13 +2173,13 @@ public VRChat.API.Client.ApiResponse RespondInviteWithPhotoWithHtt /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of Notification - public async System.Threading.Tasks.Task RespondInviteWithPhotoAsync(string notificationId, FileParameter image, InviteResponse data, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task RespondInviteWithPhotoAsync(string notificationId, InviteResponse data, FileParameter image, System.Threading.CancellationToken cancellationToken = default) { - VRChat.API.Client.ApiResponse localVarResponse = await RespondInviteWithPhotoWithHttpInfoAsync(notificationId, image, data, cancellationToken).ConfigureAwait(false); + VRChat.API.Client.ApiResponse localVarResponse = await RespondInviteWithPhotoWithHttpInfoAsync(notificationId, data, image, cancellationToken).ConfigureAwait(false); return localVarResponse.Data; } @@ -2188,24 +2188,24 @@ public async System.Threading.Tasks.Task RespondInviteWithPhotoAsy /// /// Thrown when fails to make API call /// Must be a valid notification ID. - /// The binary blob of the png file. /// + /// The binary blob of the png file. /// Cancellation Token to cancel the request. /// Task of ApiResponse (Notification) - public async System.Threading.Tasks.Task> RespondInviteWithPhotoWithHttpInfoAsync(string notificationId, FileParameter image, InviteResponse data, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task> RespondInviteWithPhotoWithHttpInfoAsync(string notificationId, InviteResponse data, FileParameter image, System.Threading.CancellationToken cancellationToken = default) { // verify the required parameter 'notificationId' is set if (notificationId == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'notificationId' when calling InviteApi->RespondInviteWithPhoto"); - // verify the required parameter 'image' is set - if (image == null) - throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RespondInviteWithPhoto"); - // verify the required parameter 'data' is set if (data == null) throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'data' when calling InviteApi->RespondInviteWithPhoto"); + // verify the required parameter 'image' is set + if (image == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'image' when calling InviteApi->RespondInviteWithPhoto"); + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); @@ -2226,8 +2226,8 @@ public async System.Threading.Tasks.Task RespondInviteWithPhotoAsy if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.PathParameters.Add("notificationId", VRChat.API.Client.ClientUtils.ParameterToString(notificationId)); // path parameter - localVarRequestOptions.FileParameters.Add("image", image); localVarRequestOptions.FormParameters.Add("data", VRChat.API.Client.ClientUtils.ParameterToString(data)); // form parameter + localVarRequestOptions.FileParameters.Add("image", image); // authentication (authCookie) required // cookie parameter support diff --git a/src/VRChat.API/Api/JamsApi.cs b/src/VRChat.API/Api/JamsApi.cs index a696dc7f..2bdd4241 100644 --- a/src/VRChat.API/Api/JamsApi.cs +++ b/src/VRChat.API/Api/JamsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/MiscellaneousApi.cs b/src/VRChat.API/Api/MiscellaneousApi.cs index 369f8c97..ce0da33d 100644 --- a/src/VRChat.API/Api/MiscellaneousApi.cs +++ b/src/VRChat.API/Api/MiscellaneousApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/NotificationsApi.cs b/src/VRChat.API/Api/NotificationsApi.cs index fabebadc..075ded6c 100644 --- a/src/VRChat.API/Api/NotificationsApi.cs +++ b/src/VRChat.API/Api/NotificationsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/PlayermoderationApi.cs b/src/VRChat.API/Api/PlayermoderationApi.cs index c52d0729..09d4f6c2 100644 --- a/src/VRChat.API/Api/PlayermoderationApi.cs +++ b/src/VRChat.API/Api/PlayermoderationApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -54,10 +54,9 @@ public interface IPlayermoderationApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// List<PlayerModeration> - List GetPlayerModerations(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default); + List GetPlayerModerations(PlayerModerationType? type = default, string? targetUserId = default); /// /// Search Player Moderations @@ -67,10 +66,9 @@ public interface IPlayermoderationApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// ApiResponse of List<PlayerModeration> - ApiResponse> GetPlayerModerationsWithHttpInfo(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default); + ApiResponse> GetPlayerModerationsWithHttpInfo(PlayerModerationType? type = default, string? targetUserId = default); /// /// Moderate User /// @@ -151,11 +149,10 @@ public interface IPlayermoderationApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// Cancellation Token to cancel the request. /// Task of List<PlayerModeration> - System.Threading.Tasks.Task> GetPlayerModerationsAsync(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task> GetPlayerModerationsAsync(PlayerModerationType? type = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default); /// /// Search Player Moderations @@ -165,11 +162,10 @@ public interface IPlayermoderationApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (List<PlayerModeration>) - System.Threading.Tasks.Task>> GetPlayerModerationsWithHttpInfoAsync(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default); + System.Threading.Tasks.Task>> GetPlayerModerationsWithHttpInfoAsync(PlayerModerationType? type = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default); /// /// Moderate User /// @@ -547,12 +543,11 @@ public async System.Threading.Tasks.Task ClearAllPlayerModerationsAsync /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// List<PlayerModeration> - public List GetPlayerModerations(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default) + public List GetPlayerModerations(PlayerModerationType? type = default, string? targetUserId = default) { - VRChat.API.Client.ApiResponse> localVarResponse = GetPlayerModerationsWithHttpInfo(type, sourceUserId, targetUserId); + VRChat.API.Client.ApiResponse> localVarResponse = GetPlayerModerationsWithHttpInfo(type, targetUserId); return localVarResponse.Data; } @@ -561,10 +556,9 @@ public List GetPlayerModerations(PlayerModerationType? type = /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// ApiResponse of List<PlayerModeration> - public VRChat.API.Client.ApiResponse> GetPlayerModerationsWithHttpInfo(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default) + public VRChat.API.Client.ApiResponse> GetPlayerModerationsWithHttpInfo(PlayerModerationType? type = default, string? targetUserId = default) { VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); @@ -586,10 +580,6 @@ public VRChat.API.Client.ApiResponse> GetPlayerModeration { localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "type", type)); } - if (sourceUserId != null) - { - localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "sourceUserId", sourceUserId)); - } if (targetUserId != null) { localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "targetUserId", targetUserId)); @@ -619,13 +609,12 @@ public VRChat.API.Client.ApiResponse> GetPlayerModeration /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// Cancellation Token to cancel the request. /// Task of List<PlayerModeration> - public async System.Threading.Tasks.Task> GetPlayerModerationsAsync(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task> GetPlayerModerationsAsync(PlayerModerationType? type = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default) { - VRChat.API.Client.ApiResponse> localVarResponse = await GetPlayerModerationsWithHttpInfoAsync(type, sourceUserId, targetUserId, cancellationToken).ConfigureAwait(false); + VRChat.API.Client.ApiResponse> localVarResponse = await GetPlayerModerationsWithHttpInfoAsync(type, targetUserId, cancellationToken).ConfigureAwait(false); return localVarResponse.Data; } @@ -634,11 +623,10 @@ public async System.Threading.Tasks.Task> GetPlayerModera /// /// Thrown when fails to make API call /// Must be one of PlayerModerationType. (optional) - /// Must be valid UserID. Trying to view someone else's moderations results with \"Can't view someone else's player moderations\" error. (optional) /// Must be valid UserID. (optional) /// Cancellation Token to cancel the request. /// Task of ApiResponse (List<PlayerModeration>) - public async System.Threading.Tasks.Task>> GetPlayerModerationsWithHttpInfoAsync(PlayerModerationType? type = default, string? sourceUserId = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default) + public async System.Threading.Tasks.Task>> GetPlayerModerationsWithHttpInfoAsync(PlayerModerationType? type = default, string? targetUserId = default, System.Threading.CancellationToken cancellationToken = default) { VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); @@ -662,10 +650,6 @@ public async System.Threading.Tasks.Task> GetPlayerModera { localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "type", type)); } - if (sourceUserId != null) - { - localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "sourceUserId", sourceUserId)); - } if (targetUserId != null) { localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "targetUserId", targetUserId)); diff --git a/src/VRChat.API/Api/PrintsApi.cs b/src/VRChat.API/Api/PrintsApi.cs index 28c17354..57b494e1 100644 --- a/src/VRChat.API/Api/PrintsApi.cs +++ b/src/VRChat.API/Api/PrintsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -1077,11 +1077,11 @@ public VRChat.API.Client.ApiResponse UploadPrintWithHttpInfo(FileParamete if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.FileParameters.Add("image", image); - localVarRequestOptions.FormParameters.Add("timestamp", VRChat.API.Client.ClientUtils.ParameterToString(timestamp)); // form parameter if (note != null) { localVarRequestOptions.FormParameters.Add("note", VRChat.API.Client.ClientUtils.ParameterToString(note)); // form parameter } + localVarRequestOptions.FormParameters.Add("timestamp", VRChat.API.Client.ClientUtils.ParameterToString(timestamp)); // form parameter if (worldId != null) { localVarRequestOptions.FormParameters.Add("worldId", VRChat.API.Client.ClientUtils.ParameterToString(worldId)); // form parameter @@ -1164,11 +1164,11 @@ public async System.Threading.Tasks.Task UploadPrintAsync(FileParameter i if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); localVarRequestOptions.FileParameters.Add("image", image); - localVarRequestOptions.FormParameters.Add("timestamp", VRChat.API.Client.ClientUtils.ParameterToString(timestamp)); // form parameter if (note != null) { localVarRequestOptions.FormParameters.Add("note", VRChat.API.Client.ClientUtils.ParameterToString(note)); // form parameter } + localVarRequestOptions.FormParameters.Add("timestamp", VRChat.API.Client.ClientUtils.ParameterToString(timestamp)); // form parameter if (worldId != null) { localVarRequestOptions.FormParameters.Add("worldId", VRChat.API.Client.ClientUtils.ParameterToString(worldId)); // form parameter diff --git a/src/VRChat.API/Api/PropsApi.cs b/src/VRChat.API/Api/PropsApi.cs index 757f9bf0..64951d34 100644 --- a/src/VRChat.API/Api/PropsApi.cs +++ b/src/VRChat.API/Api/PropsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Api/UsersApi.cs b/src/VRChat.API/Api/UsersApi.cs index 24fabcee..f4b05595 100644 --- a/src/VRChat.API/Api/UsersApi.cs +++ b/src/VRChat.API/Api/UsersApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -97,6 +97,77 @@ public interface IUsersApiSync : IApiAccessor /// ApiResponse of Object(void) ApiResponse DeleteUserPersistenceWithHttpInfo(string userId, string worldId); /// + /// Get User Mutual Friends + /// + /// + /// Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// List<MutualFriend> + List GetMutualFriends(string userId, int? n = default, int? offset = default); + + /// + /// Get User Mutual Friends + /// + /// + /// Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// ApiResponse of List<MutualFriend> + ApiResponse> GetMutualFriendsWithHttpInfo(string userId, int? n = default, int? offset = default); + /// + /// Get User Mutual Groups + /// + /// + /// Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// List<LimitedUserGroups> + List GetMutualGroups(string userId, int? n = default, int? offset = default); + + /// + /// Get User Mutual Groups + /// + /// + /// Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// ApiResponse of List<LimitedUserGroups> + ApiResponse> GetMutualGroupsWithHttpInfo(string userId, int? n = default, int? offset = default); + /// + /// Get User Mutuals + /// + /// + /// Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// Mutuals + Mutuals GetMutuals(string userId); + + /// + /// Get User Mutuals + /// + /// + /// Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// ApiResponse of Mutuals + ApiResponse GetMutualsWithHttpInfo(string userId); + /// /// Get User by ID /// /// @@ -524,6 +595,83 @@ public interface IUsersApiAsync : IApiAccessor /// Task of ApiResponse System.Threading.Tasks.Task> DeleteUserPersistenceWithHttpInfoAsync(string userId, string worldId, System.Threading.CancellationToken cancellationToken = default); /// + /// Get User Mutual Friends + /// + /// + /// Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of List<MutualFriend> + System.Threading.Tasks.Task> GetMutualFriendsAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Get User Mutual Friends + /// + /// + /// Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<MutualFriend>) + System.Threading.Tasks.Task>> GetMutualFriendsWithHttpInfoAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default); + /// + /// Get User Mutual Groups + /// + /// + /// Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of List<LimitedUserGroups> + System.Threading.Tasks.Task> GetMutualGroupsAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Get User Mutual Groups + /// + /// + /// Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<LimitedUserGroups>) + System.Threading.Tasks.Task>> GetMutualGroupsWithHttpInfoAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default); + /// + /// Get User Mutuals + /// + /// + /// Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// Cancellation Token to cancel the request. + /// Task of Mutuals + System.Threading.Tasks.Task GetMutualsAsync(string userId, System.Threading.CancellationToken cancellationToken = default); + + /// + /// Get User Mutuals + /// + /// + /// Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Mutuals) + System.Threading.Tasks.Task> GetMutualsWithHttpInfoAsync(string userId, System.Threading.CancellationToken cancellationToken = default); + /// /// Get User by ID /// /// @@ -1530,6 +1678,435 @@ public async System.Threading.Tasks.Task DeleteUserPersistenceAsync(string userI return localVarResponse; } + /// + /// Get User Mutual Friends Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// List<MutualFriend> + public List GetMutualFriends(string userId, int? n = default, int? offset = default) + { + VRChat.API.Client.ApiResponse> localVarResponse = GetMutualFriendsWithHttpInfo(userId, n, offset); + return localVarResponse.Data; + } + + /// + /// Get User Mutual Friends Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// ApiResponse of List<MutualFriend> + public VRChat.API.Client.ApiResponse> GetMutualFriendsWithHttpInfo(string userId, int? n = default, int? offset = default) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling UsersApi->GetMutualFriends"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (offset != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "offset", offset)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/users/{userId}/mutuals/friends", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetMutualFriends", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get User Mutual Friends Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of List<MutualFriend> + public async System.Threading.Tasks.Task> GetMutualFriendsAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse> localVarResponse = await GetMutualFriendsWithHttpInfoAsync(userId, n, offset, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get User Mutual Friends Gets a list of mutual friends between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<MutualFriend>) + public async System.Threading.Tasks.Task>> GetMutualFriendsWithHttpInfoAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling UsersApi->GetMutualFriends"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (offset != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "offset", offset)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/users/{userId}/mutuals/friends", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetMutualFriends", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get User Mutual Groups Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// List<LimitedUserGroups> + public List GetMutualGroups(string userId, int? n = default, int? offset = default) + { + VRChat.API.Client.ApiResponse> localVarResponse = GetMutualGroupsWithHttpInfo(userId, n, offset); + return localVarResponse.Data; + } + + /// + /// Get User Mutual Groups Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// ApiResponse of List<LimitedUserGroups> + public VRChat.API.Client.ApiResponse> GetMutualGroupsWithHttpInfo(string userId, int? n = default, int? offset = default) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling UsersApi->GetMutualGroups"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (offset != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "offset", offset)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get>("/users/{userId}/mutuals/groups", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetMutualGroups", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get User Mutual Groups Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of List<LimitedUserGroups> + public async System.Threading.Tasks.Task> GetMutualGroupsAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse> localVarResponse = await GetMutualGroupsWithHttpInfoAsync(userId, n, offset, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get User Mutual Groups Gets a list of mutual groups between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// The number of objects to return. (optional, default to 60) + /// A zero-based offset from the default object sorting from where search results start. (optional) + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (List<LimitedUserGroups>) + public async System.Threading.Tasks.Task>> GetMutualGroupsWithHttpInfoAsync(string userId, int? n = default, int? offset = default, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling UsersApi->GetMutualGroups"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + if (n != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "n", n)); + } + if (offset != null) + { + localVarRequestOptions.QueryParameters.Add(VRChat.API.Client.ClientUtils.ParameterToMultiMap("", "offset", offset)); + } + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync>("/users/{userId}/mutuals/groups", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetMutualGroups", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get User Mutuals Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// Mutuals + public Mutuals GetMutuals(string userId) + { + VRChat.API.Client.ApiResponse localVarResponse = GetMutualsWithHttpInfo(userId); + return localVarResponse.Data; + } + + /// + /// Get User Mutuals Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// ApiResponse of Mutuals + public VRChat.API.Client.ApiResponse GetMutualsWithHttpInfo(string userId) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling UsersApi->GetMutuals"); + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + var localVarResponse = this.Client.Get("/users/{userId}/mutuals", localVarRequestOptions, this.Configuration); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetMutuals", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + + /// + /// Get User Mutuals Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// Cancellation Token to cancel the request. + /// Task of Mutuals + public async System.Threading.Tasks.Task GetMutualsAsync(string userId, System.Threading.CancellationToken cancellationToken = default) + { + VRChat.API.Client.ApiResponse localVarResponse = await GetMutualsWithHttpInfoAsync(userId, cancellationToken).ConfigureAwait(false); + return localVarResponse.Data; + } + + /// + /// Get User Mutuals Gets the counts of mutuals between the logged in user and the specified user + /// + /// Thrown when fails to make API call + /// Must be a valid user ID. + /// Cancellation Token to cancel the request. + /// Task of ApiResponse (Mutuals) + public async System.Threading.Tasks.Task> GetMutualsWithHttpInfoAsync(string userId, System.Threading.CancellationToken cancellationToken = default) + { + // verify the required parameter 'userId' is set + if (userId == null) + throw new VRChat.API.Client.ApiException(400, "Missing required parameter 'userId' when calling UsersApi->GetMutuals"); + + + VRChat.API.Client.RequestOptions localVarRequestOptions = new VRChat.API.Client.RequestOptions(); + + string[] _contentTypes = new string[] { + }; + + // to determine the Accept header + string[] _accepts = new string[] { + "application/json" + }; + + + var localVarContentType = VRChat.API.Client.ClientUtils.SelectHeaderContentType(_contentTypes); + if (localVarContentType != null) localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType); + + var localVarAccept = VRChat.API.Client.ClientUtils.SelectHeaderAccept(_accepts); + if (localVarAccept != null) localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept); + + localVarRequestOptions.PathParameters.Add("userId", VRChat.API.Client.ClientUtils.ParameterToString(userId)); // path parameter + + // authentication (authCookie) required + // cookie parameter support + if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("auth"))) + { + localVarRequestOptions.Cookies.Add(new Cookie("auth", this.Configuration.GetApiKeyWithPrefix("auth"), "/", "api.vrchat.cloud")); + } + + // make the HTTP request + + var localVarResponse = await this.AsynchronousClient.GetAsync("/users/{userId}/mutuals", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false); + + if (this.ExceptionFactory != null) + { + Exception _exception = this.ExceptionFactory("GetMutuals", localVarResponse); + if (_exception != null) throw _exception; + } + + return localVarResponse; + } + /// /// Get User by ID Get public user information about a specific user using their ID. /// diff --git a/src/VRChat.API/Api/WorldsApi.cs b/src/VRChat.API/Api/WorldsApi.cs index 5f571b72..95e41631 100644 --- a/src/VRChat.API/Api/WorldsApi.cs +++ b/src/VRChat.API/Api/WorldsApi.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/ApiClient.cs b/src/VRChat.API/Client/ApiClient.cs index 9a0c4f77..94c0ed45 100644 --- a/src/VRChat.API/Client/ApiClient.cs +++ b/src/VRChat.API/Client/ApiClient.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/ApiException.cs b/src/VRChat.API/Client/ApiException.cs index 49dd7c9b..486c72dd 100644 --- a/src/VRChat.API/Client/ApiException.cs +++ b/src/VRChat.API/Client/ApiException.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/ApiResponse.cs b/src/VRChat.API/Client/ApiResponse.cs index 36380581..3dca2343 100644 --- a/src/VRChat.API/Client/ApiResponse.cs +++ b/src/VRChat.API/Client/ApiResponse.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/ClientUtils.cs b/src/VRChat.API/Client/ClientUtils.cs index 6df02001..57f69e14 100644 --- a/src/VRChat.API/Client/ClientUtils.cs +++ b/src/VRChat.API/Client/ClientUtils.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/Configuration.cs b/src/VRChat.API/Client/Configuration.cs index 3afab671..82a0131b 100644 --- a/src/VRChat.API/Client/Configuration.cs +++ b/src/VRChat.API/Client/Configuration.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,7 +33,7 @@ public class Configuration : IReadableConfiguration /// Version of the package. /// /// Version of the package. - public const string Version = "2.20.5"; + public const string Version = "2.20.7-nightly"; /// /// Identifier for ISO 8601 DateTime Format @@ -539,8 +539,8 @@ public static string ToDebugReport() string report = "C# SDK (VRChat.API) Debug Report:\n"; report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; - report += " Version of the API: 1.20.5\n"; - report += " SDK Package Version: 2.20.5\n"; + report += " Version of the API: 1.20.7-nightly.3\n"; + report += " SDK Package Version: 2.20.7-nightly\n"; return report; } diff --git a/src/VRChat.API/Client/ExceptionFactory.cs b/src/VRChat.API/Client/ExceptionFactory.cs index b59d6767..b304ccc7 100644 --- a/src/VRChat.API/Client/ExceptionFactory.cs +++ b/src/VRChat.API/Client/ExceptionFactory.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/FileParameter.cs b/src/VRChat.API/Client/FileParameter.cs index 6f614fa6..4ab3719f 100644 --- a/src/VRChat.API/Client/FileParameter.cs +++ b/src/VRChat.API/Client/FileParameter.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/GlobalConfiguration.cs b/src/VRChat.API/Client/GlobalConfiguration.cs index 807f25e4..e38f8149 100644 --- a/src/VRChat.API/Client/GlobalConfiguration.cs +++ b/src/VRChat.API/Client/GlobalConfiguration.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/IApiAccessor.cs b/src/VRChat.API/Client/IApiAccessor.cs index 332c3b21..9884d2f9 100644 --- a/src/VRChat.API/Client/IApiAccessor.cs +++ b/src/VRChat.API/Client/IApiAccessor.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/IAsynchronousClient.cs b/src/VRChat.API/Client/IAsynchronousClient.cs index 527a1e74..b12b6052 100644 --- a/src/VRChat.API/Client/IAsynchronousClient.cs +++ b/src/VRChat.API/Client/IAsynchronousClient.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/IReadableConfiguration.cs b/src/VRChat.API/Client/IReadableConfiguration.cs index ccc24170..a25fe76f 100644 --- a/src/VRChat.API/Client/IReadableConfiguration.cs +++ b/src/VRChat.API/Client/IReadableConfiguration.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/ISynchronousClient.cs b/src/VRChat.API/Client/ISynchronousClient.cs index 69287afc..a4c0895b 100644 --- a/src/VRChat.API/Client/ISynchronousClient.cs +++ b/src/VRChat.API/Client/ISynchronousClient.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/Multimap.cs b/src/VRChat.API/Client/Multimap.cs index 99046068..287836c6 100644 --- a/src/VRChat.API/Client/Multimap.cs +++ b/src/VRChat.API/Client/Multimap.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/OpenAPIDateConverter.cs b/src/VRChat.API/Client/OpenAPIDateConverter.cs index 1167bf66..cbefe2e0 100644 --- a/src/VRChat.API/Client/OpenAPIDateConverter.cs +++ b/src/VRChat.API/Client/OpenAPIDateConverter.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/RequestOptions.cs b/src/VRChat.API/Client/RequestOptions.cs index 20a19df8..4ff46e2c 100644 --- a/src/VRChat.API/Client/RequestOptions.cs +++ b/src/VRChat.API/Client/RequestOptions.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/RetryConfiguration.cs b/src/VRChat.API/Client/RetryConfiguration.cs index 798107df..04ab9919 100644 --- a/src/VRChat.API/Client/RetryConfiguration.cs +++ b/src/VRChat.API/Client/RetryConfiguration.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Client/WebRequestPathBuilder.cs b/src/VRChat.API/Client/WebRequestPathBuilder.cs index 559575f6..f296788a 100644 --- a/src/VRChat.API/Client/WebRequestPathBuilder.cs +++ b/src/VRChat.API/Client/WebRequestPathBuilder.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfig.cs b/src/VRChat.API/Model/APIConfig.cs index 1cb07c92..0497f7b9 100644 --- a/src/VRChat.API/Model/APIConfig.cs +++ b/src/VRChat.API/Model/APIConfig.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -49,9 +49,9 @@ protected APIConfig() { } /// ageVerificationStatusVisible (required). /// Max retries for avatar analysis requests (required). /// Interval between retries for avatar analysis requests (required). - /// Public Announcements (required). /// Unknown (required). /// Unknown (required). + /// Public Announcements (required). /// List of supported Languages (required). /// List of supported Languages (required). /// avatarPerfLimiter (required). @@ -86,10 +86,10 @@ protected APIConfig() { } /// Unknown (default to false). /// Toggles if copying avatars should be disabled (required) (default to false). /// 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 (required) (default to false). + /// Unknown (default to true). /// Toggles if the Community Labs should be disabled (required) (default to false). /// Toggles if promotion out of Community Labs should be disabled (required) (default to false). /// Unknown (required) (default to false). - /// Unknown (default to true). /// Toggles if Analytics should be disabled. (required) (default to false). /// 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. (required) (default to false). /// Unknown, probably toggles compilation of frontend web builds? So internal flag? (required) (default to false). @@ -123,6 +123,9 @@ protected APIConfig() { } /// offlineAnalysis (required). /// Unknown (required). /// Unknown (required). + /// Currently used youtube-dl.exe hash in SHA1-delimited format (required). + /// Currently used youtube-dl.exe version (required). + /// Public key, hex encoded (required). /// reportCategories (required). /// URL to the report form (required) (default to "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}"). /// reportOptions (required). @@ -135,8 +138,8 @@ protected APIConfig() { } /// 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). (required). /// VRChat's support email (required). /// VRChat's support form (required). - /// Unknown (required) (default to true). /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). + /// Unknown (required) (default to true). /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). /// Unknown (required). /// Unknown (required). @@ -146,14 +149,11 @@ protected APIConfig() { } /// List of allowed URLs that bypass the \"Allow untrusted URL's\" setting in-game (required). /// Unknown (required) (default to false). /// Download link for game on the Steam website. (required). - /// List of allowed URLs that are allowed to host avatar assets (required). - /// Currently used youtube-dl.exe version (required). - /// Currently used youtube-dl.exe hash in SHA1-delimited format (required). - /// Public key, hex encoded (required). /// Unknown (required) (default to 900). /// Unknown (required) (default to 2). /// Unknown (required) (default to 2). - public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLimiting = true, APIConfigAccessLogsUrls accessLogsUrls = default, string address = default, bool ageVerificationInviteVisible = default, bool ageVerificationP = default, bool ageVerificationStatusVisible = default, int analysisMaxRetries = default, int analysisRetryInterval = default, List announcements = default, int analyticsSegmentNewUIPctOfUsers = default, string analyticsSegmentNewUISalt = default, List availableLanguageCodes = default, List availableLanguages = default, APIConfigAvatarPerfLimiter avatarPerfLimiter = default, int chatboxLogBufferSeconds = 40, string clientApiKey = default, int clientBPSCeiling = 18432, int clientDisconnectTimeout = 30000, bool clientNetDispatchThread = false, bool clientNetDispatchThreadMobile = true, bool clientNetInThread = false, bool clientNetInThread2 = false, bool clientNetInThreadMobile = false, bool clientNetInThreadMobile2 = false, bool clientNetOutThread = false, bool clientNetOutThread2 = false, bool clientNetOutThreadMobile = false, bool clientNetOutThreadMobile2 = false, int clientQR = 1, int clientReservedPlayerBPS = 7168, int clientSentCountAllowance = 15, APIConfigConstants constants = default, string contactEmail = default, string copyrightEmail = default, int currentPrivacyVersion = 1, int currentTOSVersion = default, string defaultAvatar = default, string defaultStickerSet = default, List devLanguageCodes = default, string devSdkUrl = default, string devSdkVersion = default, DateTime disCountdown = default, bool disableAVProInProton = false, bool disableAvatarCopying = false, bool disableAvatarGating = false, bool disableCommunityLabs = false, bool disableCommunityLabsPromotion = false, bool disableEmail = false, bool disableCaptcha = true, bool disableEventStream = false, bool disableFeedbackGating = false, bool disableFrontendBuilds = false, bool disableGiftDrops = false, bool disableHello = false, bool disableOculusSubs = false, bool disableRegistration = false, bool disableSteamNetworking = true, bool disableTwoFactorAuth = false, bool disableUdon = false, bool disableUpgradeAccount = false, string downloadLinkWindows = default, APIConfigDownloadURLList downloadUrls = default, List dynamicWorldRows = default, string economyPauseEnd = default, string economyPauseStart = default, int economyState = 1, APIConfigEvents events = default, bool forceUseLatestWorld = true, string giftDisplayType = default, string googleApiClientId = @"827942544393-r2ouvckvouldn9dg9uruseje575e878f.apps.googleusercontent.com", string homeWorldId = default, string homepageRedirectTarget = @"https://hello.vrchat.com", string hubWorldId = default, List imageHostUrlList = default, string jobsEmail = default, APIConfigMinSupportedClientBuildNumber minSupportedClientBuildNumber = default, string minimumUnityVersionForUploads = @"2019.0.0f1", string moderationEmail = default, string notAllowedToSelectAvatarInPrivateWorldMessage = default, APIConfigOfflineAnalysis offlineAnalysis = default, List photonNameserverOverrides = default, List photonPublicKeys = default, APIConfigReportCategories reportCategories = default, string reportFormUrl = @"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}", APIConfigReportOptions reportOptions = default, APIConfigReportReasons reportReasons = default, bool requireAgeVerificationBetaTag = default, string sdkDeveloperFaqUrl = default, string sdkDiscordUrl = default, string sdkNotAllowedToPublishMessage = default, string sdkUnityVersion = default, List stringHostUrlList = default, string supportEmail = default, string supportFormUrl = default, bool timekeeping = true, string timeOutWorldId = default, string tutorialWorldId = default, int updateRateMsMaximum = default, int updateRateMsMinimum = default, int updateRateMsNormal = default, int updateRateMsUdonManual = default, int uploadAnalysisPercent = default, List urlList = default, bool useReliableUdpForVoice = false, string viveWindowsUrl = default, List whiteListedAssetUrls = default, string playerUrlResolverVersion = default, string playerUrlResolverSha1 = default, string publicKey = default, int websocketMaxFriendsRefreshDelay = 900, int websocketQuickReconnectTime = 2, int websocketReconnectMaxDelay = 2) + /// List of allowed URLs that are allowed to host avatar assets (required). + public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLimiting = true, APIConfigAccessLogsUrls accessLogsUrls = default, string address = default, bool ageVerificationInviteVisible = default, bool ageVerificationP = default, bool ageVerificationStatusVisible = default, int analysisMaxRetries = default, int analysisRetryInterval = default, int analyticsSegmentNewUIPctOfUsers = default, string analyticsSegmentNewUISalt = default, List announcements = default, List availableLanguageCodes = default, List availableLanguages = default, APIConfigAvatarPerfLimiter avatarPerfLimiter = default, int chatboxLogBufferSeconds = 40, string clientApiKey = default, int clientBPSCeiling = 18432, int clientDisconnectTimeout = 30000, bool clientNetDispatchThread = false, bool clientNetDispatchThreadMobile = true, bool clientNetInThread = false, bool clientNetInThread2 = false, bool clientNetInThreadMobile = false, bool clientNetInThreadMobile2 = false, bool clientNetOutThread = false, bool clientNetOutThread2 = false, bool clientNetOutThreadMobile = false, bool clientNetOutThreadMobile2 = false, int clientQR = 1, int clientReservedPlayerBPS = 7168, int clientSentCountAllowance = 15, APIConfigConstants constants = default, string contactEmail = default, string copyrightEmail = default, int currentPrivacyVersion = 1, int currentTOSVersion = default, string defaultAvatar = default, string defaultStickerSet = default, List devLanguageCodes = default, string devSdkUrl = default, string devSdkVersion = default, DateTime disCountdown = default, bool disableAVProInProton = false, bool disableAvatarCopying = false, bool disableAvatarGating = false, bool disableCaptcha = true, bool disableCommunityLabs = false, bool disableCommunityLabsPromotion = false, bool disableEmail = false, bool disableEventStream = false, bool disableFeedbackGating = false, bool disableFrontendBuilds = false, bool disableGiftDrops = false, bool disableHello = false, bool disableOculusSubs = false, bool disableRegistration = false, bool disableSteamNetworking = true, bool disableTwoFactorAuth = false, bool disableUdon = false, bool disableUpgradeAccount = false, string downloadLinkWindows = default, APIConfigDownloadURLList downloadUrls = default, List dynamicWorldRows = default, string economyPauseEnd = default, string economyPauseStart = default, int economyState = 1, APIConfigEvents events = default, bool forceUseLatestWorld = true, string giftDisplayType = default, string googleApiClientId = @"827942544393-r2ouvckvouldn9dg9uruseje575e878f.apps.googleusercontent.com", string homeWorldId = default, string homepageRedirectTarget = @"https://hello.vrchat.com", string hubWorldId = default, List imageHostUrlList = default, string jobsEmail = default, APIConfigMinSupportedClientBuildNumber minSupportedClientBuildNumber = default, string minimumUnityVersionForUploads = @"2019.0.0f1", string moderationEmail = default, string notAllowedToSelectAvatarInPrivateWorldMessage = default, APIConfigOfflineAnalysis offlineAnalysis = default, List photonNameserverOverrides = default, List photonPublicKeys = default, string playerUrlResolverSha1 = default, string playerUrlResolverVersion = default, string publicKey = default, APIConfigReportCategories reportCategories = default, string reportFormUrl = @"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}", APIConfigReportOptions reportOptions = default, APIConfigReportReasons reportReasons = default, bool requireAgeVerificationBetaTag = default, string sdkDeveloperFaqUrl = default, string sdkDiscordUrl = default, string sdkNotAllowedToPublishMessage = default, string sdkUnityVersion = default, List stringHostUrlList = default, string supportEmail = default, string supportFormUrl = default, string timeOutWorldId = default, bool timekeeping = true, string tutorialWorldId = default, int updateRateMsMaximum = default, int updateRateMsMinimum = default, int updateRateMsNormal = default, int updateRateMsUdonManual = default, int uploadAnalysisPercent = default, List urlList = default, bool useReliableUdpForVoice = false, string viveWindowsUrl = default, int websocketMaxFriendsRefreshDelay = 900, int websocketQuickReconnectTime = 2, int websocketReconnectMaxDelay = 2, List whiteListedAssetUrls = default) { this.VoiceEnableDegradation = voiceEnableDegradation; this.VoiceEnableReceiverLimiting = voiceEnableReceiverLimiting; @@ -174,12 +174,6 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi this.AgeVerificationStatusVisible = ageVerificationStatusVisible; this.AnalysisMaxRetries = analysisMaxRetries; this.AnalysisRetryInterval = analysisRetryInterval; - // to ensure "announcements" is required (not null) - if (announcements == null) - { - throw new ArgumentNullException("announcements is a required property for APIConfig and cannot be null"); - } - this.Announcements = announcements; this.AnalyticsSegmentNewUIPctOfUsers = analyticsSegmentNewUIPctOfUsers; // to ensure "analyticsSegmentNewUISalt" is required (not null) if (analyticsSegmentNewUISalt == null) @@ -187,6 +181,12 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi throw new ArgumentNullException("analyticsSegmentNewUISalt is a required property for APIConfig and cannot be null"); } this.AnalyticsSegmentNewUISalt = analyticsSegmentNewUISalt; + // to ensure "announcements" is required (not null) + if (announcements == null) + { + throw new ArgumentNullException("announcements is a required property for APIConfig and cannot be null"); + } + this.Announcements = announcements; // to ensure "availableLanguageCodes" is required (not null) if (availableLanguageCodes == null) { @@ -386,6 +386,24 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi throw new ArgumentNullException("photonPublicKeys is a required property for APIConfig and cannot be null"); } this.PhotonPublicKeys = photonPublicKeys; + // to ensure "playerUrlResolverSha1" is required (not null) + if (playerUrlResolverSha1 == null) + { + throw new ArgumentNullException("playerUrlResolverSha1 is a required property for APIConfig and cannot be null"); + } + this.PlayerUrlResolverSha1 = playerUrlResolverSha1; + // to ensure "playerUrlResolverVersion" is required (not null) + if (playerUrlResolverVersion == null) + { + throw new ArgumentNullException("playerUrlResolverVersion is a required property for APIConfig and cannot be null"); + } + this.PlayerUrlResolverVersion = playerUrlResolverVersion; + // to ensure "publicKey" is required (not null) + if (publicKey == null) + { + throw new ArgumentNullException("publicKey is a required property for APIConfig and cannot be null"); + } + this.PublicKey = publicKey; // to ensure "reportCategories" is required (not null) if (reportCategories == null) { @@ -453,13 +471,13 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi throw new ArgumentNullException("supportFormUrl is a required property for APIConfig and cannot be null"); } this.SupportFormUrl = supportFormUrl; - this.Timekeeping = timekeeping; // to ensure "timeOutWorldId" is required (not null) if (timeOutWorldId == null) { throw new ArgumentNullException("timeOutWorldId is a required property for APIConfig and cannot be null"); } this.TimeOutWorldId = timeOutWorldId; + this.Timekeeping = timekeeping; // to ensure "tutorialWorldId" is required (not null) if (tutorialWorldId == null) { @@ -484,33 +502,15 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi throw new ArgumentNullException("viveWindowsUrl is a required property for APIConfig and cannot be null"); } this.ViveWindowsUrl = viveWindowsUrl; + this.WebsocketMaxFriendsRefreshDelay = websocketMaxFriendsRefreshDelay; + this.WebsocketQuickReconnectTime = websocketQuickReconnectTime; + this.WebsocketReconnectMaxDelay = websocketReconnectMaxDelay; // to ensure "whiteListedAssetUrls" is required (not null) if (whiteListedAssetUrls == null) { throw new ArgumentNullException("whiteListedAssetUrls is a required property for APIConfig and cannot be null"); } this.WhiteListedAssetUrls = whiteListedAssetUrls; - // to ensure "playerUrlResolverVersion" is required (not null) - if (playerUrlResolverVersion == null) - { - throw new ArgumentNullException("playerUrlResolverVersion is a required property for APIConfig and cannot be null"); - } - this.PlayerUrlResolverVersion = playerUrlResolverVersion; - // to ensure "playerUrlResolverSha1" is required (not null) - if (playerUrlResolverSha1 == null) - { - throw new ArgumentNullException("playerUrlResolverSha1 is a required property for APIConfig and cannot be null"); - } - this.PlayerUrlResolverSha1 = playerUrlResolverSha1; - // to ensure "publicKey" is required (not null) - if (publicKey == null) - { - throw new ArgumentNullException("publicKey is a required property for APIConfig and cannot be null"); - } - this.PublicKey = publicKey; - this.WebsocketMaxFriendsRefreshDelay = websocketMaxFriendsRefreshDelay; - this.WebsocketQuickReconnectTime = websocketQuickReconnectTime; - this.WebsocketReconnectMaxDelay = websocketReconnectMaxDelay; this.ClientNetDispatchThread = clientNetDispatchThread; this.ClientNetInThread = clientNetInThread; this.ClientNetInThread2 = clientNetInThread2; @@ -589,13 +589,6 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "analysisRetryInterval", IsRequired = true, EmitDefaultValue = true)] public int AnalysisRetryInterval { get; set; } - /// - /// Public Announcements - /// - /// Public Announcements - [DataMember(Name = "announcements", IsRequired = true, EmitDefaultValue = true)] - public List Announcements { get; set; } - /// /// Unknown /// @@ -610,6 +603,13 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "analyticsSegment_NewUI_Salt", IsRequired = true, EmitDefaultValue = true)] public string AnalyticsSegmentNewUISalt { get; set; } + /// + /// Public Announcements + /// + /// Public Announcements + [DataMember(Name = "announcements", IsRequired = true, EmitDefaultValue = true)] + public List Announcements { get; set; } + /// /// List of supported Languages /// @@ -852,6 +852,13 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "disableAvatarGating", IsRequired = true, EmitDefaultValue = true)] public bool DisableAvatarGating { get; set; } + /// + /// Unknown + /// + /// Unknown + [DataMember(Name = "disableCaptcha", EmitDefaultValue = true)] + public bool DisableCaptcha { get; set; } + /// /// Toggles if the Community Labs should be disabled /// @@ -873,13 +880,6 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "disableEmail", IsRequired = true, EmitDefaultValue = true)] public bool DisableEmail { get; set; } - /// - /// Unknown - /// - /// Unknown - [DataMember(Name = "disableCaptcha", EmitDefaultValue = true)] - public bool DisableCaptcha { get; set; } - /// /// Toggles if Analytics should be disabled. /// @@ -1114,6 +1114,27 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "photonPublicKeys", IsRequired = true, EmitDefaultValue = true)] public List PhotonPublicKeys { get; set; } + /// + /// Currently used youtube-dl.exe hash in SHA1-delimited format + /// + /// Currently used youtube-dl.exe hash in SHA1-delimited format + [DataMember(Name = "player-url-resolver-sha1", IsRequired = true, EmitDefaultValue = true)] + public string PlayerUrlResolverSha1 { get; set; } + + /// + /// Currently used youtube-dl.exe version + /// + /// Currently used youtube-dl.exe version + [DataMember(Name = "player-url-resolver-version", IsRequired = true, EmitDefaultValue = true)] + public string PlayerUrlResolverVersion { get; set; } + + /// + /// Public key, hex encoded + /// + /// Public key, hex encoded + [DataMember(Name = "publicKey", IsRequired = true, EmitDefaultValue = true)] + public string PublicKey { get; set; } + /// /// Gets or Sets ReportCategories /// @@ -1194,13 +1215,6 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "supportFormUrl", IsRequired = true, EmitDefaultValue = true)] public string SupportFormUrl { get; set; } - /// - /// Unknown - /// - /// Unknown - [DataMember(Name = "timekeeping", IsRequired = true, EmitDefaultValue = true)] - public bool Timekeeping { get; set; } - /// /// WorldID be \"offline\" on User profiles if you are not friends with that user. /// @@ -1211,6 +1225,13 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "timeOutWorldId", IsRequired = true, EmitDefaultValue = true)] public string TimeOutWorldId { get; set; } + /// + /// Unknown + /// + /// Unknown + [DataMember(Name = "timekeeping", IsRequired = true, EmitDefaultValue = true)] + public bool Timekeeping { get; set; } + /// /// WorldID be \"offline\" on User profiles if you are not friends with that user. /// @@ -1277,34 +1298,6 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "viveWindowsUrl", IsRequired = true, EmitDefaultValue = true)] public string ViveWindowsUrl { get; set; } - /// - /// List of allowed URLs that are allowed to host avatar assets - /// - /// List of allowed URLs that are allowed to host avatar assets - [DataMember(Name = "whiteListedAssetUrls", IsRequired = true, EmitDefaultValue = true)] - public List WhiteListedAssetUrls { get; set; } - - /// - /// Currently used youtube-dl.exe version - /// - /// Currently used youtube-dl.exe version - [DataMember(Name = "player-url-resolver-version", IsRequired = true, EmitDefaultValue = true)] - public string PlayerUrlResolverVersion { get; set; } - - /// - /// Currently used youtube-dl.exe hash in SHA1-delimited format - /// - /// Currently used youtube-dl.exe hash in SHA1-delimited format - [DataMember(Name = "player-url-resolver-sha1", IsRequired = true, EmitDefaultValue = true)] - public string PlayerUrlResolverSha1 { get; set; } - - /// - /// Public key, hex encoded - /// - /// Public key, hex encoded - [DataMember(Name = "publicKey", IsRequired = true, EmitDefaultValue = true)] - public string PublicKey { get; set; } - /// /// Unknown /// @@ -1326,6 +1319,13 @@ public APIConfig(bool voiceEnableDegradation = false, bool voiceEnableReceiverLi [DataMember(Name = "websocketReconnectMaxDelay", IsRequired = true, EmitDefaultValue = true)] public int WebsocketReconnectMaxDelay { get; set; } + /// + /// List of allowed URLs that are allowed to host avatar assets + /// + /// List of allowed URLs that are allowed to host avatar assets + [DataMember(Name = "whiteListedAssetUrls", IsRequired = true, EmitDefaultValue = true)] + public List WhiteListedAssetUrls { get; set; } + /// /// Returns the string presentation of the object /// @@ -1343,9 +1343,9 @@ public override string ToString() sb.Append(" AgeVerificationStatusVisible: ").Append(AgeVerificationStatusVisible).Append("\n"); sb.Append(" AnalysisMaxRetries: ").Append(AnalysisMaxRetries).Append("\n"); sb.Append(" AnalysisRetryInterval: ").Append(AnalysisRetryInterval).Append("\n"); - sb.Append(" Announcements: ").Append(Announcements).Append("\n"); sb.Append(" AnalyticsSegmentNewUIPctOfUsers: ").Append(AnalyticsSegmentNewUIPctOfUsers).Append("\n"); sb.Append(" AnalyticsSegmentNewUISalt: ").Append(AnalyticsSegmentNewUISalt).Append("\n"); + sb.Append(" Announcements: ").Append(Announcements).Append("\n"); sb.Append(" AvailableLanguageCodes: ").Append(AvailableLanguageCodes).Append("\n"); sb.Append(" AvailableLanguages: ").Append(AvailableLanguages).Append("\n"); sb.Append(" AvatarPerfLimiter: ").Append(AvatarPerfLimiter).Append("\n"); @@ -1380,10 +1380,10 @@ public override string ToString() sb.Append(" DisableAVProInProton: ").Append(DisableAVProInProton).Append("\n"); sb.Append(" DisableAvatarCopying: ").Append(DisableAvatarCopying).Append("\n"); sb.Append(" DisableAvatarGating: ").Append(DisableAvatarGating).Append("\n"); + sb.Append(" DisableCaptcha: ").Append(DisableCaptcha).Append("\n"); sb.Append(" DisableCommunityLabs: ").Append(DisableCommunityLabs).Append("\n"); sb.Append(" DisableCommunityLabsPromotion: ").Append(DisableCommunityLabsPromotion).Append("\n"); sb.Append(" DisableEmail: ").Append(DisableEmail).Append("\n"); - sb.Append(" DisableCaptcha: ").Append(DisableCaptcha).Append("\n"); sb.Append(" DisableEventStream: ").Append(DisableEventStream).Append("\n"); sb.Append(" DisableFeedbackGating: ").Append(DisableFeedbackGating).Append("\n"); sb.Append(" DisableFrontendBuilds: ").Append(DisableFrontendBuilds).Append("\n"); @@ -1417,6 +1417,9 @@ public override string ToString() sb.Append(" OfflineAnalysis: ").Append(OfflineAnalysis).Append("\n"); sb.Append(" PhotonNameserverOverrides: ").Append(PhotonNameserverOverrides).Append("\n"); sb.Append(" PhotonPublicKeys: ").Append(PhotonPublicKeys).Append("\n"); + sb.Append(" PlayerUrlResolverSha1: ").Append(PlayerUrlResolverSha1).Append("\n"); + sb.Append(" PlayerUrlResolverVersion: ").Append(PlayerUrlResolverVersion).Append("\n"); + sb.Append(" PublicKey: ").Append(PublicKey).Append("\n"); sb.Append(" ReportCategories: ").Append(ReportCategories).Append("\n"); sb.Append(" ReportFormUrl: ").Append(ReportFormUrl).Append("\n"); sb.Append(" ReportOptions: ").Append(ReportOptions).Append("\n"); @@ -1429,8 +1432,8 @@ public override string ToString() sb.Append(" StringHostUrlList: ").Append(StringHostUrlList).Append("\n"); sb.Append(" SupportEmail: ").Append(SupportEmail).Append("\n"); sb.Append(" SupportFormUrl: ").Append(SupportFormUrl).Append("\n"); - sb.Append(" Timekeeping: ").Append(Timekeeping).Append("\n"); sb.Append(" TimeOutWorldId: ").Append(TimeOutWorldId).Append("\n"); + sb.Append(" Timekeeping: ").Append(Timekeeping).Append("\n"); sb.Append(" TutorialWorldId: ").Append(TutorialWorldId).Append("\n"); sb.Append(" UpdateRateMsMaximum: ").Append(UpdateRateMsMaximum).Append("\n"); sb.Append(" UpdateRateMsMinimum: ").Append(UpdateRateMsMinimum).Append("\n"); @@ -1440,13 +1443,10 @@ public override string ToString() sb.Append(" UrlList: ").Append(UrlList).Append("\n"); sb.Append(" UseReliableUdpForVoice: ").Append(UseReliableUdpForVoice).Append("\n"); sb.Append(" ViveWindowsUrl: ").Append(ViveWindowsUrl).Append("\n"); - sb.Append(" WhiteListedAssetUrls: ").Append(WhiteListedAssetUrls).Append("\n"); - sb.Append(" PlayerUrlResolverVersion: ").Append(PlayerUrlResolverVersion).Append("\n"); - sb.Append(" PlayerUrlResolverSha1: ").Append(PlayerUrlResolverSha1).Append("\n"); - sb.Append(" PublicKey: ").Append(PublicKey).Append("\n"); sb.Append(" WebsocketMaxFriendsRefreshDelay: ").Append(WebsocketMaxFriendsRefreshDelay).Append("\n"); sb.Append(" WebsocketQuickReconnectTime: ").Append(WebsocketQuickReconnectTime).Append("\n"); sb.Append(" WebsocketReconnectMaxDelay: ").Append(WebsocketReconnectMaxDelay).Append("\n"); + sb.Append(" WhiteListedAssetUrls: ").Append(WhiteListedAssetUrls).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -1520,12 +1520,6 @@ public bool Equals(APIConfig input) this.AnalysisRetryInterval == input.AnalysisRetryInterval || this.AnalysisRetryInterval.Equals(input.AnalysisRetryInterval) ) && - ( - this.Announcements == input.Announcements || - this.Announcements != null && - input.Announcements != null && - this.Announcements.SequenceEqual(input.Announcements) - ) && ( this.AnalyticsSegmentNewUIPctOfUsers == input.AnalyticsSegmentNewUIPctOfUsers || this.AnalyticsSegmentNewUIPctOfUsers.Equals(input.AnalyticsSegmentNewUIPctOfUsers) @@ -1535,6 +1529,12 @@ public bool Equals(APIConfig input) (this.AnalyticsSegmentNewUISalt != null && this.AnalyticsSegmentNewUISalt.Equals(input.AnalyticsSegmentNewUISalt)) ) && + ( + this.Announcements == input.Announcements || + this.Announcements != null && + input.Announcements != null && + this.Announcements.SequenceEqual(input.Announcements) + ) && ( this.AvailableLanguageCodes == input.AvailableLanguageCodes || this.AvailableLanguageCodes != null && @@ -1687,6 +1687,10 @@ public bool Equals(APIConfig input) this.DisableAvatarGating == input.DisableAvatarGating || this.DisableAvatarGating.Equals(input.DisableAvatarGating) ) && + ( + this.DisableCaptcha == input.DisableCaptcha || + this.DisableCaptcha.Equals(input.DisableCaptcha) + ) && ( this.DisableCommunityLabs == input.DisableCommunityLabs || this.DisableCommunityLabs.Equals(input.DisableCommunityLabs) @@ -1699,10 +1703,6 @@ public bool Equals(APIConfig input) this.DisableEmail == input.DisableEmail || this.DisableEmail.Equals(input.DisableEmail) ) && - ( - this.DisableCaptcha == input.DisableCaptcha || - this.DisableCaptcha.Equals(input.DisableCaptcha) - ) && ( this.DisableEventStream == input.DisableEventStream || this.DisableEventStream.Equals(input.DisableEventStream) @@ -1859,6 +1859,21 @@ public bool Equals(APIConfig input) input.PhotonPublicKeys != null && this.PhotonPublicKeys.SequenceEqual(input.PhotonPublicKeys) ) && + ( + this.PlayerUrlResolverSha1 == input.PlayerUrlResolverSha1 || + (this.PlayerUrlResolverSha1 != null && + this.PlayerUrlResolverSha1.Equals(input.PlayerUrlResolverSha1)) + ) && + ( + this.PlayerUrlResolverVersion == input.PlayerUrlResolverVersion || + (this.PlayerUrlResolverVersion != null && + this.PlayerUrlResolverVersion.Equals(input.PlayerUrlResolverVersion)) + ) && + ( + this.PublicKey == input.PublicKey || + (this.PublicKey != null && + this.PublicKey.Equals(input.PublicKey)) + ) && ( this.ReportCategories == input.ReportCategories || (this.ReportCategories != null && @@ -1919,15 +1934,15 @@ public bool Equals(APIConfig input) (this.SupportFormUrl != null && this.SupportFormUrl.Equals(input.SupportFormUrl)) ) && - ( - this.Timekeeping == input.Timekeeping || - this.Timekeeping.Equals(input.Timekeeping) - ) && ( this.TimeOutWorldId == input.TimeOutWorldId || (this.TimeOutWorldId != null && this.TimeOutWorldId.Equals(input.TimeOutWorldId)) ) && + ( + this.Timekeeping == input.Timekeeping || + this.Timekeeping.Equals(input.Timekeeping) + ) && ( this.TutorialWorldId == input.TutorialWorldId || (this.TutorialWorldId != null && @@ -1968,27 +1983,6 @@ public bool Equals(APIConfig input) (this.ViveWindowsUrl != null && this.ViveWindowsUrl.Equals(input.ViveWindowsUrl)) ) && - ( - this.WhiteListedAssetUrls == input.WhiteListedAssetUrls || - this.WhiteListedAssetUrls != null && - input.WhiteListedAssetUrls != null && - this.WhiteListedAssetUrls.SequenceEqual(input.WhiteListedAssetUrls) - ) && - ( - this.PlayerUrlResolverVersion == input.PlayerUrlResolverVersion || - (this.PlayerUrlResolverVersion != null && - this.PlayerUrlResolverVersion.Equals(input.PlayerUrlResolverVersion)) - ) && - ( - this.PlayerUrlResolverSha1 == input.PlayerUrlResolverSha1 || - (this.PlayerUrlResolverSha1 != null && - this.PlayerUrlResolverSha1.Equals(input.PlayerUrlResolverSha1)) - ) && - ( - this.PublicKey == input.PublicKey || - (this.PublicKey != null && - this.PublicKey.Equals(input.PublicKey)) - ) && ( this.WebsocketMaxFriendsRefreshDelay == input.WebsocketMaxFriendsRefreshDelay || this.WebsocketMaxFriendsRefreshDelay.Equals(input.WebsocketMaxFriendsRefreshDelay) @@ -2000,6 +1994,12 @@ public bool Equals(APIConfig input) ( this.WebsocketReconnectMaxDelay == input.WebsocketReconnectMaxDelay || this.WebsocketReconnectMaxDelay.Equals(input.WebsocketReconnectMaxDelay) + ) && + ( + this.WhiteListedAssetUrls == input.WhiteListedAssetUrls || + this.WhiteListedAssetUrls != null && + input.WhiteListedAssetUrls != null && + this.WhiteListedAssetUrls.SequenceEqual(input.WhiteListedAssetUrls) ); } @@ -2027,15 +2027,15 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.AgeVerificationStatusVisible.GetHashCode(); hashCode = (hashCode * 59) + this.AnalysisMaxRetries.GetHashCode(); hashCode = (hashCode * 59) + this.AnalysisRetryInterval.GetHashCode(); - if (this.Announcements != null) - { - hashCode = (hashCode * 59) + this.Announcements.GetHashCode(); - } hashCode = (hashCode * 59) + this.AnalyticsSegmentNewUIPctOfUsers.GetHashCode(); if (this.AnalyticsSegmentNewUISalt != null) { hashCode = (hashCode * 59) + this.AnalyticsSegmentNewUISalt.GetHashCode(); } + if (this.Announcements != null) + { + hashCode = (hashCode * 59) + this.Announcements.GetHashCode(); + } if (this.AvailableLanguageCodes != null) { hashCode = (hashCode * 59) + this.AvailableLanguageCodes.GetHashCode(); @@ -2109,10 +2109,10 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.DisableAVProInProton.GetHashCode(); hashCode = (hashCode * 59) + this.DisableAvatarCopying.GetHashCode(); hashCode = (hashCode * 59) + this.DisableAvatarGating.GetHashCode(); + hashCode = (hashCode * 59) + this.DisableCaptcha.GetHashCode(); hashCode = (hashCode * 59) + this.DisableCommunityLabs.GetHashCode(); hashCode = (hashCode * 59) + this.DisableCommunityLabsPromotion.GetHashCode(); hashCode = (hashCode * 59) + this.DisableEmail.GetHashCode(); - hashCode = (hashCode * 59) + this.DisableCaptcha.GetHashCode(); hashCode = (hashCode * 59) + this.DisableEventStream.GetHashCode(); hashCode = (hashCode * 59) + this.DisableFeedbackGating.GetHashCode(); hashCode = (hashCode * 59) + this.DisableFrontendBuilds.GetHashCode(); @@ -2206,6 +2206,18 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.PhotonPublicKeys.GetHashCode(); } + if (this.PlayerUrlResolverSha1 != null) + { + hashCode = (hashCode * 59) + this.PlayerUrlResolverSha1.GetHashCode(); + } + if (this.PlayerUrlResolverVersion != null) + { + hashCode = (hashCode * 59) + this.PlayerUrlResolverVersion.GetHashCode(); + } + if (this.PublicKey != null) + { + hashCode = (hashCode * 59) + this.PublicKey.GetHashCode(); + } if (this.ReportCategories != null) { hashCode = (hashCode * 59) + this.ReportCategories.GetHashCode(); @@ -2251,11 +2263,11 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.SupportFormUrl.GetHashCode(); } - hashCode = (hashCode * 59) + this.Timekeeping.GetHashCode(); if (this.TimeOutWorldId != null) { hashCode = (hashCode * 59) + this.TimeOutWorldId.GetHashCode(); } + hashCode = (hashCode * 59) + this.Timekeeping.GetHashCode(); if (this.TutorialWorldId != null) { hashCode = (hashCode * 59) + this.TutorialWorldId.GetHashCode(); @@ -2274,25 +2286,13 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ViveWindowsUrl.GetHashCode(); } + hashCode = (hashCode * 59) + this.WebsocketMaxFriendsRefreshDelay.GetHashCode(); + hashCode = (hashCode * 59) + this.WebsocketQuickReconnectTime.GetHashCode(); + hashCode = (hashCode * 59) + this.WebsocketReconnectMaxDelay.GetHashCode(); if (this.WhiteListedAssetUrls != null) { hashCode = (hashCode * 59) + this.WhiteListedAssetUrls.GetHashCode(); } - if (this.PlayerUrlResolverVersion != null) - { - hashCode = (hashCode * 59) + this.PlayerUrlResolverVersion.GetHashCode(); - } - if (this.PlayerUrlResolverSha1 != null) - { - hashCode = (hashCode * 59) + this.PlayerUrlResolverSha1.GetHashCode(); - } - if (this.PublicKey != null) - { - hashCode = (hashCode * 59) + this.PublicKey.GetHashCode(); - } - hashCode = (hashCode * 59) + this.WebsocketMaxFriendsRefreshDelay.GetHashCode(); - hashCode = (hashCode * 59) + this.WebsocketQuickReconnectTime.GetHashCode(); - hashCode = (hashCode * 59) + this.WebsocketReconnectMaxDelay.GetHashCode(); return hashCode; } } @@ -2376,6 +2376,18 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for NotAllowedToSelectAvatarInPrivateWorldMessage, length must be greater than 1.", new [] { "NotAllowedToSelectAvatarInPrivateWorldMessage" }); } + // PlayerUrlResolverSha1 (string) minLength + if (this.PlayerUrlResolverSha1 != null && this.PlayerUrlResolverSha1.Length < 1) + { + yield return new ValidationResult("Invalid value for PlayerUrlResolverSha1, length must be greater than 1.", new [] { "PlayerUrlResolverSha1" }); + } + + // PlayerUrlResolverVersion (string) minLength + if (this.PlayerUrlResolverVersion != null && this.PlayerUrlResolverVersion.Length < 1) + { + yield return new ValidationResult("Invalid value for PlayerUrlResolverVersion, length must be greater than 1.", new [] { "PlayerUrlResolverVersion" }); + } + // SdkDeveloperFaqUrl (string) minLength if (this.SdkDeveloperFaqUrl != null && this.SdkDeveloperFaqUrl.Length < 1) { @@ -2412,18 +2424,6 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for ViveWindowsUrl, length must be greater than 1.", new [] { "ViveWindowsUrl" }); } - // PlayerUrlResolverVersion (string) minLength - if (this.PlayerUrlResolverVersion != null && this.PlayerUrlResolverVersion.Length < 1) - { - yield return new ValidationResult("Invalid value for PlayerUrlResolverVersion, length must be greater than 1.", new [] { "PlayerUrlResolverVersion" }); - } - - // PlayerUrlResolverSha1 (string) minLength - if (this.PlayerUrlResolverSha1 != null && this.PlayerUrlResolverSha1.Length < 1) - { - yield return new ValidationResult("Invalid value for PlayerUrlResolverSha1, length must be greater than 1.", new [] { "PlayerUrlResolverSha1" }); - } - yield break; } } diff --git a/src/VRChat.API/Model/APIConfigAccessLogsUrls.cs b/src/VRChat.API/Model/APIConfigAccessLogsUrls.cs index 0e4dfe8a..3c0d70fc 100644 --- a/src/VRChat.API/Model/APIConfigAccessLogsUrls.cs +++ b/src/VRChat.API/Model/APIConfigAccessLogsUrls.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigAnnouncement.cs b/src/VRChat.API/Model/APIConfigAnnouncement.cs index a6a01313..46cbfb28 100644 --- a/src/VRChat.API/Model/APIConfigAnnouncement.cs +++ b/src/VRChat.API/Model/APIConfigAnnouncement.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigAvatarPerfLimiter.cs b/src/VRChat.API/Model/APIConfigAvatarPerfLimiter.cs index 7118ea37..fc5e48a6 100644 --- a/src/VRChat.API/Model/APIConfigAvatarPerfLimiter.cs +++ b/src/VRChat.API/Model/APIConfigAvatarPerfLimiter.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstants.cs b/src/VRChat.API/Model/APIConfigConstants.cs index 0c61fb53..0c1eb314 100644 --- a/src/VRChat.API/Model/APIConfigConstants.cs +++ b/src/VRChat.API/Model/APIConfigConstants.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstantsGROUPS.cs b/src/VRChat.API/Model/APIConfigConstantsGROUPS.cs index 6b4ed308..44fc45e3 100644 --- a/src/VRChat.API/Model/APIConfigConstantsGROUPS.cs +++ b/src/VRChat.API/Model/APIConfigConstantsGROUPS.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstantsINSTANCE.cs b/src/VRChat.API/Model/APIConfigConstantsINSTANCE.cs index 50404900..2aa1499d 100644 --- a/src/VRChat.API/Model/APIConfigConstantsINSTANCE.cs +++ b/src/VRChat.API/Model/APIConfigConstantsINSTANCE.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETS.cs b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETS.cs index 23a79d38..0aafab49 100644 --- a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETS.cs +++ b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETS.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSCROWDED.cs b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSCROWDED.cs index b0d3a155..f91d4e52 100644 --- a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSCROWDED.cs +++ b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSCROWDED.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSFEW.cs b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSFEW.cs index ade94764..c9eae2e4 100644 --- a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSFEW.cs +++ b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSFEW.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSMANY.cs b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSMANY.cs index 178963ee..b21eea53 100644 --- a/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSMANY.cs +++ b/src/VRChat.API/Model/APIConfigConstantsINSTANCEPOPULATIONBRACKETSMANY.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigConstantsLANGUAGE.cs b/src/VRChat.API/Model/APIConfigConstantsLANGUAGE.cs index be546176..179f7aaf 100644 --- a/src/VRChat.API/Model/APIConfigConstantsLANGUAGE.cs +++ b/src/VRChat.API/Model/APIConfigConstantsLANGUAGE.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigDownloadURLList.cs b/src/VRChat.API/Model/APIConfigDownloadURLList.cs index 2393c6ff..549bf0c4 100644 --- a/src/VRChat.API/Model/APIConfigDownloadURLList.cs +++ b/src/VRChat.API/Model/APIConfigDownloadURLList.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,13 +40,19 @@ protected APIConfigDownloadURLList() { } /// /// Initializes a new instance of the class. /// + /// Download link for ??? (required). /// Download link for legacy SDK2 (required). /// Download link for SDK3 for Avatars (required). /// Download link for SDK3 for Worlds (required). /// Download link for the Creator Companion (required). - /// Download link for ??? (required). - public APIConfigDownloadURLList(string sdk2 = default, string sdk3Avatars = default, string sdk3Worlds = default, string vcc = default, string bootstrap = default) + public APIConfigDownloadURLList(string bootstrap = default, string sdk2 = default, string sdk3Avatars = default, string sdk3Worlds = default, string vcc = default) { + // to ensure "bootstrap" is required (not null) + if (bootstrap == null) + { + throw new ArgumentNullException("bootstrap is a required property for APIConfigDownloadURLList and cannot be null"); + } + this.Bootstrap = bootstrap; // to ensure "sdk2" is required (not null) if (sdk2 == null) { @@ -71,14 +77,15 @@ public APIConfigDownloadURLList(string sdk2 = default, string sdk3Avatars = defa throw new ArgumentNullException("vcc is a required property for APIConfigDownloadURLList and cannot be null"); } this.Vcc = vcc; - // to ensure "bootstrap" is required (not null) - if (bootstrap == null) - { - throw new ArgumentNullException("bootstrap is a required property for APIConfigDownloadURLList and cannot be null"); - } - this.Bootstrap = bootstrap; } + /// + /// Download link for ??? + /// + /// Download link for ??? + [DataMember(Name = "bootstrap", IsRequired = true, EmitDefaultValue = true)] + public string Bootstrap { get; set; } + /// /// Download link for legacy SDK2 /// @@ -108,13 +115,6 @@ public APIConfigDownloadURLList(string sdk2 = default, string sdk3Avatars = defa [DataMember(Name = "vcc", IsRequired = true, EmitDefaultValue = true)] public string Vcc { get; set; } - /// - /// Download link for ??? - /// - /// Download link for ??? - [DataMember(Name = "bootstrap", IsRequired = true, EmitDefaultValue = true)] - public string Bootstrap { get; set; } - /// /// Returns the string presentation of the object /// @@ -123,11 +123,11 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class APIConfigDownloadURLList {\n"); + sb.Append(" Bootstrap: ").Append(Bootstrap).Append("\n"); sb.Append(" Sdk2: ").Append(Sdk2).Append("\n"); sb.Append(" Sdk3Avatars: ").Append(Sdk3Avatars).Append("\n"); sb.Append(" Sdk3Worlds: ").Append(Sdk3Worlds).Append("\n"); sb.Append(" Vcc: ").Append(Vcc).Append("\n"); - sb.Append(" Bootstrap: ").Append(Bootstrap).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -163,6 +163,11 @@ public bool Equals(APIConfigDownloadURLList input) return false; } return + ( + this.Bootstrap == input.Bootstrap || + (this.Bootstrap != null && + this.Bootstrap.Equals(input.Bootstrap)) + ) && ( this.Sdk2 == input.Sdk2 || (this.Sdk2 != null && @@ -182,11 +187,6 @@ public bool Equals(APIConfigDownloadURLList input) this.Vcc == input.Vcc || (this.Vcc != null && this.Vcc.Equals(input.Vcc)) - ) && - ( - this.Bootstrap == input.Bootstrap || - (this.Bootstrap != null && - this.Bootstrap.Equals(input.Bootstrap)) ); } @@ -199,6 +199,10 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + if (this.Bootstrap != null) + { + hashCode = (hashCode * 59) + this.Bootstrap.GetHashCode(); + } if (this.Sdk2 != null) { hashCode = (hashCode * 59) + this.Sdk2.GetHashCode(); @@ -215,10 +219,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Vcc.GetHashCode(); } - if (this.Bootstrap != null) - { - hashCode = (hashCode * 59) + this.Bootstrap.GetHashCode(); - } return hashCode; } } @@ -230,6 +230,12 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { + // Bootstrap (string) minLength + if (this.Bootstrap != null && this.Bootstrap.Length < 1) + { + yield return new ValidationResult("Invalid value for Bootstrap, length must be greater than 1.", new [] { "Bootstrap" }); + } + // Sdk2 (string) minLength if (this.Sdk2 != null && this.Sdk2.Length < 1) { @@ -254,12 +260,6 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for Vcc, length must be greater than 1.", new [] { "Vcc" }); } - // Bootstrap (string) minLength - if (this.Bootstrap != null && this.Bootstrap.Length < 1) - { - yield return new ValidationResult("Invalid value for Bootstrap, length must be greater than 1.", new [] { "Bootstrap" }); - } - yield break; } } diff --git a/src/VRChat.API/Model/APIConfigEvents.cs b/src/VRChat.API/Model/APIConfigEvents.cs index 95697587..c9d7c783 100644 --- a/src/VRChat.API/Model/APIConfigEvents.cs +++ b/src/VRChat.API/Model/APIConfigEvents.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigMinSupportedClientBuildNumber.cs b/src/VRChat.API/Model/APIConfigMinSupportedClientBuildNumber.cs index 43a10f7d..e615444d 100644 --- a/src/VRChat.API/Model/APIConfigMinSupportedClientBuildNumber.cs +++ b/src/VRChat.API/Model/APIConfigMinSupportedClientBuildNumber.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigOfflineAnalysis.cs b/src/VRChat.API/Model/APIConfigOfflineAnalysis.cs index 04dc678e..968e9082 100644 --- a/src/VRChat.API/Model/APIConfigOfflineAnalysis.cs +++ b/src/VRChat.API/Model/APIConfigOfflineAnalysis.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigReportCategories.cs b/src/VRChat.API/Model/APIConfigReportCategories.cs index 5c97c033..25bba9a0 100644 --- a/src/VRChat.API/Model/APIConfigReportCategories.cs +++ b/src/VRChat.API/Model/APIConfigReportCategories.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -48,12 +48,12 @@ protected APIConfigReportCategories() { } /// varEnvironment (required). /// groupstore (required). /// image (required). - /// text (required). /// sticker. + /// text (required). /// warnings (required). /// worldimage (required). /// worldstore (required). - public APIConfigReportCategories(ReportCategory avatar = default, ReportCategory avatarpage = default, ReportCategory behavior = default, ReportCategory chat = default, ReportCategory emoji = default, ReportCategory varEnvironment = default, ReportCategory groupstore = default, ReportCategory image = default, ReportCategory text = default, ReportCategory sticker = default, ReportCategory warnings = default, ReportCategory worldimage = default, ReportCategory worldstore = default) + public APIConfigReportCategories(ReportCategory avatar = default, ReportCategory avatarpage = default, ReportCategory behavior = default, ReportCategory chat = default, ReportCategory emoji = default, ReportCategory varEnvironment = default, ReportCategory groupstore = default, ReportCategory image = default, ReportCategory sticker = default, ReportCategory text = default, ReportCategory warnings = default, ReportCategory worldimage = default, ReportCategory worldstore = default) { // to ensure "avatar" is required (not null) if (avatar == null) @@ -168,18 +168,18 @@ public APIConfigReportCategories(ReportCategory avatar = default, ReportCategory [DataMember(Name = "image", IsRequired = true, EmitDefaultValue = true)] public ReportCategory Image { get; set; } - /// - /// Gets or Sets Text - /// - [DataMember(Name = "text", IsRequired = true, EmitDefaultValue = true)] - public ReportCategory Text { get; set; } - /// /// Gets or Sets Sticker /// [DataMember(Name = "sticker", EmitDefaultValue = false)] public ReportCategory Sticker { get; set; } + /// + /// Gets or Sets Text + /// + [DataMember(Name = "text", IsRequired = true, EmitDefaultValue = true)] + public ReportCategory Text { get; set; } + /// /// Gets or Sets Warnings /// @@ -214,8 +214,8 @@ public override string ToString() sb.Append(" VarEnvironment: ").Append(VarEnvironment).Append("\n"); sb.Append(" Groupstore: ").Append(Groupstore).Append("\n"); sb.Append(" Image: ").Append(Image).Append("\n"); - sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append(" Sticker: ").Append(Sticker).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append(" Warnings: ").Append(Warnings).Append("\n"); sb.Append(" Worldimage: ").Append(Worldimage).Append("\n"); sb.Append(" Worldstore: ").Append(Worldstore).Append("\n"); @@ -294,16 +294,16 @@ public bool Equals(APIConfigReportCategories input) (this.Image != null && this.Image.Equals(input.Image)) ) && - ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) - ) && ( this.Sticker == input.Sticker || (this.Sticker != null && this.Sticker.Equals(input.Sticker)) ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && ( this.Warnings == input.Warnings || (this.Warnings != null && @@ -362,14 +362,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Image.GetHashCode(); } - if (this.Text != null) - { - hashCode = (hashCode * 59) + this.Text.GetHashCode(); - } if (this.Sticker != null) { hashCode = (hashCode * 59) + this.Sticker.GetHashCode(); } + if (this.Text != null) + { + hashCode = (hashCode * 59) + this.Text.GetHashCode(); + } if (this.Warnings != null) { hashCode = (hashCode * 59) + this.Warnings.GetHashCode(); diff --git a/src/VRChat.API/Model/APIConfigReportOptions.cs b/src/VRChat.API/Model/APIConfigReportOptions.cs index 7904ab30..3c26a474 100644 --- a/src/VRChat.API/Model/APIConfigReportOptions.cs +++ b/src/VRChat.API/Model/APIConfigReportOptions.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigReportOptionsAvatar.cs b/src/VRChat.API/Model/APIConfigReportOptionsAvatar.cs index 088a28b8..4ca56e05 100644 --- a/src/VRChat.API/Model/APIConfigReportOptionsAvatar.cs +++ b/src/VRChat.API/Model/APIConfigReportOptionsAvatar.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigReportOptionsGroup.cs b/src/VRChat.API/Model/APIConfigReportOptionsGroup.cs index e107b1a6..c42463a6 100644 --- a/src/VRChat.API/Model/APIConfigReportOptionsGroup.cs +++ b/src/VRChat.API/Model/APIConfigReportOptionsGroup.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigReportOptionsUser.cs b/src/VRChat.API/Model/APIConfigReportOptionsUser.cs index 5f54bf7a..90fa606b 100644 --- a/src/VRChat.API/Model/APIConfigReportOptionsUser.cs +++ b/src/VRChat.API/Model/APIConfigReportOptionsUser.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigReportOptionsWorld.cs b/src/VRChat.API/Model/APIConfigReportOptionsWorld.cs index 3cc35489..aacb4230 100644 --- a/src/VRChat.API/Model/APIConfigReportOptionsWorld.cs +++ b/src/VRChat.API/Model/APIConfigReportOptionsWorld.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIConfigReportReasons.cs b/src/VRChat.API/Model/APIConfigReportReasons.cs index d5ef17ec..b8cef894 100644 --- a/src/VRChat.API/Model/APIConfigReportReasons.cs +++ b/src/VRChat.API/Model/APIConfigReportReasons.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/APIHealth.cs b/src/VRChat.API/Model/APIHealth.cs index 0b892b80..515c6ca8 100644 --- a/src/VRChat.API/Model/APIHealth.cs +++ b/src/VRChat.API/Model/APIHealth.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,11 +40,17 @@ protected APIHealth() { } /// /// Initializes a new instance of the class. /// + /// buildVersionTag (required). /// ok (required). /// serverName (required). - /// buildVersionTag (required). - public APIHealth(bool ok = default, string serverName = default, string buildVersionTag = default) + public APIHealth(string buildVersionTag = default, bool ok = default, string serverName = default) { + // to ensure "buildVersionTag" is required (not null) + if (buildVersionTag == null) + { + throw new ArgumentNullException("buildVersionTag is a required property for APIHealth and cannot be null"); + } + this.BuildVersionTag = buildVersionTag; this.Ok = ok; // to ensure "serverName" is required (not null) if (serverName == null) @@ -52,14 +58,14 @@ public APIHealth(bool ok = default, string serverName = default, string buildVer throw new ArgumentNullException("serverName is a required property for APIHealth and cannot be null"); } this.ServerName = serverName; - // to ensure "buildVersionTag" is required (not null) - if (buildVersionTag == null) - { - throw new ArgumentNullException("buildVersionTag is a required property for APIHealth and cannot be null"); - } - this.BuildVersionTag = buildVersionTag; } + /// + /// Gets or Sets BuildVersionTag + /// + [DataMember(Name = "buildVersionTag", IsRequired = true, EmitDefaultValue = true)] + public string BuildVersionTag { get; set; } + /// /// Gets or Sets Ok /// @@ -72,12 +78,6 @@ public APIHealth(bool ok = default, string serverName = default, string buildVer [DataMember(Name = "serverName", IsRequired = true, EmitDefaultValue = true)] public string ServerName { get; set; } - /// - /// Gets or Sets BuildVersionTag - /// - [DataMember(Name = "buildVersionTag", IsRequired = true, EmitDefaultValue = true)] - public string BuildVersionTag { get; set; } - /// /// Returns the string presentation of the object /// @@ -86,9 +86,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class APIHealth {\n"); + sb.Append(" BuildVersionTag: ").Append(BuildVersionTag).Append("\n"); sb.Append(" Ok: ").Append(Ok).Append("\n"); sb.Append(" ServerName: ").Append(ServerName).Append("\n"); - sb.Append(" BuildVersionTag: ").Append(BuildVersionTag).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -124,6 +124,11 @@ public bool Equals(APIHealth input) return false; } return + ( + this.BuildVersionTag == input.BuildVersionTag || + (this.BuildVersionTag != null && + this.BuildVersionTag.Equals(input.BuildVersionTag)) + ) && ( this.Ok == input.Ok || this.Ok.Equals(input.Ok) @@ -132,11 +137,6 @@ public bool Equals(APIHealth input) this.ServerName == input.ServerName || (this.ServerName != null && this.ServerName.Equals(input.ServerName)) - ) && - ( - this.BuildVersionTag == input.BuildVersionTag || - (this.BuildVersionTag != null && - this.BuildVersionTag.Equals(input.BuildVersionTag)) ); } @@ -149,15 +149,15 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + if (this.BuildVersionTag != null) + { + hashCode = (hashCode * 59) + this.BuildVersionTag.GetHashCode(); + } hashCode = (hashCode * 59) + this.Ok.GetHashCode(); if (this.ServerName != null) { hashCode = (hashCode * 59) + this.ServerName.GetHashCode(); } - if (this.BuildVersionTag != null) - { - hashCode = (hashCode * 59) + this.BuildVersionTag.GetHashCode(); - } return hashCode; } } @@ -169,18 +169,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // ServerName (string) minLength - if (this.ServerName != null && this.ServerName.Length < 1) - { - yield return new ValidationResult("Invalid value for ServerName, length must be greater than 1.", new [] { "ServerName" }); - } - // BuildVersionTag (string) minLength if (this.BuildVersionTag != null && this.BuildVersionTag.Length < 1) { yield return new ValidationResult("Invalid value for BuildVersionTag, length must be greater than 1.", new [] { "BuildVersionTag" }); } + // ServerName (string) minLength + if (this.ServerName != null && this.ServerName.Length < 1) + { + yield return new ValidationResult("Invalid value for ServerName, length must be greater than 1.", new [] { "ServerName" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/AbstractOpenAPISchema.cs b/src/VRChat.API/Model/AbstractOpenAPISchema.cs index a18c5941..1730335a 100644 --- a/src/VRChat.API/Model/AbstractOpenAPISchema.cs +++ b/src/VRChat.API/Model/AbstractOpenAPISchema.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AccountDeletionLog.cs b/src/VRChat.API/Model/AccountDeletionLog.cs index 0d197f8e..c27f0837 100644 --- a/src/VRChat.API/Model/AccountDeletionLog.cs +++ b/src/VRChat.API/Model/AccountDeletionLog.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,26 +35,23 @@ public partial class AccountDeletionLog : IEquatable, IValid /// /// Initializes a new instance of the class. /// - /// Typically \"Deletion requested\" or \"Deletion canceled\". Other messages like \"Deletion completed\" may exist, but are these are not possible to see as a regular user. (default to "Deletion requested"). - /// When the deletion is scheduled to happen, standard is 14 days after the request.. /// Date and time of the deletion request.. - public AccountDeletionLog(string message = @"Deletion requested", DateTime? deletionScheduled = default, DateTime dateTime = default) + /// When the deletion is scheduled to happen, standard is 14 days after the request.. + /// Typically \"Deletion requested\" or \"Deletion canceled\". Other messages like \"Deletion completed\" may exist, but are these are not possible to see as a regular user. (default to "Deletion requested"). + public AccountDeletionLog(DateTime dateTime = default, DateTime? deletionScheduled = default, string message = @"Deletion requested") { + this.DateTime = dateTime; + this.DeletionScheduled = deletionScheduled; // use default value if no "message" provided this.Message = message ?? @"Deletion requested"; - this.DeletionScheduled = deletionScheduled; - this.DateTime = dateTime; } /// - /// Typically \"Deletion requested\" or \"Deletion canceled\". Other messages like \"Deletion completed\" may exist, but are these are not possible to see as a regular user. + /// Date and time of the deletion request. /// - /// Typically \"Deletion requested\" or \"Deletion canceled\". Other messages like \"Deletion completed\" may exist, but are these are not possible to see as a regular user. - /* - Deletion requested - */ - [DataMember(Name = "message", EmitDefaultValue = false)] - public string Message { get; set; } + /// Date and time of the deletion request. + [DataMember(Name = "dateTime", EmitDefaultValue = false)] + public DateTime DateTime { get; set; } /// /// When the deletion is scheduled to happen, standard is 14 days after the request. @@ -64,11 +61,14 @@ public AccountDeletionLog(string message = @"Deletion requested", DateTime? dele public DateTime? DeletionScheduled { get; set; } /// - /// Date and time of the deletion request. + /// Typically \"Deletion requested\" or \"Deletion canceled\". Other messages like \"Deletion completed\" may exist, but are these are not possible to see as a regular user. /// - /// Date and time of the deletion request. - [DataMember(Name = "dateTime", EmitDefaultValue = false)] - public DateTime DateTime { get; set; } + /// Typically \"Deletion requested\" or \"Deletion canceled\". Other messages like \"Deletion completed\" may exist, but are these are not possible to see as a regular user. + /* + Deletion requested + */ + [DataMember(Name = "message", EmitDefaultValue = false)] + public string Message { get; set; } /// /// Returns the string presentation of the object @@ -78,9 +78,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class AccountDeletionLog {\n"); - sb.Append(" Message: ").Append(Message).Append("\n"); - sb.Append(" DeletionScheduled: ").Append(DeletionScheduled).Append("\n"); sb.Append(" DateTime: ").Append(DateTime).Append("\n"); + sb.Append(" DeletionScheduled: ").Append(DeletionScheduled).Append("\n"); + sb.Append(" Message: ").Append(Message).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -117,9 +117,9 @@ public bool Equals(AccountDeletionLog input) } return ( - this.Message == input.Message || - (this.Message != null && - this.Message.Equals(input.Message)) + this.DateTime == input.DateTime || + (this.DateTime != null && + this.DateTime.Equals(input.DateTime)) ) && ( this.DeletionScheduled == input.DeletionScheduled || @@ -127,9 +127,9 @@ public bool Equals(AccountDeletionLog input) this.DeletionScheduled.Equals(input.DeletionScheduled)) ) && ( - this.DateTime == input.DateTime || - (this.DateTime != null && - this.DateTime.Equals(input.DateTime)) + this.Message == input.Message || + (this.Message != null && + this.Message.Equals(input.Message)) ); } @@ -142,17 +142,17 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Message != null) + if (this.DateTime != null) { - hashCode = (hashCode * 59) + this.Message.GetHashCode(); + hashCode = (hashCode * 59) + this.DateTime.GetHashCode(); } if (this.DeletionScheduled != null) { hashCode = (hashCode * 59) + this.DeletionScheduled.GetHashCode(); } - if (this.DateTime != null) + if (this.Message != null) { - hashCode = (hashCode * 59) + this.DateTime.GetHashCode(); + hashCode = (hashCode * 59) + this.Message.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/AddFavoriteRequest.cs b/src/VRChat.API/Model/AddFavoriteRequest.cs index a036d65a..c1f5b0ff 100644 --- a/src/VRChat.API/Model/AddFavoriteRequest.cs +++ b/src/VRChat.API/Model/AddFavoriteRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,12 +46,11 @@ protected AddFavoriteRequest() { } /// /// Initializes a new instance of the class. /// - /// type (required). /// Must be either AvatarID, WorldID or UserID. (required). /// Tags indicate which group this favorite belongs to. Adding multiple groups makes it show up in all. Removing it from one in that case removes it from all. (required). - public AddFavoriteRequest(FavoriteType type = default, string favoriteId = default, List tags = default) + /// type (required). + public AddFavoriteRequest(string favoriteId = default, List tags = default, FavoriteType type = default) { - this.Type = type; // to ensure "favoriteId" is required (not null) if (favoriteId == null) { @@ -64,6 +63,7 @@ public AddFavoriteRequest(FavoriteType type = default, string favoriteId = defau throw new ArgumentNullException("tags is a required property for AddFavoriteRequest and cannot be null"); } this.Tags = tags; + this.Type = type; } /// @@ -88,9 +88,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class AddFavoriteRequest {\n"); - sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" FavoriteId: ").Append(FavoriteId).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -126,10 +126,6 @@ public bool Equals(AddFavoriteRequest input) return false; } return - ( - this.Type == input.Type || - this.Type.Equals(input.Type) - ) && ( this.FavoriteId == input.FavoriteId || (this.FavoriteId != null && @@ -140,6 +136,10 @@ public bool Equals(AddFavoriteRequest input) this.Tags != null && input.Tags != null && this.Tags.SequenceEqual(input.Tags) + ) && + ( + this.Type == input.Type || + this.Type.Equals(input.Type) ); } @@ -152,7 +152,6 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - hashCode = (hashCode * 59) + this.Type.GetHashCode(); if (this.FavoriteId != null) { hashCode = (hashCode * 59) + this.FavoriteId.GetHashCode(); @@ -161,6 +160,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } + hashCode = (hashCode * 59) + this.Type.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/AddGroupGalleryImageRequest.cs b/src/VRChat.API/Model/AddGroupGalleryImageRequest.cs index 7a49a7d3..cb43d5ab 100644 --- a/src/VRChat.API/Model/AddGroupGalleryImageRequest.cs +++ b/src/VRChat.API/Model/AddGroupGalleryImageRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AdminAssetBundle.cs b/src/VRChat.API/Model/AdminAssetBundle.cs index 43f81ec1..17318ff3 100644 --- a/src/VRChat.API/Model/AdminAssetBundle.cs +++ b/src/VRChat.API/Model/AdminAssetBundle.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AdminUnityPackage.cs b/src/VRChat.API/Model/AdminUnityPackage.cs index 90fea66b..c168850d 100644 --- a/src/VRChat.API/Model/AdminUnityPackage.cs +++ b/src/VRChat.API/Model/AdminUnityPackage.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AgeVerificationStatus.cs b/src/VRChat.API/Model/AgeVerificationStatus.cs index 81b039ca..331d4fc6 100644 --- a/src/VRChat.API/Model/AgeVerificationStatus.cs +++ b/src/VRChat.API/Model/AgeVerificationStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -34,22 +34,22 @@ namespace VRChat.API.Model public enum AgeVerificationStatus { /// - /// Enum hidden for value: hidden + /// Enum hidden for value: 18+ /// - [EnumMember(Value = "hidden")] + [EnumMember(Value = "18+")] hidden = 1, /// - /// Enum verified for value: verified + /// Enum plus18 for value: hidden /// - [EnumMember(Value = "verified")] - verified = 2, + [EnumMember(Value = "hidden")] + plus18 = 2, /// - /// Enum plus18 for value: 18+ + /// Enum verified for value: verified /// - [EnumMember(Value = "18+")] - plus18 = 3 + [EnumMember(Value = "verified")] + verified = 3 } } diff --git a/src/VRChat.API/Model/Avatar.cs b/src/VRChat.API/Model/Avatar.cs index 1cc1fc9d..178aa56e 100644 --- a/src/VRChat.API/Model/Avatar.cs +++ b/src/VRChat.API/Model/Avatar.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarModeration.cs b/src/VRChat.API/Model/AvatarModeration.cs index 78df3490..77904307 100644 --- a/src/VRChat.API/Model/AvatarModeration.cs +++ b/src/VRChat.API/Model/AvatarModeration.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarModerationCreated.cs b/src/VRChat.API/Model/AvatarModerationCreated.cs index b378ce35..37a8d5b2 100644 --- a/src/VRChat.API/Model/AvatarModerationCreated.cs +++ b/src/VRChat.API/Model/AvatarModerationCreated.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarModerationType.cs b/src/VRChat.API/Model/AvatarModerationType.cs index b37a5bd7..329bfa28 100644 --- a/src/VRChat.API/Model/AvatarModerationType.cs +++ b/src/VRChat.API/Model/AvatarModerationType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarPerformance.cs b/src/VRChat.API/Model/AvatarPerformance.cs index fdd849e2..141c2789 100644 --- a/src/VRChat.API/Model/AvatarPerformance.cs +++ b/src/VRChat.API/Model/AvatarPerformance.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarPublishedListingsInner.cs b/src/VRChat.API/Model/AvatarPublishedListingsInner.cs index 284e5190..aa6d37ad 100644 --- a/src/VRChat.API/Model/AvatarPublishedListingsInner.cs +++ b/src/VRChat.API/Model/AvatarPublishedListingsInner.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarStyle.cs b/src/VRChat.API/Model/AvatarStyle.cs index 31f837aa..598df90b 100644 --- a/src/VRChat.API/Model/AvatarStyle.cs +++ b/src/VRChat.API/Model/AvatarStyle.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarStyles.cs b/src/VRChat.API/Model/AvatarStyles.cs index 568e74ac..65f267a1 100644 --- a/src/VRChat.API/Model/AvatarStyles.cs +++ b/src/VRChat.API/Model/AvatarStyles.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/AvatarUnityPackageUrlObject.cs b/src/VRChat.API/Model/AvatarUnityPackageUrlObject.cs index 94697ef6..97e244c1 100644 --- a/src/VRChat.API/Model/AvatarUnityPackageUrlObject.cs +++ b/src/VRChat.API/Model/AvatarUnityPackageUrlObject.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Badge.cs b/src/VRChat.API/Model/Badge.cs index a58b87dd..433d880a 100644 --- a/src/VRChat.API/Model/Badge.cs +++ b/src/VRChat.API/Model/Badge.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Balance.cs b/src/VRChat.API/Model/Balance.cs index dd894e09..cd5401a2 100644 --- a/src/VRChat.API/Model/Balance.cs +++ b/src/VRChat.API/Model/Balance.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/BanGroupMemberRequest.cs b/src/VRChat.API/Model/BanGroupMemberRequest.cs index d06b242b..06b54cdf 100644 --- a/src/VRChat.API/Model/BanGroupMemberRequest.cs +++ b/src/VRChat.API/Model/BanGroupMemberRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/BoopRequest.cs b/src/VRChat.API/Model/BoopRequest.cs new file mode 100644 index 00000000..1e8751de --- /dev/null +++ b/src/VRChat.API/Model/BoopRequest.cs @@ -0,0 +1,298 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// See NotificationDetailBoop; either inventoryItemId (accessed through .id) by itself, or emojiId (accessed through .metadata.fileId or built-in emoji name) with optional emojiVersion + /// + [DataContract(Name = "BoopRequest")] + public partial class BoopRequest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// Either a FileID or a string constant for default emojis. + /// emojiVersion. + /// inventoryItemId. + public BoopRequest(string emojiId = default, int emojiVersion = default, string inventoryItemId = default) + { + this.EmojiId = emojiId; + this.EmojiVersion = emojiVersion; + this.InventoryItemId = inventoryItemId; + } + + /// + /// Either a FileID or a string constant for default emojis + /// + /// Either a FileID or a string constant for default emojis + /* + Angry: + value: default_angry +Arrow Point: + value: default_arrowpoint +Bats: + value: default_bats +Beachball: + value: default_beachball +Beer: + value: default_beer +Blushing: + value: default_blushing +Boo: + value: default_boo +Broken Heart: + value: default_broken_heart +Candy: + value: default_candy +Candy Cane: + value: default_candy_cane +Candy Corn: + value: default_candy_corn +CantSee: + value: default_cantsee +Champagne: + value: default_champagne +Cloud: + value: default_cloud +Coal: + value: default_coal +Confetti: + value: default_confetti +Crying: + value: default_crying +Drink: + value: default_drink +Exclamation: + value: default_exclamation +Fire: + value: default_fire +Frown: + value: default_frown +Gift: + value: default_gift +Gifts: + value: default_gifts +Gingerbread: + value: default_gingerbread +Go: + value: default_go +Hand Wave: + value: default_hand_wave +Hang Ten: + value: default_hang_ten +Heart: + value: default_heart +Hourglass: + value: default_hourglass +Ice Cream: + value: default_ice_cream +In Love: + value: default_in_love +Jack O Lantern: + value: default_jack_o_lantern +Keyboard: + value: default_keyboard +Kiss: + value: default_kiss +Laugh: + value: default_laugh +Life Ring: + value: default_life_ring +Mistletoe: + value: default_mistletoe +Money: + value: default_money +Music Note: + value: default_music_note +Neon Shades: + value: default_neon_shades +NoHeadphones: + value: default_noheadphones +NoMic: + value: default_nomic +Pineapple: + value: default_pineapple +Pizza: + value: default_pizza +Portal: + value: default_portal +Question: + value: default_question +Shush: + value: default_shush +Skull: + value: default_skull +Smile: + value: default_smile +Snow Fall: + value: default_snow_fall +Snowball: + value: default_snowball +Splash: + value: default_splash +Spooky Ghost: + value: default_spooky_ghost +Stoic: + value: default_stoic +Stop: + value: default_stop +Sun Lotion: + value: default_sun_lotion +Sunglasses: + value: default_sunglasses +Thinking: + value: default_thinking +Thumbs Down: + value: default_thumbs_down +Thumbs Up: + value: default_thumbs_up +Tomato: + value: default_tomato +Tongue Out: + value: default_tongue_out +Web: + value: default_web +Wow: + value: default_wow +Zzz: + value: default_zzz + + */ + [DataMember(Name = "emojiId", EmitDefaultValue = false)] + public string EmojiId { get; set; } + + /// + /// Gets or Sets EmojiVersion + /// + [DataMember(Name = "emojiVersion", EmitDefaultValue = false)] + public int EmojiVersion { get; set; } + + /// + /// Gets or Sets InventoryItemId + /// + /* + inv_10bce5b0-2d2b-44e0-900d-db6534615162 + */ + [DataMember(Name = "inventoryItemId", EmitDefaultValue = false)] + public string InventoryItemId { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class BoopRequest {\n"); + sb.Append(" EmojiId: ").Append(EmojiId).Append("\n"); + sb.Append(" EmojiVersion: ").Append(EmojiVersion).Append("\n"); + sb.Append(" InventoryItemId: ").Append(InventoryItemId).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as BoopRequest); + } + + /// + /// Returns true if BoopRequest instances are equal + /// + /// Instance of BoopRequest to be compared + /// Boolean + public bool Equals(BoopRequest input) + { + if (input == null) + { + return false; + } + return + ( + this.EmojiId == input.EmojiId || + (this.EmojiId != null && + this.EmojiId.Equals(input.EmojiId)) + ) && + ( + this.EmojiVersion == input.EmojiVersion || + this.EmojiVersion.Equals(input.EmojiVersion) + ) && + ( + this.InventoryItemId == input.InventoryItemId || + (this.InventoryItemId != null && + this.InventoryItemId.Equals(input.InventoryItemId)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.EmojiId != null) + { + hashCode = (hashCode * 59) + this.EmojiId.GetHashCode(); + } + hashCode = (hashCode * 59) + this.EmojiVersion.GetHashCode(); + if (this.InventoryItemId != null) + { + hashCode = (hashCode * 59) + this.InventoryItemId.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/CalendarEvent.cs b/src/VRChat.API/Model/CalendarEvent.cs index e27c8e07..03d5dfaa 100644 --- a/src/VRChat.API/Model/CalendarEvent.cs +++ b/src/VRChat.API/Model/CalendarEvent.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -27,7 +27,7 @@ namespace VRChat.API.Model { /// - /// CalendarEvent + /// An event scheduled on a group's calendar /// [DataContract(Name = "CalendarEvent")] public partial class CalendarEvent : IEquatable, IValidatableObject @@ -64,9 +64,9 @@ protected CalendarEvent() { } /// title (required). /// type. /// updatedAt. - /// usesInstanceOverflow. /// userInterest. - public CalendarEvent(string accessType = default, string category = default, int closeInstanceAfterEndMinutes = default, DateTime createdAt = default, DateTime? deletedAt = default, string description = default, DateTime endsAt = default, bool featured = default, int guestEarlyJoinMinutes = default, int hostEarlyJoinMinutes = default, string id = default, string imageId = default, string imageUrl = default, int interestedUserCount = default, bool isDraft = default, List languages = default, string ownerId = default, List platforms = default, List roleIds = default, DateTime startsAt = default, List tags = default, string title = default, string type = default, DateTime updatedAt = default, bool usesInstanceOverflow = default, CalendarEventUserInterest userInterest = default) + /// usesInstanceOverflow. + public CalendarEvent(string accessType = default, string category = default, int closeInstanceAfterEndMinutes = default, DateTime createdAt = default, DateTime? deletedAt = default, string description = default, DateTime endsAt = default, bool featured = default, int guestEarlyJoinMinutes = default, int hostEarlyJoinMinutes = default, string id = default, string imageId = default, string imageUrl = default, int interestedUserCount = default, bool isDraft = default, List languages = default, string ownerId = default, List platforms = default, List roleIds = default, DateTime startsAt = default, List tags = default, string title = default, string type = default, DateTime updatedAt = default, CalendarEventUserInterest userInterest = default, bool usesInstanceOverflow = default) { // to ensure "accessType" is required (not null) if (accessType == null) @@ -117,8 +117,8 @@ public CalendarEvent(string accessType = default, string category = default, int this.Tags = tags; this.Type = type; this.UpdatedAt = updatedAt; - this.UsesInstanceOverflow = usesInstanceOverflow; this.UserInterest = userInterest; + this.UsesInstanceOverflow = usesInstanceOverflow; } /// @@ -287,18 +287,18 @@ public CalendarEvent(string accessType = default, string category = default, int [DataMember(Name = "updatedAt", EmitDefaultValue = false)] public DateTime UpdatedAt { get; set; } - /// - /// Gets or Sets UsesInstanceOverflow - /// - [DataMember(Name = "usesInstanceOverflow", EmitDefaultValue = true)] - public bool UsesInstanceOverflow { get; set; } - /// /// Gets or Sets UserInterest /// [DataMember(Name = "userInterest", EmitDefaultValue = false)] public CalendarEventUserInterest UserInterest { get; set; } + /// + /// Gets or Sets UsesInstanceOverflow + /// + [DataMember(Name = "usesInstanceOverflow", EmitDefaultValue = true)] + public bool UsesInstanceOverflow { get; set; } + /// /// Returns the string presentation of the object /// @@ -331,8 +331,8 @@ public override string ToString() sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); - sb.Append(" UsesInstanceOverflow: ").Append(UsesInstanceOverflow).Append("\n"); sb.Append(" UserInterest: ").Append(UserInterest).Append("\n"); + sb.Append(" UsesInstanceOverflow: ").Append(UsesInstanceOverflow).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -486,14 +486,14 @@ public bool Equals(CalendarEvent input) (this.UpdatedAt != null && this.UpdatedAt.Equals(input.UpdatedAt)) ) && - ( - this.UsesInstanceOverflow == input.UsesInstanceOverflow || - this.UsesInstanceOverflow.Equals(input.UsesInstanceOverflow) - ) && ( this.UserInterest == input.UserInterest || (this.UserInterest != null && this.UserInterest.Equals(input.UserInterest)) + ) && + ( + this.UsesInstanceOverflow == input.UsesInstanceOverflow || + this.UsesInstanceOverflow.Equals(input.UsesInstanceOverflow) ); } @@ -584,11 +584,11 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); } - hashCode = (hashCode * 59) + this.UsesInstanceOverflow.GetHashCode(); if (this.UserInterest != null) { hashCode = (hashCode * 59) + this.UserInterest.GetHashCode(); } + hashCode = (hashCode * 59) + this.UsesInstanceOverflow.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/CalendarEventDiscovery.cs b/src/VRChat.API/Model/CalendarEventDiscovery.cs new file mode 100644 index 00000000..7be54690 --- /dev/null +++ b/src/VRChat.API/Model/CalendarEventDiscovery.cs @@ -0,0 +1,164 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// CalendarEventDiscovery + /// + [DataContract(Name = "CalendarEventDiscovery")] + public partial class CalendarEventDiscovery : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CalendarEventDiscovery() { } + /// + /// Initializes a new instance of the class. + /// + /// Base64-encoded JSON: type: object properties: dataSource: type: string enum: - featured - personalized dataIndex: type: integer format: int32 phase: type: string enum: - all - live - upcoming description: see CalendarEventDiscoveryScope asOf: type: integer format: int64 description: milliseconds since Unix epoch paramHash: type: string format: string description: Base64-encoded 256-bit hash of the original query parameters (required). + /// results (required). + public CalendarEventDiscovery(string nextCursor = default, List results = default) + { + // to ensure "nextCursor" is required (not null) + if (nextCursor == null) + { + throw new ArgumentNullException("nextCursor is a required property for CalendarEventDiscovery and cannot be null"); + } + this.NextCursor = nextCursor; + // to ensure "results" is required (not null) + if (results == null) + { + throw new ArgumentNullException("results is a required property for CalendarEventDiscovery and cannot be null"); + } + this.Results = results; + } + + /// + /// Base64-encoded JSON: type: object properties: dataSource: type: string enum: - featured - personalized dataIndex: type: integer format: int32 phase: type: string enum: - all - live - upcoming description: see CalendarEventDiscoveryScope asOf: type: integer format: int64 description: milliseconds since Unix epoch paramHash: type: string format: string description: Base64-encoded 256-bit hash of the original query parameters + /// + /// Base64-encoded JSON: type: object properties: dataSource: type: string enum: - featured - personalized dataIndex: type: integer format: int32 phase: type: string enum: - all - live - upcoming description: see CalendarEventDiscoveryScope asOf: type: integer format: int64 description: milliseconds since Unix epoch paramHash: type: string format: string description: Base64-encoded 256-bit hash of the original query parameters + [DataMember(Name = "nextCursor", IsRequired = true, EmitDefaultValue = true)] + public string NextCursor { get; set; } + + /// + /// Gets or Sets Results + /// + [DataMember(Name = "results", IsRequired = true, EmitDefaultValue = true)] + public List Results { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class CalendarEventDiscovery {\n"); + sb.Append(" NextCursor: ").Append(NextCursor).Append("\n"); + sb.Append(" Results: ").Append(Results).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CalendarEventDiscovery); + } + + /// + /// Returns true if CalendarEventDiscovery instances are equal + /// + /// Instance of CalendarEventDiscovery to be compared + /// Boolean + public bool Equals(CalendarEventDiscovery input) + { + if (input == null) + { + return false; + } + return + ( + this.NextCursor == input.NextCursor || + (this.NextCursor != null && + this.NextCursor.Equals(input.NextCursor)) + ) && + ( + this.Results == input.Results || + this.Results != null && + input.Results != null && + this.Results.SequenceEqual(input.Results) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.NextCursor != null) + { + hashCode = (hashCode * 59) + this.NextCursor.GetHashCode(); + } + if (this.Results != null) + { + hashCode = (hashCode * 59) + this.Results.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/CalendarEventDiscoveryInclusion.cs b/src/VRChat.API/Model/CalendarEventDiscoveryInclusion.cs new file mode 100644 index 00000000..9788a635 --- /dev/null +++ b/src/VRChat.API/Model/CalendarEventDiscoveryInclusion.cs @@ -0,0 +1,54 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// Defines CalendarEventDiscoveryInclusion + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum CalendarEventDiscoveryInclusion + { + /// + /// Enum Exclude for value: exclude + /// + [EnumMember(Value = "exclude")] + Exclude = 1, + + /// + /// Enum Include for value: include + /// + [EnumMember(Value = "include")] + Include = 2, + + /// + /// Enum Skip for value: skip + /// + [EnumMember(Value = "skip")] + Skip = 3 + } + +} diff --git a/src/VRChat.API/Model/CalendarEventDiscoveryScope.cs b/src/VRChat.API/Model/CalendarEventDiscoveryScope.cs new file mode 100644 index 00000000..356a1223 --- /dev/null +++ b/src/VRChat.API/Model/CalendarEventDiscoveryScope.cs @@ -0,0 +1,54 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// Defines CalendarEventDiscoveryScope + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum CalendarEventDiscoveryScope + { + /// + /// Enum All for value: all + /// + [EnumMember(Value = "all")] + All = 1, + + /// + /// Enum Live for value: live + /// + [EnumMember(Value = "live")] + Live = 2, + + /// + /// Enum Upcoming for value: upcoming + /// + [EnumMember(Value = "upcoming")] + Upcoming = 3 + } + +} diff --git a/src/VRChat.API/Model/CalendarEventUserInterest.cs b/src/VRChat.API/Model/CalendarEventUserInterest.cs index e12e5d29..be180e6d 100644 --- a/src/VRChat.API/Model/CalendarEventUserInterest.cs +++ b/src/VRChat.API/Model/CalendarEventUserInterest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/ChangeUserTagsRequest.cs b/src/VRChat.API/Model/ChangeUserTagsRequest.cs index 23acf212..821ff21f 100644 --- a/src/VRChat.API/Model/ChangeUserTagsRequest.cs +++ b/src/VRChat.API/Model/ChangeUserTagsRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/CreateAvatarModerationRequest.cs b/src/VRChat.API/Model/CreateAvatarModerationRequest.cs index b693336e..79659347 100644 --- a/src/VRChat.API/Model/CreateAvatarModerationRequest.cs +++ b/src/VRChat.API/Model/CreateAvatarModerationRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,17 +46,17 @@ protected CreateAvatarModerationRequest() { } /// /// Initializes a new instance of the class. /// - /// targetAvatarId (required). /// avatarModerationType (required). - public CreateAvatarModerationRequest(string targetAvatarId = default, AvatarModerationType avatarModerationType = default) + /// targetAvatarId (required). + public CreateAvatarModerationRequest(AvatarModerationType avatarModerationType = default, string targetAvatarId = default) { + this.AvatarModerationType = avatarModerationType; // to ensure "targetAvatarId" is required (not null) if (targetAvatarId == null) { throw new ArgumentNullException("targetAvatarId is a required property for CreateAvatarModerationRequest and cannot be null"); } this.TargetAvatarId = targetAvatarId; - this.AvatarModerationType = avatarModerationType; } /// @@ -76,8 +76,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateAvatarModerationRequest {\n"); - sb.Append(" TargetAvatarId: ").Append(TargetAvatarId).Append("\n"); sb.Append(" AvatarModerationType: ").Append(AvatarModerationType).Append("\n"); + sb.Append(" TargetAvatarId: ").Append(TargetAvatarId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -113,14 +113,14 @@ public bool Equals(CreateAvatarModerationRequest input) return false; } return + ( + this.AvatarModerationType == input.AvatarModerationType || + this.AvatarModerationType.Equals(input.AvatarModerationType) + ) && ( this.TargetAvatarId == input.TargetAvatarId || (this.TargetAvatarId != null && this.TargetAvatarId.Equals(input.TargetAvatarId)) - ) && - ( - this.AvatarModerationType == input.AvatarModerationType || - this.AvatarModerationType.Equals(input.AvatarModerationType) ); } @@ -133,11 +133,11 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + hashCode = (hashCode * 59) + this.AvatarModerationType.GetHashCode(); if (this.TargetAvatarId != null) { hashCode = (hashCode * 59) + this.TargetAvatarId.GetHashCode(); } - hashCode = (hashCode * 59) + this.AvatarModerationType.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/CreateAvatarRequest.cs b/src/VRChat.API/Model/CreateAvatarRequest.cs index 17f51203..11b3cf72 100644 --- a/src/VRChat.API/Model/CreateAvatarRequest.cs +++ b/src/VRChat.API/Model/CreateAvatarRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -48,49 +48,47 @@ protected CreateAvatarRequest() { } /// /// assetUrl. /// assetVersion. - /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`.. /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`). - /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`). + /// description. /// id. + /// imageUrl (required). /// name (required). - /// description. + /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`.. + /// releaseStatus. /// . - /// imageUrl (required). /// thumbnailImageUrl. - /// releaseStatus. - /// varVersion (default to 1). - /// Enabling featured tag requires Admin Credentials.. /// unityPackageUrl. /// unityVersion (default to "5.3.4p1"). - public CreateAvatarRequest(string assetUrl = default, string assetVersion = default, string platform = default, string createdAt = default, string updatedAt = default, string id = default, string name = default, string description = default, List tags = default, string imageUrl = default, string thumbnailImageUrl = default, ReleaseStatus? releaseStatus = default, int varVersion = 1, bool featured = default, string unityPackageUrl = default, string unityVersion = @"5.3.4p1") + /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`). + /// varVersion (default to 1). + public CreateAvatarRequest(string assetUrl = default, string assetVersion = default, string createdAt = default, string description = default, string id = default, string imageUrl = default, string name = default, string platform = default, ReleaseStatus? releaseStatus = default, List tags = default, string thumbnailImageUrl = default, string unityPackageUrl = default, string unityVersion = @"5.3.4p1", string updatedAt = default, int varVersion = 1) { - // to ensure "name" is required (not null) - if (name == null) - { - throw new ArgumentNullException("name is a required property for CreateAvatarRequest and cannot be null"); - } - this.Name = name; // to ensure "imageUrl" is required (not null) if (imageUrl == null) { throw new ArgumentNullException("imageUrl is a required property for CreateAvatarRequest and cannot be null"); } this.ImageUrl = imageUrl; + // to ensure "name" is required (not null) + if (name == null) + { + throw new ArgumentNullException("name is a required property for CreateAvatarRequest and cannot be null"); + } + this.Name = name; this.AssetUrl = assetUrl; this.AssetVersion = assetVersion; - this.Platform = platform; this.CreatedAt = createdAt; - this.UpdatedAt = updatedAt; - this.Id = id; this.Description = description; + this.Id = id; + this.Platform = platform; + this.ReleaseStatus = releaseStatus; this.Tags = tags; this.ThumbnailImageUrl = thumbnailImageUrl; - this.ReleaseStatus = releaseStatus; - this.VarVersion = varVersion; - this.Featured = featured; this.UnityPackageUrl = unityPackageUrl; // use default value if no "unityVersion" provided this.UnityVersion = unityVersion ?? @"5.3.4p1"; + this.UpdatedAt = updatedAt; + this.VarVersion = varVersion; } /// @@ -105,16 +103,6 @@ public CreateAvatarRequest(string assetUrl = default, string assetVersion = defa [DataMember(Name = "assetVersion", EmitDefaultValue = false)] public string AssetVersion { get; set; } - /// - /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. - /// - /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. - /* - standalonewindows - */ - [DataMember(Name = "platform", EmitDefaultValue = false)] - public string Platform { get; set; } - /// /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`) /// @@ -126,14 +114,10 @@ public CreateAvatarRequest(string assetUrl = default, string assetVersion = defa public string CreatedAt { get; set; } /// - /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`) + /// Gets or Sets Description /// - /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`) - /* - 12/12/2021 1:23:43 AM - */ - [DataMember(Name = "updated_at", EmitDefaultValue = false)] - public string UpdatedAt { get; set; } + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } /// /// Gets or Sets Id @@ -144,6 +128,12 @@ public CreateAvatarRequest(string assetUrl = default, string assetVersion = defa [DataMember(Name = "id", EmitDefaultValue = false)] public string Id { get; set; } + /// + /// Gets or Sets ImageUrl + /// + [DataMember(Name = "imageUrl", IsRequired = true, EmitDefaultValue = true)] + public string ImageUrl { get; set; } + /// /// Gets or Sets Name /// @@ -151,10 +141,14 @@ public CreateAvatarRequest(string assetUrl = default, string assetVersion = defa public string Name { get; set; } /// - /// Gets or Sets Description + /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. + /* + standalonewindows + */ + [DataMember(Name = "platform", EmitDefaultValue = false)] + public string Platform { get; set; } /// /// @@ -163,31 +157,12 @@ public CreateAvatarRequest(string assetUrl = default, string assetVersion = defa [DataMember(Name = "tags", EmitDefaultValue = false)] public List Tags { get; set; } - /// - /// Gets or Sets ImageUrl - /// - [DataMember(Name = "imageUrl", IsRequired = true, EmitDefaultValue = true)] - public string ImageUrl { get; set; } - /// /// Gets or Sets ThumbnailImageUrl /// [DataMember(Name = "thumbnailImageUrl", EmitDefaultValue = false)] public string ThumbnailImageUrl { get; set; } - /// - /// Gets or Sets VarVersion - /// - [DataMember(Name = "version", EmitDefaultValue = false)] - public int VarVersion { get; set; } - - /// - /// Enabling featured tag requires Admin Credentials. - /// - /// Enabling featured tag requires Admin Credentials. - [DataMember(Name = "featured", EmitDefaultValue = true)] - public bool Featured { get; set; } - /// /// Gets or Sets UnityPackageUrl /// @@ -203,6 +178,22 @@ public CreateAvatarRequest(string assetUrl = default, string assetVersion = defa [DataMember(Name = "unityVersion", EmitDefaultValue = false)] public string UnityVersion { get; set; } + /// + /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`) + /// + /// A date and time of the pattern `M/d/yyyy h:mm:ss tt` (see C Sharp `System.DateTime`) + /* + 12/12/2021 1:23:43 AM + */ + [DataMember(Name = "updated_at", EmitDefaultValue = false)] + public string UpdatedAt { get; set; } + + /// + /// Gets or Sets VarVersion + /// + [DataMember(Name = "version", EmitDefaultValue = false)] + public int VarVersion { get; set; } + /// /// Returns the string presentation of the object /// @@ -213,20 +204,19 @@ public override string ToString() sb.Append("class CreateAvatarRequest {\n"); sb.Append(" AssetUrl: ").Append(AssetUrl).Append("\n"); sb.Append(" AssetVersion: ").Append(AssetVersion).Append("\n"); - sb.Append(" Platform: ").Append(Platform).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); + sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Platform: ").Append(Platform).Append("\n"); + sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); sb.Append(" ThumbnailImageUrl: ").Append(ThumbnailImageUrl).Append("\n"); - sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); - sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); - sb.Append(" Featured: ").Append(Featured).Append("\n"); sb.Append(" UnityPackageUrl: ").Append(UnityPackageUrl).Append("\n"); sb.Append(" UnityVersion: ").Append(UnityVersion).Append("\n"); + sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -272,35 +262,39 @@ public bool Equals(CreateAvatarRequest input) (this.AssetVersion != null && this.AssetVersion.Equals(input.AssetVersion)) ) && - ( - this.Platform == input.Platform || - (this.Platform != null && - this.Platform.Equals(input.Platform)) - ) && ( this.CreatedAt == input.CreatedAt || (this.CreatedAt != null && this.CreatedAt.Equals(input.CreatedAt)) ) && ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.Id == input.Id || (this.Id != null && this.Id.Equals(input.Id)) ) && + ( + this.ImageUrl == input.ImageUrl || + (this.ImageUrl != null && + this.ImageUrl.Equals(input.ImageUrl)) + ) && ( this.Name == input.Name || (this.Name != null && this.Name.Equals(input.Name)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.Platform == input.Platform || + (this.Platform != null && + this.Platform.Equals(input.Platform)) + ) && + ( + this.ReleaseStatus == input.ReleaseStatus || + this.ReleaseStatus.Equals(input.ReleaseStatus) ) && ( this.Tags == input.Tags || @@ -308,28 +302,11 @@ public bool Equals(CreateAvatarRequest input) input.Tags != null && this.Tags.SequenceEqual(input.Tags) ) && - ( - this.ImageUrl == input.ImageUrl || - (this.ImageUrl != null && - this.ImageUrl.Equals(input.ImageUrl)) - ) && ( this.ThumbnailImageUrl == input.ThumbnailImageUrl || (this.ThumbnailImageUrl != null && this.ThumbnailImageUrl.Equals(input.ThumbnailImageUrl)) ) && - ( - this.ReleaseStatus == input.ReleaseStatus || - this.ReleaseStatus.Equals(input.ReleaseStatus) - ) && - ( - this.VarVersion == input.VarVersion || - this.VarVersion.Equals(input.VarVersion) - ) && - ( - this.Featured == input.Featured || - this.Featured.Equals(input.Featured) - ) && ( this.UnityPackageUrl == input.UnityPackageUrl || (this.UnityPackageUrl != null && @@ -339,6 +316,15 @@ public bool Equals(CreateAvatarRequest input) this.UnityVersion == input.UnityVersion || (this.UnityVersion != null && this.UnityVersion.Equals(input.UnityVersion)) + ) && + ( + this.UpdatedAt == input.UpdatedAt || + (this.UpdatedAt != null && + this.UpdatedAt.Equals(input.UpdatedAt)) + ) && + ( + this.VarVersion == input.VarVersion || + this.VarVersion.Equals(input.VarVersion) ); } @@ -359,45 +345,39 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.AssetVersion.GetHashCode(); } - if (this.Platform != null) - { - hashCode = (hashCode * 59) + this.Platform.GetHashCode(); - } if (this.CreatedAt != null) { hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } - if (this.UpdatedAt != null) + if (this.Description != null) { - hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } if (this.Id != null) { hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + if (this.ImageUrl != null) + { + hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); + } if (this.Name != null) { hashCode = (hashCode * 59) + this.Name.GetHashCode(); } - if (this.Description != null) + if (this.Platform != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.Platform.GetHashCode(); } + hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); if (this.Tags != null) { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } - if (this.ImageUrl != null) - { - hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); - } if (this.ThumbnailImageUrl != null) { hashCode = (hashCode * 59) + this.ThumbnailImageUrl.GetHashCode(); } - hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); - hashCode = (hashCode * 59) + this.VarVersion.GetHashCode(); - hashCode = (hashCode * 59) + this.Featured.GetHashCode(); if (this.UnityPackageUrl != null) { hashCode = (hashCode * 59) + this.UnityPackageUrl.GetHashCode(); @@ -406,6 +386,11 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.UnityVersion.GetHashCode(); } + if (this.UpdatedAt != null) + { + hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); + } + hashCode = (hashCode * 59) + this.VarVersion.GetHashCode(); return hashCode; } } @@ -417,12 +402,6 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Name (string) minLength - if (this.Name != null && this.Name.Length < 1) - { - yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); - } - // Description (string) minLength if (this.Description != null && this.Description.Length < 1) { @@ -435,16 +414,16 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for ImageUrl, length must be greater than 1.", new [] { "ImageUrl" }); } - // ThumbnailImageUrl (string) minLength - if (this.ThumbnailImageUrl != null && this.ThumbnailImageUrl.Length < 1) + // Name (string) minLength + if (this.Name != null && this.Name.Length < 1) { - yield return new ValidationResult("Invalid value for ThumbnailImageUrl, length must be greater than 1.", new [] { "ThumbnailImageUrl" }); + yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); } - // VarVersion (int) minimum - if (this.VarVersion < (int)0) + // ThumbnailImageUrl (string) minLength + if (this.ThumbnailImageUrl != null && this.ThumbnailImageUrl.Length < 1) { - yield return new ValidationResult("Invalid value for VarVersion, must be a value greater than or equal to 0.", new [] { "VarVersion" }); + yield return new ValidationResult("Invalid value for ThumbnailImageUrl, length must be greater than 1.", new [] { "ThumbnailImageUrl" }); } // UnityVersion (string) minLength @@ -453,6 +432,12 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for UnityVersion, length must be greater than 1.", new [] { "UnityVersion" }); } + // VarVersion (int) minimum + if (this.VarVersion < (int)0) + { + yield return new ValidationResult("Invalid value for VarVersion, must be a value greater than or equal to 0.", new [] { "VarVersion" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CreateCalendarEventRequest.cs b/src/VRChat.API/Model/CreateCalendarEventRequest.cs index b8b0e203..fcb6dcc0 100644 --- a/src/VRChat.API/Model/CreateCalendarEventRequest.cs +++ b/src/VRChat.API/Model/CreateCalendarEventRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,16 +39,16 @@ public partial class CreateCalendarEventRequest : IEquatable - /// Enum Public for value: public + /// Enum Group for value: group /// - [EnumMember(Value = "public")] - Public = 1, + [EnumMember(Value = "group")] + Group = 1, /// - /// Enum Group for value: group + /// Enum Public for value: public /// - [EnumMember(Value = "group")] - Group = 2 + [EnumMember(Value = "public")] + Public = 2 } @@ -65,34 +65,34 @@ protected CreateCalendarEventRequest() { } /// /// Initializes a new instance of the class. /// - /// Event title (required). - /// Time the event starts at (required). + /// accessType (required). + /// category (required). + /// closeInstanceAfterEndMinutes. /// description (required). /// Time the event ends at (required). - /// category (required). - /// tags. - /// isDraft. + /// featured. + /// guestEarlyJoinMinutes. + /// hostEarlyJoinMinutes. /// imageId. - /// roleIds. + /// isDraft. + /// languages. /// parentId. /// platforms. - /// languages. + /// roleIds. /// Send notification to group members. (required). - /// featured. - /// hostEarlyJoinMinutes. - /// guestEarlyJoinMinutes. - /// closeInstanceAfterEndMinutes. + /// Time the event starts at (required). + /// tags. + /// Event title (required). /// usesInstanceOverflow. - /// accessType (required). - public CreateCalendarEventRequest(string title = default, DateTime startsAt = default, string description = default, DateTime endsAt = default, string category = default, List tags = default, bool isDraft = default, string imageId = default, List roleIds = default, string parentId = default, List platforms = default, List languages = default, bool sendCreationNotification = default, bool featured = default, int hostEarlyJoinMinutes = default, int guestEarlyJoinMinutes = default, int closeInstanceAfterEndMinutes = default, bool usesInstanceOverflow = default, AccessTypeEnum accessType = default) + public CreateCalendarEventRequest(AccessTypeEnum accessType = default, string category = default, int closeInstanceAfterEndMinutes = default, string description = default, DateTime endsAt = default, bool featured = default, int guestEarlyJoinMinutes = default, int hostEarlyJoinMinutes = default, string imageId = default, bool isDraft = default, List languages = default, string parentId = default, List platforms = default, List roleIds = default, bool sendCreationNotification = default, DateTime startsAt = default, List tags = default, string title = default, bool usesInstanceOverflow = default) { - // to ensure "title" is required (not null) - if (title == null) + this.AccessType = accessType; + // to ensure "category" is required (not null) + if (category == null) { - throw new ArgumentNullException("title is a required property for CreateCalendarEventRequest and cannot be null"); + throw new ArgumentNullException("category is a required property for CreateCalendarEventRequest and cannot be null"); } - this.Title = title; - this.StartsAt = startsAt; + this.Category = category; // to ensure "description" is required (not null) if (description == null) { @@ -100,44 +100,45 @@ public CreateCalendarEventRequest(string title = default, DateTime startsAt = de } this.Description = description; this.EndsAt = endsAt; - // to ensure "category" is required (not null) - if (category == null) + this.SendCreationNotification = sendCreationNotification; + this.StartsAt = startsAt; + // to ensure "title" is required (not null) + if (title == null) { - throw new ArgumentNullException("category is a required property for CreateCalendarEventRequest and cannot be null"); + throw new ArgumentNullException("title is a required property for CreateCalendarEventRequest and cannot be null"); } - this.Category = category; - this.SendCreationNotification = sendCreationNotification; - this.AccessType = accessType; - this.Tags = tags; - this.IsDraft = isDraft; + this.Title = title; + this.CloseInstanceAfterEndMinutes = closeInstanceAfterEndMinutes; + this.Featured = featured; + this.GuestEarlyJoinMinutes = guestEarlyJoinMinutes; + this.HostEarlyJoinMinutes = hostEarlyJoinMinutes; this.ImageId = imageId; - this.RoleIds = roleIds; + this.IsDraft = isDraft; + this.Languages = languages; this.ParentId = parentId; this.Platforms = platforms; - this.Languages = languages; - this.Featured = featured; - this.HostEarlyJoinMinutes = hostEarlyJoinMinutes; - this.GuestEarlyJoinMinutes = guestEarlyJoinMinutes; - this.CloseInstanceAfterEndMinutes = closeInstanceAfterEndMinutes; + this.RoleIds = roleIds; + this.Tags = tags; this.UsesInstanceOverflow = usesInstanceOverflow; } /// - /// Event title + /// Gets or Sets Category /// - /// Event title /* - Performance Event! + performance */ - [DataMember(Name = "title", IsRequired = true, EmitDefaultValue = true)] - public string Title { get; set; } + [DataMember(Name = "category", IsRequired = true, EmitDefaultValue = true)] + public string Category { get; set; } /// - /// Time the event starts at + /// Gets or Sets CloseInstanceAfterEndMinutes /// - /// Time the event starts at - [DataMember(Name = "startsAt", IsRequired = true, EmitDefaultValue = true)] - public DateTime StartsAt { get; set; } + /* + 5 + */ + [DataMember(Name = "closeInstanceAfterEndMinutes", EmitDefaultValue = false)] + public int CloseInstanceAfterEndMinutes { get; set; } /// /// Gets or Sets Description @@ -153,25 +154,28 @@ public CreateCalendarEventRequest(string title = default, DateTime startsAt = de public DateTime EndsAt { get; set; } /// - /// Gets or Sets Category + /// Gets or Sets Featured /// - /* - performance - */ - [DataMember(Name = "category", IsRequired = true, EmitDefaultValue = true)] - public string Category { get; set; } + [DataMember(Name = "featured", EmitDefaultValue = true)] + public bool Featured { get; set; } /// - /// Gets or Sets Tags + /// Gets or Sets GuestEarlyJoinMinutes /// - [DataMember(Name = "tags", EmitDefaultValue = false)] - public List Tags { get; set; } + /* + 5 + */ + [DataMember(Name = "guestEarlyJoinMinutes", EmitDefaultValue = false)] + public int GuestEarlyJoinMinutes { get; set; } /// - /// Gets or Sets IsDraft + /// Gets or Sets HostEarlyJoinMinutes /// - [DataMember(Name = "isDraft", EmitDefaultValue = true)] - public bool IsDraft { get; set; } + /* + 60 + */ + [DataMember(Name = "hostEarlyJoinMinutes", EmitDefaultValue = false)] + public int HostEarlyJoinMinutes { get; set; } /// /// Gets or Sets ImageId @@ -183,10 +187,16 @@ public CreateCalendarEventRequest(string title = default, DateTime startsAt = de public string ImageId { get; set; } /// - /// Gets or Sets RoleIds + /// Gets or Sets IsDraft /// - [DataMember(Name = "roleIds", EmitDefaultValue = false)] - public List RoleIds { get; set; } + [DataMember(Name = "isDraft", EmitDefaultValue = true)] + public bool IsDraft { get; set; } + + /// + /// Gets or Sets Languages + /// + [DataMember(Name = "languages", EmitDefaultValue = false)] + public List Languages { get; set; } /// /// Gets or Sets ParentId @@ -201,10 +211,10 @@ public CreateCalendarEventRequest(string title = default, DateTime startsAt = de public List Platforms { get; set; } /// - /// Gets or Sets Languages + /// Gets or Sets RoleIds /// - [DataMember(Name = "languages", EmitDefaultValue = false)] - public List Languages { get; set; } + [DataMember(Name = "roleIds", EmitDefaultValue = false)] + public List RoleIds { get; set; } /// /// Send notification to group members. @@ -217,37 +227,27 @@ public CreateCalendarEventRequest(string title = default, DateTime startsAt = de public bool SendCreationNotification { get; set; } /// - /// Gets or Sets Featured - /// - [DataMember(Name = "featured", EmitDefaultValue = true)] - public bool Featured { get; set; } - - /// - /// Gets or Sets HostEarlyJoinMinutes + /// Time the event starts at /// - /* - 60 - */ - [DataMember(Name = "hostEarlyJoinMinutes", EmitDefaultValue = false)] - public int HostEarlyJoinMinutes { get; set; } + /// Time the event starts at + [DataMember(Name = "startsAt", IsRequired = true, EmitDefaultValue = true)] + public DateTime StartsAt { get; set; } /// - /// Gets or Sets GuestEarlyJoinMinutes + /// Gets or Sets Tags /// - /* - 5 - */ - [DataMember(Name = "guestEarlyJoinMinutes", EmitDefaultValue = false)] - public int GuestEarlyJoinMinutes { get; set; } + [DataMember(Name = "tags", EmitDefaultValue = false)] + public List Tags { get; set; } /// - /// Gets or Sets CloseInstanceAfterEndMinutes + /// Event title /// + /// Event title /* - 5 + Performance Event! */ - [DataMember(Name = "closeInstanceAfterEndMinutes", EmitDefaultValue = false)] - public int CloseInstanceAfterEndMinutes { get; set; } + [DataMember(Name = "title", IsRequired = true, EmitDefaultValue = true)] + public string Title { get; set; } /// /// Gets or Sets UsesInstanceOverflow @@ -266,25 +266,25 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateCalendarEventRequest {\n"); - sb.Append(" Title: ").Append(Title).Append("\n"); - sb.Append(" StartsAt: ").Append(StartsAt).Append("\n"); + sb.Append(" AccessType: ").Append(AccessType).Append("\n"); + sb.Append(" Category: ").Append(Category).Append("\n"); + sb.Append(" CloseInstanceAfterEndMinutes: ").Append(CloseInstanceAfterEndMinutes).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" EndsAt: ").Append(EndsAt).Append("\n"); - sb.Append(" Category: ").Append(Category).Append("\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" IsDraft: ").Append(IsDraft).Append("\n"); + sb.Append(" Featured: ").Append(Featured).Append("\n"); + sb.Append(" GuestEarlyJoinMinutes: ").Append(GuestEarlyJoinMinutes).Append("\n"); + sb.Append(" HostEarlyJoinMinutes: ").Append(HostEarlyJoinMinutes).Append("\n"); sb.Append(" ImageId: ").Append(ImageId).Append("\n"); - sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); + sb.Append(" IsDraft: ").Append(IsDraft).Append("\n"); + sb.Append(" Languages: ").Append(Languages).Append("\n"); sb.Append(" ParentId: ").Append(ParentId).Append("\n"); sb.Append(" Platforms: ").Append(Platforms).Append("\n"); - sb.Append(" Languages: ").Append(Languages).Append("\n"); + sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); sb.Append(" SendCreationNotification: ").Append(SendCreationNotification).Append("\n"); - sb.Append(" Featured: ").Append(Featured).Append("\n"); - sb.Append(" HostEarlyJoinMinutes: ").Append(HostEarlyJoinMinutes).Append("\n"); - sb.Append(" GuestEarlyJoinMinutes: ").Append(GuestEarlyJoinMinutes).Append("\n"); - sb.Append(" CloseInstanceAfterEndMinutes: ").Append(CloseInstanceAfterEndMinutes).Append("\n"); + sb.Append(" StartsAt: ").Append(StartsAt).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" UsesInstanceOverflow: ").Append(UsesInstanceOverflow).Append("\n"); - sb.Append(" AccessType: ").Append(AccessType).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -321,14 +321,17 @@ public bool Equals(CreateCalendarEventRequest input) } return ( - this.Title == input.Title || - (this.Title != null && - this.Title.Equals(input.Title)) + this.AccessType == input.AccessType || + this.AccessType.Equals(input.AccessType) ) && ( - this.StartsAt == input.StartsAt || - (this.StartsAt != null && - this.StartsAt.Equals(input.StartsAt)) + this.Category == input.Category || + (this.Category != null && + this.Category.Equals(input.Category)) + ) && + ( + this.CloseInstanceAfterEndMinutes == input.CloseInstanceAfterEndMinutes || + this.CloseInstanceAfterEndMinutes.Equals(input.CloseInstanceAfterEndMinutes) ) && ( this.Description == input.Description || @@ -341,19 +344,16 @@ public bool Equals(CreateCalendarEventRequest input) this.EndsAt.Equals(input.EndsAt)) ) && ( - this.Category == input.Category || - (this.Category != null && - this.Category.Equals(input.Category)) + this.Featured == input.Featured || + this.Featured.Equals(input.Featured) ) && ( - this.Tags == input.Tags || - this.Tags != null && - input.Tags != null && - this.Tags.SequenceEqual(input.Tags) + this.GuestEarlyJoinMinutes == input.GuestEarlyJoinMinutes || + this.GuestEarlyJoinMinutes.Equals(input.GuestEarlyJoinMinutes) ) && ( - this.IsDraft == input.IsDraft || - this.IsDraft.Equals(input.IsDraft) + this.HostEarlyJoinMinutes == input.HostEarlyJoinMinutes || + this.HostEarlyJoinMinutes.Equals(input.HostEarlyJoinMinutes) ) && ( this.ImageId == input.ImageId || @@ -361,10 +361,14 @@ public bool Equals(CreateCalendarEventRequest input) this.ImageId.Equals(input.ImageId)) ) && ( - this.RoleIds == input.RoleIds || - this.RoleIds != null && - input.RoleIds != null && - this.RoleIds.SequenceEqual(input.RoleIds) + this.IsDraft == input.IsDraft || + this.IsDraft.Equals(input.IsDraft) + ) && + ( + this.Languages == input.Languages || + this.Languages != null && + input.Languages != null && + this.Languages.SequenceEqual(input.Languages) ) && ( this.ParentId == input.ParentId || @@ -378,38 +382,34 @@ public bool Equals(CreateCalendarEventRequest input) this.Platforms.SequenceEqual(input.Platforms) ) && ( - this.Languages == input.Languages || - this.Languages != null && - input.Languages != null && - this.Languages.SequenceEqual(input.Languages) + this.RoleIds == input.RoleIds || + this.RoleIds != null && + input.RoleIds != null && + this.RoleIds.SequenceEqual(input.RoleIds) ) && ( this.SendCreationNotification == input.SendCreationNotification || this.SendCreationNotification.Equals(input.SendCreationNotification) ) && ( - this.Featured == input.Featured || - this.Featured.Equals(input.Featured) - ) && - ( - this.HostEarlyJoinMinutes == input.HostEarlyJoinMinutes || - this.HostEarlyJoinMinutes.Equals(input.HostEarlyJoinMinutes) + this.StartsAt == input.StartsAt || + (this.StartsAt != null && + this.StartsAt.Equals(input.StartsAt)) ) && ( - this.GuestEarlyJoinMinutes == input.GuestEarlyJoinMinutes || - this.GuestEarlyJoinMinutes.Equals(input.GuestEarlyJoinMinutes) + this.Tags == input.Tags || + this.Tags != null && + input.Tags != null && + this.Tags.SequenceEqual(input.Tags) ) && ( - this.CloseInstanceAfterEndMinutes == input.CloseInstanceAfterEndMinutes || - this.CloseInstanceAfterEndMinutes.Equals(input.CloseInstanceAfterEndMinutes) + this.Title == input.Title || + (this.Title != null && + this.Title.Equals(input.Title)) ) && ( this.UsesInstanceOverflow == input.UsesInstanceOverflow || this.UsesInstanceOverflow.Equals(input.UsesInstanceOverflow) - ) && - ( - this.AccessType == input.AccessType || - this.AccessType.Equals(input.AccessType) ); } @@ -422,14 +422,12 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Title != null) - { - hashCode = (hashCode * 59) + this.Title.GetHashCode(); - } - if (this.StartsAt != null) + hashCode = (hashCode * 59) + this.AccessType.GetHashCode(); + if (this.Category != null) { - hashCode = (hashCode * 59) + this.StartsAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Category.GetHashCode(); } + hashCode = (hashCode * 59) + this.CloseInstanceAfterEndMinutes.GetHashCode(); if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); @@ -438,22 +436,17 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.EndsAt.GetHashCode(); } - if (this.Category != null) - { - hashCode = (hashCode * 59) + this.Category.GetHashCode(); - } - if (this.Tags != null) - { - hashCode = (hashCode * 59) + this.Tags.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsDraft.GetHashCode(); + hashCode = (hashCode * 59) + this.Featured.GetHashCode(); + hashCode = (hashCode * 59) + this.GuestEarlyJoinMinutes.GetHashCode(); + hashCode = (hashCode * 59) + this.HostEarlyJoinMinutes.GetHashCode(); if (this.ImageId != null) { hashCode = (hashCode * 59) + this.ImageId.GetHashCode(); } - if (this.RoleIds != null) + hashCode = (hashCode * 59) + this.IsDraft.GetHashCode(); + if (this.Languages != null) { - hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); + hashCode = (hashCode * 59) + this.Languages.GetHashCode(); } if (this.ParentId != null) { @@ -463,17 +456,24 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Platforms.GetHashCode(); } - if (this.Languages != null) + if (this.RoleIds != null) { - hashCode = (hashCode * 59) + this.Languages.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); } hashCode = (hashCode * 59) + this.SendCreationNotification.GetHashCode(); - hashCode = (hashCode * 59) + this.Featured.GetHashCode(); - hashCode = (hashCode * 59) + this.HostEarlyJoinMinutes.GetHashCode(); - hashCode = (hashCode * 59) + this.GuestEarlyJoinMinutes.GetHashCode(); - hashCode = (hashCode * 59) + this.CloseInstanceAfterEndMinutes.GetHashCode(); + if (this.StartsAt != null) + { + hashCode = (hashCode * 59) + this.StartsAt.GetHashCode(); + } + if (this.Tags != null) + { + hashCode = (hashCode * 59) + this.Tags.GetHashCode(); + } + if (this.Title != null) + { + hashCode = (hashCode * 59) + this.Title.GetHashCode(); + } hashCode = (hashCode * 59) + this.UsesInstanceOverflow.GetHashCode(); - hashCode = (hashCode * 59) + this.AccessType.GetHashCode(); return hashCode; } } @@ -485,18 +485,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Title (string) minLength - if (this.Title != null && this.Title.Length < 1) - { - yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); - } - // Description (string) minLength if (this.Description != null && this.Description.Length < 1) { yield return new ValidationResult("Invalid value for Description, length must be greater than 1.", new [] { "Description" }); } + // Title (string) minLength + if (this.Title != null && this.Title.Length < 1) + { + yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CreateFileRequest.cs b/src/VRChat.API/Model/CreateFileRequest.cs index 9cba1d75..3eaeb288 100644 --- a/src/VRChat.API/Model/CreateFileRequest.cs +++ b/src/VRChat.API/Model/CreateFileRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,40 +46,40 @@ protected CreateFileRequest() { } /// /// Initializes a new instance of the class. /// - /// name (required). - /// mimeType (required). /// extension (required). + /// mimeType (required). + /// name (required). /// . - public CreateFileRequest(string name = default, MIMEType mimeType = default, string extension = default, List tags = default) + public CreateFileRequest(string extension = default, MIMEType mimeType = default, string name = default, List tags = default) { - // to ensure "name" is required (not null) - if (name == null) - { - throw new ArgumentNullException("name is a required property for CreateFileRequest and cannot be null"); - } - this.Name = name; - this.MimeType = mimeType; // to ensure "extension" is required (not null) if (extension == null) { throw new ArgumentNullException("extension is a required property for CreateFileRequest and cannot be null"); } this.Extension = extension; + this.MimeType = mimeType; + // to ensure "name" is required (not null) + if (name == null) + { + throw new ArgumentNullException("name is a required property for CreateFileRequest and cannot be null"); + } + this.Name = name; this.Tags = tags; } - /// - /// Gets or Sets Name - /// - [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] - public string Name { get; set; } - /// /// Gets or Sets Extension /// [DataMember(Name = "extension", IsRequired = true, EmitDefaultValue = true)] public string Extension { get; set; } + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] + public string Name { get; set; } + /// /// /// @@ -95,9 +95,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateFileRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" MimeType: ").Append(MimeType).Append("\n"); sb.Append(" Extension: ").Append(Extension).Append("\n"); + sb.Append(" MimeType: ").Append(MimeType).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -135,18 +135,18 @@ public bool Equals(CreateFileRequest input) } return ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.Extension == input.Extension || + (this.Extension != null && + this.Extension.Equals(input.Extension)) ) && ( this.MimeType == input.MimeType || this.MimeType.Equals(input.MimeType) ) && ( - this.Extension == input.Extension || - (this.Extension != null && - this.Extension.Equals(input.Extension)) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.Tags == input.Tags || @@ -165,14 +165,14 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) + if (this.Extension != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.Extension.GetHashCode(); } hashCode = (hashCode * 59) + this.MimeType.GetHashCode(); - if (this.Extension != null) + if (this.Name != null) { - hashCode = (hashCode * 59) + this.Extension.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } if (this.Tags != null) { @@ -189,18 +189,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Name (string) minLength - if (this.Name != null && this.Name.Length < 0) - { - yield return new ValidationResult("Invalid value for Name, length must be greater than 0.", new [] { "Name" }); - } - // Extension (string) minLength if (this.Extension != null && this.Extension.Length < 1) { yield return new ValidationResult("Invalid value for Extension, length must be greater than 1.", new [] { "Extension" }); } + // Name (string) minLength + if (this.Name != null && this.Name.Length < 0) + { + yield return new ValidationResult("Invalid value for Name, length must be greater than 0.", new [] { "Name" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CreateFileVersionRequest.cs b/src/VRChat.API/Model/CreateFileVersionRequest.cs index 2f9d7add..750b77a2 100644 --- a/src/VRChat.API/Model/CreateFileVersionRequest.cs +++ b/src/VRChat.API/Model/CreateFileVersionRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,11 +40,11 @@ protected CreateFileVersionRequest() { } /// /// Initializes a new instance of the class. /// - /// signatureMd5 (required). - /// signatureSizeInBytes (required). /// fileMd5. /// fileSizeInBytes. - public CreateFileVersionRequest(string signatureMd5 = default, int signatureSizeInBytes = default, string fileMd5 = default, int fileSizeInBytes = default) + /// signatureMd5 (required). + /// signatureSizeInBytes (required). + public CreateFileVersionRequest(string fileMd5 = default, int fileSizeInBytes = default, string signatureMd5 = default, int signatureSizeInBytes = default) { // to ensure "signatureMd5" is required (not null) if (signatureMd5 == null) @@ -57,18 +57,6 @@ public CreateFileVersionRequest(string signatureMd5 = default, int signatureSize this.FileSizeInBytes = fileSizeInBytes; } - /// - /// Gets or Sets SignatureMd5 - /// - [DataMember(Name = "signatureMd5", IsRequired = true, EmitDefaultValue = true)] - public string SignatureMd5 { get; set; } - - /// - /// Gets or Sets SignatureSizeInBytes - /// - [DataMember(Name = "signatureSizeInBytes", IsRequired = true, EmitDefaultValue = true)] - public int SignatureSizeInBytes { get; set; } - /// /// Gets or Sets FileMd5 /// @@ -81,6 +69,18 @@ public CreateFileVersionRequest(string signatureMd5 = default, int signatureSize [DataMember(Name = "fileSizeInBytes", EmitDefaultValue = false)] public int FileSizeInBytes { get; set; } + /// + /// Gets or Sets SignatureMd5 + /// + [DataMember(Name = "signatureMd5", IsRequired = true, EmitDefaultValue = true)] + public string SignatureMd5 { get; set; } + + /// + /// Gets or Sets SignatureSizeInBytes + /// + [DataMember(Name = "signatureSizeInBytes", IsRequired = true, EmitDefaultValue = true)] + public int SignatureSizeInBytes { get; set; } + /// /// Returns the string presentation of the object /// @@ -89,10 +89,10 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateFileVersionRequest {\n"); - sb.Append(" SignatureMd5: ").Append(SignatureMd5).Append("\n"); - sb.Append(" SignatureSizeInBytes: ").Append(SignatureSizeInBytes).Append("\n"); sb.Append(" FileMd5: ").Append(FileMd5).Append("\n"); sb.Append(" FileSizeInBytes: ").Append(FileSizeInBytes).Append("\n"); + sb.Append(" SignatureMd5: ").Append(SignatureMd5).Append("\n"); + sb.Append(" SignatureSizeInBytes: ").Append(SignatureSizeInBytes).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -128,15 +128,6 @@ public bool Equals(CreateFileVersionRequest input) return false; } return - ( - this.SignatureMd5 == input.SignatureMd5 || - (this.SignatureMd5 != null && - this.SignatureMd5.Equals(input.SignatureMd5)) - ) && - ( - this.SignatureSizeInBytes == input.SignatureSizeInBytes || - this.SignatureSizeInBytes.Equals(input.SignatureSizeInBytes) - ) && ( this.FileMd5 == input.FileMd5 || (this.FileMd5 != null && @@ -145,6 +136,15 @@ public bool Equals(CreateFileVersionRequest input) ( this.FileSizeInBytes == input.FileSizeInBytes || this.FileSizeInBytes.Equals(input.FileSizeInBytes) + ) && + ( + this.SignatureMd5 == input.SignatureMd5 || + (this.SignatureMd5 != null && + this.SignatureMd5.Equals(input.SignatureMd5)) + ) && + ( + this.SignatureSizeInBytes == input.SignatureSizeInBytes || + this.SignatureSizeInBytes.Equals(input.SignatureSizeInBytes) ); } @@ -157,16 +157,16 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.SignatureMd5 != null) - { - hashCode = (hashCode * 59) + this.SignatureMd5.GetHashCode(); - } - hashCode = (hashCode * 59) + this.SignatureSizeInBytes.GetHashCode(); if (this.FileMd5 != null) { hashCode = (hashCode * 59) + this.FileMd5.GetHashCode(); } hashCode = (hashCode * 59) + this.FileSizeInBytes.GetHashCode(); + if (this.SignatureMd5 != null) + { + hashCode = (hashCode * 59) + this.SignatureMd5.GetHashCode(); + } + hashCode = (hashCode * 59) + this.SignatureSizeInBytes.GetHashCode(); return hashCode; } } @@ -178,18 +178,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // SignatureMd5 (string) minLength - if (this.SignatureMd5 != null && this.SignatureMd5.Length < 1) - { - yield return new ValidationResult("Invalid value for SignatureMd5, length must be greater than 1.", new [] { "SignatureMd5" }); - } - // FileMd5 (string) minLength if (this.FileMd5 != null && this.FileMd5.Length < 1) { yield return new ValidationResult("Invalid value for FileMd5, length must be greater than 1.", new [] { "FileMd5" }); } + // SignatureMd5 (string) minLength + if (this.SignatureMd5 != null && this.SignatureMd5.Length < 1) + { + yield return new ValidationResult("Invalid value for SignatureMd5, length must be greater than 1.", new [] { "SignatureMd5" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CreateGroupAnnouncementRequest.cs b/src/VRChat.API/Model/CreateGroupAnnouncementRequest.cs index ddea785a..7fe77b34 100644 --- a/src/VRChat.API/Model/CreateGroupAnnouncementRequest.cs +++ b/src/VRChat.API/Model/CreateGroupAnnouncementRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,11 +40,11 @@ protected CreateGroupAnnouncementRequest() { } /// /// Initializes a new instance of the class. /// - /// Announcement title (required). - /// Announcement text. /// imageId. /// Send notification to group members. (default to false). - public CreateGroupAnnouncementRequest(string title = default, string text = default, string imageId = default, bool sendNotification = false) + /// Announcement text. + /// Announcement title (required). + public CreateGroupAnnouncementRequest(string imageId = default, bool sendNotification = false, string text = default, string title = default) { // to ensure "title" is required (not null) if (title == null) @@ -52,49 +52,49 @@ public CreateGroupAnnouncementRequest(string title = default, string text = defa throw new ArgumentNullException("title is a required property for CreateGroupAnnouncementRequest and cannot be null"); } this.Title = title; - this.Text = text; this.ImageId = imageId; this.SendNotification = sendNotification; + this.Text = text; } /// - /// Announcement title + /// Gets or Sets ImageId /// - /// Announcement title /* - Event is starting soon! + file_ce35d830-e20a-4df0-a6d4-5aaef4508044 */ - [DataMember(Name = "title", IsRequired = true, EmitDefaultValue = true)] - public string Title { get; set; } + [DataMember(Name = "imageId", EmitDefaultValue = false)] + public string ImageId { get; set; } /// - /// Announcement text + /// Send notification to group members. /// - /// Announcement text + /// Send notification to group members. /* - Come join us for the event! + false */ - [DataMember(Name = "text", EmitDefaultValue = false)] - public string Text { get; set; } + [DataMember(Name = "sendNotification", EmitDefaultValue = true)] + public bool SendNotification { get; set; } /// - /// Gets or Sets ImageId + /// Announcement text /// + /// Announcement text /* - file_ce35d830-e20a-4df0-a6d4-5aaef4508044 + Come join us for the event! */ - [DataMember(Name = "imageId", EmitDefaultValue = false)] - public string ImageId { get; set; } + [DataMember(Name = "text", EmitDefaultValue = false)] + public string Text { get; set; } /// - /// Send notification to group members. + /// Announcement title /// - /// Send notification to group members. + /// Announcement title /* - false + Event is starting soon! */ - [DataMember(Name = "sendNotification", EmitDefaultValue = true)] - public bool SendNotification { get; set; } + [DataMember(Name = "title", IsRequired = true, EmitDefaultValue = true)] + public string Title { get; set; } /// /// Returns the string presentation of the object @@ -104,10 +104,10 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateGroupAnnouncementRequest {\n"); - sb.Append(" Title: ").Append(Title).Append("\n"); - sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append(" ImageId: ").Append(ImageId).Append("\n"); sb.Append(" SendNotification: ").Append(SendNotification).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -143,16 +143,6 @@ public bool Equals(CreateGroupAnnouncementRequest input) return false; } return - ( - this.Title == input.Title || - (this.Title != null && - this.Title.Equals(input.Title)) - ) && - ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) - ) && ( this.ImageId == input.ImageId || (this.ImageId != null && @@ -161,6 +151,16 @@ public bool Equals(CreateGroupAnnouncementRequest input) ( this.SendNotification == input.SendNotification || this.SendNotification.Equals(input.SendNotification) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && + ( + this.Title == input.Title || + (this.Title != null && + this.Title.Equals(input.Title)) ); } @@ -173,19 +173,19 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Title != null) + if (this.ImageId != null) { - hashCode = (hashCode * 59) + this.Title.GetHashCode(); + hashCode = (hashCode * 59) + this.ImageId.GetHashCode(); } + hashCode = (hashCode * 59) + this.SendNotification.GetHashCode(); if (this.Text != null) { hashCode = (hashCode * 59) + this.Text.GetHashCode(); } - if (this.ImageId != null) + if (this.Title != null) { - hashCode = (hashCode * 59) + this.ImageId.GetHashCode(); + hashCode = (hashCode * 59) + this.Title.GetHashCode(); } - hashCode = (hashCode * 59) + this.SendNotification.GetHashCode(); return hashCode; } } @@ -197,18 +197,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Title (string) minLength - if (this.Title != null && this.Title.Length < 1) - { - yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); - } - // Text (string) minLength if (this.Text != null && this.Text.Length < 1) { yield return new ValidationResult("Invalid value for Text, length must be greater than 1.", new [] { "Text" }); } + // Title (string) minLength + if (this.Title != null && this.Title.Length < 1) + { + yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CreateGroupGalleryRequest.cs b/src/VRChat.API/Model/CreateGroupGalleryRequest.cs index 63546acf..cca4e8b1 100644 --- a/src/VRChat.API/Model/CreateGroupGalleryRequest.cs +++ b/src/VRChat.API/Model/CreateGroupGalleryRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,14 +40,14 @@ protected CreateGroupGalleryRequest() { } /// /// Initializes a new instance of the class. /// - /// Name of the gallery. (required). /// Description of the gallery.. /// Whether the gallery is members only. (default to false). - /// . - /// . + /// Name of the gallery. (required). /// . /// . - public CreateGroupGalleryRequest(string name = default, string description = default, bool membersOnly = false, List roleIdsToView = default, List roleIdsToSubmit = default, List roleIdsToAutoApprove = default, List roleIdsToManage = default) + /// . + /// . + public CreateGroupGalleryRequest(string description = default, bool membersOnly = false, string name = default, List roleIdsToAutoApprove = default, List roleIdsToManage = default, List roleIdsToSubmit = default, List roleIdsToView = default) { // to ensure "name" is required (not null) if (name == null) @@ -57,22 +57,12 @@ public CreateGroupGalleryRequest(string name = default, string description = def this.Name = name; this.Description = description; this.MembersOnly = membersOnly; - this.RoleIdsToView = roleIdsToView; - this.RoleIdsToSubmit = roleIdsToSubmit; this.RoleIdsToAutoApprove = roleIdsToAutoApprove; this.RoleIdsToManage = roleIdsToManage; + this.RoleIdsToSubmit = roleIdsToSubmit; + this.RoleIdsToView = roleIdsToView; } - /// - /// Name of the gallery. - /// - /// Name of the gallery. - /* - Example Gallery - */ - [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] - public string Name { get; set; } - /// /// Description of the gallery. /// @@ -93,33 +83,43 @@ public CreateGroupGalleryRequest(string name = default, string description = def [DataMember(Name = "membersOnly", EmitDefaultValue = true)] public bool MembersOnly { get; set; } + /// + /// Name of the gallery. + /// + /// Name of the gallery. + /* + Example Gallery + */ + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] + public string Name { get; set; } + /// /// /// /// - [DataMember(Name = "roleIdsToView", EmitDefaultValue = true)] - public List RoleIdsToView { get; set; } + [DataMember(Name = "roleIdsToAutoApprove", EmitDefaultValue = true)] + public List RoleIdsToAutoApprove { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToSubmit", EmitDefaultValue = true)] - public List RoleIdsToSubmit { get; set; } + [DataMember(Name = "roleIdsToManage", EmitDefaultValue = true)] + public List RoleIdsToManage { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToAutoApprove", EmitDefaultValue = true)] - public List RoleIdsToAutoApprove { get; set; } + [DataMember(Name = "roleIdsToSubmit", EmitDefaultValue = true)] + public List RoleIdsToSubmit { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToManage", EmitDefaultValue = true)] - public List RoleIdsToManage { get; set; } + [DataMember(Name = "roleIdsToView", EmitDefaultValue = true)] + public List RoleIdsToView { get; set; } /// /// Returns the string presentation of the object @@ -129,13 +129,13 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateGroupGalleryRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" MembersOnly: ").Append(MembersOnly).Append("\n"); - sb.Append(" RoleIdsToView: ").Append(RoleIdsToView).Append("\n"); - sb.Append(" RoleIdsToSubmit: ").Append(RoleIdsToSubmit).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" RoleIdsToAutoApprove: ").Append(RoleIdsToAutoApprove).Append("\n"); sb.Append(" RoleIdsToManage: ").Append(RoleIdsToManage).Append("\n"); + sb.Append(" RoleIdsToSubmit: ").Append(RoleIdsToSubmit).Append("\n"); + sb.Append(" RoleIdsToView: ").Append(RoleIdsToView).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -171,11 +171,6 @@ public bool Equals(CreateGroupGalleryRequest input) return false; } return - ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && ( this.Description == input.Description || (this.Description != null && @@ -186,16 +181,9 @@ public bool Equals(CreateGroupGalleryRequest input) this.MembersOnly.Equals(input.MembersOnly) ) && ( - this.RoleIdsToView == input.RoleIdsToView || - this.RoleIdsToView != null && - input.RoleIdsToView != null && - this.RoleIdsToView.SequenceEqual(input.RoleIdsToView) - ) && - ( - this.RoleIdsToSubmit == input.RoleIdsToSubmit || - this.RoleIdsToSubmit != null && - input.RoleIdsToSubmit != null && - this.RoleIdsToSubmit.SequenceEqual(input.RoleIdsToSubmit) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.RoleIdsToAutoApprove == input.RoleIdsToAutoApprove || @@ -208,6 +196,18 @@ public bool Equals(CreateGroupGalleryRequest input) this.RoleIdsToManage != null && input.RoleIdsToManage != null && this.RoleIdsToManage.SequenceEqual(input.RoleIdsToManage) + ) && + ( + this.RoleIdsToSubmit == input.RoleIdsToSubmit || + this.RoleIdsToSubmit != null && + input.RoleIdsToSubmit != null && + this.RoleIdsToSubmit.SequenceEqual(input.RoleIdsToSubmit) + ) && + ( + this.RoleIdsToView == input.RoleIdsToView || + this.RoleIdsToView != null && + input.RoleIdsToView != null && + this.RoleIdsToView.SequenceEqual(input.RoleIdsToView) ); } @@ -220,22 +220,14 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } hashCode = (hashCode * 59) + this.MembersOnly.GetHashCode(); - if (this.RoleIdsToView != null) - { - hashCode = (hashCode * 59) + this.RoleIdsToView.GetHashCode(); - } - if (this.RoleIdsToSubmit != null) + if (this.Name != null) { - hashCode = (hashCode * 59) + this.RoleIdsToSubmit.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } if (this.RoleIdsToAutoApprove != null) { @@ -245,6 +237,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.RoleIdsToManage.GetHashCode(); } + if (this.RoleIdsToSubmit != null) + { + hashCode = (hashCode * 59) + this.RoleIdsToSubmit.GetHashCode(); + } + if (this.RoleIdsToView != null) + { + hashCode = (hashCode * 59) + this.RoleIdsToView.GetHashCode(); + } return hashCode; } } @@ -256,18 +256,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Name (string) minLength - if (this.Name != null && this.Name.Length < 1) - { - yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); - } - // Description (string) minLength if (this.Description != null && this.Description.Length < 0) { yield return new ValidationResult("Invalid value for Description, length must be greater than 0.", new [] { "Description" }); } + // Name (string) minLength + if (this.Name != null && this.Name.Length < 1) + { + yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CreateGroupInviteRequest.cs b/src/VRChat.API/Model/CreateGroupInviteRequest.cs index 5c4517d9..85e9f748 100644 --- a/src/VRChat.API/Model/CreateGroupInviteRequest.cs +++ b/src/VRChat.API/Model/CreateGroupInviteRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,9 +40,9 @@ protected CreateGroupInviteRequest() { } /// /// Initializes a new instance of the class. /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// confirmOverrideBlock (default to true). - public CreateGroupInviteRequest(string userId = default, bool confirmOverrideBlock = true) + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). + public CreateGroupInviteRequest(bool confirmOverrideBlock = true, string userId = default) { // to ensure "userId" is required (not null) if (userId == null) @@ -53,6 +53,12 @@ public CreateGroupInviteRequest(string userId = default, bool confirmOverrideBlo this.ConfirmOverrideBlock = confirmOverrideBlock; } + /// + /// Gets or Sets ConfirmOverrideBlock + /// + [DataMember(Name = "confirmOverrideBlock", EmitDefaultValue = true)] + public bool ConfirmOverrideBlock { get; set; } + /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -63,12 +69,6 @@ public CreateGroupInviteRequest(string userId = default, bool confirmOverrideBlo [DataMember(Name = "userId", IsRequired = true, EmitDefaultValue = true)] public string UserId { get; set; } - /// - /// Gets or Sets ConfirmOverrideBlock - /// - [DataMember(Name = "confirmOverrideBlock", EmitDefaultValue = true)] - public bool ConfirmOverrideBlock { get; set; } - /// /// Returns the string presentation of the object /// @@ -77,8 +77,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateGroupInviteRequest {\n"); - sb.Append(" UserId: ").Append(UserId).Append("\n"); sb.Append(" ConfirmOverrideBlock: ").Append(ConfirmOverrideBlock).Append("\n"); + sb.Append(" UserId: ").Append(UserId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -114,14 +114,14 @@ public bool Equals(CreateGroupInviteRequest input) return false; } return + ( + this.ConfirmOverrideBlock == input.ConfirmOverrideBlock || + this.ConfirmOverrideBlock.Equals(input.ConfirmOverrideBlock) + ) && ( this.UserId == input.UserId || (this.UserId != null && this.UserId.Equals(input.UserId)) - ) && - ( - this.ConfirmOverrideBlock == input.ConfirmOverrideBlock || - this.ConfirmOverrideBlock.Equals(input.ConfirmOverrideBlock) ); } @@ -134,11 +134,11 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + hashCode = (hashCode * 59) + this.ConfirmOverrideBlock.GetHashCode(); if (this.UserId != null) { hashCode = (hashCode * 59) + this.UserId.GetHashCode(); } - hashCode = (hashCode * 59) + this.ConfirmOverrideBlock.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/CreateGroupPostRequest.cs b/src/VRChat.API/Model/CreateGroupPostRequest.cs index 798ce710..6113849d 100644 --- a/src/VRChat.API/Model/CreateGroupPostRequest.cs +++ b/src/VRChat.API/Model/CreateGroupPostRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,52 +46,32 @@ protected CreateGroupPostRequest() { } /// /// Initializes a new instance of the class. /// - /// Post title (required). - /// Post text (required). /// imageId. - /// Send notification to group members. (required) (default to false). /// . + /// Send notification to group members. (required) (default to false). + /// Post text (required). + /// Post title (required). /// visibility (required). - public CreateGroupPostRequest(string title = default, string text = default, string imageId = default, bool sendNotification = false, List roleIds = default, GroupPostVisibility visibility = default) + public CreateGroupPostRequest(string imageId = default, List roleIds = default, bool sendNotification = false, string text = default, string title = default, GroupPostVisibility visibility = default) { - // to ensure "title" is required (not null) - if (title == null) - { - throw new ArgumentNullException("title is a required property for CreateGroupPostRequest and cannot be null"); - } - this.Title = title; + this.SendNotification = sendNotification; // to ensure "text" is required (not null) if (text == null) { throw new ArgumentNullException("text is a required property for CreateGroupPostRequest and cannot be null"); } this.Text = text; - this.SendNotification = sendNotification; + // to ensure "title" is required (not null) + if (title == null) + { + throw new ArgumentNullException("title is a required property for CreateGroupPostRequest and cannot be null"); + } + this.Title = title; this.Visibility = visibility; this.ImageId = imageId; this.RoleIds = roleIds; } - /// - /// Post title - /// - /// Post title - /* - Event is starting soon! - */ - [DataMember(Name = "title", IsRequired = true, EmitDefaultValue = true)] - public string Title { get; set; } - - /// - /// Post text - /// - /// Post text - /* - Come join us for the event! - */ - [DataMember(Name = "text", IsRequired = true, EmitDefaultValue = true)] - public string Text { get; set; } - /// /// Gets or Sets ImageId /// @@ -101,6 +81,13 @@ public CreateGroupPostRequest(string title = default, string text = default, str [DataMember(Name = "imageId", EmitDefaultValue = false)] public string ImageId { get; set; } + /// + /// + /// + /// + [DataMember(Name = "roleIds", EmitDefaultValue = false)] + public List RoleIds { get; set; } + /// /// Send notification to group members. /// @@ -112,11 +99,24 @@ public CreateGroupPostRequest(string title = default, string text = default, str public bool SendNotification { get; set; } /// - /// + /// Post text /// - /// - [DataMember(Name = "roleIds", EmitDefaultValue = false)] - public List RoleIds { get; set; } + /// Post text + /* + Come join us for the event! + */ + [DataMember(Name = "text", IsRequired = true, EmitDefaultValue = true)] + public string Text { get; set; } + + /// + /// Post title + /// + /// Post title + /* + Event is starting soon! + */ + [DataMember(Name = "title", IsRequired = true, EmitDefaultValue = true)] + public string Title { get; set; } /// /// Returns the string presentation of the object @@ -126,11 +126,11 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateGroupPostRequest {\n"); - sb.Append(" Title: ").Append(Title).Append("\n"); - sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append(" ImageId: ").Append(ImageId).Append("\n"); - sb.Append(" SendNotification: ").Append(SendNotification).Append("\n"); sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); + sb.Append(" SendNotification: ").Append(SendNotification).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -167,31 +167,31 @@ public bool Equals(CreateGroupPostRequest input) return false; } return - ( - this.Title == input.Title || - (this.Title != null && - this.Title.Equals(input.Title)) - ) && - ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) - ) && ( this.ImageId == input.ImageId || (this.ImageId != null && this.ImageId.Equals(input.ImageId)) ) && - ( - this.SendNotification == input.SendNotification || - this.SendNotification.Equals(input.SendNotification) - ) && ( this.RoleIds == input.RoleIds || this.RoleIds != null && input.RoleIds != null && this.RoleIds.SequenceEqual(input.RoleIds) ) && + ( + this.SendNotification == input.SendNotification || + this.SendNotification.Equals(input.SendNotification) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && + ( + this.Title == input.Title || + (this.Title != null && + this.Title.Equals(input.Title)) + ) && ( this.Visibility == input.Visibility || this.Visibility.Equals(input.Visibility) @@ -207,23 +207,23 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Title != null) - { - hashCode = (hashCode * 59) + this.Title.GetHashCode(); - } - if (this.Text != null) - { - hashCode = (hashCode * 59) + this.Text.GetHashCode(); - } if (this.ImageId != null) { hashCode = (hashCode * 59) + this.ImageId.GetHashCode(); } - hashCode = (hashCode * 59) + this.SendNotification.GetHashCode(); if (this.RoleIds != null) { hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); } + hashCode = (hashCode * 59) + this.SendNotification.GetHashCode(); + if (this.Text != null) + { + hashCode = (hashCode * 59) + this.Text.GetHashCode(); + } + if (this.Title != null) + { + hashCode = (hashCode * 59) + this.Title.GetHashCode(); + } hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); return hashCode; } @@ -236,18 +236,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Title (string) minLength - if (this.Title != null && this.Title.Length < 1) - { - yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); - } - // Text (string) minLength if (this.Text != null && this.Text.Length < 1) { yield return new ValidationResult("Invalid value for Text, length must be greater than 1.", new [] { "Text" }); } + // Title (string) minLength + if (this.Title != null && this.Title.Length < 1) + { + yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CreateGroupRequest.cs b/src/VRChat.API/Model/CreateGroupRequest.cs index 20e4600e..c939fea0 100644 --- a/src/VRChat.API/Model/CreateGroupRequest.cs +++ b/src/VRChat.API/Model/CreateGroupRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -58,15 +58,15 @@ protected CreateGroupRequest() { } /// /// Initializes a new instance of the class. /// - /// name (required). - /// shortCode (required). + /// bannerId. /// description. - /// joinState. /// iconId. - /// bannerId. + /// joinState. + /// name (required). /// privacy. /// roleTemplate (required). - public CreateGroupRequest(string name = default, string shortCode = default, string description = default, GroupJoinState? joinState = default, string iconId = default, string bannerId = default, GroupPrivacy? privacy = default, GroupRoleTemplate roleTemplate = default) + /// shortCode (required). + public CreateGroupRequest(string bannerId = default, string description = default, string iconId = default, GroupJoinState? joinState = default, string name = default, GroupPrivacy? privacy = default, GroupRoleTemplate roleTemplate = default, string shortCode = default) { // to ensure "name" is required (not null) if (name == null) @@ -74,31 +74,25 @@ public CreateGroupRequest(string name = default, string shortCode = default, str throw new ArgumentNullException("name is a required property for CreateGroupRequest and cannot be null"); } this.Name = name; + this.RoleTemplate = roleTemplate; // to ensure "shortCode" is required (not null) if (shortCode == null) { throw new ArgumentNullException("shortCode is a required property for CreateGroupRequest and cannot be null"); } this.ShortCode = shortCode; - this.RoleTemplate = roleTemplate; + this.BannerId = bannerId; this.Description = description; - this.JoinState = joinState; this.IconId = iconId; - this.BannerId = bannerId; + this.JoinState = joinState; this.Privacy = privacy; } /// - /// Gets or Sets Name - /// - [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] - public string Name { get; set; } - - /// - /// Gets or Sets ShortCode + /// Gets or Sets BannerId /// - [DataMember(Name = "shortCode", IsRequired = true, EmitDefaultValue = true)] - public string ShortCode { get; set; } + [DataMember(Name = "bannerId", EmitDefaultValue = true)] + public string BannerId { get; set; } /// /// Gets or Sets Description @@ -113,10 +107,16 @@ public CreateGroupRequest(string name = default, string shortCode = default, str public string IconId { get; set; } /// - /// Gets or Sets BannerId + /// Gets or Sets Name /// - [DataMember(Name = "bannerId", EmitDefaultValue = true)] - public string BannerId { get; set; } + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] + public string Name { get; set; } + + /// + /// Gets or Sets ShortCode + /// + [DataMember(Name = "shortCode", IsRequired = true, EmitDefaultValue = true)] + public string ShortCode { get; set; } /// /// Returns the string presentation of the object @@ -126,14 +126,14 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateGroupRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); + sb.Append(" BannerId: ").Append(BannerId).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" JoinState: ").Append(JoinState).Append("\n"); sb.Append(" IconId: ").Append(IconId).Append("\n"); - sb.Append(" BannerId: ").Append(BannerId).Append("\n"); + sb.Append(" JoinState: ").Append(JoinState).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Privacy: ").Append(Privacy).Append("\n"); sb.Append(" RoleTemplate: ").Append(RoleTemplate).Append("\n"); + sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -170,33 +170,28 @@ public bool Equals(CreateGroupRequest input) } return ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && - ( - this.ShortCode == input.ShortCode || - (this.ShortCode != null && - this.ShortCode.Equals(input.ShortCode)) + this.BannerId == input.BannerId || + (this.BannerId != null && + this.BannerId.Equals(input.BannerId)) ) && ( this.Description == input.Description || (this.Description != null && this.Description.Equals(input.Description)) ) && - ( - this.JoinState == input.JoinState || - this.JoinState.Equals(input.JoinState) - ) && ( this.IconId == input.IconId || (this.IconId != null && this.IconId.Equals(input.IconId)) ) && ( - this.BannerId == input.BannerId || - (this.BannerId != null && - this.BannerId.Equals(input.BannerId)) + this.JoinState == input.JoinState || + this.JoinState.Equals(input.JoinState) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.Privacy == input.Privacy || @@ -205,6 +200,11 @@ public bool Equals(CreateGroupRequest input) ( this.RoleTemplate == input.RoleTemplate || this.RoleTemplate.Equals(input.RoleTemplate) + ) && + ( + this.ShortCode == input.ShortCode || + (this.ShortCode != null && + this.ShortCode.Equals(input.ShortCode)) ); } @@ -217,29 +217,29 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } - if (this.ShortCode != null) + if (this.BannerId != null) { - hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - hashCode = (hashCode * 59) + this.JoinState.GetHashCode(); if (this.IconId != null) { hashCode = (hashCode * 59) + this.IconId.GetHashCode(); } - if (this.BannerId != null) + hashCode = (hashCode * 59) + this.JoinState.GetHashCode(); + if (this.Name != null) { - hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } hashCode = (hashCode * 59) + this.Privacy.GetHashCode(); hashCode = (hashCode * 59) + this.RoleTemplate.GetHashCode(); + if (this.ShortCode != null) + { + hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + } return hashCode; } } @@ -251,6 +251,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { + // Description (string) maxLength + if (this.Description != null && this.Description.Length > 250) + { + yield return new ValidationResult("Invalid value for Description, length must be less than 250.", new [] { "Description" }); + } + + // Description (string) minLength + if (this.Description != null && this.Description.Length < 0) + { + yield return new ValidationResult("Invalid value for Description, length must be greater than 0.", new [] { "Description" }); + } + // Name (string) maxLength if (this.Name != null && this.Name.Length > 64) { @@ -275,18 +287,6 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for ShortCode, length must be greater than 3.", new [] { "ShortCode" }); } - // Description (string) maxLength - if (this.Description != null && this.Description.Length > 250) - { - yield return new ValidationResult("Invalid value for Description, length must be less than 250.", new [] { "Description" }); - } - - // Description (string) minLength - if (this.Description != null && this.Description.Length < 0) - { - yield return new ValidationResult("Invalid value for Description, length must be greater than 0.", new [] { "Description" }); - } - yield break; } } diff --git a/src/VRChat.API/Model/CreateGroupRoleRequest.cs b/src/VRChat.API/Model/CreateGroupRoleRequest.cs index f7a790dd..309225e2 100644 --- a/src/VRChat.API/Model/CreateGroupRoleRequest.cs +++ b/src/VRChat.API/Model/CreateGroupRoleRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,44 +35,44 @@ public partial class CreateGroupRoleRequest : IEquatable /// /// Initializes a new instance of the class. /// - /// id. - /// name. /// description. + /// id. /// isSelfAssignable (default to false). + /// name. /// permissions. - public CreateGroupRoleRequest(string id = default, string name = default, string description = default, bool isSelfAssignable = false, List permissions = default) + public CreateGroupRoleRequest(string description = default, string id = default, bool isSelfAssignable = false, string name = default, List permissions = default) { - this.Id = id; - this.Name = name; this.Description = description; + this.Id = id; this.IsSelfAssignable = isSelfAssignable; + this.Name = name; this.Permissions = permissions; } - /// - /// Gets or Sets Id - /// - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } - - /// - /// Gets or Sets Name - /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } - /// /// Gets or Sets Description /// [DataMember(Name = "description", EmitDefaultValue = false)] public string Description { get; set; } + /// + /// Gets or Sets Id + /// + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } + /// /// Gets or Sets IsSelfAssignable /// [DataMember(Name = "isSelfAssignable", EmitDefaultValue = true)] public bool IsSelfAssignable { get; set; } + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } + /// /// Gets or Sets Permissions /// @@ -87,10 +87,10 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateGroupRoleRequest {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" IsSelfAssignable: ").Append(IsSelfAssignable).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Permissions: ").Append(Permissions).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -127,25 +127,25 @@ public bool Equals(CreateGroupRoleRequest input) return false; } return + ( + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) + ) && ( this.Id == input.Id || (this.Id != null && this.Id.Equals(input.Id)) ) && + ( + this.IsSelfAssignable == input.IsSelfAssignable || + this.IsSelfAssignable.Equals(input.IsSelfAssignable) + ) && ( this.Name == input.Name || (this.Name != null && this.Name.Equals(input.Name)) ) && - ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) - ) && - ( - this.IsSelfAssignable == input.IsSelfAssignable || - this.IsSelfAssignable.Equals(input.IsSelfAssignable) - ) && ( this.Permissions == input.Permissions || this.Permissions != null && @@ -163,19 +163,19 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); + } if (this.Id != null) { hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + hashCode = (hashCode * 59) + this.IsSelfAssignable.GetHashCode(); if (this.Name != null) { hashCode = (hashCode * 59) + this.Name.GetHashCode(); } - if (this.Description != null) - { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsSelfAssignable.GetHashCode(); if (this.Permissions != null) { hashCode = (hashCode * 59) + this.Permissions.GetHashCode(); diff --git a/src/VRChat.API/Model/CreateInstanceRequest.cs b/src/VRChat.API/Model/CreateInstanceRequest.cs index 329b5e03..1048c9cf 100644 --- a/src/VRChat.API/Model/CreateInstanceRequest.cs +++ b/src/VRChat.API/Model/CreateInstanceRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -34,10 +34,10 @@ public partial class CreateInstanceRequest : IEquatable, { /// - /// Gets or Sets Type + /// Gets or Sets GroupAccessType /// - [DataMember(Name = "type", IsRequired = true, EmitDefaultValue = true)] - public InstanceType Type { get; set; } + [DataMember(Name = "groupAccessType", EmitDefaultValue = false)] + public GroupAccessType? GroupAccessType { get; set; } /// /// Gets or Sets Region @@ -46,10 +46,10 @@ public partial class CreateInstanceRequest : IEquatable, public InstanceRegion Region { get; set; } /// - /// Gets or Sets GroupAccessType + /// Gets or Sets Type /// - [DataMember(Name = "groupAccessType", EmitDefaultValue = false)] - public GroupAccessType? GroupAccessType { get; set; } + [DataMember(Name = "type", IsRequired = true, EmitDefaultValue = true)] + public InstanceType Type { get; set; } /// /// Initializes a new instance of the class. /// @@ -58,77 +58,57 @@ protected CreateInstanceRequest() { } /// /// Initializes a new instance of the class. /// - /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). - /// type (required). - /// region (required). - /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise. - /// Group roleIds that are allowed to join if the type is \"group\" and groupAccessType is \"member\". - /// groupAccessType. - /// queueEnabled (default to false). - /// The time after which users won't be allowed to join the instance. This doesn't work for public instances.. + /// ageGate (default to false). /// Only applies to invite type instances to make them invite+ (default to false). + /// The time after which users won't be allowed to join the instance. This doesn't work for public instances.. + /// contentSettings. + /// displayName. + /// groupAccessType. /// Currently unused, but will eventually be a flag to set if the closing of the instance should kick people. (default to false). - /// inviteOnly (default to false). - /// ageGate (default to false). /// instancePersistenceEnabled. - /// displayName. - /// contentSettings. - public CreateInstanceRequest(string worldId = default, InstanceType type = default, InstanceRegion region = default, string ownerId = default, List roleIds = default, GroupAccessType? groupAccessType = default, bool queueEnabled = false, DateTime closedAt = default, bool canRequestInvite = false, bool hardClose = false, bool inviteOnly = false, bool ageGate = false, bool? instancePersistenceEnabled = default, string displayName = default, InstanceContentSettings contentSettings = default) + /// inviteOnly (default to false). + /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise. + /// queueEnabled (default to false). + /// region (required). + /// Group roleIds that are allowed to join if the type is \"group\" and groupAccessType is \"member\". + /// type (required). + /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). + public CreateInstanceRequest(bool ageGate = false, bool canRequestInvite = false, DateTime closedAt = default, InstanceContentSettings contentSettings = default, string displayName = default, GroupAccessType? groupAccessType = default, bool hardClose = false, bool? instancePersistenceEnabled = default, bool inviteOnly = false, string ownerId = default, bool queueEnabled = false, InstanceRegion region = default, List roleIds = default, InstanceType type = default, string worldId = default) { + this.Region = region; + this.Type = type; // to ensure "worldId" is required (not null) if (worldId == null) { throw new ArgumentNullException("worldId is a required property for CreateInstanceRequest and cannot be null"); } this.WorldId = worldId; - this.Type = type; - this.Region = region; - this.OwnerId = ownerId; - this.RoleIds = roleIds; - this.GroupAccessType = groupAccessType; - this.QueueEnabled = queueEnabled; - this.ClosedAt = closedAt; + this.AgeGate = ageGate; this.CanRequestInvite = canRequestInvite; + this.ClosedAt = closedAt; + this.ContentSettings = contentSettings; + this.DisplayName = displayName; + this.GroupAccessType = groupAccessType; this.HardClose = hardClose; - this.InviteOnly = inviteOnly; - this.AgeGate = ageGate; this.InstancePersistenceEnabled = instancePersistenceEnabled; - this.DisplayName = displayName; - this.ContentSettings = contentSettings; + this.InviteOnly = inviteOnly; + this.OwnerId = ownerId; + this.QueueEnabled = queueEnabled; + this.RoleIds = roleIds; } /// - /// WorldID be \"offline\" on User profiles if you are not friends with that user. - /// - /// WorldID be \"offline\" on User profiles if you are not friends with that user. - /* - wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd - */ - [DataMember(Name = "worldId", IsRequired = true, EmitDefaultValue = true)] - public string WorldId { get; set; } - - /// - /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise - /// - /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "ownerId", EmitDefaultValue = true)] - public string OwnerId { get; set; } - - /// - /// Group roleIds that are allowed to join if the type is \"group\" and groupAccessType is \"member\" + /// Gets or Sets AgeGate /// - /// Group roleIds that are allowed to join if the type is \"group\" and groupAccessType is \"member\" - [DataMember(Name = "roleIds", EmitDefaultValue = false)] - public List RoleIds { get; set; } + [DataMember(Name = "ageGate", EmitDefaultValue = true)] + public bool AgeGate { get; set; } /// - /// Gets or Sets QueueEnabled + /// Only applies to invite type instances to make them invite+ /// - [DataMember(Name = "queueEnabled", EmitDefaultValue = true)] - public bool QueueEnabled { get; set; } + /// Only applies to invite type instances to make them invite+ + [DataMember(Name = "canRequestInvite", EmitDefaultValue = true)] + public bool CanRequestInvite { get; set; } /// /// The time after which users won't be allowed to join the instance. This doesn't work for public instances. @@ -138,11 +118,16 @@ public CreateInstanceRequest(string worldId = default, InstanceType type = defau public DateTime ClosedAt { get; set; } /// - /// Only applies to invite type instances to make them invite+ + /// Gets or Sets ContentSettings /// - /// Only applies to invite type instances to make them invite+ - [DataMember(Name = "canRequestInvite", EmitDefaultValue = true)] - public bool CanRequestInvite { get; set; } + [DataMember(Name = "contentSettings", EmitDefaultValue = false)] + public InstanceContentSettings ContentSettings { get; set; } + + /// + /// Gets or Sets DisplayName + /// + [DataMember(Name = "displayName", EmitDefaultValue = true)] + public string DisplayName { get; set; } /// /// Currently unused, but will eventually be a flag to set if the closing of the instance should kick people. @@ -151,6 +136,12 @@ public CreateInstanceRequest(string worldId = default, InstanceType type = defau [DataMember(Name = "hardClose", EmitDefaultValue = true)] public bool HardClose { get; set; } + /// + /// Gets or Sets InstancePersistenceEnabled + /// + [DataMember(Name = "instancePersistenceEnabled", EmitDefaultValue = true)] + public bool? InstancePersistenceEnabled { get; set; } + /// /// Gets or Sets InviteOnly /// @@ -158,28 +149,37 @@ public CreateInstanceRequest(string worldId = default, InstanceType type = defau public bool InviteOnly { get; set; } /// - /// Gets or Sets AgeGate + /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise /// - [DataMember(Name = "ageGate", EmitDefaultValue = true)] - public bool AgeGate { get; set; } + /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "ownerId", EmitDefaultValue = true)] + public string OwnerId { get; set; } /// - /// Gets or Sets InstancePersistenceEnabled + /// Gets or Sets QueueEnabled /// - [DataMember(Name = "instancePersistenceEnabled", EmitDefaultValue = true)] - public bool? InstancePersistenceEnabled { get; set; } + [DataMember(Name = "queueEnabled", EmitDefaultValue = true)] + public bool QueueEnabled { get; set; } /// - /// Gets or Sets DisplayName + /// Group roleIds that are allowed to join if the type is \"group\" and groupAccessType is \"member\" /// - [DataMember(Name = "displayName", EmitDefaultValue = true)] - public string DisplayName { get; set; } + /// Group roleIds that are allowed to join if the type is \"group\" and groupAccessType is \"member\" + [DataMember(Name = "roleIds", EmitDefaultValue = false)] + public List RoleIds { get; set; } /// - /// Gets or Sets ContentSettings + /// WorldID be \"offline\" on User profiles if you are not friends with that user. /// - [DataMember(Name = "contentSettings", EmitDefaultValue = false)] - public InstanceContentSettings ContentSettings { get; set; } + /// WorldID be \"offline\" on User profiles if you are not friends with that user. + /* + wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd + */ + [DataMember(Name = "worldId", IsRequired = true, EmitDefaultValue = true)] + public string WorldId { get; set; } /// /// Returns the string presentation of the object @@ -189,21 +189,21 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CreateInstanceRequest {\n"); - sb.Append(" WorldId: ").Append(WorldId).Append("\n"); - sb.Append(" Type: ").Append(Type).Append("\n"); - sb.Append(" Region: ").Append(Region).Append("\n"); - sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); - sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); - sb.Append(" GroupAccessType: ").Append(GroupAccessType).Append("\n"); - sb.Append(" QueueEnabled: ").Append(QueueEnabled).Append("\n"); - sb.Append(" ClosedAt: ").Append(ClosedAt).Append("\n"); + sb.Append(" AgeGate: ").Append(AgeGate).Append("\n"); sb.Append(" CanRequestInvite: ").Append(CanRequestInvite).Append("\n"); + sb.Append(" ClosedAt: ").Append(ClosedAt).Append("\n"); + sb.Append(" ContentSettings: ").Append(ContentSettings).Append("\n"); + sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); + sb.Append(" GroupAccessType: ").Append(GroupAccessType).Append("\n"); sb.Append(" HardClose: ").Append(HardClose).Append("\n"); - sb.Append(" InviteOnly: ").Append(InviteOnly).Append("\n"); - sb.Append(" AgeGate: ").Append(AgeGate).Append("\n"); sb.Append(" InstancePersistenceEnabled: ").Append(InstancePersistenceEnabled).Append("\n"); - sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); - sb.Append(" ContentSettings: ").Append(ContentSettings).Append("\n"); + sb.Append(" InviteOnly: ").Append(InviteOnly).Append("\n"); + sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); + sb.Append(" QueueEnabled: ").Append(QueueEnabled).Append("\n"); + sb.Append(" Region: ").Append(Region).Append("\n"); + sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" WorldId: ").Append(WorldId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -240,72 +240,72 @@ public bool Equals(CreateInstanceRequest input) } return ( - this.WorldId == input.WorldId || - (this.WorldId != null && - this.WorldId.Equals(input.WorldId)) + this.AgeGate == input.AgeGate || + this.AgeGate.Equals(input.AgeGate) ) && ( - this.Type == input.Type || - this.Type.Equals(input.Type) + this.CanRequestInvite == input.CanRequestInvite || + this.CanRequestInvite.Equals(input.CanRequestInvite) ) && ( - this.Region == input.Region || - this.Region.Equals(input.Region) + this.ClosedAt == input.ClosedAt || + (this.ClosedAt != null && + this.ClosedAt.Equals(input.ClosedAt)) ) && ( - this.OwnerId == input.OwnerId || - (this.OwnerId != null && - this.OwnerId.Equals(input.OwnerId)) + this.ContentSettings == input.ContentSettings || + (this.ContentSettings != null && + this.ContentSettings.Equals(input.ContentSettings)) ) && ( - this.RoleIds == input.RoleIds || - this.RoleIds != null && - input.RoleIds != null && - this.RoleIds.SequenceEqual(input.RoleIds) + this.DisplayName == input.DisplayName || + (this.DisplayName != null && + this.DisplayName.Equals(input.DisplayName)) ) && ( this.GroupAccessType == input.GroupAccessType || this.GroupAccessType.Equals(input.GroupAccessType) ) && ( - this.QueueEnabled == input.QueueEnabled || - this.QueueEnabled.Equals(input.QueueEnabled) + this.HardClose == input.HardClose || + this.HardClose.Equals(input.HardClose) ) && ( - this.ClosedAt == input.ClosedAt || - (this.ClosedAt != null && - this.ClosedAt.Equals(input.ClosedAt)) + this.InstancePersistenceEnabled == input.InstancePersistenceEnabled || + (this.InstancePersistenceEnabled != null && + this.InstancePersistenceEnabled.Equals(input.InstancePersistenceEnabled)) ) && ( - this.CanRequestInvite == input.CanRequestInvite || - this.CanRequestInvite.Equals(input.CanRequestInvite) + this.InviteOnly == input.InviteOnly || + this.InviteOnly.Equals(input.InviteOnly) ) && ( - this.HardClose == input.HardClose || - this.HardClose.Equals(input.HardClose) + this.OwnerId == input.OwnerId || + (this.OwnerId != null && + this.OwnerId.Equals(input.OwnerId)) ) && ( - this.InviteOnly == input.InviteOnly || - this.InviteOnly.Equals(input.InviteOnly) + this.QueueEnabled == input.QueueEnabled || + this.QueueEnabled.Equals(input.QueueEnabled) ) && ( - this.AgeGate == input.AgeGate || - this.AgeGate.Equals(input.AgeGate) + this.Region == input.Region || + this.Region.Equals(input.Region) ) && ( - this.InstancePersistenceEnabled == input.InstancePersistenceEnabled || - (this.InstancePersistenceEnabled != null && - this.InstancePersistenceEnabled.Equals(input.InstancePersistenceEnabled)) + this.RoleIds == input.RoleIds || + this.RoleIds != null && + input.RoleIds != null && + this.RoleIds.SequenceEqual(input.RoleIds) ) && ( - this.DisplayName == input.DisplayName || - (this.DisplayName != null && - this.DisplayName.Equals(input.DisplayName)) + this.Type == input.Type || + this.Type.Equals(input.Type) ) && ( - this.ContentSettings == input.ContentSettings || - (this.ContentSettings != null && - this.ContentSettings.Equals(input.ContentSettings)) + this.WorldId == input.WorldId || + (this.WorldId != null && + this.WorldId.Equals(input.WorldId)) ); } @@ -318,41 +318,41 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.WorldId != null) + hashCode = (hashCode * 59) + this.AgeGate.GetHashCode(); + hashCode = (hashCode * 59) + this.CanRequestInvite.GetHashCode(); + if (this.ClosedAt != null) { - hashCode = (hashCode * 59) + this.WorldId.GetHashCode(); + hashCode = (hashCode * 59) + this.ClosedAt.GetHashCode(); } - hashCode = (hashCode * 59) + this.Type.GetHashCode(); - hashCode = (hashCode * 59) + this.Region.GetHashCode(); - if (this.OwnerId != null) + if (this.ContentSettings != null) { - hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); + hashCode = (hashCode * 59) + this.ContentSettings.GetHashCode(); } - if (this.RoleIds != null) + if (this.DisplayName != null) { - hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); + hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } hashCode = (hashCode * 59) + this.GroupAccessType.GetHashCode(); - hashCode = (hashCode * 59) + this.QueueEnabled.GetHashCode(); - if (this.ClosedAt != null) - { - hashCode = (hashCode * 59) + this.ClosedAt.GetHashCode(); - } - hashCode = (hashCode * 59) + this.CanRequestInvite.GetHashCode(); hashCode = (hashCode * 59) + this.HardClose.GetHashCode(); - hashCode = (hashCode * 59) + this.InviteOnly.GetHashCode(); - hashCode = (hashCode * 59) + this.AgeGate.GetHashCode(); if (this.InstancePersistenceEnabled != null) { hashCode = (hashCode * 59) + this.InstancePersistenceEnabled.GetHashCode(); } - if (this.DisplayName != null) + hashCode = (hashCode * 59) + this.InviteOnly.GetHashCode(); + if (this.OwnerId != null) { - hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); + hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); } - if (this.ContentSettings != null) + hashCode = (hashCode * 59) + this.QueueEnabled.GetHashCode(); + hashCode = (hashCode * 59) + this.Region.GetHashCode(); + if (this.RoleIds != null) { - hashCode = (hashCode * 59) + this.ContentSettings.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Type.GetHashCode(); + if (this.WorldId != null) + { + hashCode = (hashCode * 59) + this.WorldId.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/CreatePermissionRequest.cs b/src/VRChat.API/Model/CreatePermissionRequest.cs deleted file mode 100644 index e6971e61..00000000 --- a/src/VRChat.API/Model/CreatePermissionRequest.cs +++ /dev/null @@ -1,161 +0,0 @@ -/* - * VRChat API Documentation - * - * - * The version of the OpenAPI document: 1.20.5 - * Contact: vrchatapi.lpv0t@aries.fyi - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.IO; -using System.Runtime.Serialization; -using System.Text; -using System.Text.RegularExpressions; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using Newtonsoft.Json.Linq; -using System.ComponentModel.DataAnnotations; -using FileParameter = VRChat.API.Client.FileParameter; -using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; - -namespace VRChat.API.Model -{ - /// - /// CreatePermissionRequest - /// - [DataContract(Name = "createPermission_request")] - public partial class CreatePermissionRequest : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - [JsonConstructorAttribute] - protected CreatePermissionRequest() { } - /// - /// Initializes a new instance of the class. - /// - /// name (required). - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - public CreatePermissionRequest(string name = default, string ownerId = default) - { - // to ensure "name" is required (not null) - if (name == null) - { - throw new ArgumentNullException("name is a required property for CreatePermissionRequest and cannot be null"); - } - this.Name = name; - this.OwnerId = ownerId; - } - - /// - /// Gets or Sets Name - /// - [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] - public string Name { get; set; } - - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "ownerId", EmitDefaultValue = false)] - public string OwnerId { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - StringBuilder sb = new StringBuilder(); - sb.Append("class CreatePermissionRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as CreatePermissionRequest); - } - - /// - /// Returns true if CreatePermissionRequest instances are equal - /// - /// Instance of CreatePermissionRequest to be compared - /// Boolean - public bool Equals(CreatePermissionRequest input) - { - if (input == null) - { - return false; - } - return - ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && - ( - this.OwnerId == input.OwnerId || - (this.OwnerId != null && - this.OwnerId.Equals(input.OwnerId)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } - if (this.OwnerId != null) - { - hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); - } - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - } - -} diff --git a/src/VRChat.API/Model/CreateWorldRequest.cs b/src/VRChat.API/Model/CreateWorldRequest.cs index 5422c9c8..4a96e025 100644 --- a/src/VRChat.API/Model/CreateWorldRequest.cs +++ b/src/VRChat.API/Model/CreateWorldRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/CurrentUser.cs b/src/VRChat.API/Model/CurrentUser.cs index 85612554..bed55177 100644 --- a/src/VRChat.API/Model/CurrentUser.cs +++ b/src/VRChat.API/Model/CurrentUser.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -64,8 +64,8 @@ protected CurrentUser() { } /// /// Initializes a new instance of the class. /// - /// acceptedTOSVersion (required). /// acceptedPrivacyVersion. + /// acceptedTOSVersion (required). /// accountDeletionDate. /// . /// . @@ -79,8 +79,8 @@ protected CurrentUser() { } /// These tags begin with `content_` and control content gating. /// currentAvatar (required). /// When profilePicOverride is not empty, use it instead. (required). - /// When profilePicOverride is not empty, use it instead. (required). /// currentAvatarTags (required). + /// When profilePicOverride is not empty, use it instead. (required). /// dateJoined (required). /// developerType (required). /// discordDetails. @@ -91,13 +91,13 @@ protected CurrentUser() { } /// Always empty array. (required). /// friendKey (required). /// friends (required). + /// googleDetails. + /// googleId. /// hasBirthday (required). - /// hideContentFilterSettings. - /// userLanguage. - /// userLanguageCode. /// hasEmail (required). /// hasLoggedInFromClient (required). /// hasPendingEmail (required). + /// hideContentFilterSettings. /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// isAdult (required). @@ -110,15 +110,12 @@ protected CurrentUser() { } /// obfuscatedEmail (required). /// obfuscatedPendingEmail (required). /// oculusId (required). - /// googleId. - /// googleDetails. - /// picoId. - /// viveId. /// offlineFriends. /// onlineFriends. /// (required). - /// presence. + /// picoId. /// platformHistory. + /// presence. /// profilePicOverride (required). /// profilePicOverrideThumbnail (required). /// pronouns (required). @@ -138,8 +135,11 @@ protected CurrentUser() { } /// unsubscribe (required). /// updatedAt. /// userIcon (required). + /// userLanguage. + /// userLanguageCode. /// -| **DEPRECATED:** VRChat API no longer return usernames of other users. [See issue by Tupper for more information](https://github.com/pypy-vrc/VRCX/issues/429).. - public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion = default, DateOnly? accountDeletionDate = default, List accountDeletionLog = default, List activeFriends = default, AgeVerificationStatus ageVerificationStatus = default, bool ageVerified = default, bool allowAvatarCopying = default, string authToken = default, List badges = default, string bio = default, List bioLinks = default, List contentFilters = default, string currentAvatar = default, string currentAvatarImageUrl = default, string currentAvatarThumbnailImageUrl = default, List currentAvatarTags = default, DateOnly dateJoined = default, DeveloperType developerType = default, DiscordDetails discordDetails = default, string discordId = default, string displayName = default, bool emailVerified = default, string fallbackAvatar = default, List friendGroupNames = default, string friendKey = default, List friends = default, bool hasBirthday = default, bool hideContentFilterSettings = default, string userLanguage = default, string userLanguageCode = default, bool hasEmail = default, bool hasLoggedInFromClient = default, bool hasPendingEmail = default, string homeLocation = default, string id = default, bool isAdult = default, bool isBoopingEnabled = true, bool isFriend = false, DateTime lastActivity = default, DateTime lastLogin = default, DateTime? lastMobile = default, string lastPlatform = default, string obfuscatedEmail = default, string obfuscatedPendingEmail = default, string oculusId = default, string googleId = default, Object googleDetails = default, string picoId = default, string viveId = default, List offlineFriends = default, List onlineFriends = default, List pastDisplayNames = default, CurrentUserPresence presence = default, List platformHistory = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, string pronouns = default, List pronounsHistory = default, string queuedInstance = default, bool receiveMobileInvitations = default, UserState state = default, UserStatus status = default, string statusDescription = default, bool statusFirstTime = default, List statusHistory = default, Object steamDetails = default, string steamId = default, List tags = default, bool twoFactorAuthEnabled = default, DateTime? twoFactorAuthEnabledDate = default, bool unsubscribe = default, DateTime updatedAt = default, string userIcon = default, string username = default) + /// viveId. + public CurrentUser(int acceptedPrivacyVersion = default, int acceptedTOSVersion = default, DateOnly? accountDeletionDate = default, List accountDeletionLog = default, List activeFriends = default, AgeVerificationStatus ageVerificationStatus = default, bool ageVerified = default, bool allowAvatarCopying = default, string authToken = default, List badges = default, string bio = default, List bioLinks = default, List contentFilters = default, string currentAvatar = default, string currentAvatarImageUrl = default, List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, DateOnly dateJoined = default, DeveloperType developerType = default, DiscordDetails discordDetails = default, string discordId = default, string displayName = default, bool emailVerified = default, string fallbackAvatar = default, List friendGroupNames = default, string friendKey = default, List friends = default, Object googleDetails = default, string googleId = default, bool hasBirthday = default, bool hasEmail = default, bool hasLoggedInFromClient = default, bool hasPendingEmail = default, bool hideContentFilterSettings = default, string homeLocation = default, string id = default, bool isAdult = default, bool isBoopingEnabled = true, bool isFriend = false, DateTime lastActivity = default, DateTime lastLogin = default, DateTime? lastMobile = default, string lastPlatform = default, string obfuscatedEmail = default, string obfuscatedPendingEmail = default, string oculusId = default, List offlineFriends = default, List onlineFriends = default, List pastDisplayNames = default, string picoId = default, List platformHistory = default, CurrentUserPresence presence = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, string pronouns = default, List pronounsHistory = default, string queuedInstance = default, bool receiveMobileInvitations = default, UserState state = default, UserStatus status = default, string statusDescription = default, bool statusFirstTime = default, List statusHistory = default, Object steamDetails = default, string steamId = default, List tags = default, bool twoFactorAuthEnabled = default, DateTime? twoFactorAuthEnabledDate = default, bool unsubscribe = default, DateTime updatedAt = default, string userIcon = default, string userLanguage = default, string userLanguageCode = default, string username = default, string viveId = default) { this.AcceptedTOSVersion = acceptedTOSVersion; this.AgeVerificationStatus = ageVerificationStatus; @@ -169,18 +169,18 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion throw new ArgumentNullException("currentAvatarImageUrl is a required property for CurrentUser and cannot be null"); } this.CurrentAvatarImageUrl = currentAvatarImageUrl; - // to ensure "currentAvatarThumbnailImageUrl" is required (not null) - if (currentAvatarThumbnailImageUrl == null) - { - throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for CurrentUser and cannot be null"); - } - this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; // to ensure "currentAvatarTags" is required (not null) if (currentAvatarTags == null) { throw new ArgumentNullException("currentAvatarTags is a required property for CurrentUser and cannot be null"); } this.CurrentAvatarTags = currentAvatarTags; + // to ensure "currentAvatarThumbnailImageUrl" is required (not null) + if (currentAvatarThumbnailImageUrl == null) + { + throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for CurrentUser and cannot be null"); + } + this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; this.DateJoined = dateJoined; this.DeveloperType = developerType; // to ensure "displayName" is required (not null) @@ -338,43 +338,43 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion this.DiscordDetails = discordDetails; this.DiscordId = discordId; this.FallbackAvatar = fallbackAvatar; + this.GoogleDetails = googleDetails; + this.GoogleId = googleId; this.HideContentFilterSettings = hideContentFilterSettings; - this.UserLanguage = userLanguage; - this.UserLanguageCode = userLanguageCode; this.IsBoopingEnabled = isBoopingEnabled; this.LastActivity = lastActivity; - this.GoogleId = googleId; - this.GoogleDetails = googleDetails; - this.PicoId = picoId; - this.ViveId = viveId; this.OfflineFriends = offlineFriends; this.OnlineFriends = onlineFriends; - this.Presence = presence; + this.PicoId = picoId; this.PlatformHistory = platformHistory; + this.Presence = presence; this.QueuedInstance = queuedInstance; this.ReceiveMobileInvitations = receiveMobileInvitations; this.TwoFactorAuthEnabledDate = twoFactorAuthEnabledDate; this.UpdatedAt = updatedAt; + this.UserLanguage = userLanguage; + this.UserLanguageCode = userLanguageCode; this.Username = username; + this.ViveId = viveId; } /// - /// Gets or Sets AcceptedTOSVersion + /// Gets or Sets AcceptedPrivacyVersion /// /* - 7 + 0 */ - [DataMember(Name = "acceptedTOSVersion", IsRequired = false, EmitDefaultValue = true)] - public int AcceptedTOSVersion { get; set; } + [DataMember(Name = "acceptedPrivacyVersion", EmitDefaultValue = false)] + public int AcceptedPrivacyVersion { get; set; } /// - /// Gets or Sets AcceptedPrivacyVersion + /// Gets or Sets AcceptedTOSVersion /// /* - 0 + 7 */ - [DataMember(Name = "acceptedPrivacyVersion", EmitDefaultValue = false)] - public int AcceptedPrivacyVersion { get; set; } + [DataMember(Name = "acceptedTOSVersion", IsRequired = false, EmitDefaultValue = true)] + public int AcceptedTOSVersion { get; set; } /// /// Gets or Sets AccountDeletionDate @@ -462,6 +462,12 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion [DataMember(Name = "currentAvatarImageUrl", IsRequired = false, EmitDefaultValue = true)] public string CurrentAvatarImageUrl { get; set; } + /// + /// Gets or Sets CurrentAvatarTags + /// + [DataMember(Name = "currentAvatarTags", IsRequired = false, EmitDefaultValue = true)] + public List CurrentAvatarTags { get; set; } + /// /// When profilePicOverride is not empty, use it instead. /// @@ -472,12 +478,6 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion [DataMember(Name = "currentAvatarThumbnailImageUrl", IsRequired = false, EmitDefaultValue = true)] public string CurrentAvatarThumbnailImageUrl { get; set; } - /// - /// Gets or Sets CurrentAvatarTags - /// - [DataMember(Name = "currentAvatarTags", IsRequired = false, EmitDefaultValue = true)] - public List CurrentAvatarTags { get; set; } - /// /// Gets or Sets DateJoined /// @@ -542,28 +542,22 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion public List Friends { get; set; } /// - /// Gets or Sets HasBirthday - /// - [DataMember(Name = "hasBirthday", IsRequired = false, EmitDefaultValue = true)] - public bool HasBirthday { get; set; } - - /// - /// Gets or Sets HideContentFilterSettings + /// Gets or Sets GoogleDetails /// - [DataMember(Name = "hideContentFilterSettings", EmitDefaultValue = true)] - public bool HideContentFilterSettings { get; set; } + [DataMember(Name = "googleDetails", EmitDefaultValue = false)] + public Object GoogleDetails { get; set; } /// - /// Gets or Sets UserLanguage + /// Gets or Sets GoogleId /// - [DataMember(Name = "userLanguage", EmitDefaultValue = true)] - public string UserLanguage { get; set; } + [DataMember(Name = "googleId", EmitDefaultValue = false)] + public string GoogleId { get; set; } /// - /// Gets or Sets UserLanguageCode + /// Gets or Sets HasBirthday /// - [DataMember(Name = "userLanguageCode", EmitDefaultValue = true)] - public string UserLanguageCode { get; set; } + [DataMember(Name = "hasBirthday", IsRequired = false, EmitDefaultValue = true)] + public bool HasBirthday { get; set; } /// /// Gets or Sets HasEmail @@ -583,6 +577,12 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion [DataMember(Name = "hasPendingEmail", IsRequired = false, EmitDefaultValue = true)] public bool HasPendingEmail { get; set; } + /// + /// Gets or Sets HideContentFilterSettings + /// + [DataMember(Name = "hideContentFilterSettings", EmitDefaultValue = true)] + public bool HideContentFilterSettings { get; set; } + /// /// WorldID be \"offline\" on User profiles if you are not friends with that user. /// @@ -667,30 +667,6 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion [DataMember(Name = "oculusId", IsRequired = false, EmitDefaultValue = true)] public string OculusId { get; set; } - /// - /// Gets or Sets GoogleId - /// - [DataMember(Name = "googleId", EmitDefaultValue = false)] - public string GoogleId { get; set; } - - /// - /// Gets or Sets GoogleDetails - /// - [DataMember(Name = "googleDetails", EmitDefaultValue = false)] - public Object GoogleDetails { get; set; } - - /// - /// Gets or Sets PicoId - /// - [DataMember(Name = "picoId", EmitDefaultValue = false)] - public string PicoId { get; set; } - - /// - /// Gets or Sets ViveId - /// - [DataMember(Name = "viveId", EmitDefaultValue = false)] - public string ViveId { get; set; } - /// /// Gets or Sets OfflineFriends /// @@ -711,10 +687,10 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion public List PastDisplayNames { get; set; } /// - /// Gets or Sets Presence + /// Gets or Sets PicoId /// - [DataMember(Name = "presence", EmitDefaultValue = false)] - public CurrentUserPresence Presence { get; set; } + [DataMember(Name = "picoId", EmitDefaultValue = false)] + public string PicoId { get; set; } /// /// Gets or Sets PlatformHistory @@ -722,6 +698,12 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion [DataMember(Name = "platform_history", EmitDefaultValue = false)] public List PlatformHistory { get; set; } + /// + /// Gets or Sets Presence + /// + [DataMember(Name = "presence", EmitDefaultValue = false)] + public CurrentUserPresence Presence { get; set; } + /// /// Gets or Sets ProfilePicOverride /// @@ -830,6 +812,18 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion [DataMember(Name = "requiresTwoFactorAuth", IsRequired = false, EmitDefaultValue = true)] public List RequiresTwoFactorAuth { get; set; } + /// + /// Gets or Sets UserLanguage + /// + [DataMember(Name = "userLanguage", EmitDefaultValue = true)] + public string UserLanguage { get; set; } + + /// + /// Gets or Sets UserLanguageCode + /// + [DataMember(Name = "userLanguageCode", EmitDefaultValue = true)] + public string UserLanguageCode { get; set; } + /// /// -| **DEPRECATED:** VRChat API no longer return usernames of other users. [See issue by Tupper for more information](https://github.com/pypy-vrc/VRCX/issues/429). /// @@ -838,6 +832,12 @@ public CurrentUser(int acceptedTOSVersion = default, int acceptedPrivacyVersion [Obsolete] public string Username { get; set; } + /// + /// Gets or Sets ViveId + /// + [DataMember(Name = "viveId", EmitDefaultValue = false)] + public string ViveId { get; set; } + /// /// Returns the string presentation of the object /// @@ -846,8 +846,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class CurrentUser {\n"); - sb.Append(" AcceptedTOSVersion: ").Append(AcceptedTOSVersion).Append("\n"); sb.Append(" AcceptedPrivacyVersion: ").Append(AcceptedPrivacyVersion).Append("\n"); + sb.Append(" AcceptedTOSVersion: ").Append(AcceptedTOSVersion).Append("\n"); sb.Append(" AccountDeletionDate: ").Append(AccountDeletionDate).Append("\n"); sb.Append(" AccountDeletionLog: ").Append(AccountDeletionLog).Append("\n"); sb.Append(" ActiveFriends: ").Append(ActiveFriends).Append("\n"); @@ -861,8 +861,8 @@ public override string ToString() sb.Append(" ContentFilters: ").Append(ContentFilters).Append("\n"); sb.Append(" CurrentAvatar: ").Append(CurrentAvatar).Append("\n"); sb.Append(" CurrentAvatarImageUrl: ").Append(CurrentAvatarImageUrl).Append("\n"); - sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" DateJoined: ").Append(DateJoined).Append("\n"); sb.Append(" DeveloperType: ").Append(DeveloperType).Append("\n"); sb.Append(" DiscordDetails: ").Append(DiscordDetails).Append("\n"); @@ -873,13 +873,13 @@ public override string ToString() sb.Append(" FriendGroupNames: ").Append(FriendGroupNames).Append("\n"); sb.Append(" FriendKey: ").Append(FriendKey).Append("\n"); sb.Append(" Friends: ").Append(Friends).Append("\n"); + sb.Append(" GoogleDetails: ").Append(GoogleDetails).Append("\n"); + sb.Append(" GoogleId: ").Append(GoogleId).Append("\n"); sb.Append(" HasBirthday: ").Append(HasBirthday).Append("\n"); - sb.Append(" HideContentFilterSettings: ").Append(HideContentFilterSettings).Append("\n"); - sb.Append(" UserLanguage: ").Append(UserLanguage).Append("\n"); - sb.Append(" UserLanguageCode: ").Append(UserLanguageCode).Append("\n"); sb.Append(" HasEmail: ").Append(HasEmail).Append("\n"); sb.Append(" HasLoggedInFromClient: ").Append(HasLoggedInFromClient).Append("\n"); sb.Append(" HasPendingEmail: ").Append(HasPendingEmail).Append("\n"); + sb.Append(" HideContentFilterSettings: ").Append(HideContentFilterSettings).Append("\n"); sb.Append(" HomeLocation: ").Append(HomeLocation).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" IsAdult: ").Append(IsAdult).Append("\n"); @@ -892,15 +892,12 @@ public override string ToString() sb.Append(" ObfuscatedEmail: ").Append(ObfuscatedEmail).Append("\n"); sb.Append(" ObfuscatedPendingEmail: ").Append(ObfuscatedPendingEmail).Append("\n"); sb.Append(" OculusId: ").Append(OculusId).Append("\n"); - sb.Append(" GoogleId: ").Append(GoogleId).Append("\n"); - sb.Append(" GoogleDetails: ").Append(GoogleDetails).Append("\n"); - sb.Append(" PicoId: ").Append(PicoId).Append("\n"); - sb.Append(" ViveId: ").Append(ViveId).Append("\n"); sb.Append(" OfflineFriends: ").Append(OfflineFriends).Append("\n"); sb.Append(" OnlineFriends: ").Append(OnlineFriends).Append("\n"); sb.Append(" PastDisplayNames: ").Append(PastDisplayNames).Append("\n"); - sb.Append(" Presence: ").Append(Presence).Append("\n"); + sb.Append(" PicoId: ").Append(PicoId).Append("\n"); sb.Append(" PlatformHistory: ").Append(PlatformHistory).Append("\n"); + sb.Append(" Presence: ").Append(Presence).Append("\n"); sb.Append(" ProfilePicOverride: ").Append(ProfilePicOverride).Append("\n"); sb.Append(" ProfilePicOverrideThumbnail: ").Append(ProfilePicOverrideThumbnail).Append("\n"); sb.Append(" Pronouns: ").Append(Pronouns).Append("\n"); @@ -920,7 +917,10 @@ public override string ToString() sb.Append(" Unsubscribe: ").Append(Unsubscribe).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append(" UserIcon: ").Append(UserIcon).Append("\n"); + sb.Append(" UserLanguage: ").Append(UserLanguage).Append("\n"); + sb.Append(" UserLanguageCode: ").Append(UserLanguageCode).Append("\n"); sb.Append(" Username: ").Append(Username).Append("\n"); + sb.Append(" ViveId: ").Append(ViveId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -956,14 +956,14 @@ public bool Equals(CurrentUser input) return false; } return - ( - this.AcceptedTOSVersion == input.AcceptedTOSVersion || - this.AcceptedTOSVersion.Equals(input.AcceptedTOSVersion) - ) && ( this.AcceptedPrivacyVersion == input.AcceptedPrivacyVersion || this.AcceptedPrivacyVersion.Equals(input.AcceptedPrivacyVersion) ) && + ( + this.AcceptedTOSVersion == input.AcceptedTOSVersion || + this.AcceptedTOSVersion.Equals(input.AcceptedTOSVersion) + ) && ( this.AccountDeletionDate == input.AccountDeletionDate || (this.AccountDeletionDate != null && @@ -1031,17 +1031,17 @@ public bool Equals(CurrentUser input) (this.CurrentAvatarImageUrl != null && this.CurrentAvatarImageUrl.Equals(input.CurrentAvatarImageUrl)) ) && - ( - this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || - (this.CurrentAvatarThumbnailImageUrl != null && - this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) - ) && ( this.CurrentAvatarTags == input.CurrentAvatarTags || this.CurrentAvatarTags != null && input.CurrentAvatarTags != null && this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) ) && + ( + this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || + (this.CurrentAvatarThumbnailImageUrl != null && + this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) + ) && ( this.DateJoined == input.DateJoined || (this.DateJoined != null && @@ -1093,22 +1093,18 @@ public bool Equals(CurrentUser input) this.Friends.SequenceEqual(input.Friends) ) && ( - this.HasBirthday == input.HasBirthday || - this.HasBirthday.Equals(input.HasBirthday) - ) && - ( - this.HideContentFilterSettings == input.HideContentFilterSettings || - this.HideContentFilterSettings.Equals(input.HideContentFilterSettings) + this.GoogleDetails == input.GoogleDetails || + (this.GoogleDetails != null && + this.GoogleDetails.Equals(input.GoogleDetails)) ) && ( - this.UserLanguage == input.UserLanguage || - (this.UserLanguage != null && - this.UserLanguage.Equals(input.UserLanguage)) + this.GoogleId == input.GoogleId || + (this.GoogleId != null && + this.GoogleId.Equals(input.GoogleId)) ) && ( - this.UserLanguageCode == input.UserLanguageCode || - (this.UserLanguageCode != null && - this.UserLanguageCode.Equals(input.UserLanguageCode)) + this.HasBirthday == input.HasBirthday || + this.HasBirthday.Equals(input.HasBirthday) ) && ( this.HasEmail == input.HasEmail || @@ -1122,6 +1118,10 @@ public bool Equals(CurrentUser input) this.HasPendingEmail == input.HasPendingEmail || this.HasPendingEmail.Equals(input.HasPendingEmail) ) && + ( + this.HideContentFilterSettings == input.HideContentFilterSettings || + this.HideContentFilterSettings.Equals(input.HideContentFilterSettings) + ) && ( this.HomeLocation == input.HomeLocation || (this.HomeLocation != null && @@ -1179,26 +1179,6 @@ public bool Equals(CurrentUser input) (this.OculusId != null && this.OculusId.Equals(input.OculusId)) ) && - ( - this.GoogleId == input.GoogleId || - (this.GoogleId != null && - this.GoogleId.Equals(input.GoogleId)) - ) && - ( - this.GoogleDetails == input.GoogleDetails || - (this.GoogleDetails != null && - this.GoogleDetails.Equals(input.GoogleDetails)) - ) && - ( - this.PicoId == input.PicoId || - (this.PicoId != null && - this.PicoId.Equals(input.PicoId)) - ) && - ( - this.ViveId == input.ViveId || - (this.ViveId != null && - this.ViveId.Equals(input.ViveId)) - ) && ( this.OfflineFriends == input.OfflineFriends || this.OfflineFriends != null && @@ -1218,9 +1198,9 @@ public bool Equals(CurrentUser input) this.PastDisplayNames.SequenceEqual(input.PastDisplayNames) ) && ( - this.Presence == input.Presence || - (this.Presence != null && - this.Presence.Equals(input.Presence)) + this.PicoId == input.PicoId || + (this.PicoId != null && + this.PicoId.Equals(input.PicoId)) ) && ( this.PlatformHistory == input.PlatformHistory || @@ -1228,6 +1208,11 @@ public bool Equals(CurrentUser input) input.PlatformHistory != null && this.PlatformHistory.SequenceEqual(input.PlatformHistory) ) && + ( + this.Presence == input.Presence || + (this.Presence != null && + this.Presence.Equals(input.Presence)) + ) && ( this.ProfilePicOverride == input.ProfilePicOverride || (this.ProfilePicOverride != null && @@ -1320,10 +1305,25 @@ public bool Equals(CurrentUser input) (this.UserIcon != null && this.UserIcon.Equals(input.UserIcon)) ) && + ( + this.UserLanguage == input.UserLanguage || + (this.UserLanguage != null && + this.UserLanguage.Equals(input.UserLanguage)) + ) && + ( + this.UserLanguageCode == input.UserLanguageCode || + (this.UserLanguageCode != null && + this.UserLanguageCode.Equals(input.UserLanguageCode)) + ) && ( this.Username == input.Username || (this.Username != null && this.Username.Equals(input.Username)) + ) && + ( + this.ViveId == input.ViveId || + (this.ViveId != null && + this.ViveId.Equals(input.ViveId)) ); } @@ -1336,8 +1336,8 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - hashCode = (hashCode * 59) + this.AcceptedTOSVersion.GetHashCode(); hashCode = (hashCode * 59) + this.AcceptedPrivacyVersion.GetHashCode(); + hashCode = (hashCode * 59) + this.AcceptedTOSVersion.GetHashCode(); if (this.AccountDeletionDate != null) { hashCode = (hashCode * 59) + this.AccountDeletionDate.GetHashCode(); @@ -1381,14 +1381,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.CurrentAvatarImageUrl.GetHashCode(); } - if (this.CurrentAvatarThumbnailImageUrl != null) - { - hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); - } if (this.CurrentAvatarTags != null) { hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); } + if (this.CurrentAvatarThumbnailImageUrl != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); + } if (this.DateJoined != null) { hashCode = (hashCode * 59) + this.DateJoined.GetHashCode(); @@ -1423,19 +1423,19 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Friends.GetHashCode(); } - hashCode = (hashCode * 59) + this.HasBirthday.GetHashCode(); - hashCode = (hashCode * 59) + this.HideContentFilterSettings.GetHashCode(); - if (this.UserLanguage != null) + if (this.GoogleDetails != null) { - hashCode = (hashCode * 59) + this.UserLanguage.GetHashCode(); + hashCode = (hashCode * 59) + this.GoogleDetails.GetHashCode(); } - if (this.UserLanguageCode != null) + if (this.GoogleId != null) { - hashCode = (hashCode * 59) + this.UserLanguageCode.GetHashCode(); + hashCode = (hashCode * 59) + this.GoogleId.GetHashCode(); } + hashCode = (hashCode * 59) + this.HasBirthday.GetHashCode(); hashCode = (hashCode * 59) + this.HasEmail.GetHashCode(); hashCode = (hashCode * 59) + this.HasLoggedInFromClient.GetHashCode(); hashCode = (hashCode * 59) + this.HasPendingEmail.GetHashCode(); + hashCode = (hashCode * 59) + this.HideContentFilterSettings.GetHashCode(); if (this.HomeLocation != null) { hashCode = (hashCode * 59) + this.HomeLocation.GetHashCode(); @@ -1475,22 +1475,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.OculusId.GetHashCode(); } - if (this.GoogleId != null) - { - hashCode = (hashCode * 59) + this.GoogleId.GetHashCode(); - } - if (this.GoogleDetails != null) - { - hashCode = (hashCode * 59) + this.GoogleDetails.GetHashCode(); - } - if (this.PicoId != null) - { - hashCode = (hashCode * 59) + this.PicoId.GetHashCode(); - } - if (this.ViveId != null) - { - hashCode = (hashCode * 59) + this.ViveId.GetHashCode(); - } if (this.OfflineFriends != null) { hashCode = (hashCode * 59) + this.OfflineFriends.GetHashCode(); @@ -1503,14 +1487,18 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.PastDisplayNames.GetHashCode(); } - if (this.Presence != null) + if (this.PicoId != null) { - hashCode = (hashCode * 59) + this.Presence.GetHashCode(); + hashCode = (hashCode * 59) + this.PicoId.GetHashCode(); } if (this.PlatformHistory != null) { hashCode = (hashCode * 59) + this.PlatformHistory.GetHashCode(); } + if (this.Presence != null) + { + hashCode = (hashCode * 59) + this.Presence.GetHashCode(); + } if (this.ProfilePicOverride != null) { hashCode = (hashCode * 59) + this.ProfilePicOverride.GetHashCode(); @@ -1569,10 +1557,22 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.UserIcon.GetHashCode(); } + if (this.UserLanguage != null) + { + hashCode = (hashCode * 59) + this.UserLanguage.GetHashCode(); + } + if (this.UserLanguageCode != null) + { + hashCode = (hashCode * 59) + this.UserLanguageCode.GetHashCode(); + } if (this.Username != null) { hashCode = (hashCode * 59) + this.Username.GetHashCode(); } + if (this.ViveId != null) + { + hashCode = (hashCode * 59) + this.ViveId.GetHashCode(); + } return hashCode; } } @@ -1584,18 +1584,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // AcceptedTOSVersion (int) minimum - if (this.AcceptedTOSVersion < (int)0) - { - yield return new ValidationResult("Invalid value for AcceptedTOSVersion, must be a value greater than or equal to 0.", new [] { "AcceptedTOSVersion" }); - } - // AcceptedPrivacyVersion (int) minimum if (this.AcceptedPrivacyVersion < (int)0) { yield return new ValidationResult("Invalid value for AcceptedPrivacyVersion, must be a value greater than or equal to 0.", new [] { "AcceptedPrivacyVersion" }); } + // AcceptedTOSVersion (int) minimum + if (this.AcceptedTOSVersion < (int)0) + { + yield return new ValidationResult("Invalid value for AcceptedTOSVersion, must be a value greater than or equal to 0.", new [] { "AcceptedTOSVersion" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/CurrentUserPlatformHistoryInner.cs b/src/VRChat.API/Model/CurrentUserPlatformHistoryInner.cs index c2ccfa80..95778d6e 100644 --- a/src/VRChat.API/Model/CurrentUserPlatformHistoryInner.cs +++ b/src/VRChat.API/Model/CurrentUserPlatformHistoryInner.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/CurrentUserPresence.cs b/src/VRChat.API/Model/CurrentUserPresence.cs index 42f81e17..3b00f0b9 100644 --- a/src/VRChat.API/Model/CurrentUserPresence.cs +++ b/src/VRChat.API/Model/CurrentUserPresence.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -37,8 +37,8 @@ public partial class CurrentUserPresence : IEquatable, IVal /// /// avatarThumbnail. /// currentAvatarTags. - /// displayName. /// debugflag. + /// displayName. /// groups. /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// instance. @@ -51,12 +51,12 @@ public partial class CurrentUserPresence : IEquatable, IVal /// Represents a unique location, consisting of a world identifier and an instance identifier, or \"offline\" if the user is not on your friends list.. /// userIcon. /// WorldID be \"offline\" on User profiles if you are not friends with that user.. - public CurrentUserPresence(string avatarThumbnail = default, List currentAvatarTags = default, string displayName = default, string debugflag = default, List groups = default, string id = default, string instance = default, string instanceType = default, string isRejoining = default, string platform = default, string profilePicOverride = default, string status = default, string travelingToInstance = default, string travelingToWorld = default, string userIcon = default, string world = default) + public CurrentUserPresence(string avatarThumbnail = default, List currentAvatarTags = default, string debugflag = default, string displayName = default, List groups = default, string id = default, string instance = default, string instanceType = default, string isRejoining = default, string platform = default, string profilePicOverride = default, string status = default, string travelingToInstance = default, string travelingToWorld = default, string userIcon = default, string world = default) { this.AvatarThumbnail = avatarThumbnail; this.CurrentAvatarTags = currentAvatarTags; - this.DisplayName = displayName; this.Debugflag = debugflag; + this.DisplayName = displayName; this.Groups = groups; this.Id = id; this.Instance = instance; @@ -83,18 +83,18 @@ public CurrentUserPresence(string avatarThumbnail = default, List curren [DataMember(Name = "currentAvatarTags", EmitDefaultValue = false)] public List CurrentAvatarTags { get; set; } - /// - /// Gets or Sets DisplayName - /// - [DataMember(Name = "displayName", EmitDefaultValue = false)] - public string DisplayName { get; set; } - /// /// Gets or Sets Debugflag /// [DataMember(Name = "debugflag", EmitDefaultValue = false)] public string Debugflag { get; set; } + /// + /// Gets or Sets DisplayName + /// + [DataMember(Name = "displayName", EmitDefaultValue = false)] + public string DisplayName { get; set; } + /// /// Gets or Sets Groups /// @@ -195,8 +195,8 @@ public override string ToString() sb.Append("class CurrentUserPresence {\n"); sb.Append(" AvatarThumbnail: ").Append(AvatarThumbnail).Append("\n"); sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); - sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); sb.Append(" Debugflag: ").Append(Debugflag).Append("\n"); + sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); sb.Append(" Groups: ").Append(Groups).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" Instance: ").Append(Instance).Append("\n"); @@ -255,16 +255,16 @@ public bool Equals(CurrentUserPresence input) input.CurrentAvatarTags != null && this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) ) && - ( - this.DisplayName == input.DisplayName || - (this.DisplayName != null && - this.DisplayName.Equals(input.DisplayName)) - ) && ( this.Debugflag == input.Debugflag || (this.Debugflag != null && this.Debugflag.Equals(input.Debugflag)) ) && + ( + this.DisplayName == input.DisplayName || + (this.DisplayName != null && + this.DisplayName.Equals(input.DisplayName)) + ) && ( this.Groups == input.Groups || this.Groups != null && @@ -345,14 +345,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); } - if (this.DisplayName != null) - { - hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); - } if (this.Debugflag != null) { hashCode = (hashCode * 59) + this.Debugflag.GetHashCode(); } + if (this.DisplayName != null) + { + hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); + } if (this.Groups != null) { hashCode = (hashCode * 59) + this.Groups.GetHashCode(); diff --git a/src/VRChat.API/Model/DeveloperType.cs b/src/VRChat.API/Model/DeveloperType.cs index dcc2f329..219b1717 100644 --- a/src/VRChat.API/Model/DeveloperType.cs +++ b/src/VRChat.API/Model/DeveloperType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -34,28 +34,28 @@ namespace VRChat.API.Model public enum DeveloperType { /// - /// Enum None for value: none + /// Enum Internal for value: internal /// - [EnumMember(Value = "none")] - None = 1, + [EnumMember(Value = "internal")] + Internal = 1, /// - /// Enum Trusted for value: trusted + /// Enum Moderator for value: moderator /// - [EnumMember(Value = "trusted")] - Trusted = 2, + [EnumMember(Value = "moderator")] + Moderator = 2, /// - /// Enum Internal for value: internal + /// Enum None for value: none /// - [EnumMember(Value = "internal")] - Internal = 3, + [EnumMember(Value = "none")] + None = 3, /// - /// Enum Moderator for value: moderator + /// Enum Trusted for value: trusted /// - [EnumMember(Value = "moderator")] - Moderator = 4 + [EnumMember(Value = "trusted")] + Trusted = 4 } } diff --git a/src/VRChat.API/Model/Disable2FAResult.cs b/src/VRChat.API/Model/Disable2FAResult.cs index 9d5fff6b..d2e880d7 100644 --- a/src/VRChat.API/Model/Disable2FAResult.cs +++ b/src/VRChat.API/Model/Disable2FAResult.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/DiscordDetails.cs b/src/VRChat.API/Model/DiscordDetails.cs index f4c09d99..2c3ca5b0 100644 --- a/src/VRChat.API/Model/DiscordDetails.cs +++ b/src/VRChat.API/Model/DiscordDetails.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/DynamicContentRow.cs b/src/VRChat.API/Model/DynamicContentRow.cs index 4f644baa..26ae873a 100644 --- a/src/VRChat.API/Model/DynamicContentRow.cs +++ b/src/VRChat.API/Model/DynamicContentRow.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/EconomyAccount.cs b/src/VRChat.API/Model/EconomyAccount.cs index 2e21b714..ea08d9c4 100644 --- a/src/VRChat.API/Model/EconomyAccount.cs +++ b/src/VRChat.API/Model/EconomyAccount.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/EquipInventoryItemRequest.cs b/src/VRChat.API/Model/EquipInventoryItemRequest.cs new file mode 100644 index 00000000..c42848d5 --- /dev/null +++ b/src/VRChat.API/Model/EquipInventoryItemRequest.cs @@ -0,0 +1,130 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// EquipInventoryItemRequest + /// + [DataContract(Name = "EquipInventoryItemRequest")] + public partial class EquipInventoryItemRequest : IEquatable, IValidatableObject + { + + /// + /// Gets or Sets EquipSlot + /// + [DataMember(Name = "equipSlot", IsRequired = true, EmitDefaultValue = true)] + public InventoryEquipSlot EquipSlot { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected EquipInventoryItemRequest() { } + /// + /// Initializes a new instance of the class. + /// + /// equipSlot (required). + public EquipInventoryItemRequest(InventoryEquipSlot equipSlot = default) + { + this.EquipSlot = equipSlot; + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class EquipInventoryItemRequest {\n"); + sb.Append(" EquipSlot: ").Append(EquipSlot).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as EquipInventoryItemRequest); + } + + /// + /// Returns true if EquipInventoryItemRequest instances are equal + /// + /// Instance of EquipInventoryItemRequest to be compared + /// Boolean + public bool Equals(EquipInventoryItemRequest input) + { + if (input == null) + { + return false; + } + return + ( + this.EquipSlot == input.EquipSlot || + this.EquipSlot.Equals(input.EquipSlot) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = (hashCode * 59) + this.EquipSlot.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/Error.cs b/src/VRChat.API/Model/Error.cs index 357c0171..59074f8d 100644 --- a/src/VRChat.API/Model/Error.cs +++ b/src/VRChat.API/Model/Error.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Favorite.cs b/src/VRChat.API/Model/Favorite.cs index b0175cfd..b3e101ae 100644 --- a/src/VRChat.API/Model/Favorite.cs +++ b/src/VRChat.API/Model/Favorite.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FavoriteGroup.cs b/src/VRChat.API/Model/FavoriteGroup.cs index 4504d13b..6c99a83d 100644 --- a/src/VRChat.API/Model/FavoriteGroup.cs +++ b/src/VRChat.API/Model/FavoriteGroup.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FavoriteGroupLimits.cs b/src/VRChat.API/Model/FavoriteGroupLimits.cs index cf7ceb43..fd30715d 100644 --- a/src/VRChat.API/Model/FavoriteGroupLimits.cs +++ b/src/VRChat.API/Model/FavoriteGroupLimits.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FavoriteGroupVisibility.cs b/src/VRChat.API/Model/FavoriteGroupVisibility.cs index 1e2b669c..10c3f0a5 100644 --- a/src/VRChat.API/Model/FavoriteGroupVisibility.cs +++ b/src/VRChat.API/Model/FavoriteGroupVisibility.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,16 +33,16 @@ namespace VRChat.API.Model public enum FavoriteGroupVisibility { /// - /// Enum Private for value: private + /// Enum Friends for value: friends /// - [EnumMember(Value = "private")] - Private = 1, + [EnumMember(Value = "friends")] + Friends = 1, /// - /// Enum Friends for value: friends + /// Enum Private for value: private /// - [EnumMember(Value = "friends")] - Friends = 2, + [EnumMember(Value = "private")] + Private = 2, /// /// Enum Public for value: public diff --git a/src/VRChat.API/Model/FavoriteLimits.cs b/src/VRChat.API/Model/FavoriteLimits.cs index cf848b1f..ba0bcf71 100644 --- a/src/VRChat.API/Model/FavoriteLimits.cs +++ b/src/VRChat.API/Model/FavoriteLimits.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FavoriteType.cs b/src/VRChat.API/Model/FavoriteType.cs index 99f89547..99df4058 100644 --- a/src/VRChat.API/Model/FavoriteType.cs +++ b/src/VRChat.API/Model/FavoriteType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,10 +33,10 @@ namespace VRChat.API.Model public enum FavoriteType { /// - /// Enum World for value: world + /// Enum Avatar for value: avatar /// - [EnumMember(Value = "world")] - World = 1, + [EnumMember(Value = "avatar")] + Avatar = 1, /// /// Enum Friend for value: friend @@ -45,10 +45,10 @@ public enum FavoriteType Friend = 2, /// - /// Enum Avatar for value: avatar + /// Enum World for value: world /// - [EnumMember(Value = "avatar")] - Avatar = 3 + [EnumMember(Value = "world")] + World = 3 } } diff --git a/src/VRChat.API/Model/FavoritedWorld.cs b/src/VRChat.API/Model/FavoritedWorld.cs index 5c902a52..a39a2719 100644 --- a/src/VRChat.API/Model/FavoritedWorld.cs +++ b/src/VRChat.API/Model/FavoritedWorld.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -49,15 +49,13 @@ protected FavoritedWorld() { } /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// authorName (required). /// capacity (required). - /// description (required). - /// recommendedCapacity. /// createdAt (required). /// defaultContentSettings. - /// favorites (required) (default to 0). + /// description (required). /// favoriteGroup (required). /// favoriteId (required). + /// favorites (required) (default to 0). /// featured (required) (default to false). - /// visits (default to 0). /// heat (required) (default to 0). /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). /// imageUrl (required). @@ -68,15 +66,17 @@ protected FavoritedWorld() { } /// popularity (required) (default to 0). /// previewYoutubeId. /// publicationDate (required). + /// recommendedCapacity. /// releaseStatus (required). /// (required). /// thumbnailImageUrl (required). + /// udonProducts. /// (required). /// updatedAt (required). /// urlList (required). - /// udonProducts. /// varVersion (required). - public FavoritedWorld(string authorId = default, string authorName = default, int capacity = default, string description = default, int recommendedCapacity = default, DateTime createdAt = default, InstanceContentSettings defaultContentSettings = default, int favorites = 0, string favoriteGroup = default, string favoriteId = default, bool featured = false, int visits = 0, int heat = 0, string id = default, string imageUrl = default, string labsPublicationDate = default, string name = default, int occupants = 0, string organization = @"vrchat", int popularity = 0, string previewYoutubeId = default, string publicationDate = default, ReleaseStatus releaseStatus = default, List tags = default, string thumbnailImageUrl = default, List unityPackages = default, DateTime updatedAt = default, List urlList = default, List udonProducts = default, int varVersion = default) + /// visits (default to 0). + public FavoritedWorld(string authorId = default, string authorName = default, int capacity = default, DateTime createdAt = default, InstanceContentSettings defaultContentSettings = default, string description = default, string favoriteGroup = default, string favoriteId = default, int favorites = 0, bool featured = false, int heat = 0, string id = default, string imageUrl = default, string labsPublicationDate = default, string name = default, int occupants = 0, string organization = @"vrchat", int popularity = 0, string previewYoutubeId = default, string publicationDate = default, int recommendedCapacity = default, ReleaseStatus releaseStatus = default, List tags = default, string thumbnailImageUrl = default, List udonProducts = default, List unityPackages = default, DateTime updatedAt = default, List urlList = default, int varVersion = default, int visits = 0) { // to ensure "authorName" is required (not null) if (authorName == null) @@ -85,14 +85,13 @@ public FavoritedWorld(string authorId = default, string authorName = default, in } this.AuthorName = authorName; this.Capacity = capacity; + this.CreatedAt = createdAt; // to ensure "description" is required (not null) if (description == null) { throw new ArgumentNullException("description is a required property for FavoritedWorld and cannot be null"); } this.Description = description; - this.CreatedAt = createdAt; - this.Favorites = favorites; // to ensure "favoriteGroup" is required (not null) if (favoriteGroup == null) { @@ -105,6 +104,7 @@ public FavoritedWorld(string authorId = default, string authorName = default, in throw new ArgumentNullException("favoriteId is a required property for FavoritedWorld and cannot be null"); } this.FavoriteId = favoriteId; + this.Favorites = favorites; this.Featured = featured; this.Heat = heat; // to ensure "id" is required (not null) @@ -173,11 +173,11 @@ public FavoritedWorld(string authorId = default, string authorName = default, in this.UrlList = urlList; this.VarVersion = varVersion; this.AuthorId = authorId; - this.RecommendedCapacity = recommendedCapacity; this.DefaultContentSettings = defaultContentSettings; - this.Visits = visits; this.PreviewYoutubeId = previewYoutubeId; + this.RecommendedCapacity = recommendedCapacity; this.UdonProducts = udonProducts; + this.Visits = visits; } /// @@ -205,21 +205,6 @@ public FavoritedWorld(string authorId = default, string authorName = default, in [DataMember(Name = "capacity", IsRequired = true, EmitDefaultValue = true)] public int Capacity { get; set; } - /// - /// Gets or Sets Description - /// - [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] - public string Description { get; set; } - - /// - /// Gets or Sets RecommendedCapacity - /// - /* - 16 - */ - [DataMember(Name = "recommendedCapacity", EmitDefaultValue = false)] - public int RecommendedCapacity { get; set; } - /// /// Gets or Sets CreatedAt /// @@ -233,13 +218,10 @@ public FavoritedWorld(string authorId = default, string authorName = default, in public InstanceContentSettings DefaultContentSettings { get; set; } /// - /// Gets or Sets Favorites + /// Gets or Sets Description /// - /* - 12024 - */ - [DataMember(Name = "favorites", IsRequired = true, EmitDefaultValue = true)] - public int Favorites { get; set; } + [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] + public string Description { get; set; } /// /// Gets or Sets FavoriteGroup @@ -257,19 +239,19 @@ public FavoritedWorld(string authorId = default, string authorName = default, in public string FavoriteId { get; set; } /// - /// Gets or Sets Featured + /// Gets or Sets Favorites /// - [DataMember(Name = "featured", IsRequired = true, EmitDefaultValue = true)] - public bool Featured { get; set; } + /* + 12024 + */ + [DataMember(Name = "favorites", IsRequired = true, EmitDefaultValue = true)] + public int Favorites { get; set; } /// - /// Gets or Sets Visits + /// Gets or Sets Featured /// - /* - 9988675 - */ - [DataMember(Name = "visits", EmitDefaultValue = false)] - public int Visits { get; set; } + [DataMember(Name = "featured", IsRequired = true, EmitDefaultValue = true)] + public bool Featured { get; set; } /// /// Gets or Sets Heat @@ -350,6 +332,15 @@ public FavoritedWorld(string authorId = default, string authorName = default, in [DataMember(Name = "publicationDate", IsRequired = true, EmitDefaultValue = true)] public string PublicationDate { get; set; } + /// + /// Gets or Sets RecommendedCapacity + /// + /* + 16 + */ + [DataMember(Name = "recommendedCapacity", EmitDefaultValue = false)] + public int RecommendedCapacity { get; set; } + /// /// /// @@ -363,6 +354,12 @@ public FavoritedWorld(string authorId = default, string authorName = default, in [DataMember(Name = "thumbnailImageUrl", IsRequired = true, EmitDefaultValue = true)] public string ThumbnailImageUrl { get; set; } + /// + /// Gets or Sets UdonProducts + /// + [DataMember(Name = "udonProducts", EmitDefaultValue = false)] + public List UdonProducts { get; set; } + /// /// /// @@ -382,18 +379,21 @@ public FavoritedWorld(string authorId = default, string authorName = default, in [DataMember(Name = "urlList", IsRequired = true, EmitDefaultValue = true)] public List UrlList { get; set; } - /// - /// Gets or Sets UdonProducts - /// - [DataMember(Name = "udonProducts", EmitDefaultValue = false)] - public List UdonProducts { get; set; } - /// /// Gets or Sets VarVersion /// [DataMember(Name = "version", IsRequired = true, EmitDefaultValue = true)] public int VarVersion { get; set; } + /// + /// Gets or Sets Visits + /// + /* + 9988675 + */ + [DataMember(Name = "visits", EmitDefaultValue = false)] + public int Visits { get; set; } + /// /// Returns the string presentation of the object /// @@ -405,15 +405,13 @@ public override string ToString() sb.Append(" AuthorId: ").Append(AuthorId).Append("\n"); sb.Append(" AuthorName: ").Append(AuthorName).Append("\n"); sb.Append(" Capacity: ").Append(Capacity).Append("\n"); - sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" RecommendedCapacity: ").Append(RecommendedCapacity).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" DefaultContentSettings: ").Append(DefaultContentSettings).Append("\n"); - sb.Append(" Favorites: ").Append(Favorites).Append("\n"); + sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" FavoriteGroup: ").Append(FavoriteGroup).Append("\n"); sb.Append(" FavoriteId: ").Append(FavoriteId).Append("\n"); + sb.Append(" Favorites: ").Append(Favorites).Append("\n"); sb.Append(" Featured: ").Append(Featured).Append("\n"); - sb.Append(" Visits: ").Append(Visits).Append("\n"); sb.Append(" Heat: ").Append(Heat).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); @@ -424,14 +422,16 @@ public override string ToString() sb.Append(" Popularity: ").Append(Popularity).Append("\n"); sb.Append(" PreviewYoutubeId: ").Append(PreviewYoutubeId).Append("\n"); sb.Append(" PublicationDate: ").Append(PublicationDate).Append("\n"); + sb.Append(" RecommendedCapacity: ").Append(RecommendedCapacity).Append("\n"); sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); sb.Append(" ThumbnailImageUrl: ").Append(ThumbnailImageUrl).Append("\n"); + sb.Append(" UdonProducts: ").Append(UdonProducts).Append("\n"); sb.Append(" UnityPackages: ").Append(UnityPackages).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append(" UrlList: ").Append(UrlList).Append("\n"); - sb.Append(" UdonProducts: ").Append(UdonProducts).Append("\n"); sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); + sb.Append(" Visits: ").Append(Visits).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -481,15 +481,6 @@ public bool Equals(FavoritedWorld input) this.Capacity == input.Capacity || this.Capacity.Equals(input.Capacity) ) && - ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) - ) && - ( - this.RecommendedCapacity == input.RecommendedCapacity || - this.RecommendedCapacity.Equals(input.RecommendedCapacity) - ) && ( this.CreatedAt == input.CreatedAt || (this.CreatedAt != null && @@ -501,8 +492,9 @@ public bool Equals(FavoritedWorld input) this.DefaultContentSettings.Equals(input.DefaultContentSettings)) ) && ( - this.Favorites == input.Favorites || - this.Favorites.Equals(input.Favorites) + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.FavoriteGroup == input.FavoriteGroup || @@ -515,12 +507,12 @@ public bool Equals(FavoritedWorld input) this.FavoriteId.Equals(input.FavoriteId)) ) && ( - this.Featured == input.Featured || - this.Featured.Equals(input.Featured) + this.Favorites == input.Favorites || + this.Favorites.Equals(input.Favorites) ) && ( - this.Visits == input.Visits || - this.Visits.Equals(input.Visits) + this.Featured == input.Featured || + this.Featured.Equals(input.Featured) ) && ( this.Heat == input.Heat || @@ -569,6 +561,10 @@ public bool Equals(FavoritedWorld input) (this.PublicationDate != null && this.PublicationDate.Equals(input.PublicationDate)) ) && + ( + this.RecommendedCapacity == input.RecommendedCapacity || + this.RecommendedCapacity.Equals(input.RecommendedCapacity) + ) && ( this.ReleaseStatus == input.ReleaseStatus || this.ReleaseStatus.Equals(input.ReleaseStatus) @@ -584,6 +580,12 @@ public bool Equals(FavoritedWorld input) (this.ThumbnailImageUrl != null && this.ThumbnailImageUrl.Equals(input.ThumbnailImageUrl)) ) && + ( + this.UdonProducts == input.UdonProducts || + this.UdonProducts != null && + input.UdonProducts != null && + this.UdonProducts.SequenceEqual(input.UdonProducts) + ) && ( this.UnityPackages == input.UnityPackages || this.UnityPackages != null && @@ -601,15 +603,13 @@ public bool Equals(FavoritedWorld input) input.UrlList != null && this.UrlList.SequenceEqual(input.UrlList) ) && - ( - this.UdonProducts == input.UdonProducts || - this.UdonProducts != null && - input.UdonProducts != null && - this.UdonProducts.SequenceEqual(input.UdonProducts) - ) && ( this.VarVersion == input.VarVersion || this.VarVersion.Equals(input.VarVersion) + ) && + ( + this.Visits == input.Visits || + this.Visits.Equals(input.Visits) ); } @@ -631,11 +631,6 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.AuthorName.GetHashCode(); } hashCode = (hashCode * 59) + this.Capacity.GetHashCode(); - if (this.Description != null) - { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); - } - hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); if (this.CreatedAt != null) { hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); @@ -644,7 +639,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.DefaultContentSettings.GetHashCode(); } - hashCode = (hashCode * 59) + this.Favorites.GetHashCode(); + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); + } if (this.FavoriteGroup != null) { hashCode = (hashCode * 59) + this.FavoriteGroup.GetHashCode(); @@ -653,8 +651,8 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.FavoriteId.GetHashCode(); } + hashCode = (hashCode * 59) + this.Favorites.GetHashCode(); hashCode = (hashCode * 59) + this.Featured.GetHashCode(); - hashCode = (hashCode * 59) + this.Visits.GetHashCode(); hashCode = (hashCode * 59) + this.Heat.GetHashCode(); if (this.Id != null) { @@ -686,6 +684,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.PublicationDate.GetHashCode(); } + hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); if (this.Tags != null) { @@ -695,6 +694,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ThumbnailImageUrl.GetHashCode(); } + if (this.UdonProducts != null) + { + hashCode = (hashCode * 59) + this.UdonProducts.GetHashCode(); + } if (this.UnityPackages != null) { hashCode = (hashCode * 59) + this.UnityPackages.GetHashCode(); @@ -707,11 +710,8 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.UrlList.GetHashCode(); } - if (this.UdonProducts != null) - { - hashCode = (hashCode * 59) + this.UdonProducts.GetHashCode(); - } hashCode = (hashCode * 59) + this.VarVersion.GetHashCode(); + hashCode = (hashCode * 59) + this.Visits.GetHashCode(); return hashCode; } } @@ -735,22 +735,16 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for Description, length must be greater than 1.", new [] { "Description" }); } - // Favorites (int) minimum - if (this.Favorites < (int)0) - { - yield return new ValidationResult("Invalid value for Favorites, must be a value greater than or equal to 0.", new [] { "Favorites" }); - } - // FavoriteGroup (string) minLength if (this.FavoriteGroup != null && this.FavoriteGroup.Length < 1) { yield return new ValidationResult("Invalid value for FavoriteGroup, length must be greater than 1.", new [] { "FavoriteGroup" }); } - // Visits (int) minimum - if (this.Visits < (int)0) + // Favorites (int) minimum + if (this.Favorites < (int)0) { - yield return new ValidationResult("Invalid value for Visits, must be a value greater than or equal to 0.", new [] { "Visits" }); + yield return new ValidationResult("Invalid value for Favorites, must be a value greater than or equal to 0.", new [] { "Favorites" }); } // Heat (int) minimum @@ -813,6 +807,12 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for VarVersion, must be a value greater than or equal to 1.", new [] { "VarVersion" }); } + // Visits (int) minimum + if (this.Visits < (int)0) + { + yield return new ValidationResult("Invalid value for Visits, must be a value greater than or equal to 0.", new [] { "Visits" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/Feedback.cs b/src/VRChat.API/Model/Feedback.cs index ab676e5c..0df9660d 100644 --- a/src/VRChat.API/Model/Feedback.cs +++ b/src/VRChat.API/Model/Feedback.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/File.cs b/src/VRChat.API/Model/File.cs index ca0c588e..f59fcb72 100644 --- a/src/VRChat.API/Model/File.cs +++ b/src/VRChat.API/Model/File.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -47,15 +47,15 @@ protected File() { } /// Initializes a new instance of the class. /// /// animationStyle. - /// maskTag. /// extension (required). /// id (required). + /// maskTag. /// mimeType (required). /// name (required). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// (required). /// (required). - public File(string animationStyle = default, string maskTag = default, string extension = default, string id = default, MIMEType mimeType = default, string name = default, string ownerId = default, List tags = default, List versions = default) + public File(string animationStyle = default, string extension = default, string id = default, string maskTag = default, MIMEType mimeType = default, string name = default, string ownerId = default, List tags = default, List versions = default) { // to ensure "extension" is required (not null) if (extension == null) @@ -107,15 +107,6 @@ public File(string animationStyle = default, string maskTag = default, string ex [DataMember(Name = "animationStyle", EmitDefaultValue = false)] public string AnimationStyle { get; set; } - /// - /// Gets or Sets MaskTag - /// - /* - square - */ - [DataMember(Name = "maskTag", EmitDefaultValue = false)] - public string MaskTag { get; set; } - /// /// Gets or Sets Extension /// @@ -134,6 +125,15 @@ public File(string animationStyle = default, string maskTag = default, string ex [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] public string Id { get; set; } + /// + /// Gets or Sets MaskTag + /// + /* + square + */ + [DataMember(Name = "maskTag", EmitDefaultValue = false)] + public string MaskTag { get; set; } + /// /// Gets or Sets Name /// @@ -176,9 +176,9 @@ public override string ToString() StringBuilder sb = new StringBuilder(); sb.Append("class File {\n"); sb.Append(" AnimationStyle: ").Append(AnimationStyle).Append("\n"); - sb.Append(" MaskTag: ").Append(MaskTag).Append("\n"); sb.Append(" Extension: ").Append(Extension).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" MaskTag: ").Append(MaskTag).Append("\n"); sb.Append(" MimeType: ").Append(MimeType).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); @@ -224,11 +224,6 @@ public bool Equals(File input) (this.AnimationStyle != null && this.AnimationStyle.Equals(input.AnimationStyle)) ) && - ( - this.MaskTag == input.MaskTag || - (this.MaskTag != null && - this.MaskTag.Equals(input.MaskTag)) - ) && ( this.Extension == input.Extension || (this.Extension != null && @@ -239,6 +234,11 @@ public bool Equals(File input) (this.Id != null && this.Id.Equals(input.Id)) ) && + ( + this.MaskTag == input.MaskTag || + (this.MaskTag != null && + this.MaskTag.Equals(input.MaskTag)) + ) && ( this.MimeType == input.MimeType || this.MimeType.Equals(input.MimeType) @@ -280,10 +280,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.AnimationStyle.GetHashCode(); } - if (this.MaskTag != null) - { - hashCode = (hashCode * 59) + this.MaskTag.GetHashCode(); - } if (this.Extension != null) { hashCode = (hashCode * 59) + this.Extension.GetHashCode(); @@ -292,6 +288,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + if (this.MaskTag != null) + { + hashCode = (hashCode * 59) + this.MaskTag.GetHashCode(); + } hashCode = (hashCode * 59) + this.MimeType.GetHashCode(); if (this.Name != null) { diff --git a/src/VRChat.API/Model/FileAnalysis.cs b/src/VRChat.API/Model/FileAnalysis.cs index 8fc73dce..5bd9b950 100644 --- a/src/VRChat.API/Model/FileAnalysis.cs +++ b/src/VRChat.API/Model/FileAnalysis.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FileAnalysisAvatarStats.cs b/src/VRChat.API/Model/FileAnalysisAvatarStats.cs index 2253bd6b..8f3742fd 100644 --- a/src/VRChat.API/Model/FileAnalysisAvatarStats.cs +++ b/src/VRChat.API/Model/FileAnalysisAvatarStats.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FileData.cs b/src/VRChat.API/Model/FileData.cs index 4326990f..ca6a5678 100644 --- a/src/VRChat.API/Model/FileData.cs +++ b/src/VRChat.API/Model/FileData.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FileStatus.cs b/src/VRChat.API/Model/FileStatus.cs index 95fdbe38..560d25e8 100644 --- a/src/VRChat.API/Model/FileStatus.cs +++ b/src/VRChat.API/Model/FileStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -32,29 +32,29 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum FileStatus { - /// - /// Enum Waiting for value: waiting - /// - [EnumMember(Value = "waiting")] - Waiting = 1, - /// /// Enum Complete for value: complete /// [EnumMember(Value = "complete")] - Complete = 2, + Complete = 1, /// /// Enum None for value: none /// [EnumMember(Value = "none")] - None = 3, + None = 2, /// /// Enum Queued for value: queued /// [EnumMember(Value = "queued")] - Queued = 4 + Queued = 3, + + /// + /// Enum Waiting for value: waiting + /// + [EnumMember(Value = "waiting")] + Waiting = 4 } } diff --git a/src/VRChat.API/Model/FileUploadURL.cs b/src/VRChat.API/Model/FileUploadURL.cs index f148c8c0..c8d6949a 100644 --- a/src/VRChat.API/Model/FileUploadURL.cs +++ b/src/VRChat.API/Model/FileUploadURL.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FileVersion.cs b/src/VRChat.API/Model/FileVersion.cs index 86f7c944..8daf4ee1 100644 --- a/src/VRChat.API/Model/FileVersion.cs +++ b/src/VRChat.API/Model/FileVersion.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FileVersionUploadStatus.cs b/src/VRChat.API/Model/FileVersionUploadStatus.cs index a519d8f4..0f534d83 100644 --- a/src/VRChat.API/Model/FileVersionUploadStatus.cs +++ b/src/VRChat.API/Model/FileVersionUploadStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,50 +40,48 @@ protected FileVersionUploadStatus() { } /// /// Initializes a new instance of the class. /// - /// uploadId (required). + /// Unknown (required). /// fileName (required). - /// nextPartNumber (required). /// maxParts (required). + /// nextPartNumber (required). /// parts (required). - /// Unknown (required). - public FileVersionUploadStatus(string uploadId = default, string fileName = default, int nextPartNumber = default, int maxParts = default, List parts = default, List etags = default) + /// uploadId (required). + public FileVersionUploadStatus(List etags = default, string fileName = default, int maxParts = default, int nextPartNumber = default, List parts = default, string uploadId = default) { - // to ensure "uploadId" is required (not null) - if (uploadId == null) + // to ensure "etags" is required (not null) + if (etags == null) { - throw new ArgumentNullException("uploadId is a required property for FileVersionUploadStatus and cannot be null"); + throw new ArgumentNullException("etags is a required property for FileVersionUploadStatus and cannot be null"); } - this.UploadId = uploadId; + this.Etags = etags; // to ensure "fileName" is required (not null) if (fileName == null) { throw new ArgumentNullException("fileName is a required property for FileVersionUploadStatus and cannot be null"); } this.FileName = fileName; - this.NextPartNumber = nextPartNumber; this.MaxParts = maxParts; + this.NextPartNumber = nextPartNumber; // to ensure "parts" is required (not null) if (parts == null) { throw new ArgumentNullException("parts is a required property for FileVersionUploadStatus and cannot be null"); } this.Parts = parts; - // to ensure "etags" is required (not null) - if (etags == null) + // to ensure "uploadId" is required (not null) + if (uploadId == null) { - throw new ArgumentNullException("etags is a required property for FileVersionUploadStatus and cannot be null"); + throw new ArgumentNullException("uploadId is a required property for FileVersionUploadStatus and cannot be null"); } - this.Etags = etags; + this.UploadId = uploadId; } /// - /// Gets or Sets UploadId + /// Unknown /// - /* - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxx - */ - [DataMember(Name = "uploadId", IsRequired = true, EmitDefaultValue = true)] - public string UploadId { get; set; } + /// Unknown + [DataMember(Name = "etags", IsRequired = true, EmitDefaultValue = true)] + public List Etags { get; set; } /// /// Gets or Sets FileName @@ -95,22 +93,22 @@ public FileVersionUploadStatus(string uploadId = default, string fileName = defa public string FileName { get; set; } /// - /// Gets or Sets NextPartNumber + /// Gets or Sets MaxParts /// /* - 0 + 1000 */ - [DataMember(Name = "nextPartNumber", IsRequired = true, EmitDefaultValue = true)] - public int NextPartNumber { get; set; } + [DataMember(Name = "maxParts", IsRequired = true, EmitDefaultValue = true)] + public int MaxParts { get; set; } /// - /// Gets or Sets MaxParts + /// Gets or Sets NextPartNumber /// /* - 1000 + 0 */ - [DataMember(Name = "maxParts", IsRequired = true, EmitDefaultValue = true)] - public int MaxParts { get; set; } + [DataMember(Name = "nextPartNumber", IsRequired = true, EmitDefaultValue = true)] + public int NextPartNumber { get; set; } /// /// Gets or Sets Parts @@ -119,11 +117,13 @@ public FileVersionUploadStatus(string uploadId = default, string fileName = defa public List Parts { get; set; } /// - /// Unknown + /// Gets or Sets UploadId /// - /// Unknown - [DataMember(Name = "etags", IsRequired = true, EmitDefaultValue = true)] - public List Etags { get; set; } + /* + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxx + */ + [DataMember(Name = "uploadId", IsRequired = true, EmitDefaultValue = true)] + public string UploadId { get; set; } /// /// Returns the string presentation of the object @@ -133,12 +133,12 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class FileVersionUploadStatus {\n"); - sb.Append(" UploadId: ").Append(UploadId).Append("\n"); + sb.Append(" Etags: ").Append(Etags).Append("\n"); sb.Append(" FileName: ").Append(FileName).Append("\n"); - sb.Append(" NextPartNumber: ").Append(NextPartNumber).Append("\n"); sb.Append(" MaxParts: ").Append(MaxParts).Append("\n"); + sb.Append(" NextPartNumber: ").Append(NextPartNumber).Append("\n"); sb.Append(" Parts: ").Append(Parts).Append("\n"); - sb.Append(" Etags: ").Append(Etags).Append("\n"); + sb.Append(" UploadId: ").Append(UploadId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -175,23 +175,24 @@ public bool Equals(FileVersionUploadStatus input) } return ( - this.UploadId == input.UploadId || - (this.UploadId != null && - this.UploadId.Equals(input.UploadId)) + this.Etags == input.Etags || + this.Etags != null && + input.Etags != null && + this.Etags.SequenceEqual(input.Etags) ) && ( this.FileName == input.FileName || (this.FileName != null && this.FileName.Equals(input.FileName)) ) && - ( - this.NextPartNumber == input.NextPartNumber || - this.NextPartNumber.Equals(input.NextPartNumber) - ) && ( this.MaxParts == input.MaxParts || this.MaxParts.Equals(input.MaxParts) ) && + ( + this.NextPartNumber == input.NextPartNumber || + this.NextPartNumber.Equals(input.NextPartNumber) + ) && ( this.Parts == input.Parts || this.Parts != null && @@ -199,10 +200,9 @@ public bool Equals(FileVersionUploadStatus input) this.Parts.SequenceEqual(input.Parts) ) && ( - this.Etags == input.Etags || - this.Etags != null && - input.Etags != null && - this.Etags.SequenceEqual(input.Etags) + this.UploadId == input.UploadId || + (this.UploadId != null && + this.UploadId.Equals(input.UploadId)) ); } @@ -215,23 +215,23 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.UploadId != null) + if (this.Etags != null) { - hashCode = (hashCode * 59) + this.UploadId.GetHashCode(); + hashCode = (hashCode * 59) + this.Etags.GetHashCode(); } if (this.FileName != null) { hashCode = (hashCode * 59) + this.FileName.GetHashCode(); } - hashCode = (hashCode * 59) + this.NextPartNumber.GetHashCode(); hashCode = (hashCode * 59) + this.MaxParts.GetHashCode(); + hashCode = (hashCode * 59) + this.NextPartNumber.GetHashCode(); if (this.Parts != null) { hashCode = (hashCode * 59) + this.Parts.GetHashCode(); } - if (this.Etags != null) + if (this.UploadId != null) { - hashCode = (hashCode * 59) + this.Etags.GetHashCode(); + hashCode = (hashCode * 59) + this.UploadId.GetHashCode(); } return hashCode; } @@ -244,28 +244,28 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // UploadId (string) minLength - if (this.UploadId != null && this.UploadId.Length < 1) - { - yield return new ValidationResult("Invalid value for UploadId, length must be greater than 1.", new [] { "UploadId" }); - } - // FileName (string) minLength if (this.FileName != null && this.FileName.Length < 1) { yield return new ValidationResult("Invalid value for FileName, length must be greater than 1.", new [] { "FileName" }); } + // MaxParts (int) minimum + if (this.MaxParts < (int)1) + { + yield return new ValidationResult("Invalid value for MaxParts, must be a value greater than or equal to 1.", new [] { "MaxParts" }); + } + // NextPartNumber (int) minimum if (this.NextPartNumber < (int)0) { yield return new ValidationResult("Invalid value for NextPartNumber, must be a value greater than or equal to 0.", new [] { "NextPartNumber" }); } - // MaxParts (int) minimum - if (this.MaxParts < (int)1) + // UploadId (string) minLength + if (this.UploadId != null && this.UploadId.Length < 1) { - yield return new ValidationResult("Invalid value for MaxParts, must be a value greater than or equal to 1.", new [] { "MaxParts" }); + yield return new ValidationResult("Invalid value for UploadId, length must be greater than 1.", new [] { "UploadId" }); } yield break; diff --git a/src/VRChat.API/Model/FinishFileDataUploadRequest.cs b/src/VRChat.API/Model/FinishFileDataUploadRequest.cs index 47002cab..58a9f438 100644 --- a/src/VRChat.API/Model/FinishFileDataUploadRequest.cs +++ b/src/VRChat.API/Model/FinishFileDataUploadRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,22 +41,22 @@ protected FinishFileDataUploadRequest() { } /// Initializes a new instance of the class. /// /// Array of ETags uploaded.. - /// Always a zero in string form, despite how many parts uploaded. (required) (default to "0"). /// Always a zero in string form, despite how many parts uploaded. (required) (default to "0"). - public FinishFileDataUploadRequest(List etags = default, string nextPartNumber = @"0", string maxParts = @"0") + /// Always a zero in string form, despite how many parts uploaded. (required) (default to "0"). + public FinishFileDataUploadRequest(List etags = default, string maxParts = @"0", string nextPartNumber = @"0") { - // to ensure "nextPartNumber" is required (not null) - if (nextPartNumber == null) - { - throw new ArgumentNullException("nextPartNumber is a required property for FinishFileDataUploadRequest and cannot be null"); - } - this.NextPartNumber = nextPartNumber; // to ensure "maxParts" is required (not null) if (maxParts == null) { throw new ArgumentNullException("maxParts is a required property for FinishFileDataUploadRequest and cannot be null"); } this.MaxParts = maxParts; + // to ensure "nextPartNumber" is required (not null) + if (nextPartNumber == null) + { + throw new ArgumentNullException("nextPartNumber is a required property for FinishFileDataUploadRequest and cannot be null"); + } + this.NextPartNumber = nextPartNumber; this.Etags = etags; } @@ -74,9 +74,9 @@ public FinishFileDataUploadRequest(List etags = default, string nextPart /* 0 */ - [DataMember(Name = "nextPartNumber", IsRequired = true, EmitDefaultValue = true)] + [DataMember(Name = "maxParts", IsRequired = true, EmitDefaultValue = true)] [Obsolete] - public string NextPartNumber { get; set; } + public string MaxParts { get; set; } /// /// Always a zero in string form, despite how many parts uploaded. @@ -85,9 +85,9 @@ public FinishFileDataUploadRequest(List etags = default, string nextPart /* 0 */ - [DataMember(Name = "maxParts", IsRequired = true, EmitDefaultValue = true)] + [DataMember(Name = "nextPartNumber", IsRequired = true, EmitDefaultValue = true)] [Obsolete] - public string MaxParts { get; set; } + public string NextPartNumber { get; set; } /// /// Returns the string presentation of the object @@ -98,8 +98,8 @@ public override string ToString() StringBuilder sb = new StringBuilder(); sb.Append("class FinishFileDataUploadRequest {\n"); sb.Append(" Etags: ").Append(Etags).Append("\n"); - sb.Append(" NextPartNumber: ").Append(NextPartNumber).Append("\n"); sb.Append(" MaxParts: ").Append(MaxParts).Append("\n"); + sb.Append(" NextPartNumber: ").Append(NextPartNumber).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -141,15 +141,15 @@ public bool Equals(FinishFileDataUploadRequest input) input.Etags != null && this.Etags.SequenceEqual(input.Etags) ) && - ( - this.NextPartNumber == input.NextPartNumber || - (this.NextPartNumber != null && - this.NextPartNumber.Equals(input.NextPartNumber)) - ) && ( this.MaxParts == input.MaxParts || (this.MaxParts != null && this.MaxParts.Equals(input.MaxParts)) + ) && + ( + this.NextPartNumber == input.NextPartNumber || + (this.NextPartNumber != null && + this.NextPartNumber.Equals(input.NextPartNumber)) ); } @@ -166,14 +166,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Etags.GetHashCode(); } - if (this.NextPartNumber != null) - { - hashCode = (hashCode * 59) + this.NextPartNumber.GetHashCode(); - } if (this.MaxParts != null) { hashCode = (hashCode * 59) + this.MaxParts.GetHashCode(); } + if (this.NextPartNumber != null) + { + hashCode = (hashCode * 59) + this.NextPartNumber.GetHashCode(); + } return hashCode; } } @@ -185,18 +185,6 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // NextPartNumber (string) maxLength - if (this.NextPartNumber != null && this.NextPartNumber.Length > 1) - { - yield return new ValidationResult("Invalid value for NextPartNumber, length must be less than 1.", new [] { "NextPartNumber" }); - } - - // NextPartNumber (string) minLength - if (this.NextPartNumber != null && this.NextPartNumber.Length < 1) - { - yield return new ValidationResult("Invalid value for NextPartNumber, length must be greater than 1.", new [] { "NextPartNumber" }); - } - // MaxParts (string) maxLength if (this.MaxParts != null && this.MaxParts.Length > 1) { @@ -209,6 +197,18 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for MaxParts, length must be greater than 1.", new [] { "MaxParts" }); } + // NextPartNumber (string) maxLength + if (this.NextPartNumber != null && this.NextPartNumber.Length > 1) + { + yield return new ValidationResult("Invalid value for NextPartNumber, length must be less than 1.", new [] { "NextPartNumber" }); + } + + // NextPartNumber (string) minLength + if (this.NextPartNumber != null && this.NextPartNumber.Length < 1) + { + yield return new ValidationResult("Invalid value for NextPartNumber, length must be greater than 1.", new [] { "NextPartNumber" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/FollowCalendarEventRequest.cs b/src/VRChat.API/Model/FollowCalendarEventRequest.cs index e1718b0c..e49115a8 100644 --- a/src/VRChat.API/Model/FollowCalendarEventRequest.cs +++ b/src/VRChat.API/Model/FollowCalendarEventRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/FriendStatus.cs b/src/VRChat.API/Model/FriendStatus.cs index 765e8a98..56511702 100644 --- a/src/VRChat.API/Model/FriendStatus.cs +++ b/src/VRChat.API/Model/FriendStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GetGroupPosts200Response.cs b/src/VRChat.API/Model/GetGroupPosts200Response.cs index 67b73898..faebe38a 100644 --- a/src/VRChat.API/Model/GetGroupPosts200Response.cs +++ b/src/VRChat.API/Model/GetGroupPosts200Response.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GetUserGroupInstances200Response.cs b/src/VRChat.API/Model/GetUserGroupInstances200Response.cs index cd51b00f..8a71d963 100644 --- a/src/VRChat.API/Model/GetUserGroupInstances200Response.cs +++ b/src/VRChat.API/Model/GetUserGroupInstances200Response.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Group.cs b/src/VRChat.API/Model/Group.cs index 26e8a699..9ee8cd64 100644 --- a/src/VRChat.API/Model/Group.cs +++ b/src/VRChat.API/Model/Group.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,12 +33,6 @@ namespace VRChat.API.Model public partial class Group : IEquatable, IValidatableObject { - /// - /// Gets or Sets Privacy - /// - [DataMember(Name = "privacy", EmitDefaultValue = false)] - public GroupPrivacy? Privacy { get; set; } - /// /// Gets or Sets JoinState /// @@ -50,83 +44,83 @@ public partial class Group : IEquatable, IValidatableObject /// [DataMember(Name = "membershipStatus", EmitDefaultValue = false)] public GroupMemberStatus? MembershipStatus { get; set; } + + /// + /// Gets or Sets Privacy + /// + [DataMember(Name = "privacy", EmitDefaultValue = false)] + public GroupPrivacy? Privacy { get; set; } /// /// Initializes a new instance of the class. /// - /// ageVerificationSlotsAvailable. /// ageVerificationBetaCode. /// ageVerificationBetaSlots. + /// ageVerificationSlotsAvailable. /// badges. - /// id. - /// name. - /// shortCode. - /// discriminator. - /// description. - /// iconUrl. + /// bannerId. /// bannerUrl. - /// privacy. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// rules. - /// links. - /// languages. + /// createdAt. + /// description. + /// discriminator. + /// galleries. /// iconId. - /// bannerId. - /// memberCount. - /// memberCountSyncedAt. + /// iconUrl. + /// id. /// isVerified (default to false). /// joinState. - /// tags. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// galleries. - /// createdAt. - /// updatedAt. + /// languages. /// lastPostCreatedAt. - /// onlineMemberCount. + /// links. + /// memberCount. + /// memberCountSyncedAt. /// membershipStatus. /// myMember. + /// name. + /// onlineMemberCount. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// privacy. /// Only returned if ?includeRoles=true is specified.. - public Group(bool ageVerificationSlotsAvailable = default, string ageVerificationBetaCode = default, decimal ageVerificationBetaSlots = default, List badges = default, string id = default, string name = default, string shortCode = default, string discriminator = default, string description = default, string iconUrl = default, string bannerUrl = default, GroupPrivacy? privacy = default, string ownerId = default, string rules = default, List links = default, List languages = default, string iconId = default, string bannerId = default, int memberCount = default, DateTime memberCountSyncedAt = default, bool isVerified = false, GroupJoinState? joinState = default, List tags = default, string transferTargetId = default, List galleries = default, DateTime createdAt = default, DateTime updatedAt = default, DateTime? lastPostCreatedAt = default, int onlineMemberCount = default, GroupMemberStatus? membershipStatus = default, GroupMyMember myMember = default, List roles = default) + /// rules. + /// shortCode. + /// tags. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// updatedAt. + public Group(string ageVerificationBetaCode = default, decimal ageVerificationBetaSlots = default, bool ageVerificationSlotsAvailable = default, List badges = default, string bannerId = default, string bannerUrl = default, DateTime createdAt = default, string description = default, string discriminator = default, List galleries = default, string iconId = default, string iconUrl = default, string id = default, bool isVerified = false, GroupJoinState? joinState = default, List languages = default, DateTime? lastPostCreatedAt = default, List links = default, int memberCount = default, DateTime memberCountSyncedAt = default, GroupMemberStatus? membershipStatus = default, GroupMyMember myMember = default, string name = default, int onlineMemberCount = default, string ownerId = default, GroupPrivacy? privacy = default, List roles = default, string rules = default, string shortCode = default, List tags = default, string transferTargetId = default, DateTime updatedAt = default) { - this.AgeVerificationSlotsAvailable = ageVerificationSlotsAvailable; this.AgeVerificationBetaCode = ageVerificationBetaCode; this.AgeVerificationBetaSlots = ageVerificationBetaSlots; + this.AgeVerificationSlotsAvailable = ageVerificationSlotsAvailable; this.Badges = badges; - this.Id = id; - this.Name = name; - this.ShortCode = shortCode; - this.Discriminator = discriminator; - this.Description = description; - this.IconUrl = iconUrl; + this.BannerId = bannerId; this.BannerUrl = bannerUrl; - this.Privacy = privacy; - this.OwnerId = ownerId; - this.Rules = rules; - this.Links = links; - this.Languages = languages; + this.CreatedAt = createdAt; + this.Description = description; + this.Discriminator = discriminator; + this.Galleries = galleries; this.IconId = iconId; - this.BannerId = bannerId; - this.MemberCount = memberCount; - this.MemberCountSyncedAt = memberCountSyncedAt; + this.IconUrl = iconUrl; + this.Id = id; this.IsVerified = isVerified; this.JoinState = joinState; - this.Tags = tags; - this.TransferTargetId = transferTargetId; - this.Galleries = galleries; - this.CreatedAt = createdAt; - this.UpdatedAt = updatedAt; + this.Languages = languages; this.LastPostCreatedAt = lastPostCreatedAt; - this.OnlineMemberCount = onlineMemberCount; + this.Links = links; + this.MemberCount = memberCount; + this.MemberCountSyncedAt = memberCountSyncedAt; this.MembershipStatus = membershipStatus; this.MyMember = myMember; + this.Name = name; + this.OnlineMemberCount = onlineMemberCount; + this.OwnerId = ownerId; + this.Privacy = privacy; this.Roles = roles; + this.Rules = rules; + this.ShortCode = shortCode; + this.Tags = tags; + this.TransferTargetId = transferTargetId; + this.UpdatedAt = updatedAt; } - /// - /// Gets or Sets AgeVerificationSlotsAvailable - /// - [DataMember(Name = "ageVerificationSlotsAvailable", EmitDefaultValue = true)] - public bool AgeVerificationSlotsAvailable { get; set; } - /// /// Gets or Sets AgeVerificationBetaCode /// @@ -145,6 +139,12 @@ public Group(bool ageVerificationSlotsAvailable = default, string ageVerificatio [DataMember(Name = "ageVerificationBetaSlots", EmitDefaultValue = false)] public decimal AgeVerificationBetaSlots { get; set; } + /// + /// Gets or Sets AgeVerificationSlotsAvailable + /// + [DataMember(Name = "ageVerificationSlotsAvailable", EmitDefaultValue = true)] + public bool AgeVerificationSlotsAvailable { get; set; } + /// /// Gets or Sets Badges /// @@ -152,77 +152,70 @@ public Group(bool ageVerificationSlotsAvailable = default, string ageVerificatio public List Badges { get; set; } /// - /// Gets or Sets Id + /// Gets or Sets BannerId /// - /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "bannerId", EmitDefaultValue = true)] + public string BannerId { get; set; } /// - /// Gets or Sets Name + /// Gets or Sets BannerUrl /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] + public string BannerUrl { get; set; } /// - /// Gets or Sets ShortCode + /// Gets or Sets CreatedAt /// - /* - ABC123 - */ - [DataMember(Name = "shortCode", EmitDefaultValue = false)] - public string ShortCode { get; set; } + [DataMember(Name = "createdAt", EmitDefaultValue = false)] + public DateTime CreatedAt { get; set; } + + /// + /// Gets or Sets Description + /// + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } /// /// Gets or Sets Discriminator /// /* - 1234 + 0000 */ [DataMember(Name = "discriminator", EmitDefaultValue = false)] public string Discriminator { get; set; } /// - /// Gets or Sets Description + /// Gets or Sets Galleries /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + [DataMember(Name = "galleries", EmitDefaultValue = false)] + public List Galleries { get; set; } /// - /// Gets or Sets IconUrl + /// Gets or Sets IconId /// - [DataMember(Name = "iconUrl", EmitDefaultValue = true)] - public string IconUrl { get; set; } + [DataMember(Name = "iconId", EmitDefaultValue = true)] + public string IconId { get; set; } /// - /// Gets or Sets BannerUrl + /// Gets or Sets IconUrl /// - [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] - public string BannerUrl { get; set; } + [DataMember(Name = "iconUrl", EmitDefaultValue = true)] + public string IconUrl { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets Id /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 */ - [DataMember(Name = "ownerId", EmitDefaultValue = false)] - public string OwnerId { get; set; } - - /// - /// Gets or Sets Rules - /// - [DataMember(Name = "rules", EmitDefaultValue = true)] - public string Rules { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// - /// Gets or Sets Links + /// Gets or Sets IsVerified /// - [DataMember(Name = "links", EmitDefaultValue = false)] - public List Links { get; set; } + [DataMember(Name = "isVerified", EmitDefaultValue = true)] + public bool IsVerified { get; set; } /// /// Gets or Sets Languages @@ -231,16 +224,16 @@ public Group(bool ageVerificationSlotsAvailable = default, string ageVerificatio public List Languages { get; set; } /// - /// Gets or Sets IconId + /// Gets or Sets LastPostCreatedAt /// - [DataMember(Name = "iconId", EmitDefaultValue = true)] - public string IconId { get; set; } + [DataMember(Name = "lastPostCreatedAt", EmitDefaultValue = true)] + public DateTime? LastPostCreatedAt { get; set; } /// - /// Gets or Sets BannerId + /// Gets or Sets Links /// - [DataMember(Name = "bannerId", EmitDefaultValue = true)] - public string BannerId { get; set; } + [DataMember(Name = "links", EmitDefaultValue = false)] + public List Links { get; set; } /// /// Gets or Sets MemberCount @@ -255,16 +248,22 @@ public Group(bool ageVerificationSlotsAvailable = default, string ageVerificatio public DateTime MemberCountSyncedAt { get; set; } /// - /// Gets or Sets IsVerified + /// Gets or Sets MyMember /// - [DataMember(Name = "isVerified", EmitDefaultValue = true)] - public bool IsVerified { get; set; } + [DataMember(Name = "myMember", EmitDefaultValue = false)] + public GroupMyMember MyMember { get; set; } /// - /// Gets or Sets Tags + /// Gets or Sets Name /// - [DataMember(Name = "tags", EmitDefaultValue = false)] - public List Tags { get; set; } + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } + + /// + /// Gets or Sets OnlineMemberCount + /// + [DataMember(Name = "onlineMemberCount", EmitDefaultValue = false)] + public int OnlineMemberCount { get; set; } /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. @@ -273,51 +272,52 @@ public Group(bool ageVerificationSlotsAvailable = default, string ageVerificatio /* usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 */ - [DataMember(Name = "transferTargetId", EmitDefaultValue = false)] - public string TransferTargetId { get; set; } - - /// - /// Gets or Sets Galleries - /// - [DataMember(Name = "galleries", EmitDefaultValue = false)] - public List Galleries { get; set; } + [DataMember(Name = "ownerId", EmitDefaultValue = false)] + public string OwnerId { get; set; } /// - /// Gets or Sets CreatedAt + /// Only returned if ?includeRoles=true is specified. /// - [DataMember(Name = "createdAt", EmitDefaultValue = false)] - public DateTime CreatedAt { get; set; } + /// Only returned if ?includeRoles=true is specified. + [DataMember(Name = "roles", EmitDefaultValue = true)] + public List Roles { get; set; } /// - /// Gets or Sets UpdatedAt + /// Gets or Sets Rules /// - [DataMember(Name = "updatedAt", EmitDefaultValue = false)] - public DateTime UpdatedAt { get; set; } + [DataMember(Name = "rules", EmitDefaultValue = true)] + public string Rules { get; set; } /// - /// Gets or Sets LastPostCreatedAt + /// Gets or Sets ShortCode /// - [DataMember(Name = "lastPostCreatedAt", EmitDefaultValue = true)] - public DateTime? LastPostCreatedAt { get; set; } + /* + VRCHAT + */ + [DataMember(Name = "shortCode", EmitDefaultValue = false)] + public string ShortCode { get; set; } /// - /// Gets or Sets OnlineMemberCount + /// Gets or Sets Tags /// - [DataMember(Name = "onlineMemberCount", EmitDefaultValue = false)] - public int OnlineMemberCount { get; set; } + [DataMember(Name = "tags", EmitDefaultValue = false)] + public List Tags { get; set; } /// - /// Gets or Sets MyMember + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// - [DataMember(Name = "myMember", EmitDefaultValue = false)] - public GroupMyMember MyMember { get; set; } + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "transferTargetId", EmitDefaultValue = false)] + public string TransferTargetId { get; set; } /// - /// Only returned if ?includeRoles=true is specified. + /// Gets or Sets UpdatedAt /// - /// Only returned if ?includeRoles=true is specified. - [DataMember(Name = "roles", EmitDefaultValue = true)] - public List Roles { get; set; } + [DataMember(Name = "updatedAt", EmitDefaultValue = false)] + public DateTime UpdatedAt { get; set; } /// /// Returns the string presentation of the object @@ -327,38 +327,38 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class Group {\n"); - sb.Append(" AgeVerificationSlotsAvailable: ").Append(AgeVerificationSlotsAvailable).Append("\n"); sb.Append(" AgeVerificationBetaCode: ").Append(AgeVerificationBetaCode).Append("\n"); sb.Append(" AgeVerificationBetaSlots: ").Append(AgeVerificationBetaSlots).Append("\n"); + sb.Append(" AgeVerificationSlotsAvailable: ").Append(AgeVerificationSlotsAvailable).Append("\n"); sb.Append(" Badges: ").Append(Badges).Append("\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); - sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); - sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" IconUrl: ").Append(IconUrl).Append("\n"); + sb.Append(" BannerId: ").Append(BannerId).Append("\n"); sb.Append(" BannerUrl: ").Append(BannerUrl).Append("\n"); - sb.Append(" Privacy: ").Append(Privacy).Append("\n"); - sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); - sb.Append(" Rules: ").Append(Rules).Append("\n"); - sb.Append(" Links: ").Append(Links).Append("\n"); - sb.Append(" Languages: ").Append(Languages).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); + sb.Append(" Galleries: ").Append(Galleries).Append("\n"); sb.Append(" IconId: ").Append(IconId).Append("\n"); - sb.Append(" BannerId: ").Append(BannerId).Append("\n"); - sb.Append(" MemberCount: ").Append(MemberCount).Append("\n"); - sb.Append(" MemberCountSyncedAt: ").Append(MemberCountSyncedAt).Append("\n"); + sb.Append(" IconUrl: ").Append(IconUrl).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" IsVerified: ").Append(IsVerified).Append("\n"); sb.Append(" JoinState: ").Append(JoinState).Append("\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" TransferTargetId: ").Append(TransferTargetId).Append("\n"); - sb.Append(" Galleries: ").Append(Galleries).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); + sb.Append(" Languages: ").Append(Languages).Append("\n"); sb.Append(" LastPostCreatedAt: ").Append(LastPostCreatedAt).Append("\n"); - sb.Append(" OnlineMemberCount: ").Append(OnlineMemberCount).Append("\n"); + sb.Append(" Links: ").Append(Links).Append("\n"); + sb.Append(" MemberCount: ").Append(MemberCount).Append("\n"); + sb.Append(" MemberCountSyncedAt: ").Append(MemberCountSyncedAt).Append("\n"); sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); sb.Append(" MyMember: ").Append(MyMember).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" OnlineMemberCount: ").Append(OnlineMemberCount).Append("\n"); + sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); + sb.Append(" Privacy: ").Append(Privacy).Append("\n"); sb.Append(" Roles: ").Append(Roles).Append("\n"); + sb.Append(" Rules: ").Append(Rules).Append("\n"); + sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" TransferTargetId: ").Append(TransferTargetId).Append("\n"); + sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -394,10 +394,6 @@ public bool Equals(Group input) return false; } return - ( - this.AgeVerificationSlotsAvailable == input.AgeVerificationSlotsAvailable || - this.AgeVerificationSlotsAvailable.Equals(input.AgeVerificationSlotsAvailable) - ) && ( this.AgeVerificationBetaCode == input.AgeVerificationBetaCode || (this.AgeVerificationBetaCode != null && @@ -407,6 +403,10 @@ public bool Equals(Group input) this.AgeVerificationBetaSlots == input.AgeVerificationBetaSlots || this.AgeVerificationBetaSlots.Equals(input.AgeVerificationBetaSlots) ) && + ( + this.AgeVerificationSlotsAvailable == input.AgeVerificationSlotsAvailable || + this.AgeVerificationSlotsAvailable.Equals(input.AgeVerificationSlotsAvailable) + ) && ( this.Badges == input.Badges || this.Badges != null && @@ -414,19 +414,24 @@ public bool Equals(Group input) this.Badges.SequenceEqual(input.Badges) ) && ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.BannerId == input.BannerId || + (this.BannerId != null && + this.BannerId.Equals(input.BannerId)) ) && ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.BannerUrl == input.BannerUrl || + (this.BannerUrl != null && + this.BannerUrl.Equals(input.BannerUrl)) ) && ( - this.ShortCode == input.ShortCode || - (this.ShortCode != null && - this.ShortCode.Equals(input.ShortCode)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.Discriminator == input.Discriminator || @@ -434,9 +439,15 @@ public bool Equals(Group input) this.Discriminator.Equals(input.Discriminator)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.Galleries == input.Galleries || + this.Galleries != null && + input.Galleries != null && + this.Galleries.SequenceEqual(input.Galleries) + ) && + ( + this.IconId == input.IconId || + (this.IconId != null && + this.IconId.Equals(input.IconId)) ) && ( this.IconUrl == input.IconUrl || @@ -444,29 +455,17 @@ public bool Equals(Group input) this.IconUrl.Equals(input.IconUrl)) ) && ( - this.BannerUrl == input.BannerUrl || - (this.BannerUrl != null && - this.BannerUrl.Equals(input.BannerUrl)) - ) && - ( - this.Privacy == input.Privacy || - this.Privacy.Equals(input.Privacy) - ) && - ( - this.OwnerId == input.OwnerId || - (this.OwnerId != null && - this.OwnerId.Equals(input.OwnerId)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.Rules == input.Rules || - (this.Rules != null && - this.Rules.Equals(input.Rules)) + this.IsVerified == input.IsVerified || + this.IsVerified.Equals(input.IsVerified) ) && ( - this.Links == input.Links || - this.Links != null && - input.Links != null && - this.Links.SequenceEqual(input.Links) + this.JoinState == input.JoinState || + this.JoinState.Equals(input.JoinState) ) && ( this.Languages == input.Languages || @@ -475,14 +474,15 @@ public bool Equals(Group input) this.Languages.SequenceEqual(input.Languages) ) && ( - this.IconId == input.IconId || - (this.IconId != null && - this.IconId.Equals(input.IconId)) + this.LastPostCreatedAt == input.LastPostCreatedAt || + (this.LastPostCreatedAt != null && + this.LastPostCreatedAt.Equals(input.LastPostCreatedAt)) ) && ( - this.BannerId == input.BannerId || - (this.BannerId != null && - this.BannerId.Equals(input.BannerId)) + this.Links == input.Links || + this.Links != null && + input.Links != null && + this.Links.SequenceEqual(input.Links) ) && ( this.MemberCount == input.MemberCount || @@ -494,63 +494,63 @@ public bool Equals(Group input) this.MemberCountSyncedAt.Equals(input.MemberCountSyncedAt)) ) && ( - this.IsVerified == input.IsVerified || - this.IsVerified.Equals(input.IsVerified) + this.MembershipStatus == input.MembershipStatus || + this.MembershipStatus.Equals(input.MembershipStatus) ) && ( - this.JoinState == input.JoinState || - this.JoinState.Equals(input.JoinState) + this.MyMember == input.MyMember || + (this.MyMember != null && + this.MyMember.Equals(input.MyMember)) ) && ( - this.Tags == input.Tags || - this.Tags != null && - input.Tags != null && - this.Tags.SequenceEqual(input.Tags) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( - this.TransferTargetId == input.TransferTargetId || - (this.TransferTargetId != null && - this.TransferTargetId.Equals(input.TransferTargetId)) + this.OnlineMemberCount == input.OnlineMemberCount || + this.OnlineMemberCount.Equals(input.OnlineMemberCount) ) && ( - this.Galleries == input.Galleries || - this.Galleries != null && - input.Galleries != null && - this.Galleries.SequenceEqual(input.Galleries) + this.OwnerId == input.OwnerId || + (this.OwnerId != null && + this.OwnerId.Equals(input.OwnerId)) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.Privacy == input.Privacy || + this.Privacy.Equals(input.Privacy) ) && ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) + this.Roles == input.Roles || + this.Roles != null && + input.Roles != null && + this.Roles.SequenceEqual(input.Roles) ) && ( - this.LastPostCreatedAt == input.LastPostCreatedAt || - (this.LastPostCreatedAt != null && - this.LastPostCreatedAt.Equals(input.LastPostCreatedAt)) + this.Rules == input.Rules || + (this.Rules != null && + this.Rules.Equals(input.Rules)) ) && ( - this.OnlineMemberCount == input.OnlineMemberCount || - this.OnlineMemberCount.Equals(input.OnlineMemberCount) + this.ShortCode == input.ShortCode || + (this.ShortCode != null && + this.ShortCode.Equals(input.ShortCode)) ) && ( - this.MembershipStatus == input.MembershipStatus || - this.MembershipStatus.Equals(input.MembershipStatus) + this.Tags == input.Tags || + this.Tags != null && + input.Tags != null && + this.Tags.SequenceEqual(input.Tags) ) && ( - this.MyMember == input.MyMember || - (this.MyMember != null && - this.MyMember.Equals(input.MyMember)) + this.TransferTargetId == input.TransferTargetId || + (this.TransferTargetId != null && + this.TransferTargetId.Equals(input.TransferTargetId)) ) && ( - this.Roles == input.Roles || - this.Roles != null && - input.Roles != null && - this.Roles.SequenceEqual(input.Roles) + this.UpdatedAt == input.UpdatedAt || + (this.UpdatedAt != null && + this.UpdatedAt.Equals(input.UpdatedAt)) ); } @@ -563,109 +563,109 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - hashCode = (hashCode * 59) + this.AgeVerificationSlotsAvailable.GetHashCode(); if (this.AgeVerificationBetaCode != null) { hashCode = (hashCode * 59) + this.AgeVerificationBetaCode.GetHashCode(); } hashCode = (hashCode * 59) + this.AgeVerificationBetaSlots.GetHashCode(); + hashCode = (hashCode * 59) + this.AgeVerificationSlotsAvailable.GetHashCode(); if (this.Badges != null) { hashCode = (hashCode * 59) + this.Badges.GetHashCode(); } - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - if (this.Name != null) + if (this.BannerId != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); } - if (this.ShortCode != null) + if (this.BannerUrl != null) { - hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); } - if (this.Discriminator != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.Discriminator.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - if (this.IconUrl != null) + if (this.Discriminator != null) { - hashCode = (hashCode * 59) + this.IconUrl.GetHashCode(); + hashCode = (hashCode * 59) + this.Discriminator.GetHashCode(); } - if (this.BannerUrl != null) + if (this.Galleries != null) { - hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); + hashCode = (hashCode * 59) + this.Galleries.GetHashCode(); } - hashCode = (hashCode * 59) + this.Privacy.GetHashCode(); - if (this.OwnerId != null) + if (this.IconId != null) { - hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); + hashCode = (hashCode * 59) + this.IconId.GetHashCode(); } - if (this.Rules != null) + if (this.IconUrl != null) { - hashCode = (hashCode * 59) + this.Rules.GetHashCode(); + hashCode = (hashCode * 59) + this.IconUrl.GetHashCode(); } - if (this.Links != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.Links.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + hashCode = (hashCode * 59) + this.IsVerified.GetHashCode(); + hashCode = (hashCode * 59) + this.JoinState.GetHashCode(); if (this.Languages != null) { hashCode = (hashCode * 59) + this.Languages.GetHashCode(); } - if (this.IconId != null) + if (this.LastPostCreatedAt != null) { - hashCode = (hashCode * 59) + this.IconId.GetHashCode(); + hashCode = (hashCode * 59) + this.LastPostCreatedAt.GetHashCode(); } - if (this.BannerId != null) + if (this.Links != null) { - hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); + hashCode = (hashCode * 59) + this.Links.GetHashCode(); } hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); if (this.MemberCountSyncedAt != null) { hashCode = (hashCode * 59) + this.MemberCountSyncedAt.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsVerified.GetHashCode(); - hashCode = (hashCode * 59) + this.JoinState.GetHashCode(); - if (this.Tags != null) + hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); + if (this.MyMember != null) { - hashCode = (hashCode * 59) + this.Tags.GetHashCode(); + hashCode = (hashCode * 59) + this.MyMember.GetHashCode(); } - if (this.TransferTargetId != null) + if (this.Name != null) { - hashCode = (hashCode * 59) + this.TransferTargetId.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } - if (this.Galleries != null) + hashCode = (hashCode * 59) + this.OnlineMemberCount.GetHashCode(); + if (this.OwnerId != null) { - hashCode = (hashCode * 59) + this.Galleries.GetHashCode(); + hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); } - if (this.CreatedAt != null) + hashCode = (hashCode * 59) + this.Privacy.GetHashCode(); + if (this.Roles != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Roles.GetHashCode(); } - if (this.UpdatedAt != null) + if (this.Rules != null) { - hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Rules.GetHashCode(); } - if (this.LastPostCreatedAt != null) + if (this.ShortCode != null) { - hashCode = (hashCode * 59) + this.LastPostCreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); } - hashCode = (hashCode * 59) + this.OnlineMemberCount.GetHashCode(); - hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); - if (this.MyMember != null) + if (this.Tags != null) { - hashCode = (hashCode * 59) + this.MyMember.GetHashCode(); + hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } - if (this.Roles != null) + if (this.TransferTargetId != null) { - hashCode = (hashCode * 59) + this.Roles.GetHashCode(); + hashCode = (hashCode * 59) + this.TransferTargetId.GetHashCode(); + } + if (this.UpdatedAt != null) + { + hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/GroupAccessType.cs b/src/VRChat.API/Model/GroupAccessType.cs index a788216d..e2e1fc75 100644 --- a/src/VRChat.API/Model/GroupAccessType.cs +++ b/src/VRChat.API/Model/GroupAccessType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -34,10 +34,10 @@ namespace VRChat.API.Model public enum GroupAccessType { /// - /// Enum Public for value: public + /// Enum Members for value: members /// - [EnumMember(Value = "public")] - Public = 1, + [EnumMember(Value = "members")] + Members = 1, /// /// Enum Plus for value: plus @@ -46,10 +46,10 @@ public enum GroupAccessType Plus = 2, /// - /// Enum Members for value: members + /// Enum Public for value: public /// - [EnumMember(Value = "members")] - Members = 3 + [EnumMember(Value = "public")] + Public = 3 } } diff --git a/src/VRChat.API/Model/GroupAnnouncement.cs b/src/VRChat.API/Model/GroupAnnouncement.cs index 9a2d9476..6a5575a9 100644 --- a/src/VRChat.API/Model/GroupAnnouncement.cs +++ b/src/VRChat.API/Model/GroupAnnouncement.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,36 +35,43 @@ public partial class GroupAnnouncement : IEquatable, IValidat /// /// Initializes a new instance of the class. /// - /// id. - /// groupId. /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// title. - /// text. + /// createdAt. + /// groupId. + /// id. /// imageId. /// imageUrl. - /// createdAt. + /// text. + /// title. /// updatedAt. - public GroupAnnouncement(string id = default, string groupId = default, string authorId = default, string title = default, string text = default, string imageId = default, string imageUrl = default, DateTime? createdAt = default, DateTime? updatedAt = default) + public GroupAnnouncement(string authorId = default, DateTime? createdAt = default, string groupId = default, string id = default, string imageId = default, string imageUrl = default, string text = default, string title = default, DateTime? updatedAt = default) { - this.Id = id; - this.GroupId = groupId; this.AuthorId = authorId; - this.Title = title; - this.Text = text; + this.CreatedAt = createdAt; + this.GroupId = groupId; + this.Id = id; this.ImageId = imageId; this.ImageUrl = imageUrl; - this.CreatedAt = createdAt; + this.Text = text; + this.Title = title; this.UpdatedAt = updatedAt; } /// - /// Gets or Sets Id + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - gpos_71a7ff59-112c-4e78-a990-c7cc650776e5 + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "authorId", EmitDefaultValue = false)] + public string AuthorId { get; set; } + + /// + /// Gets or Sets CreatedAt + /// + [DataMember(Name = "createdAt", EmitDefaultValue = true)] + public DateTime? CreatedAt { get; set; } /// /// Gets or Sets GroupId @@ -76,26 +83,13 @@ public GroupAnnouncement(string id = default, string groupId = default, string a public string GroupId { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets Id /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + gpos_71a7ff59-112c-4e78-a990-c7cc650776e5 */ - [DataMember(Name = "authorId", EmitDefaultValue = false)] - public string AuthorId { get; set; } - - /// - /// Gets or Sets Title - /// - [DataMember(Name = "title", EmitDefaultValue = true)] - public string Title { get; set; } - - /// - /// Gets or Sets Text - /// - [DataMember(Name = "text", EmitDefaultValue = true)] - public string Text { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// /// Gets or Sets ImageId @@ -113,10 +107,16 @@ public GroupAnnouncement(string id = default, string groupId = default, string a public string ImageUrl { get; set; } /// - /// Gets or Sets CreatedAt + /// Gets or Sets Text /// - [DataMember(Name = "createdAt", EmitDefaultValue = true)] - public DateTime? CreatedAt { get; set; } + [DataMember(Name = "text", EmitDefaultValue = true)] + public string Text { get; set; } + + /// + /// Gets or Sets Title + /// + [DataMember(Name = "title", EmitDefaultValue = true)] + public string Title { get; set; } /// /// Gets or Sets UpdatedAt @@ -132,14 +132,14 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupAnnouncement {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); sb.Append(" AuthorId: ").Append(AuthorId).Append("\n"); - sb.Append(" Title: ").Append(Title).Append("\n"); - sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ImageId: ").Append(ImageId).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -176,30 +176,25 @@ public bool Equals(GroupAnnouncement input) return false; } return - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) - ) && ( this.AuthorId == input.AuthorId || (this.AuthorId != null && this.AuthorId.Equals(input.AuthorId)) ) && ( - this.Title == input.Title || - (this.Title != null && - this.Title.Equals(input.Title)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) + ) && + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( this.ImageId == input.ImageId || @@ -212,9 +207,14 @@ public bool Equals(GroupAnnouncement input) this.ImageUrl.Equals(input.ImageUrl)) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && + ( + this.Title == input.Title || + (this.Title != null && + this.Title.Equals(input.Title)) ) && ( this.UpdatedAt == input.UpdatedAt || @@ -232,25 +232,21 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - if (this.GroupId != null) - { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); - } if (this.AuthorId != null) { hashCode = (hashCode * 59) + this.AuthorId.GetHashCode(); } - if (this.Title != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.Title.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } - if (this.Text != null) + if (this.GroupId != null) { - hashCode = (hashCode * 59) + this.Text.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); + } + if (this.Id != null) + { + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } if (this.ImageId != null) { @@ -260,9 +256,13 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } - if (this.CreatedAt != null) + if (this.Text != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Text.GetHashCode(); + } + if (this.Title != null) + { + hashCode = (hashCode * 59) + this.Title.GetHashCode(); } if (this.UpdatedAt != null) { diff --git a/src/VRChat.API/Model/GroupAuditLogEntry.cs b/src/VRChat.API/Model/GroupAuditLogEntry.cs index 4526b8c5..4ba98ca1 100644 --- a/src/VRChat.API/Model/GroupAuditLogEntry.cs +++ b/src/VRChat.API/Model/GroupAuditLogEntry.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,37 +35,44 @@ public partial class GroupAuditLogEntry : IEquatable, IValid /// /// Initializes a new instance of the class. /// - /// id. + /// actorDisplayName. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// createdAt. + /// The data associated with the event. The format of this data is dependent on the event type.. + /// A human-readable description of the event.. + /// The type of event that occurred. This is a string that is prefixed with the type of object that the event occurred on. For example, a group role update event would be prefixed with `group.role`. (default to "group.update"). /// groupId. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// actorDisplayName. + /// id. /// Typically a UserID, GroupID, GroupRoleID, or Location, but could be other types of IDs.. - /// The type of event that occurred. This is a string that is prefixed with the type of object that the event occurred on. For example, a group role update event would be prefixed with `group.role`. (default to "group.update"). - /// A human-readable description of the event.. - /// The data associated with the event. The format of this data is dependent on the event type.. - public GroupAuditLogEntry(string id = default, DateTime createdAt = default, string groupId = default, string actorId = default, string actorDisplayName = default, string targetId = default, string eventType = @"group.update", string description = default, Object data = default) + public GroupAuditLogEntry(string actorDisplayName = default, string actorId = default, DateTime createdAt = default, Object data = default, string description = default, string eventType = @"group.update", string groupId = default, string id = default, string targetId = default) { - this.Id = id; - this.CreatedAt = createdAt; - this.GroupId = groupId; - this.ActorId = actorId; this.ActorDisplayName = actorDisplayName; - this.TargetId = targetId; + this.ActorId = actorId; + this.CreatedAt = createdAt; + this.Data = data; + this.Description = description; // use default value if no "eventType" provided this.EventType = eventType ?? @"group.update"; - this.Description = description; - this.Data = data; + this.GroupId = groupId; + this.Id = id; + this.TargetId = targetId; } /// - /// Gets or Sets Id + /// Gets or Sets ActorDisplayName + /// + [DataMember(Name = "actorDisplayName", EmitDefaultValue = false)] + public string ActorDisplayName { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - gaud_71a7ff59-112c-4e78-a990-c7cc650776e5 + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "actorId", EmitDefaultValue = false)] + public string ActorId { get; set; } /// /// Gets or Sets CreatedAt @@ -74,36 +81,24 @@ public GroupAuditLogEntry(string id = default, DateTime createdAt = default, str public DateTime CreatedAt { get; set; } /// - /// Gets or Sets GroupId + /// The data associated with the event. The format of this data is dependent on the event type. /// + /// The data associated with the event. The format of this data is dependent on the event type. /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + {"description":{"new":"My exciting new group. It's pretty nifty!","old":"My exciting new group. It's pretty nifty!"},"joinState":{"new":"request","old":"closed"}} */ - [DataMember(Name = "groupId", EmitDefaultValue = false)] - public string GroupId { get; set; } + [DataMember(Name = "data", EmitDefaultValue = false)] + public Object Data { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// A human-readable description of the event. /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// A human-readable description of the event. /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + Group role updated */ - [DataMember(Name = "actorId", EmitDefaultValue = false)] - public string ActorId { get; set; } - - /// - /// Gets or Sets ActorDisplayName - /// - [DataMember(Name = "actorDisplayName", EmitDefaultValue = false)] - public string ActorDisplayName { get; set; } - - /// - /// Typically a UserID, GroupID, GroupRoleID, or Location, but could be other types of IDs. - /// - /// Typically a UserID, GroupID, GroupRoleID, or Location, but could be other types of IDs. - [DataMember(Name = "targetId", EmitDefaultValue = false)] - public string TargetId { get; set; } + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } /// /// The type of event that occurred. This is a string that is prefixed with the type of object that the event occurred on. For example, a group role update event would be prefixed with `group.role`. @@ -116,24 +111,29 @@ public GroupAuditLogEntry(string id = default, DateTime createdAt = default, str public string EventType { get; set; } /// - /// A human-readable description of the event. + /// Gets or Sets GroupId /// - /// A human-readable description of the event. /* - Group role updated + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 */ - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + [DataMember(Name = "groupId", EmitDefaultValue = false)] + public string GroupId { get; set; } /// - /// The data associated with the event. The format of this data is dependent on the event type. + /// Gets or Sets Id /// - /// The data associated with the event. The format of this data is dependent on the event type. /* - {"description":{"old":"My exciting new group. It's pretty nifty!","new":"My exciting new group. It's pretty nifty!"},"joinState":{"old":"closed","new":"request"}} + gaud_71a7ff59-112c-4e78-a990-c7cc650776e5 */ - [DataMember(Name = "data", EmitDefaultValue = false)] - public Object Data { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } + + /// + /// Typically a UserID, GroupID, GroupRoleID, or Location, but could be other types of IDs. + /// + /// Typically a UserID, GroupID, GroupRoleID, or Location, but could be other types of IDs. + [DataMember(Name = "targetId", EmitDefaultValue = false)] + public string TargetId { get; set; } /// /// Returns the string presentation of the object @@ -143,15 +143,15 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupAuditLogEntry {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" ActorDisplayName: ").Append(ActorDisplayName).Append("\n"); + sb.Append(" ActorId: ").Append(ActorId).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" EventType: ").Append(EventType).Append("\n"); sb.Append(" GroupId: ").Append(GroupId).Append("\n"); - sb.Append(" ActorId: ").Append(ActorId).Append("\n"); - sb.Append(" ActorDisplayName: ").Append(ActorDisplayName).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" TargetId: ").Append(TargetId).Append("\n"); - sb.Append(" EventType: ").Append(EventType).Append("\n"); - sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" Data: ").Append(Data).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -188,19 +188,9 @@ public bool Equals(GroupAuditLogEntry input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) - ) && - ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) + this.ActorDisplayName == input.ActorDisplayName || + (this.ActorDisplayName != null && + this.ActorDisplayName.Equals(input.ActorDisplayName)) ) && ( this.ActorId == input.ActorId || @@ -208,14 +198,19 @@ public bool Equals(GroupAuditLogEntry input) this.ActorId.Equals(input.ActorId)) ) && ( - this.ActorDisplayName == input.ActorDisplayName || - (this.ActorDisplayName != null && - this.ActorDisplayName.Equals(input.ActorDisplayName)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( - this.TargetId == input.TargetId || - (this.TargetId != null && - this.TargetId.Equals(input.TargetId)) + this.Data == input.Data || + (this.Data != null && + this.Data.Equals(input.Data)) + ) && + ( + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.EventType == input.EventType || @@ -223,14 +218,19 @@ public bool Equals(GroupAuditLogEntry input) this.EventType.Equals(input.EventType)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) ) && ( - this.Data == input.Data || - (this.Data != null && - this.Data.Equals(input.Data)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.TargetId == input.TargetId || + (this.TargetId != null && + this.TargetId.Equals(input.TargetId)) ); } @@ -243,41 +243,41 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - if (this.CreatedAt != null) - { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); - } - if (this.GroupId != null) + if (this.ActorDisplayName != null) { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); + hashCode = (hashCode * 59) + this.ActorDisplayName.GetHashCode(); } if (this.ActorId != null) { hashCode = (hashCode * 59) + this.ActorId.GetHashCode(); } - if (this.ActorDisplayName != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.ActorDisplayName.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } - if (this.TargetId != null) + if (this.Data != null) { - hashCode = (hashCode * 59) + this.TargetId.GetHashCode(); + hashCode = (hashCode * 59) + this.Data.GetHashCode(); + } + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } if (this.EventType != null) { hashCode = (hashCode * 59) + this.EventType.GetHashCode(); } - if (this.Description != null) + if (this.GroupId != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } - if (this.Data != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.Data.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); + } + if (this.TargetId != null) + { + hashCode = (hashCode * 59) + this.TargetId.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/GroupGallery.cs b/src/VRChat.API/Model/GroupGallery.cs index 8b7a9ab9..291369bd 100644 --- a/src/VRChat.API/Model/GroupGallery.cs +++ b/src/VRChat.API/Model/GroupGallery.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,48 +35,35 @@ public partial class GroupGallery : IEquatable, IValidatableObject /// /// Initializes a new instance of the class. /// - /// id. - /// Name of the gallery.. + /// createdAt. /// Description of the gallery.. + /// id. /// Whether the gallery is members only. (default to false). - /// . - /// . + /// Name of the gallery.. /// . /// . - /// createdAt. + /// . + /// . /// updatedAt. - public GroupGallery(string id = default, string name = default, string description = default, bool membersOnly = false, List roleIdsToView = default, List roleIdsToSubmit = default, List roleIdsToAutoApprove = default, List roleIdsToManage = default, DateTime createdAt = default, DateTime updatedAt = default) + public GroupGallery(DateTime createdAt = default, string description = default, string id = default, bool membersOnly = false, string name = default, List roleIdsToAutoApprove = default, List roleIdsToManage = default, List roleIdsToSubmit = default, List roleIdsToView = default, DateTime updatedAt = default) { - this.Id = id; - this.Name = name; + this.CreatedAt = createdAt; this.Description = description; + this.Id = id; this.MembersOnly = membersOnly; - this.RoleIdsToView = roleIdsToView; - this.RoleIdsToSubmit = roleIdsToSubmit; + this.Name = name; this.RoleIdsToAutoApprove = roleIdsToAutoApprove; this.RoleIdsToManage = roleIdsToManage; - this.CreatedAt = createdAt; + this.RoleIdsToSubmit = roleIdsToSubmit; + this.RoleIdsToView = roleIdsToView; this.UpdatedAt = updatedAt; } /// - /// Gets or Sets Id - /// - /* - ggal_a03a4b55-4ca6-4490-9519-40ba6351a233 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } - - /// - /// Name of the gallery. + /// Gets or Sets CreatedAt /// - /// Name of the gallery. - /* - Example Gallery - */ - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "createdAt", EmitDefaultValue = false)] + public DateTime CreatedAt { get; set; } /// /// Description of the gallery. @@ -88,6 +75,15 @@ public GroupGallery(string id = default, string name = default, string descripti [DataMember(Name = "description", EmitDefaultValue = false)] public string Description { get; set; } + /// + /// Gets or Sets Id + /// + /* + ggal_a03a4b55-4ca6-4490-9519-40ba6351a233 + */ + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } + /// /// Whether the gallery is members only. /// @@ -99,38 +95,42 @@ public GroupGallery(string id = default, string name = default, string descripti public bool MembersOnly { get; set; } /// - /// + /// Name of the gallery. /// - /// - [DataMember(Name = "roleIdsToView", EmitDefaultValue = true)] - public List RoleIdsToView { get; set; } + /// Name of the gallery. + /* + Example Gallery + */ + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToSubmit", EmitDefaultValue = true)] - public List RoleIdsToSubmit { get; set; } + [DataMember(Name = "roleIdsToAutoApprove", EmitDefaultValue = true)] + public List RoleIdsToAutoApprove { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToAutoApprove", EmitDefaultValue = true)] - public List RoleIdsToAutoApprove { get; set; } + [DataMember(Name = "roleIdsToManage", EmitDefaultValue = true)] + public List RoleIdsToManage { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToManage", EmitDefaultValue = true)] - public List RoleIdsToManage { get; set; } + [DataMember(Name = "roleIdsToSubmit", EmitDefaultValue = true)] + public List RoleIdsToSubmit { get; set; } /// - /// Gets or Sets CreatedAt + /// /// - [DataMember(Name = "createdAt", EmitDefaultValue = false)] - public DateTime CreatedAt { get; set; } + /// + [DataMember(Name = "roleIdsToView", EmitDefaultValue = true)] + public List RoleIdsToView { get; set; } /// /// Gets or Sets UpdatedAt @@ -146,15 +146,15 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupGallery {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" MembersOnly: ").Append(MembersOnly).Append("\n"); - sb.Append(" RoleIdsToView: ").Append(RoleIdsToView).Append("\n"); - sb.Append(" RoleIdsToSubmit: ").Append(RoleIdsToSubmit).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" RoleIdsToAutoApprove: ").Append(RoleIdsToAutoApprove).Append("\n"); sb.Append(" RoleIdsToManage: ").Append(RoleIdsToManage).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" RoleIdsToSubmit: ").Append(RoleIdsToSubmit).Append("\n"); + sb.Append(" RoleIdsToView: ").Append(RoleIdsToView).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -192,14 +192,9 @@ public bool Equals(GroupGallery input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( this.Description == input.Description || @@ -207,20 +202,18 @@ public bool Equals(GroupGallery input) this.Description.Equals(input.Description)) ) && ( - this.MembersOnly == input.MembersOnly || - this.MembersOnly.Equals(input.MembersOnly) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.RoleIdsToView == input.RoleIdsToView || - this.RoleIdsToView != null && - input.RoleIdsToView != null && - this.RoleIdsToView.SequenceEqual(input.RoleIdsToView) + this.MembersOnly == input.MembersOnly || + this.MembersOnly.Equals(input.MembersOnly) ) && ( - this.RoleIdsToSubmit == input.RoleIdsToSubmit || - this.RoleIdsToSubmit != null && - input.RoleIdsToSubmit != null && - this.RoleIdsToSubmit.SequenceEqual(input.RoleIdsToSubmit) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.RoleIdsToAutoApprove == input.RoleIdsToAutoApprove || @@ -235,9 +228,16 @@ public bool Equals(GroupGallery input) this.RoleIdsToManage.SequenceEqual(input.RoleIdsToManage) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.RoleIdsToSubmit == input.RoleIdsToSubmit || + this.RoleIdsToSubmit != null && + input.RoleIdsToSubmit != null && + this.RoleIdsToSubmit.SequenceEqual(input.RoleIdsToSubmit) + ) && + ( + this.RoleIdsToView == input.RoleIdsToView || + this.RoleIdsToView != null && + input.RoleIdsToView != null && + this.RoleIdsToView.SequenceEqual(input.RoleIdsToView) ) && ( this.UpdatedAt == input.UpdatedAt || @@ -255,26 +255,22 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - if (this.Name != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - hashCode = (hashCode * 59) + this.MembersOnly.GetHashCode(); - if (this.RoleIdsToView != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.RoleIdsToView.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - if (this.RoleIdsToSubmit != null) + hashCode = (hashCode * 59) + this.MembersOnly.GetHashCode(); + if (this.Name != null) { - hashCode = (hashCode * 59) + this.RoleIdsToSubmit.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } if (this.RoleIdsToAutoApprove != null) { @@ -284,9 +280,13 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.RoleIdsToManage.GetHashCode(); } - if (this.CreatedAt != null) + if (this.RoleIdsToSubmit != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleIdsToSubmit.GetHashCode(); + } + if (this.RoleIdsToView != null) + { + hashCode = (hashCode * 59) + this.RoleIdsToView.GetHashCode(); } if (this.UpdatedAt != null) { @@ -303,18 +303,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Name (string) minLength - if (this.Name != null && this.Name.Length < 1) - { - yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); - } - // Description (string) minLength if (this.Description != null && this.Description.Length < 0) { yield return new ValidationResult("Invalid value for Description, length must be greater than 0.", new [] { "Description" }); } + // Name (string) minLength + if (this.Name != null && this.Name.Length < 1) + { + yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/GroupGalleryImage.cs b/src/VRChat.API/Model/GroupGalleryImage.cs index 5d82584c..d03c7c22 100644 --- a/src/VRChat.API/Model/GroupGalleryImage.cs +++ b/src/VRChat.API/Model/GroupGalleryImage.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,56 +35,60 @@ public partial class GroupGalleryImage : IEquatable, IValidat /// /// Initializes a new instance of the class. /// - /// id. - /// groupId. - /// galleryId. + /// approved (default to false). + /// approvedAt. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// createdAt. /// fileId. + /// galleryId. + /// groupId. + /// id. /// imageUrl. - /// createdAt. /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// approved (default to false). - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// approvedAt. - public GroupGalleryImage(string id = default, string groupId = default, string galleryId = default, string fileId = default, string imageUrl = default, DateTime createdAt = default, string submittedByUserId = default, bool approved = false, string approvedByUserId = default, DateTime approvedAt = default) + public GroupGalleryImage(bool approved = false, DateTime approvedAt = default, string approvedByUserId = default, DateTime createdAt = default, string fileId = default, string galleryId = default, string groupId = default, string id = default, string imageUrl = default, string submittedByUserId = default) { - this.Id = id; - this.GroupId = groupId; - this.GalleryId = galleryId; + this.Approved = approved; + this.ApprovedAt = approvedAt; + this.ApprovedByUserId = approvedByUserId; + this.CreatedAt = createdAt; this.FileId = fileId; + this.GalleryId = galleryId; + this.GroupId = groupId; + this.Id = id; this.ImageUrl = imageUrl; - this.CreatedAt = createdAt; this.SubmittedByUserId = submittedByUserId; - this.Approved = approved; - this.ApprovedByUserId = approvedByUserId; - this.ApprovedAt = approvedAt; } /// - /// Gets or Sets Id + /// Gets or Sets Approved /// /* - ggim_71a7ff59-112c-4e78-a990-c7cc650776e5 + true */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "approved", EmitDefaultValue = true)] + public bool Approved { get; set; } /// - /// Gets or Sets GroupId + /// Gets or Sets ApprovedAt /// - /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 - */ - [DataMember(Name = "groupId", EmitDefaultValue = false)] - public string GroupId { get; set; } + [DataMember(Name = "approvedAt", EmitDefaultValue = false)] + public DateTime ApprovedAt { get; set; } /// - /// Gets or Sets GalleryId + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - ggal_a03a4b55-4ca6-4490-9519-40ba6351a233 + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 */ - [DataMember(Name = "galleryId", EmitDefaultValue = false)] - public string GalleryId { get; set; } + [DataMember(Name = "approvedByUserId", EmitDefaultValue = false)] + public string ApprovedByUserId { get; set; } + + /// + /// Gets or Sets CreatedAt + /// + [DataMember(Name = "createdAt", EmitDefaultValue = false)] + public DateTime CreatedAt { get; set; } /// /// Gets or Sets FileId @@ -96,38 +100,40 @@ public GroupGalleryImage(string id = default, string groupId = default, string g public string FileId { get; set; } /// - /// Gets or Sets ImageUrl + /// Gets or Sets GalleryId /// /* - https://api.vrchat.cloud/api/1/file/file_ce35d830-e20a-4df0-a6d4-5aaef4508044/1/file + ggal_a03a4b55-4ca6-4490-9519-40ba6351a233 */ - [DataMember(Name = "imageUrl", EmitDefaultValue = false)] - public string ImageUrl { get; set; } + [DataMember(Name = "galleryId", EmitDefaultValue = false)] + public string GalleryId { get; set; } /// - /// Gets or Sets CreatedAt + /// Gets or Sets GroupId /// - [DataMember(Name = "createdAt", EmitDefaultValue = false)] - public DateTime CreatedAt { get; set; } + /* + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + */ + [DataMember(Name = "groupId", EmitDefaultValue = false)] + public string GroupId { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets Id /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + ggim_71a7ff59-112c-4e78-a990-c7cc650776e5 */ - [DataMember(Name = "submittedByUserId", EmitDefaultValue = false)] - public string SubmittedByUserId { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// - /// Gets or Sets Approved + /// Gets or Sets ImageUrl /// /* - true + https://api.vrchat.cloud/api/1/file/file_ce35d830-e20a-4df0-a6d4-5aaef4508044/1/file */ - [DataMember(Name = "approved", EmitDefaultValue = true)] - public bool Approved { get; set; } + [DataMember(Name = "imageUrl", EmitDefaultValue = false)] + public string ImageUrl { get; set; } /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. @@ -136,14 +142,8 @@ public GroupGalleryImage(string id = default, string groupId = default, string g /* usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 */ - [DataMember(Name = "approvedByUserId", EmitDefaultValue = false)] - public string ApprovedByUserId { get; set; } - - /// - /// Gets or Sets ApprovedAt - /// - [DataMember(Name = "approvedAt", EmitDefaultValue = false)] - public DateTime ApprovedAt { get; set; } + [DataMember(Name = "submittedByUserId", EmitDefaultValue = false)] + public string SubmittedByUserId { get; set; } /// /// Returns the string presentation of the object @@ -153,16 +153,16 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupGalleryImage {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); - sb.Append(" GalleryId: ").Append(GalleryId).Append("\n"); + sb.Append(" Approved: ").Append(Approved).Append("\n"); + sb.Append(" ApprovedAt: ").Append(ApprovedAt).Append("\n"); + sb.Append(" ApprovedByUserId: ").Append(ApprovedByUserId).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" FileId: ").Append(FileId).Append("\n"); + sb.Append(" GalleryId: ").Append(GalleryId).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" SubmittedByUserId: ").Append(SubmittedByUserId).Append("\n"); - sb.Append(" Approved: ").Append(Approved).Append("\n"); - sb.Append(" ApprovedByUserId: ").Append(ApprovedByUserId).Append("\n"); - sb.Append(" ApprovedAt: ").Append(ApprovedAt).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -199,19 +199,23 @@ public bool Equals(GroupGalleryImage input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.Approved == input.Approved || + this.Approved.Equals(input.Approved) ) && ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) + this.ApprovedAt == input.ApprovedAt || + (this.ApprovedAt != null && + this.ApprovedAt.Equals(input.ApprovedAt)) ) && ( - this.GalleryId == input.GalleryId || - (this.GalleryId != null && - this.GalleryId.Equals(input.GalleryId)) + this.ApprovedByUserId == input.ApprovedByUserId || + (this.ApprovedByUserId != null && + this.ApprovedByUserId.Equals(input.ApprovedByUserId)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( this.FileId == input.FileId || @@ -219,33 +223,29 @@ public bool Equals(GroupGalleryImage input) this.FileId.Equals(input.FileId)) ) && ( - this.ImageUrl == input.ImageUrl || - (this.ImageUrl != null && - this.ImageUrl.Equals(input.ImageUrl)) - ) && - ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.GalleryId == input.GalleryId || + (this.GalleryId != null && + this.GalleryId.Equals(input.GalleryId)) ) && ( - this.SubmittedByUserId == input.SubmittedByUserId || - (this.SubmittedByUserId != null && - this.SubmittedByUserId.Equals(input.SubmittedByUserId)) + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) ) && ( - this.Approved == input.Approved || - this.Approved.Equals(input.Approved) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.ApprovedByUserId == input.ApprovedByUserId || - (this.ApprovedByUserId != null && - this.ApprovedByUserId.Equals(input.ApprovedByUserId)) + this.ImageUrl == input.ImageUrl || + (this.ImageUrl != null && + this.ImageUrl.Equals(input.ImageUrl)) ) && ( - this.ApprovedAt == input.ApprovedAt || - (this.ApprovedAt != null && - this.ApprovedAt.Equals(input.ApprovedAt)) + this.SubmittedByUserId == input.SubmittedByUserId || + (this.SubmittedByUserId != null && + this.SubmittedByUserId.Equals(input.SubmittedByUserId)) ); } @@ -258,42 +258,42 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + hashCode = (hashCode * 59) + this.Approved.GetHashCode(); + if (this.ApprovedAt != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.ApprovedAt.GetHashCode(); } - if (this.GroupId != null) + if (this.ApprovedByUserId != null) { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); + hashCode = (hashCode * 59) + this.ApprovedByUserId.GetHashCode(); } - if (this.GalleryId != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.GalleryId.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } if (this.FileId != null) { hashCode = (hashCode * 59) + this.FileId.GetHashCode(); } - if (this.ImageUrl != null) + if (this.GalleryId != null) { - hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); + hashCode = (hashCode * 59) + this.GalleryId.GetHashCode(); } - if (this.CreatedAt != null) + if (this.GroupId != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } - if (this.SubmittedByUserId != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.SubmittedByUserId.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - hashCode = (hashCode * 59) + this.Approved.GetHashCode(); - if (this.ApprovedByUserId != null) + if (this.ImageUrl != null) { - hashCode = (hashCode * 59) + this.ApprovedByUserId.GetHashCode(); + hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } - if (this.ApprovedAt != null) + if (this.SubmittedByUserId != null) { - hashCode = (hashCode * 59) + this.ApprovedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.SubmittedByUserId.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/GroupInstance.cs b/src/VRChat.API/Model/GroupInstance.cs index 0f2bba6e..28de1580 100644 --- a/src/VRChat.API/Model/GroupInstance.cs +++ b/src/VRChat.API/Model/GroupInstance.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -42,9 +42,9 @@ protected GroupInstance() { } /// /// InstanceID can be \"offline\" on User profiles if you are not friends with that user and \"private\" if you are friends and user is in private instance. (required). /// Represents a unique location, consisting of a world identifier and an instance identifier, or \"offline\" if the user is not on your friends list. (required). - /// world (required). /// memberCount (required). - public GroupInstance(string instanceId = default, string location = default, World world = default, int memberCount = default) + /// world (required). + public GroupInstance(string instanceId = default, string location = default, int memberCount = default, World world = default) { // to ensure "instanceId" is required (not null) if (instanceId == null) @@ -58,13 +58,13 @@ public GroupInstance(string instanceId = default, string location = default, Wor throw new ArgumentNullException("location is a required property for GroupInstance and cannot be null"); } this.Location = location; + this.MemberCount = memberCount; // to ensure "world" is required (not null) if (world == null) { throw new ArgumentNullException("world is a required property for GroupInstance and cannot be null"); } this.World = world; - this.MemberCount = memberCount; } /// @@ -87,12 +87,6 @@ public GroupInstance(string instanceId = default, string location = default, Wor [DataMember(Name = "location", IsRequired = true, EmitDefaultValue = true)] public string Location { get; set; } - /// - /// Gets or Sets World - /// - [DataMember(Name = "world", IsRequired = true, EmitDefaultValue = true)] - public World World { get; set; } - /// /// Gets or Sets MemberCount /// @@ -102,6 +96,12 @@ public GroupInstance(string instanceId = default, string location = default, Wor [DataMember(Name = "memberCount", IsRequired = true, EmitDefaultValue = true)] public int MemberCount { get; set; } + /// + /// Gets or Sets World + /// + [DataMember(Name = "world", IsRequired = true, EmitDefaultValue = true)] + public World World { get; set; } + /// /// Returns the string presentation of the object /// @@ -112,8 +112,8 @@ public override string ToString() sb.Append("class GroupInstance {\n"); sb.Append(" InstanceId: ").Append(InstanceId).Append("\n"); sb.Append(" Location: ").Append(Location).Append("\n"); - sb.Append(" World: ").Append(World).Append("\n"); sb.Append(" MemberCount: ").Append(MemberCount).Append("\n"); + sb.Append(" World: ").Append(World).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -159,14 +159,14 @@ public bool Equals(GroupInstance input) (this.Location != null && this.Location.Equals(input.Location)) ) && + ( + this.MemberCount == input.MemberCount || + this.MemberCount.Equals(input.MemberCount) + ) && ( this.World == input.World || (this.World != null && this.World.Equals(input.World)) - ) && - ( - this.MemberCount == input.MemberCount || - this.MemberCount.Equals(input.MemberCount) ); } @@ -187,11 +187,11 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Location.GetHashCode(); } + hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); if (this.World != null) { hashCode = (hashCode * 59) + this.World.GetHashCode(); } - hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/GroupJoinRequestAction.cs b/src/VRChat.API/Model/GroupJoinRequestAction.cs index 9195bdbb..5e056f86 100644 --- a/src/VRChat.API/Model/GroupJoinRequestAction.cs +++ b/src/VRChat.API/Model/GroupJoinRequestAction.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GroupJoinState.cs b/src/VRChat.API/Model/GroupJoinState.cs index 1e1acdb2..a61bebb0 100644 --- a/src/VRChat.API/Model/GroupJoinState.cs +++ b/src/VRChat.API/Model/GroupJoinState.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -45,16 +45,16 @@ public enum GroupJoinState Invite = 2, /// - /// Enum Request for value: request + /// Enum Open for value: open /// - [EnumMember(Value = "request")] - Request = 3, + [EnumMember(Value = "open")] + Open = 3, /// - /// Enum Open for value: open + /// Enum Request for value: request /// - [EnumMember(Value = "open")] - Open = 4 + [EnumMember(Value = "request")] + Request = 4 } } diff --git a/src/VRChat.API/Model/GroupLimitedMember.cs b/src/VRChat.API/Model/GroupLimitedMember.cs index bf292785..a3dd1b26 100644 --- a/src/VRChat.API/Model/GroupLimitedMember.cs +++ b/src/VRChat.API/Model/GroupLimitedMember.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,50 +41,55 @@ public partial class GroupLimitedMember : IEquatable, IValid /// /// Initializes a new instance of the class. /// - /// id. + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. /// groupId. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// hasJoinedFromPurchase. + /// id. /// Whether the user is representing the group. This makes the group show up above the name tag in-game. (default to false). - /// roleIds. - /// mRoleIds. - /// joinedAt. - /// membershipStatus. - /// visibility. /// isSubscribedToAnnouncements (default to false). /// isSubscribedToEventAnnouncements. - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. + /// joinedAt. /// lastPostReadAt. - /// hasJoinedFromPurchase. - public GroupLimitedMember(string id = default, string groupId = default, string userId = default, bool isRepresenting = false, List roleIds = default, List mRoleIds = default, DateTime? joinedAt = default, GroupMemberStatus? membershipStatus = default, string visibility = default, bool isSubscribedToAnnouncements = false, bool isSubscribedToEventAnnouncements = default, DateTime? createdAt = default, DateTime? bannedAt = default, string managerNotes = default, DateTime? lastPostReadAt = default, bool hasJoinedFromPurchase = default) + /// mRoleIds. + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. + /// membershipStatus. + /// roleIds. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// visibility. + public GroupLimitedMember(DateTime? bannedAt = default, DateTime? createdAt = default, string groupId = default, bool hasJoinedFromPurchase = default, string id = default, bool isRepresenting = false, bool isSubscribedToAnnouncements = false, bool isSubscribedToEventAnnouncements = default, DateTime? joinedAt = default, DateTime? lastPostReadAt = default, List mRoleIds = default, string managerNotes = default, GroupMemberStatus? membershipStatus = default, List roleIds = default, string userId = default, string visibility = default) { - this.Id = id; + this.BannedAt = bannedAt; + this.CreatedAt = createdAt; this.GroupId = groupId; - this.UserId = userId; + this.HasJoinedFromPurchase = hasJoinedFromPurchase; + this.Id = id; this.IsRepresenting = isRepresenting; - this.RoleIds = roleIds; - this.MRoleIds = mRoleIds; - this.JoinedAt = joinedAt; - this.MembershipStatus = membershipStatus; - this.Visibility = visibility; this.IsSubscribedToAnnouncements = isSubscribedToAnnouncements; this.IsSubscribedToEventAnnouncements = isSubscribedToEventAnnouncements; - this.CreatedAt = createdAt; - this.BannedAt = bannedAt; - this.ManagerNotes = managerNotes; + this.JoinedAt = joinedAt; this.LastPostReadAt = lastPostReadAt; - this.HasJoinedFromPurchase = hasJoinedFromPurchase; + this.MRoleIds = mRoleIds; + this.ManagerNotes = managerNotes; + this.MembershipStatus = membershipStatus; + this.RoleIds = roleIds; + this.UserId = userId; + this.Visibility = visibility; } /// - /// Gets or Sets Id + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. /// - /* - gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + [DataMember(Name = "bannedAt", EmitDefaultValue = true)] + public DateTime? BannedAt { get; set; } + + /// + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + /// + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + [DataMember(Name = "createdAt", EmitDefaultValue = true)] + public DateTime? CreatedAt { get; set; } /// /// Gets or Sets GroupId @@ -96,14 +101,19 @@ public GroupLimitedMember(string id = default, string groupId = default, string public string GroupId { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets HasJoinedFromPurchase + /// + [DataMember(Name = "hasJoinedFromPurchase", EmitDefaultValue = true)] + public bool HasJoinedFromPurchase { get; set; } + + /// + /// Gets or Sets Id /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 */ - [DataMember(Name = "userId", EmitDefaultValue = false)] - public string UserId { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// /// Whether the user is representing the group. This makes the group show up above the name tag in-game. @@ -116,16 +126,16 @@ public GroupLimitedMember(string id = default, string groupId = default, string public bool IsRepresenting { get; set; } /// - /// Gets or Sets RoleIds + /// Gets or Sets IsSubscribedToAnnouncements /// - [DataMember(Name = "roleIds", EmitDefaultValue = false)] - public List RoleIds { get; set; } + [DataMember(Name = "isSubscribedToAnnouncements", EmitDefaultValue = true)] + public bool IsSubscribedToAnnouncements { get; set; } /// - /// Gets or Sets MRoleIds + /// Gets or Sets IsSubscribedToEventAnnouncements /// - [DataMember(Name = "mRoleIds", EmitDefaultValue = false)] - public List MRoleIds { get; set; } + [DataMember(Name = "isSubscribedToEventAnnouncements", EmitDefaultValue = true)] + public bool IsSubscribedToEventAnnouncements { get; set; } /// /// Gets or Sets JoinedAt @@ -134,58 +144,48 @@ public GroupLimitedMember(string id = default, string groupId = default, string public DateTime? JoinedAt { get; set; } /// - /// Gets or Sets Visibility - /// - /* - visible - */ - [DataMember(Name = "visibility", EmitDefaultValue = false)] - public string Visibility { get; set; } - - /// - /// Gets or Sets IsSubscribedToAnnouncements - /// - [DataMember(Name = "isSubscribedToAnnouncements", EmitDefaultValue = true)] - public bool IsSubscribedToAnnouncements { get; set; } - - /// - /// Gets or Sets IsSubscribedToEventAnnouncements + /// Gets or Sets LastPostReadAt /// - [DataMember(Name = "isSubscribedToEventAnnouncements", EmitDefaultValue = true)] - public bool IsSubscribedToEventAnnouncements { get; set; } + [DataMember(Name = "lastPostReadAt", EmitDefaultValue = true)] + public DateTime? LastPostReadAt { get; set; } /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + /// Gets or Sets MRoleIds /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. - [DataMember(Name = "createdAt", EmitDefaultValue = true)] - public DateTime? CreatedAt { get; set; } + [DataMember(Name = "mRoleIds", EmitDefaultValue = false)] + public List MRoleIds { get; set; } /// /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. /// /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. - [DataMember(Name = "bannedAt", EmitDefaultValue = true)] - public DateTime? BannedAt { get; set; } + [DataMember(Name = "managerNotes", EmitDefaultValue = true)] + public string ManagerNotes { get; set; } /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + /// Gets or Sets RoleIds /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. - [DataMember(Name = "managerNotes", EmitDefaultValue = true)] - public string ManagerNotes { get; set; } + [DataMember(Name = "roleIds", EmitDefaultValue = false)] + public List RoleIds { get; set; } /// - /// Gets or Sets LastPostReadAt + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// - [DataMember(Name = "lastPostReadAt", EmitDefaultValue = true)] - public DateTime? LastPostReadAt { get; set; } + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "userId", EmitDefaultValue = false)] + public string UserId { get; set; } /// - /// Gets or Sets HasJoinedFromPurchase + /// Gets or Sets Visibility /// - [DataMember(Name = "hasJoinedFromPurchase", EmitDefaultValue = true)] - public bool HasJoinedFromPurchase { get; set; } + /* + visible + */ + [DataMember(Name = "visibility", EmitDefaultValue = false)] + public string Visibility { get; set; } /// /// Returns the string presentation of the object @@ -195,22 +195,22 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupLimitedMember {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" BannedAt: ").Append(BannedAt).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" GroupId: ").Append(GroupId).Append("\n"); - sb.Append(" UserId: ").Append(UserId).Append("\n"); + sb.Append(" HasJoinedFromPurchase: ").Append(HasJoinedFromPurchase).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); - sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); - sb.Append(" MRoleIds: ").Append(MRoleIds).Append("\n"); - sb.Append(" JoinedAt: ").Append(JoinedAt).Append("\n"); - sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); - sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append(" IsSubscribedToAnnouncements: ").Append(IsSubscribedToAnnouncements).Append("\n"); sb.Append(" IsSubscribedToEventAnnouncements: ").Append(IsSubscribedToEventAnnouncements).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" BannedAt: ").Append(BannedAt).Append("\n"); - sb.Append(" ManagerNotes: ").Append(ManagerNotes).Append("\n"); + sb.Append(" JoinedAt: ").Append(JoinedAt).Append("\n"); sb.Append(" LastPostReadAt: ").Append(LastPostReadAt).Append("\n"); - sb.Append(" HasJoinedFromPurchase: ").Append(HasJoinedFromPurchase).Append("\n"); + sb.Append(" MRoleIds: ").Append(MRoleIds).Append("\n"); + sb.Append(" ManagerNotes: ").Append(ManagerNotes).Append("\n"); + sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); + sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); + sb.Append(" UserId: ").Append(UserId).Append("\n"); + sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -247,9 +247,14 @@ public bool Equals(GroupLimitedMember input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.BannedAt == input.BannedAt || + (this.BannedAt != null && + this.BannedAt.Equals(input.BannedAt)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( this.GroupId == input.GroupId || @@ -257,25 +262,25 @@ public bool Equals(GroupLimitedMember input) this.GroupId.Equals(input.GroupId)) ) && ( - this.UserId == input.UserId || - (this.UserId != null && - this.UserId.Equals(input.UserId)) + this.HasJoinedFromPurchase == input.HasJoinedFromPurchase || + this.HasJoinedFromPurchase.Equals(input.HasJoinedFromPurchase) + ) && + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( this.IsRepresenting == input.IsRepresenting || this.IsRepresenting.Equals(input.IsRepresenting) ) && ( - this.RoleIds == input.RoleIds || - this.RoleIds != null && - input.RoleIds != null && - this.RoleIds.SequenceEqual(input.RoleIds) + this.IsSubscribedToAnnouncements == input.IsSubscribedToAnnouncements || + this.IsSubscribedToAnnouncements.Equals(input.IsSubscribedToAnnouncements) ) && ( - this.MRoleIds == input.MRoleIds || - this.MRoleIds != null && - input.MRoleIds != null && - this.MRoleIds.SequenceEqual(input.MRoleIds) + this.IsSubscribedToEventAnnouncements == input.IsSubscribedToEventAnnouncements || + this.IsSubscribedToEventAnnouncements.Equals(input.IsSubscribedToEventAnnouncements) ) && ( this.JoinedAt == input.JoinedAt || @@ -283,45 +288,40 @@ public bool Equals(GroupLimitedMember input) this.JoinedAt.Equals(input.JoinedAt)) ) && ( - this.MembershipStatus == input.MembershipStatus || - this.MembershipStatus.Equals(input.MembershipStatus) - ) && - ( - this.Visibility == input.Visibility || - (this.Visibility != null && - this.Visibility.Equals(input.Visibility)) - ) && - ( - this.IsSubscribedToAnnouncements == input.IsSubscribedToAnnouncements || - this.IsSubscribedToAnnouncements.Equals(input.IsSubscribedToAnnouncements) + this.LastPostReadAt == input.LastPostReadAt || + (this.LastPostReadAt != null && + this.LastPostReadAt.Equals(input.LastPostReadAt)) ) && ( - this.IsSubscribedToEventAnnouncements == input.IsSubscribedToEventAnnouncements || - this.IsSubscribedToEventAnnouncements.Equals(input.IsSubscribedToEventAnnouncements) + this.MRoleIds == input.MRoleIds || + this.MRoleIds != null && + input.MRoleIds != null && + this.MRoleIds.SequenceEqual(input.MRoleIds) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.ManagerNotes == input.ManagerNotes || + (this.ManagerNotes != null && + this.ManagerNotes.Equals(input.ManagerNotes)) ) && ( - this.BannedAt == input.BannedAt || - (this.BannedAt != null && - this.BannedAt.Equals(input.BannedAt)) + this.MembershipStatus == input.MembershipStatus || + this.MembershipStatus.Equals(input.MembershipStatus) ) && ( - this.ManagerNotes == input.ManagerNotes || - (this.ManagerNotes != null && - this.ManagerNotes.Equals(input.ManagerNotes)) + this.RoleIds == input.RoleIds || + this.RoleIds != null && + input.RoleIds != null && + this.RoleIds.SequenceEqual(input.RoleIds) ) && ( - this.LastPostReadAt == input.LastPostReadAt || - (this.LastPostReadAt != null && - this.LastPostReadAt.Equals(input.LastPostReadAt)) + this.UserId == input.UserId || + (this.UserId != null && + this.UserId.Equals(input.UserId)) ) && ( - this.HasJoinedFromPurchase == input.HasJoinedFromPurchase || - this.HasJoinedFromPurchase.Equals(input.HasJoinedFromPurchase) + this.Visibility == input.Visibility || + (this.Visibility != null && + this.Visibility.Equals(input.Visibility)) ); } @@ -334,55 +334,55 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + if (this.BannedAt != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.BannedAt.GetHashCode(); + } + if (this.CreatedAt != null) + { + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } if (this.GroupId != null) { hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } - if (this.UserId != null) + hashCode = (hashCode * 59) + this.HasJoinedFromPurchase.GetHashCode(); + if (this.Id != null) { - hashCode = (hashCode * 59) + this.UserId.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); - if (this.RoleIds != null) + hashCode = (hashCode * 59) + this.IsSubscribedToAnnouncements.GetHashCode(); + hashCode = (hashCode * 59) + this.IsSubscribedToEventAnnouncements.GetHashCode(); + if (this.JoinedAt != null) { - hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); + hashCode = (hashCode * 59) + this.JoinedAt.GetHashCode(); + } + if (this.LastPostReadAt != null) + { + hashCode = (hashCode * 59) + this.LastPostReadAt.GetHashCode(); } if (this.MRoleIds != null) { hashCode = (hashCode * 59) + this.MRoleIds.GetHashCode(); } - if (this.JoinedAt != null) + if (this.ManagerNotes != null) { - hashCode = (hashCode * 59) + this.JoinedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.ManagerNotes.GetHashCode(); } hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); - if (this.Visibility != null) - { - hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsSubscribedToAnnouncements.GetHashCode(); - hashCode = (hashCode * 59) + this.IsSubscribedToEventAnnouncements.GetHashCode(); - if (this.CreatedAt != null) - { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); - } - if (this.BannedAt != null) + if (this.RoleIds != null) { - hashCode = (hashCode * 59) + this.BannedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); } - if (this.ManagerNotes != null) + if (this.UserId != null) { - hashCode = (hashCode * 59) + this.ManagerNotes.GetHashCode(); + hashCode = (hashCode * 59) + this.UserId.GetHashCode(); } - if (this.LastPostReadAt != null) + if (this.Visibility != null) { - hashCode = (hashCode * 59) + this.LastPostReadAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); } - hashCode = (hashCode * 59) + this.HasJoinedFromPurchase.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/GroupMember.cs b/src/VRChat.API/Model/GroupMember.cs index 21f71de1..db493f88 100644 --- a/src/VRChat.API/Model/GroupMember.cs +++ b/src/VRChat.API/Model/GroupMember.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -43,44 +43,44 @@ public partial class GroupMember : IEquatable, IValidatableObject /// /// acceptedByDisplayName. /// acceptedById. - /// id. + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. /// groupId. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// hasJoinedFromPurchase. + /// id. /// Whether the user is representing the group. This makes the group show up above the name tag in-game. (default to false). - /// user. - /// roleIds. - /// mRoleIds. - /// joinedAt. - /// membershipStatus. - /// visibility. /// isSubscribedToAnnouncements (default to false). /// isSubscribedToEventAnnouncements. - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. + /// joinedAt. /// lastPostReadAt. - /// hasJoinedFromPurchase. - public GroupMember(string acceptedByDisplayName = default, string acceptedById = default, string id = default, string groupId = default, string userId = default, bool isRepresenting = false, GroupMemberLimitedUser user = default, List roleIds = default, List mRoleIds = default, DateTime? joinedAt = default, GroupMemberStatus? membershipStatus = default, string visibility = default, bool isSubscribedToAnnouncements = false, bool isSubscribedToEventAnnouncements = default, DateTime? createdAt = default, DateTime? bannedAt = default, string managerNotes = default, DateTime? lastPostReadAt = default, bool hasJoinedFromPurchase = default) + /// mRoleIds. + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user.. + /// membershipStatus. + /// roleIds. + /// user. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// visibility. + public GroupMember(string acceptedByDisplayName = default, string acceptedById = default, DateTime? bannedAt = default, DateTime? createdAt = default, string groupId = default, bool hasJoinedFromPurchase = default, string id = default, bool isRepresenting = false, bool isSubscribedToAnnouncements = false, bool isSubscribedToEventAnnouncements = default, DateTime? joinedAt = default, DateTime? lastPostReadAt = default, List mRoleIds = default, string managerNotes = default, GroupMemberStatus? membershipStatus = default, List roleIds = default, GroupMemberLimitedUser user = default, string userId = default, string visibility = default) { this.AcceptedByDisplayName = acceptedByDisplayName; this.AcceptedById = acceptedById; - this.Id = id; + this.BannedAt = bannedAt; + this.CreatedAt = createdAt; this.GroupId = groupId; - this.UserId = userId; + this.HasJoinedFromPurchase = hasJoinedFromPurchase; + this.Id = id; this.IsRepresenting = isRepresenting; - this.User = user; - this.RoleIds = roleIds; - this.MRoleIds = mRoleIds; - this.JoinedAt = joinedAt; - this.MembershipStatus = membershipStatus; - this.Visibility = visibility; this.IsSubscribedToAnnouncements = isSubscribedToAnnouncements; this.IsSubscribedToEventAnnouncements = isSubscribedToEventAnnouncements; - this.CreatedAt = createdAt; - this.BannedAt = bannedAt; - this.ManagerNotes = managerNotes; + this.JoinedAt = joinedAt; this.LastPostReadAt = lastPostReadAt; - this.HasJoinedFromPurchase = hasJoinedFromPurchase; + this.MRoleIds = mRoleIds; + this.ManagerNotes = managerNotes; + this.MembershipStatus = membershipStatus; + this.RoleIds = roleIds; + this.User = user; + this.UserId = userId; + this.Visibility = visibility; } /// @@ -96,13 +96,18 @@ public GroupMember(string acceptedByDisplayName = default, string acceptedById = public string AcceptedById { get; set; } /// - /// Gets or Sets Id + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. /// - /* - gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + [DataMember(Name = "bannedAt", EmitDefaultValue = true)] + public DateTime? BannedAt { get; set; } + + /// + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + /// + /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + [DataMember(Name = "createdAt", EmitDefaultValue = true)] + public DateTime? CreatedAt { get; set; } /// /// Gets or Sets GroupId @@ -114,14 +119,19 @@ public GroupMember(string acceptedByDisplayName = default, string acceptedById = public string GroupId { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets HasJoinedFromPurchase + /// + [DataMember(Name = "hasJoinedFromPurchase", EmitDefaultValue = true)] + public bool HasJoinedFromPurchase { get; set; } + + /// + /// Gets or Sets Id /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 */ - [DataMember(Name = "userId", EmitDefaultValue = false)] - public string UserId { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// /// Whether the user is representing the group. This makes the group show up above the name tag in-game. @@ -134,22 +144,16 @@ public GroupMember(string acceptedByDisplayName = default, string acceptedById = public bool IsRepresenting { get; set; } /// - /// Gets or Sets User - /// - [DataMember(Name = "user", EmitDefaultValue = false)] - public GroupMemberLimitedUser User { get; set; } - - /// - /// Gets or Sets RoleIds + /// Gets or Sets IsSubscribedToAnnouncements /// - [DataMember(Name = "roleIds", EmitDefaultValue = false)] - public List RoleIds { get; set; } + [DataMember(Name = "isSubscribedToAnnouncements", EmitDefaultValue = true)] + public bool IsSubscribedToAnnouncements { get; set; } /// - /// Gets or Sets MRoleIds + /// Gets or Sets IsSubscribedToEventAnnouncements /// - [DataMember(Name = "mRoleIds", EmitDefaultValue = false)] - public List MRoleIds { get; set; } + [DataMember(Name = "isSubscribedToEventAnnouncements", EmitDefaultValue = true)] + public bool IsSubscribedToEventAnnouncements { get; set; } /// /// Gets or Sets JoinedAt @@ -158,58 +162,54 @@ public GroupMember(string acceptedByDisplayName = default, string acceptedById = public DateTime? JoinedAt { get; set; } /// - /// Gets or Sets Visibility - /// - /* - visible - */ - [DataMember(Name = "visibility", EmitDefaultValue = false)] - public string Visibility { get; set; } - - /// - /// Gets or Sets IsSubscribedToAnnouncements + /// Gets or Sets LastPostReadAt /// - [DataMember(Name = "isSubscribedToAnnouncements", EmitDefaultValue = true)] - public bool IsSubscribedToAnnouncements { get; set; } + [DataMember(Name = "lastPostReadAt", EmitDefaultValue = true)] + public DateTime? LastPostReadAt { get; set; } /// - /// Gets or Sets IsSubscribedToEventAnnouncements + /// Gets or Sets MRoleIds /// - [DataMember(Name = "isSubscribedToEventAnnouncements", EmitDefaultValue = true)] - public bool IsSubscribedToEventAnnouncements { get; set; } + [DataMember(Name = "mRoleIds", EmitDefaultValue = false)] + public List MRoleIds { get; set; } /// /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. /// /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. - [DataMember(Name = "createdAt", EmitDefaultValue = true)] - public DateTime? CreatedAt { get; set; } + [DataMember(Name = "managerNotes", EmitDefaultValue = true)] + public string ManagerNotes { get; set; } /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + /// Gets or Sets RoleIds /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. - [DataMember(Name = "bannedAt", EmitDefaultValue = true)] - public DateTime? BannedAt { get; set; } + [DataMember(Name = "roleIds", EmitDefaultValue = false)] + public List RoleIds { get; set; } /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. + /// Gets or Sets User /// - /// Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user. - [DataMember(Name = "managerNotes", EmitDefaultValue = true)] - public string ManagerNotes { get; set; } + [DataMember(Name = "user", EmitDefaultValue = false)] + public GroupMemberLimitedUser User { get; set; } /// - /// Gets or Sets LastPostReadAt + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// - [DataMember(Name = "lastPostReadAt", EmitDefaultValue = true)] - public DateTime? LastPostReadAt { get; set; } + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "userId", EmitDefaultValue = false)] + public string UserId { get; set; } /// - /// Gets or Sets HasJoinedFromPurchase + /// Gets or Sets Visibility /// - [DataMember(Name = "hasJoinedFromPurchase", EmitDefaultValue = true)] - public bool HasJoinedFromPurchase { get; set; } + /* + visible + */ + [DataMember(Name = "visibility", EmitDefaultValue = false)] + public string Visibility { get; set; } /// /// Returns the string presentation of the object @@ -221,23 +221,23 @@ public override string ToString() sb.Append("class GroupMember {\n"); sb.Append(" AcceptedByDisplayName: ").Append(AcceptedByDisplayName).Append("\n"); sb.Append(" AcceptedById: ").Append(AcceptedById).Append("\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" BannedAt: ").Append(BannedAt).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" GroupId: ").Append(GroupId).Append("\n"); - sb.Append(" UserId: ").Append(UserId).Append("\n"); + sb.Append(" HasJoinedFromPurchase: ").Append(HasJoinedFromPurchase).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); - sb.Append(" User: ").Append(User).Append("\n"); - sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); - sb.Append(" MRoleIds: ").Append(MRoleIds).Append("\n"); - sb.Append(" JoinedAt: ").Append(JoinedAt).Append("\n"); - sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); - sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append(" IsSubscribedToAnnouncements: ").Append(IsSubscribedToAnnouncements).Append("\n"); sb.Append(" IsSubscribedToEventAnnouncements: ").Append(IsSubscribedToEventAnnouncements).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" BannedAt: ").Append(BannedAt).Append("\n"); - sb.Append(" ManagerNotes: ").Append(ManagerNotes).Append("\n"); + sb.Append(" JoinedAt: ").Append(JoinedAt).Append("\n"); sb.Append(" LastPostReadAt: ").Append(LastPostReadAt).Append("\n"); - sb.Append(" HasJoinedFromPurchase: ").Append(HasJoinedFromPurchase).Append("\n"); + sb.Append(" MRoleIds: ").Append(MRoleIds).Append("\n"); + sb.Append(" ManagerNotes: ").Append(ManagerNotes).Append("\n"); + sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); + sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); + sb.Append(" User: ").Append(User).Append("\n"); + sb.Append(" UserId: ").Append(UserId).Append("\n"); + sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -284,9 +284,14 @@ public bool Equals(GroupMember input) this.AcceptedById.Equals(input.AcceptedById)) ) && ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.BannedAt == input.BannedAt || + (this.BannedAt != null && + this.BannedAt.Equals(input.BannedAt)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( this.GroupId == input.GroupId || @@ -294,30 +299,25 @@ public bool Equals(GroupMember input) this.GroupId.Equals(input.GroupId)) ) && ( - this.UserId == input.UserId || - (this.UserId != null && - this.UserId.Equals(input.UserId)) + this.HasJoinedFromPurchase == input.HasJoinedFromPurchase || + this.HasJoinedFromPurchase.Equals(input.HasJoinedFromPurchase) ) && ( - this.IsRepresenting == input.IsRepresenting || - this.IsRepresenting.Equals(input.IsRepresenting) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.User == input.User || - (this.User != null && - this.User.Equals(input.User)) + this.IsRepresenting == input.IsRepresenting || + this.IsRepresenting.Equals(input.IsRepresenting) ) && ( - this.RoleIds == input.RoleIds || - this.RoleIds != null && - input.RoleIds != null && - this.RoleIds.SequenceEqual(input.RoleIds) + this.IsSubscribedToAnnouncements == input.IsSubscribedToAnnouncements || + this.IsSubscribedToAnnouncements.Equals(input.IsSubscribedToAnnouncements) ) && ( - this.MRoleIds == input.MRoleIds || - this.MRoleIds != null && - input.MRoleIds != null && - this.MRoleIds.SequenceEqual(input.MRoleIds) + this.IsSubscribedToEventAnnouncements == input.IsSubscribedToEventAnnouncements || + this.IsSubscribedToEventAnnouncements.Equals(input.IsSubscribedToEventAnnouncements) ) && ( this.JoinedAt == input.JoinedAt || @@ -325,45 +325,45 @@ public bool Equals(GroupMember input) this.JoinedAt.Equals(input.JoinedAt)) ) && ( - this.MembershipStatus == input.MembershipStatus || - this.MembershipStatus.Equals(input.MembershipStatus) - ) && - ( - this.Visibility == input.Visibility || - (this.Visibility != null && - this.Visibility.Equals(input.Visibility)) + this.LastPostReadAt == input.LastPostReadAt || + (this.LastPostReadAt != null && + this.LastPostReadAt.Equals(input.LastPostReadAt)) ) && ( - this.IsSubscribedToAnnouncements == input.IsSubscribedToAnnouncements || - this.IsSubscribedToAnnouncements.Equals(input.IsSubscribedToAnnouncements) + this.MRoleIds == input.MRoleIds || + this.MRoleIds != null && + input.MRoleIds != null && + this.MRoleIds.SequenceEqual(input.MRoleIds) ) && ( - this.IsSubscribedToEventAnnouncements == input.IsSubscribedToEventAnnouncements || - this.IsSubscribedToEventAnnouncements.Equals(input.IsSubscribedToEventAnnouncements) + this.ManagerNotes == input.ManagerNotes || + (this.ManagerNotes != null && + this.ManagerNotes.Equals(input.ManagerNotes)) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.MembershipStatus == input.MembershipStatus || + this.MembershipStatus.Equals(input.MembershipStatus) ) && ( - this.BannedAt == input.BannedAt || - (this.BannedAt != null && - this.BannedAt.Equals(input.BannedAt)) + this.RoleIds == input.RoleIds || + this.RoleIds != null && + input.RoleIds != null && + this.RoleIds.SequenceEqual(input.RoleIds) ) && ( - this.ManagerNotes == input.ManagerNotes || - (this.ManagerNotes != null && - this.ManagerNotes.Equals(input.ManagerNotes)) + this.User == input.User || + (this.User != null && + this.User.Equals(input.User)) ) && ( - this.LastPostReadAt == input.LastPostReadAt || - (this.LastPostReadAt != null && - this.LastPostReadAt.Equals(input.LastPostReadAt)) + this.UserId == input.UserId || + (this.UserId != null && + this.UserId.Equals(input.UserId)) ) && ( - this.HasJoinedFromPurchase == input.HasJoinedFromPurchase || - this.HasJoinedFromPurchase.Equals(input.HasJoinedFromPurchase) + this.Visibility == input.Visibility || + (this.Visibility != null && + this.Visibility.Equals(input.Visibility)) ); } @@ -384,59 +384,59 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.AcceptedById.GetHashCode(); } - if (this.Id != null) + if (this.BannedAt != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.BannedAt.GetHashCode(); + } + if (this.CreatedAt != null) + { + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } if (this.GroupId != null) { hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } - if (this.UserId != null) + hashCode = (hashCode * 59) + this.HasJoinedFromPurchase.GetHashCode(); + if (this.Id != null) { - hashCode = (hashCode * 59) + this.UserId.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); - if (this.User != null) + hashCode = (hashCode * 59) + this.IsSubscribedToAnnouncements.GetHashCode(); + hashCode = (hashCode * 59) + this.IsSubscribedToEventAnnouncements.GetHashCode(); + if (this.JoinedAt != null) { - hashCode = (hashCode * 59) + this.User.GetHashCode(); + hashCode = (hashCode * 59) + this.JoinedAt.GetHashCode(); } - if (this.RoleIds != null) + if (this.LastPostReadAt != null) { - hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); + hashCode = (hashCode * 59) + this.LastPostReadAt.GetHashCode(); } if (this.MRoleIds != null) { hashCode = (hashCode * 59) + this.MRoleIds.GetHashCode(); } - if (this.JoinedAt != null) + if (this.ManagerNotes != null) { - hashCode = (hashCode * 59) + this.JoinedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.ManagerNotes.GetHashCode(); } hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); - if (this.Visibility != null) - { - hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsSubscribedToAnnouncements.GetHashCode(); - hashCode = (hashCode * 59) + this.IsSubscribedToEventAnnouncements.GetHashCode(); - if (this.CreatedAt != null) + if (this.RoleIds != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); } - if (this.BannedAt != null) + if (this.User != null) { - hashCode = (hashCode * 59) + this.BannedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.User.GetHashCode(); } - if (this.ManagerNotes != null) + if (this.UserId != null) { - hashCode = (hashCode * 59) + this.ManagerNotes.GetHashCode(); + hashCode = (hashCode * 59) + this.UserId.GetHashCode(); } - if (this.LastPostReadAt != null) + if (this.Visibility != null) { - hashCode = (hashCode * 59) + this.LastPostReadAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); } - hashCode = (hashCode * 59) + this.HasJoinedFromPurchase.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/GroupMemberLimitedUser.cs b/src/VRChat.API/Model/GroupMemberLimitedUser.cs index 44191e6e..8ba08305 100644 --- a/src/VRChat.API/Model/GroupMemberLimitedUser.cs +++ b/src/VRChat.API/Model/GroupMemberLimitedUser.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,45 +35,41 @@ public partial class GroupMemberLimitedUser : IEquatable /// /// Initializes a new instance of the class. /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// currentAvatarTags. + /// currentAvatarThumbnailImageUrl. /// displayName. - /// thumbnailUrl. /// iconUrl. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// profilePicOverride. - /// currentAvatarThumbnailImageUrl. - /// currentAvatarTags. - public GroupMemberLimitedUser(string id = default, string displayName = default, string thumbnailUrl = default, string iconUrl = default, string profilePicOverride = default, string currentAvatarThumbnailImageUrl = default, List currentAvatarTags = default) + /// thumbnailUrl. + public GroupMemberLimitedUser(List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, string displayName = default, string iconUrl = default, string id = default, string profilePicOverride = default, string thumbnailUrl = default) { - this.Id = id; + this.CurrentAvatarTags = currentAvatarTags; + this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; this.DisplayName = displayName; - this.ThumbnailUrl = thumbnailUrl; this.IconUrl = iconUrl; + this.Id = id; this.ProfilePicOverride = profilePicOverride; - this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; - this.CurrentAvatarTags = currentAvatarTags; + this.ThumbnailUrl = thumbnailUrl; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets CurrentAvatarTags /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "currentAvatarTags", EmitDefaultValue = false)] + public List CurrentAvatarTags { get; set; } /// - /// Gets or Sets DisplayName + /// Gets or Sets CurrentAvatarThumbnailImageUrl /// - [DataMember(Name = "displayName", EmitDefaultValue = false)] - public string DisplayName { get; set; } + [DataMember(Name = "currentAvatarThumbnailImageUrl", EmitDefaultValue = true)] + public string CurrentAvatarThumbnailImageUrl { get; set; } /// - /// Gets or Sets ThumbnailUrl + /// Gets or Sets DisplayName /// - [DataMember(Name = "thumbnailUrl", EmitDefaultValue = true)] - public string ThumbnailUrl { get; set; } + [DataMember(Name = "displayName", EmitDefaultValue = false)] + public string DisplayName { get; set; } /// /// Gets or Sets IconUrl @@ -82,22 +78,26 @@ public GroupMemberLimitedUser(string id = default, string displayName = default, public string IconUrl { get; set; } /// - /// Gets or Sets ProfilePicOverride + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// - [DataMember(Name = "profilePicOverride", EmitDefaultValue = false)] - public string ProfilePicOverride { get; set; } + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// - /// Gets or Sets CurrentAvatarThumbnailImageUrl + /// Gets or Sets ProfilePicOverride /// - [DataMember(Name = "currentAvatarThumbnailImageUrl", EmitDefaultValue = true)] - public string CurrentAvatarThumbnailImageUrl { get; set; } + [DataMember(Name = "profilePicOverride", EmitDefaultValue = false)] + public string ProfilePicOverride { get; set; } /// - /// Gets or Sets CurrentAvatarTags + /// Gets or Sets ThumbnailUrl /// - [DataMember(Name = "currentAvatarTags", EmitDefaultValue = false)] - public List CurrentAvatarTags { get; set; } + [DataMember(Name = "thumbnailUrl", EmitDefaultValue = true)] + public string ThumbnailUrl { get; set; } /// /// Returns the string presentation of the object @@ -107,13 +107,13 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupMemberLimitedUser {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); - sb.Append(" ThumbnailUrl: ").Append(ThumbnailUrl).Append("\n"); sb.Append(" IconUrl: ").Append(IconUrl).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ProfilePicOverride: ").Append(ProfilePicOverride).Append("\n"); - sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); - sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" ThumbnailUrl: ").Append(ThumbnailUrl).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -150,40 +150,40 @@ public bool Equals(GroupMemberLimitedUser input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.CurrentAvatarTags == input.CurrentAvatarTags || + this.CurrentAvatarTags != null && + input.CurrentAvatarTags != null && + this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) + ) && + ( + this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || + (this.CurrentAvatarThumbnailImageUrl != null && + this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) ) && ( this.DisplayName == input.DisplayName || (this.DisplayName != null && this.DisplayName.Equals(input.DisplayName)) ) && - ( - this.ThumbnailUrl == input.ThumbnailUrl || - (this.ThumbnailUrl != null && - this.ThumbnailUrl.Equals(input.ThumbnailUrl)) - ) && ( this.IconUrl == input.IconUrl || (this.IconUrl != null && this.IconUrl.Equals(input.IconUrl)) ) && + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && ( this.ProfilePicOverride == input.ProfilePicOverride || (this.ProfilePicOverride != null && this.ProfilePicOverride.Equals(input.ProfilePicOverride)) ) && ( - this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || - (this.CurrentAvatarThumbnailImageUrl != null && - this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) - ) && - ( - this.CurrentAvatarTags == input.CurrentAvatarTags || - this.CurrentAvatarTags != null && - input.CurrentAvatarTags != null && - this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) + this.ThumbnailUrl == input.ThumbnailUrl || + (this.ThumbnailUrl != null && + this.ThumbnailUrl.Equals(input.ThumbnailUrl)) ); } @@ -196,33 +196,33 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + if (this.CurrentAvatarTags != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); } - if (this.DisplayName != null) + if (this.CurrentAvatarThumbnailImageUrl != null) { - hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); + hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); } - if (this.ThumbnailUrl != null) + if (this.DisplayName != null) { - hashCode = (hashCode * 59) + this.ThumbnailUrl.GetHashCode(); + hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } if (this.IconUrl != null) { hashCode = (hashCode * 59) + this.IconUrl.GetHashCode(); } - if (this.ProfilePicOverride != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.ProfilePicOverride.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - if (this.CurrentAvatarThumbnailImageUrl != null) + if (this.ProfilePicOverride != null) { - hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); + hashCode = (hashCode * 59) + this.ProfilePicOverride.GetHashCode(); } - if (this.CurrentAvatarTags != null) + if (this.ThumbnailUrl != null) { - hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); + hashCode = (hashCode * 59) + this.ThumbnailUrl.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/GroupMemberStatus.cs b/src/VRChat.API/Model/GroupMemberStatus.cs index d1e08d9c..0373ec9b 100644 --- a/src/VRChat.API/Model/GroupMemberStatus.cs +++ b/src/VRChat.API/Model/GroupMemberStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,34 +33,34 @@ namespace VRChat.API.Model public enum GroupMemberStatus { /// - /// Enum Inactive for value: inactive + /// Enum Banned for value: banned /// - [EnumMember(Value = "inactive")] - Inactive = 1, + [EnumMember(Value = "banned")] + Banned = 1, /// - /// Enum Member for value: member + /// Enum Inactive for value: inactive /// - [EnumMember(Value = "member")] - Member = 2, + [EnumMember(Value = "inactive")] + Inactive = 2, /// - /// Enum Requested for value: requested + /// Enum Invited for value: invited /// - [EnumMember(Value = "requested")] - Requested = 3, + [EnumMember(Value = "invited")] + Invited = 3, /// - /// Enum Invited for value: invited + /// Enum Member for value: member /// - [EnumMember(Value = "invited")] - Invited = 4, + [EnumMember(Value = "member")] + Member = 4, /// - /// Enum Banned for value: banned + /// Enum Requested for value: requested /// - [EnumMember(Value = "banned")] - Banned = 5, + [EnumMember(Value = "requested")] + Requested = 5, /// /// Enum Userblocked for value: userblocked diff --git a/src/VRChat.API/Model/GroupMyMember.cs b/src/VRChat.API/Model/GroupMyMember.cs index efd800e6..80ceeb7a 100644 --- a/src/VRChat.API/Model/GroupMyMember.cs +++ b/src/VRChat.API/Model/GroupMyMember.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,84 +35,50 @@ public partial class GroupMyMember : IEquatable, IValidatableObje /// /// Initializes a new instance of the class. /// - /// id. - /// groupId. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// roleIds. /// acceptedByDisplayName. /// acceptedById. + /// bannedAt. /// createdAt. - /// managerNotes. - /// membershipStatus. + /// groupId. + /// has2FA (default to false). + /// hasJoinedFromPurchase (default to false). + /// id. + /// isRepresenting (default to false). /// isSubscribedToAnnouncements (default to true). /// isSubscribedToEventAnnouncements. - /// visibility. - /// isRepresenting (default to false). /// joinedAt. - /// bannedAt. - /// has2FA (default to false). - /// hasJoinedFromPurchase (default to false). /// lastPostReadAt. /// mRoleIds. + /// managerNotes. + /// membershipStatus. /// permissions. - public GroupMyMember(string id = default, string groupId = default, string userId = default, List roleIds = default, string acceptedByDisplayName = default, string acceptedById = default, DateTime createdAt = default, string managerNotes = default, string membershipStatus = default, bool isSubscribedToAnnouncements = true, bool isSubscribedToEventAnnouncements = default, string visibility = default, bool isRepresenting = false, DateTime joinedAt = default, string bannedAt = default, bool has2FA = false, bool hasJoinedFromPurchase = false, DateTime? lastPostReadAt = default, List mRoleIds = default, List permissions = default) + /// roleIds. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// visibility. + public GroupMyMember(string acceptedByDisplayName = default, string acceptedById = default, string bannedAt = default, DateTime createdAt = default, string groupId = default, bool has2FA = false, bool hasJoinedFromPurchase = false, string id = default, bool isRepresenting = false, bool isSubscribedToAnnouncements = true, bool isSubscribedToEventAnnouncements = default, DateTime joinedAt = default, DateTime? lastPostReadAt = default, List mRoleIds = default, string managerNotes = default, string membershipStatus = default, List permissions = default, List roleIds = default, string userId = default, string visibility = default) { - this.Id = id; - this.GroupId = groupId; - this.UserId = userId; - this.RoleIds = roleIds; this.AcceptedByDisplayName = acceptedByDisplayName; this.AcceptedById = acceptedById; + this.BannedAt = bannedAt; this.CreatedAt = createdAt; - this.ManagerNotes = managerNotes; - this.MembershipStatus = membershipStatus; + this.GroupId = groupId; + this.Has2FA = has2FA; + this.HasJoinedFromPurchase = hasJoinedFromPurchase; + this.Id = id; + this.IsRepresenting = isRepresenting; this.IsSubscribedToAnnouncements = isSubscribedToAnnouncements; this.IsSubscribedToEventAnnouncements = isSubscribedToEventAnnouncements; - this.Visibility = visibility; - this.IsRepresenting = isRepresenting; this.JoinedAt = joinedAt; - this.BannedAt = bannedAt; - this.Has2FA = has2FA; - this.HasJoinedFromPurchase = hasJoinedFromPurchase; this.LastPostReadAt = lastPostReadAt; this.MRoleIds = mRoleIds; + this.ManagerNotes = managerNotes; + this.MembershipStatus = membershipStatus; this.Permissions = permissions; + this.RoleIds = roleIds; + this.UserId = userId; + this.Visibility = visibility; } - /// - /// Gets or Sets Id - /// - /* - gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } - - /// - /// Gets or Sets GroupId - /// - /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 - */ - [DataMember(Name = "groupId", EmitDefaultValue = false)] - public string GroupId { get; set; } - - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "userId", EmitDefaultValue = false)] - public string UserId { get; set; } - - /// - /// Gets or Sets RoleIds - /// - [DataMember(Name = "roleIds", EmitDefaultValue = false)] - public List RoleIds { get; set; } - /// /// Gets or Sets AcceptedByDisplayName /// @@ -126,46 +92,46 @@ public GroupMyMember(string id = default, string groupId = default, string userI public string AcceptedById { get; set; } /// - /// Gets or Sets CreatedAt + /// Gets or Sets BannedAt /// - [DataMember(Name = "createdAt", EmitDefaultValue = false)] - public DateTime CreatedAt { get; set; } + [DataMember(Name = "bannedAt", EmitDefaultValue = true)] + public string BannedAt { get; set; } /// - /// Gets or Sets ManagerNotes + /// Gets or Sets CreatedAt /// - [DataMember(Name = "managerNotes", EmitDefaultValue = false)] - public string ManagerNotes { get; set; } + [DataMember(Name = "createdAt", EmitDefaultValue = false)] + public DateTime CreatedAt { get; set; } /// - /// Gets or Sets MembershipStatus + /// Gets or Sets GroupId /// /* - member + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 */ - [DataMember(Name = "membershipStatus", EmitDefaultValue = false)] - public string MembershipStatus { get; set; } + [DataMember(Name = "groupId", EmitDefaultValue = false)] + public string GroupId { get; set; } /// - /// Gets or Sets IsSubscribedToAnnouncements + /// Gets or Sets Has2FA /// - [DataMember(Name = "isSubscribedToAnnouncements", EmitDefaultValue = true)] - public bool IsSubscribedToAnnouncements { get; set; } + [DataMember(Name = "has2FA", EmitDefaultValue = true)] + public bool Has2FA { get; set; } /// - /// Gets or Sets IsSubscribedToEventAnnouncements + /// Gets or Sets HasJoinedFromPurchase /// - [DataMember(Name = "isSubscribedToEventAnnouncements", EmitDefaultValue = true)] - public bool IsSubscribedToEventAnnouncements { get; set; } + [DataMember(Name = "hasJoinedFromPurchase", EmitDefaultValue = true)] + public bool HasJoinedFromPurchase { get; set; } /// - /// Gets or Sets Visibility + /// Gets or Sets Id /// /* - visible + gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 */ - [DataMember(Name = "visibility", EmitDefaultValue = false)] - public string Visibility { get; set; } + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// /// Gets or Sets IsRepresenting @@ -174,28 +140,22 @@ public GroupMyMember(string id = default, string groupId = default, string userI public bool IsRepresenting { get; set; } /// - /// Gets or Sets JoinedAt - /// - [DataMember(Name = "joinedAt", EmitDefaultValue = false)] - public DateTime JoinedAt { get; set; } - - /// - /// Gets or Sets BannedAt + /// Gets or Sets IsSubscribedToAnnouncements /// - [DataMember(Name = "bannedAt", EmitDefaultValue = true)] - public string BannedAt { get; set; } + [DataMember(Name = "isSubscribedToAnnouncements", EmitDefaultValue = true)] + public bool IsSubscribedToAnnouncements { get; set; } /// - /// Gets or Sets Has2FA + /// Gets or Sets IsSubscribedToEventAnnouncements /// - [DataMember(Name = "has2FA", EmitDefaultValue = true)] - public bool Has2FA { get; set; } + [DataMember(Name = "isSubscribedToEventAnnouncements", EmitDefaultValue = true)] + public bool IsSubscribedToEventAnnouncements { get; set; } /// - /// Gets or Sets HasJoinedFromPurchase + /// Gets or Sets JoinedAt /// - [DataMember(Name = "hasJoinedFromPurchase", EmitDefaultValue = true)] - public bool HasJoinedFromPurchase { get; set; } + [DataMember(Name = "joinedAt", EmitDefaultValue = false)] + public DateTime JoinedAt { get; set; } /// /// Gets or Sets LastPostReadAt @@ -209,12 +169,52 @@ public GroupMyMember(string id = default, string groupId = default, string userI [DataMember(Name = "mRoleIds", EmitDefaultValue = false)] public List MRoleIds { get; set; } + /// + /// Gets or Sets ManagerNotes + /// + [DataMember(Name = "managerNotes", EmitDefaultValue = false)] + public string ManagerNotes { get; set; } + + /// + /// Gets or Sets MembershipStatus + /// + /* + member + */ + [DataMember(Name = "membershipStatus", EmitDefaultValue = false)] + public string MembershipStatus { get; set; } + /// /// Gets or Sets Permissions /// [DataMember(Name = "permissions", EmitDefaultValue = false)] public List Permissions { get; set; } + /// + /// Gets or Sets RoleIds + /// + [DataMember(Name = "roleIds", EmitDefaultValue = false)] + public List RoleIds { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "userId", EmitDefaultValue = false)] + public string UserId { get; set; } + + /// + /// Gets or Sets Visibility + /// + /* + visible + */ + [DataMember(Name = "visibility", EmitDefaultValue = false)] + public string Visibility { get; set; } + /// /// Returns the string presentation of the object /// @@ -223,26 +223,26 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupMyMember {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); - sb.Append(" UserId: ").Append(UserId).Append("\n"); - sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); sb.Append(" AcceptedByDisplayName: ").Append(AcceptedByDisplayName).Append("\n"); sb.Append(" AcceptedById: ").Append(AcceptedById).Append("\n"); + sb.Append(" BannedAt: ").Append(BannedAt).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" ManagerNotes: ").Append(ManagerNotes).Append("\n"); - sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); + sb.Append(" Has2FA: ").Append(Has2FA).Append("\n"); + sb.Append(" HasJoinedFromPurchase: ").Append(HasJoinedFromPurchase).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); sb.Append(" IsSubscribedToAnnouncements: ").Append(IsSubscribedToAnnouncements).Append("\n"); sb.Append(" IsSubscribedToEventAnnouncements: ").Append(IsSubscribedToEventAnnouncements).Append("\n"); - sb.Append(" Visibility: ").Append(Visibility).Append("\n"); - sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); sb.Append(" JoinedAt: ").Append(JoinedAt).Append("\n"); - sb.Append(" BannedAt: ").Append(BannedAt).Append("\n"); - sb.Append(" Has2FA: ").Append(Has2FA).Append("\n"); - sb.Append(" HasJoinedFromPurchase: ").Append(HasJoinedFromPurchase).Append("\n"); sb.Append(" LastPostReadAt: ").Append(LastPostReadAt).Append("\n"); sb.Append(" MRoleIds: ").Append(MRoleIds).Append("\n"); + sb.Append(" ManagerNotes: ").Append(ManagerNotes).Append("\n"); + sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); sb.Append(" Permissions: ").Append(Permissions).Append("\n"); + sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); + sb.Append(" UserId: ").Append(UserId).Append("\n"); + sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -278,27 +278,6 @@ public bool Equals(GroupMyMember input) return false; } return - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) - ) && - ( - this.UserId == input.UserId || - (this.UserId != null && - this.UserId.Equals(input.UserId)) - ) && - ( - this.RoleIds == input.RoleIds || - this.RoleIds != null && - input.RoleIds != null && - this.RoleIds.SequenceEqual(input.RoleIds) - ) && ( this.AcceptedByDisplayName == input.AcceptedByDisplayName || (this.AcceptedByDisplayName != null && @@ -309,55 +288,50 @@ public bool Equals(GroupMyMember input) (this.AcceptedById != null && this.AcceptedById.Equals(input.AcceptedById)) ) && + ( + this.BannedAt == input.BannedAt || + (this.BannedAt != null && + this.BannedAt.Equals(input.BannedAt)) + ) && ( this.CreatedAt == input.CreatedAt || (this.CreatedAt != null && this.CreatedAt.Equals(input.CreatedAt)) ) && ( - this.ManagerNotes == input.ManagerNotes || - (this.ManagerNotes != null && - this.ManagerNotes.Equals(input.ManagerNotes)) - ) && - ( - this.MembershipStatus == input.MembershipStatus || - (this.MembershipStatus != null && - this.MembershipStatus.Equals(input.MembershipStatus)) + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) ) && ( - this.IsSubscribedToAnnouncements == input.IsSubscribedToAnnouncements || - this.IsSubscribedToAnnouncements.Equals(input.IsSubscribedToAnnouncements) + this.Has2FA == input.Has2FA || + this.Has2FA.Equals(input.Has2FA) ) && ( - this.IsSubscribedToEventAnnouncements == input.IsSubscribedToEventAnnouncements || - this.IsSubscribedToEventAnnouncements.Equals(input.IsSubscribedToEventAnnouncements) + this.HasJoinedFromPurchase == input.HasJoinedFromPurchase || + this.HasJoinedFromPurchase.Equals(input.HasJoinedFromPurchase) ) && ( - this.Visibility == input.Visibility || - (this.Visibility != null && - this.Visibility.Equals(input.Visibility)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( this.IsRepresenting == input.IsRepresenting || this.IsRepresenting.Equals(input.IsRepresenting) ) && ( - this.JoinedAt == input.JoinedAt || - (this.JoinedAt != null && - this.JoinedAt.Equals(input.JoinedAt)) - ) && - ( - this.BannedAt == input.BannedAt || - (this.BannedAt != null && - this.BannedAt.Equals(input.BannedAt)) + this.IsSubscribedToAnnouncements == input.IsSubscribedToAnnouncements || + this.IsSubscribedToAnnouncements.Equals(input.IsSubscribedToAnnouncements) ) && ( - this.Has2FA == input.Has2FA || - this.Has2FA.Equals(input.Has2FA) + this.IsSubscribedToEventAnnouncements == input.IsSubscribedToEventAnnouncements || + this.IsSubscribedToEventAnnouncements.Equals(input.IsSubscribedToEventAnnouncements) ) && ( - this.HasJoinedFromPurchase == input.HasJoinedFromPurchase || - this.HasJoinedFromPurchase.Equals(input.HasJoinedFromPurchase) + this.JoinedAt == input.JoinedAt || + (this.JoinedAt != null && + this.JoinedAt.Equals(input.JoinedAt)) ) && ( this.LastPostReadAt == input.LastPostReadAt || @@ -370,11 +344,37 @@ public bool Equals(GroupMyMember input) input.MRoleIds != null && this.MRoleIds.SequenceEqual(input.MRoleIds) ) && + ( + this.ManagerNotes == input.ManagerNotes || + (this.ManagerNotes != null && + this.ManagerNotes.Equals(input.ManagerNotes)) + ) && + ( + this.MembershipStatus == input.MembershipStatus || + (this.MembershipStatus != null && + this.MembershipStatus.Equals(input.MembershipStatus)) + ) && ( this.Permissions == input.Permissions || this.Permissions != null && input.Permissions != null && this.Permissions.SequenceEqual(input.Permissions) + ) && + ( + this.RoleIds == input.RoleIds || + this.RoleIds != null && + input.RoleIds != null && + this.RoleIds.SequenceEqual(input.RoleIds) + ) && + ( + this.UserId == input.UserId || + (this.UserId != null && + this.UserId.Equals(input.UserId)) + ) && + ( + this.Visibility == input.Visibility || + (this.Visibility != null && + this.Visibility.Equals(input.Visibility)) ); } @@ -387,22 +387,6 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - if (this.GroupId != null) - { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); - } - if (this.UserId != null) - { - hashCode = (hashCode * 59) + this.UserId.GetHashCode(); - } - if (this.RoleIds != null) - { - hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); - } if (this.AcceptedByDisplayName != null) { hashCode = (hashCode * 59) + this.AcceptedByDisplayName.GetHashCode(); @@ -411,35 +395,31 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.AcceptedById.GetHashCode(); } + if (this.BannedAt != null) + { + hashCode = (hashCode * 59) + this.BannedAt.GetHashCode(); + } if (this.CreatedAt != null) { hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } - if (this.ManagerNotes != null) + if (this.GroupId != null) { - hashCode = (hashCode * 59) + this.ManagerNotes.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } - if (this.MembershipStatus != null) + hashCode = (hashCode * 59) + this.Has2FA.GetHashCode(); + hashCode = (hashCode * 59) + this.HasJoinedFromPurchase.GetHashCode(); + if (this.Id != null) { - hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); hashCode = (hashCode * 59) + this.IsSubscribedToAnnouncements.GetHashCode(); hashCode = (hashCode * 59) + this.IsSubscribedToEventAnnouncements.GetHashCode(); - if (this.Visibility != null) - { - hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); if (this.JoinedAt != null) { hashCode = (hashCode * 59) + this.JoinedAt.GetHashCode(); } - if (this.BannedAt != null) - { - hashCode = (hashCode * 59) + this.BannedAt.GetHashCode(); - } - hashCode = (hashCode * 59) + this.Has2FA.GetHashCode(); - hashCode = (hashCode * 59) + this.HasJoinedFromPurchase.GetHashCode(); if (this.LastPostReadAt != null) { hashCode = (hashCode * 59) + this.LastPostReadAt.GetHashCode(); @@ -448,10 +428,30 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.MRoleIds.GetHashCode(); } + if (this.ManagerNotes != null) + { + hashCode = (hashCode * 59) + this.ManagerNotes.GetHashCode(); + } + if (this.MembershipStatus != null) + { + hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); + } if (this.Permissions != null) { hashCode = (hashCode * 59) + this.Permissions.GetHashCode(); } + if (this.RoleIds != null) + { + hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); + } + if (this.UserId != null) + { + hashCode = (hashCode * 59) + this.UserId.GetHashCode(); + } + if (this.Visibility != null) + { + hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/GroupPermission.cs b/src/VRChat.API/Model/GroupPermission.cs index d259a763..d1d20cf3 100644 --- a/src/VRChat.API/Model/GroupPermission.cs +++ b/src/VRChat.API/Model/GroupPermission.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,29 +35,29 @@ public partial class GroupPermission : IEquatable, IValidatable /// /// Initializes a new instance of the class. /// - /// The name of the permission.. + /// Whether the user is allowed to add this permission to a role. (default to false). /// The display name of the permission.. /// Human-readable description of the permission.. /// Whether this permission is a \"management\" permission. (default to false). - /// Whether the user is allowed to add this permission to a role. (default to false). - public GroupPermission(string name = default, string displayName = default, string help = default, bool isManagementPermission = false, bool allowedToAdd = false) + /// The name of the permission.. + public GroupPermission(bool allowedToAdd = false, string displayName = default, string help = default, bool isManagementPermission = false, string name = default) { - this.Name = name; + this.AllowedToAdd = allowedToAdd; this.DisplayName = displayName; this.Help = help; this.IsManagementPermission = isManagementPermission; - this.AllowedToAdd = allowedToAdd; + this.Name = name; } /// - /// The name of the permission. + /// Whether the user is allowed to add this permission to a role. /// - /// The name of the permission. + /// Whether the user is allowed to add this permission to a role. /* - group-data-manage + true */ - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "allowedToAdd", EmitDefaultValue = true)] + public bool AllowedToAdd { get; set; } /// /// The display name of the permission. @@ -90,14 +90,14 @@ public GroupPermission(string name = default, string displayName = default, stri public bool IsManagementPermission { get; set; } /// - /// Whether the user is allowed to add this permission to a role. + /// The name of the permission. /// - /// Whether the user is allowed to add this permission to a role. + /// The name of the permission. /* - true + group-data-manage */ - [DataMember(Name = "allowedToAdd", EmitDefaultValue = true)] - public bool AllowedToAdd { get; set; } + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } /// /// Returns the string presentation of the object @@ -107,11 +107,11 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupPermission {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" AllowedToAdd: ").Append(AllowedToAdd).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); sb.Append(" Help: ").Append(Help).Append("\n"); sb.Append(" IsManagementPermission: ").Append(IsManagementPermission).Append("\n"); - sb.Append(" AllowedToAdd: ").Append(AllowedToAdd).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -148,9 +148,8 @@ public bool Equals(GroupPermission input) } return ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.AllowedToAdd == input.AllowedToAdd || + this.AllowedToAdd.Equals(input.AllowedToAdd) ) && ( this.DisplayName == input.DisplayName || @@ -167,8 +166,9 @@ public bool Equals(GroupPermission input) this.IsManagementPermission.Equals(input.IsManagementPermission) ) && ( - this.AllowedToAdd == input.AllowedToAdd || - this.AllowedToAdd.Equals(input.AllowedToAdd) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ); } @@ -181,10 +181,7 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } + hashCode = (hashCode * 59) + this.AllowedToAdd.GetHashCode(); if (this.DisplayName != null) { hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); @@ -194,7 +191,10 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.Help.GetHashCode(); } hashCode = (hashCode * 59) + this.IsManagementPermission.GetHashCode(); - hashCode = (hashCode * 59) + this.AllowedToAdd.GetHashCode(); + if (this.Name != null) + { + hashCode = (hashCode * 59) + this.Name.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/GroupPermissions.cs b/src/VRChat.API/Model/GroupPermissions.cs index 5586e880..db719c00 100644 --- a/src/VRChat.API/Model/GroupPermissions.cs +++ b/src/VRChat.API/Model/GroupPermissions.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -56,137 +56,137 @@ public enum GroupPermissions [EnumMember(Value = "group-bans-manage")] group_bans_manage = 4, + /// + /// Enum group_calendar_manage for value: group-calendar-manage + /// + [EnumMember(Value = "group-calendar-manage")] + group_calendar_manage = 5, + /// /// Enum group_data_manage for value: group-data-manage /// [EnumMember(Value = "group-data-manage")] - group_data_manage = 5, + group_data_manage = 6, /// /// Enum group_default_role_manage for value: group-default-role-manage /// [EnumMember(Value = "group-default-role-manage")] - group_default_role_manage = 6, + group_default_role_manage = 7, /// /// Enum group_galleries_manage for value: group-galleries-manage /// [EnumMember(Value = "group-galleries-manage")] - group_galleries_manage = 7, + group_galleries_manage = 8, /// /// Enum group_instance_age_gated_create for value: group-instance-age-gated-create /// [EnumMember(Value = "group-instance-age-gated-create")] - group_instance_age_gated_create = 8, + group_instance_age_gated_create = 9, + + /// + /// Enum group_instance_calendar_link for value: group-instance-calendar-link + /// + [EnumMember(Value = "group-instance-calendar-link")] + group_instance_calendar_link = 10, /// /// Enum group_instance_join for value: group-instance-join /// [EnumMember(Value = "group-instance-join")] - group_instance_join = 9, + group_instance_join = 11, /// /// Enum group_instance_manage for value: group-instance-manage /// [EnumMember(Value = "group-instance-manage")] - group_instance_manage = 10, + group_instance_manage = 12, /// /// Enum group_instance_moderate for value: group-instance-moderate /// [EnumMember(Value = "group-instance-moderate")] - group_instance_moderate = 11, + group_instance_moderate = 13, /// /// Enum group_instance_open_create for value: group-instance-open-create /// [EnumMember(Value = "group-instance-open-create")] - group_instance_open_create = 12, + group_instance_open_create = 14, /// /// Enum group_instance_plus_create for value: group-instance-plus-create /// [EnumMember(Value = "group-instance-plus-create")] - group_instance_plus_create = 13, + group_instance_plus_create = 15, /// /// Enum group_instance_plus_portal for value: group-instance-plus-portal /// [EnumMember(Value = "group-instance-plus-portal")] - group_instance_plus_portal = 14, + group_instance_plus_portal = 16, /// /// Enum group_instance_plus_portal_unlocked for value: group-instance-plus-portal-unlocked /// [EnumMember(Value = "group-instance-plus-portal-unlocked")] - group_instance_plus_portal_unlocked = 15, + group_instance_plus_portal_unlocked = 17, /// /// Enum group_instance_public_create for value: group-instance-public-create /// [EnumMember(Value = "group-instance-public-create")] - group_instance_public_create = 16, + group_instance_public_create = 18, /// /// Enum group_instance_queue_priority for value: group-instance-queue-priority /// [EnumMember(Value = "group-instance-queue-priority")] - group_instance_queue_priority = 17, + group_instance_queue_priority = 19, /// /// Enum group_instance_restricted_create for value: group-instance-restricted-create /// [EnumMember(Value = "group-instance-restricted-create")] - group_instance_restricted_create = 18, + group_instance_restricted_create = 20, /// /// Enum group_invites_manage for value: group-invites-manage /// [EnumMember(Value = "group-invites-manage")] - group_invites_manage = 19, + group_invites_manage = 21, /// /// Enum group_members_manage for value: group-members-manage /// [EnumMember(Value = "group-members-manage")] - group_members_manage = 20, + group_members_manage = 22, /// /// Enum group_members_remove for value: group-members-remove /// [EnumMember(Value = "group-members-remove")] - group_members_remove = 21, + group_members_remove = 23, /// /// Enum group_members_viewall for value: group-members-viewall /// [EnumMember(Value = "group-members-viewall")] - group_members_viewall = 22, + group_members_viewall = 24, /// /// Enum group_roles_assign for value: group-roles-assign /// [EnumMember(Value = "group-roles-assign")] - group_roles_assign = 23, + group_roles_assign = 25, /// /// Enum group_roles_manage for value: group-roles-manage /// [EnumMember(Value = "group-roles-manage")] - group_roles_manage = 24, - - /// - /// Enum group_calendar_manage for value: group-calendar-manage - /// - [EnumMember(Value = "group-calendar-manage")] - group_calendar_manage = 25, - - /// - /// Enum group_instance_calendar_link for value: group-instance-calendar-link - /// - [EnumMember(Value = "group-instance-calendar-link")] - group_instance_calendar_link = 26 + group_roles_manage = 26 } } diff --git a/src/VRChat.API/Model/GroupPost.cs b/src/VRChat.API/Model/GroupPost.cs index 6dd1520d..ac9ea00d 100644 --- a/src/VRChat.API/Model/GroupPost.cs +++ b/src/VRChat.API/Model/GroupPost.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,52 +41,34 @@ public partial class GroupPost : IEquatable, IValidatableObject /// /// Initializes a new instance of the class. /// - /// id. - /// groupId. /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// createdAt. /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// visibility. - /// . - /// title. - /// text. + /// groupId. + /// id. /// imageId. /// imageUrl. - /// createdAt. + /// . + /// text. + /// title. /// updatedAt. - public GroupPost(string id = default, string groupId = default, string authorId = default, string editorId = default, GroupPostVisibility? visibility = default, List roleId = default, string title = default, string text = default, string imageId = default, string imageUrl = default, DateTime createdAt = default, DateTime updatedAt = default) + /// visibility. + public GroupPost(string authorId = default, DateTime createdAt = default, string editorId = default, string groupId = default, string id = default, string imageId = default, string imageUrl = default, List roleId = default, string text = default, string title = default, DateTime updatedAt = default, GroupPostVisibility? visibility = default) { - this.Id = id; - this.GroupId = groupId; this.AuthorId = authorId; + this.CreatedAt = createdAt; this.EditorId = editorId; - this.Visibility = visibility; - this.RoleId = roleId; - this.Title = title; - this.Text = text; + this.GroupId = groupId; + this.Id = id; this.ImageId = imageId; this.ImageUrl = imageUrl; - this.CreatedAt = createdAt; + this.RoleId = roleId; + this.Text = text; + this.Title = title; this.UpdatedAt = updatedAt; + this.Visibility = visibility; } - /// - /// Gets or Sets Id - /// - /* - not_00000000-0000-0000-0000-000000000000 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } - - /// - /// Gets or Sets GroupId - /// - /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 - */ - [DataMember(Name = "groupId", EmitDefaultValue = false)] - public string GroupId { get; set; } - /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -97,6 +79,12 @@ public GroupPost(string id = default, string groupId = default, string authorId [DataMember(Name = "authorId", EmitDefaultValue = false)] public string AuthorId { get; set; } + /// + /// Gets or Sets CreatedAt + /// + [DataMember(Name = "createdAt", EmitDefaultValue = false)] + public DateTime CreatedAt { get; set; } + /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -108,23 +96,22 @@ public GroupPost(string id = default, string groupId = default, string authorId public string EditorId { get; set; } /// - /// - /// - /// - [DataMember(Name = "roleId", EmitDefaultValue = false)] - public List RoleId { get; set; } - - /// - /// Gets or Sets Title + /// Gets or Sets GroupId /// - [DataMember(Name = "title", EmitDefaultValue = false)] - public string Title { get; set; } + /* + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + */ + [DataMember(Name = "groupId", EmitDefaultValue = false)] + public string GroupId { get; set; } /// - /// Gets or Sets Text + /// Gets or Sets Id /// - [DataMember(Name = "text", EmitDefaultValue = false)] - public string Text { get; set; } + /* + not_00000000-0000-0000-0000-000000000000 + */ + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// /// Gets or Sets ImageId @@ -142,10 +129,23 @@ public GroupPost(string id = default, string groupId = default, string authorId public string ImageUrl { get; set; } /// - /// Gets or Sets CreatedAt + /// /// - [DataMember(Name = "createdAt", EmitDefaultValue = false)] - public DateTime CreatedAt { get; set; } + /// + [DataMember(Name = "roleId", EmitDefaultValue = false)] + public List RoleId { get; set; } + + /// + /// Gets or Sets Text + /// + [DataMember(Name = "text", EmitDefaultValue = false)] + public string Text { get; set; } + + /// + /// Gets or Sets Title + /// + [DataMember(Name = "title", EmitDefaultValue = false)] + public string Title { get; set; } /// /// Gets or Sets UpdatedAt @@ -161,18 +161,18 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupPost {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); sb.Append(" AuthorId: ").Append(AuthorId).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" EditorId: ").Append(EditorId).Append("\n"); - sb.Append(" Visibility: ").Append(Visibility).Append("\n"); - sb.Append(" RoleId: ").Append(RoleId).Append("\n"); - sb.Append(" Title: ").Append(Title).Append("\n"); - sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ImageId: ").Append(ImageId).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" RoleId: ").Append(RoleId).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); + sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -208,45 +208,30 @@ public bool Equals(GroupPost input) return false; } return - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) - ) && ( this.AuthorId == input.AuthorId || (this.AuthorId != null && this.AuthorId.Equals(input.AuthorId)) ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && ( this.EditorId == input.EditorId || (this.EditorId != null && this.EditorId.Equals(input.EditorId)) ) && ( - this.Visibility == input.Visibility || - this.Visibility.Equals(input.Visibility) - ) && - ( - this.RoleId == input.RoleId || - this.RoleId != null && - input.RoleId != null && - this.RoleId.SequenceEqual(input.RoleId) - ) && - ( - this.Title == input.Title || - (this.Title != null && - this.Title.Equals(input.Title)) + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) ) && ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( this.ImageId == input.ImageId || @@ -259,14 +244,29 @@ public bool Equals(GroupPost input) this.ImageUrl.Equals(input.ImageUrl)) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.RoleId == input.RoleId || + this.RoleId != null && + input.RoleId != null && + this.RoleId.SequenceEqual(input.RoleId) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && + ( + this.Title == input.Title || + (this.Title != null && + this.Title.Equals(input.Title)) ) && ( this.UpdatedAt == input.UpdatedAt || (this.UpdatedAt != null && this.UpdatedAt.Equals(input.UpdatedAt)) + ) && + ( + this.Visibility == input.Visibility || + this.Visibility.Equals(input.Visibility) ); } @@ -279,34 +279,25 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - if (this.GroupId != null) - { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); - } if (this.AuthorId != null) { hashCode = (hashCode * 59) + this.AuthorId.GetHashCode(); } - if (this.EditorId != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.EditorId.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } - hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); - if (this.RoleId != null) + if (this.EditorId != null) { - hashCode = (hashCode * 59) + this.RoleId.GetHashCode(); + hashCode = (hashCode * 59) + this.EditorId.GetHashCode(); } - if (this.Title != null) + if (this.GroupId != null) { - hashCode = (hashCode * 59) + this.Title.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } - if (this.Text != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.Text.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } if (this.ImageId != null) { @@ -316,14 +307,23 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } - if (this.CreatedAt != null) + if (this.RoleId != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleId.GetHashCode(); + } + if (this.Text != null) + { + hashCode = (hashCode * 59) + this.Text.GetHashCode(); + } + if (this.Title != null) + { + hashCode = (hashCode * 59) + this.Title.GetHashCode(); } if (this.UpdatedAt != null) { hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); } + hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/GroupPostVisibility.cs b/src/VRChat.API/Model/GroupPostVisibility.cs index 27581f2d..7f991968 100644 --- a/src/VRChat.API/Model/GroupPostVisibility.cs +++ b/src/VRChat.API/Model/GroupPostVisibility.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GroupPrivacy.cs b/src/VRChat.API/Model/GroupPrivacy.cs index 327e2043..c330d329 100644 --- a/src/VRChat.API/Model/GroupPrivacy.cs +++ b/src/VRChat.API/Model/GroupPrivacy.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GroupRole.cs b/src/VRChat.API/Model/GroupRole.cs index 74e52fef..37176eed 100644 --- a/src/VRChat.API/Model/GroupRole.cs +++ b/src/VRChat.API/Model/GroupRole.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,42 +35,45 @@ public partial class GroupRole : IEquatable, IValidatableObject /// /// Initializes a new instance of the class. /// - /// id. - /// groupId. - /// name. + /// createdAt. /// description. + /// groupId. + /// id. + /// isManagementRole (default to false). /// isSelfAssignable (default to false). + /// name. + /// order. /// permissions. - /// isManagementRole (default to false). - /// requiresTwoFactor (default to false). /// requiresPurchase (default to false). - /// order. - /// createdAt. + /// requiresTwoFactor (default to false). /// updatedAt. - public GroupRole(string id = default, string groupId = default, string name = default, string description = default, bool isSelfAssignable = false, List permissions = default, bool isManagementRole = false, bool requiresTwoFactor = false, bool requiresPurchase = false, int order = default, DateTime createdAt = default, DateTime updatedAt = default) + public GroupRole(DateTime createdAt = default, string description = default, string groupId = default, string id = default, bool isManagementRole = false, bool isSelfAssignable = false, string name = default, int order = default, List permissions = default, bool requiresPurchase = false, bool requiresTwoFactor = false, DateTime updatedAt = default) { - this.Id = id; - this.GroupId = groupId; - this.Name = name; + this.CreatedAt = createdAt; this.Description = description; + this.GroupId = groupId; + this.Id = id; + this.IsManagementRole = isManagementRole; this.IsSelfAssignable = isSelfAssignable; + this.Name = name; + this.Order = order; this.Permissions = permissions; - this.IsManagementRole = isManagementRole; - this.RequiresTwoFactor = requiresTwoFactor; this.RequiresPurchase = requiresPurchase; - this.Order = order; - this.CreatedAt = createdAt; + this.RequiresTwoFactor = requiresTwoFactor; this.UpdatedAt = updatedAt; } /// - /// Gets or Sets Id + /// Gets or Sets CreatedAt /// - /* - grol_459d3911-f672-44bc-b84d-e54ffe7960fe - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "createdAt", EmitDefaultValue = false)] + public DateTime CreatedAt { get; set; } + + /// + /// Gets or Sets Description + /// + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } /// /// Gets or Sets GroupId @@ -82,16 +85,19 @@ public GroupRole(string id = default, string groupId = default, string name = de public string GroupId { get; set; } /// - /// Gets or Sets Name + /// Gets or Sets Id /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + /* + grol_459d3911-f672-44bc-b84d-e54ffe7960fe + */ + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// - /// Gets or Sets Description + /// Gets or Sets IsManagementRole /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + [DataMember(Name = "isManagementRole", EmitDefaultValue = true)] + public bool IsManagementRole { get; set; } /// /// Gets or Sets IsSelfAssignable @@ -100,22 +106,22 @@ public GroupRole(string id = default, string groupId = default, string name = de public bool IsSelfAssignable { get; set; } /// - /// Gets or Sets Permissions + /// Gets or Sets Name /// - [DataMember(Name = "permissions", EmitDefaultValue = false)] - public List Permissions { get; set; } + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } /// - /// Gets or Sets IsManagementRole + /// Gets or Sets Order /// - [DataMember(Name = "isManagementRole", EmitDefaultValue = true)] - public bool IsManagementRole { get; set; } + [DataMember(Name = "order", EmitDefaultValue = false)] + public int Order { get; set; } /// - /// Gets or Sets RequiresTwoFactor + /// Gets or Sets Permissions /// - [DataMember(Name = "requiresTwoFactor", EmitDefaultValue = true)] - public bool RequiresTwoFactor { get; set; } + [DataMember(Name = "permissions", EmitDefaultValue = false)] + public List Permissions { get; set; } /// /// Gets or Sets RequiresPurchase @@ -124,16 +130,10 @@ public GroupRole(string id = default, string groupId = default, string name = de public bool RequiresPurchase { get; set; } /// - /// Gets or Sets Order - /// - [DataMember(Name = "order", EmitDefaultValue = false)] - public int Order { get; set; } - - /// - /// Gets or Sets CreatedAt + /// Gets or Sets RequiresTwoFactor /// - [DataMember(Name = "createdAt", EmitDefaultValue = false)] - public DateTime CreatedAt { get; set; } + [DataMember(Name = "requiresTwoFactor", EmitDefaultValue = true)] + public bool RequiresTwoFactor { get; set; } /// /// Gets or Sets UpdatedAt @@ -149,17 +149,17 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupRole {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" IsManagementRole: ").Append(IsManagementRole).Append("\n"); sb.Append(" IsSelfAssignable: ").Append(IsSelfAssignable).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Order: ").Append(Order).Append("\n"); sb.Append(" Permissions: ").Append(Permissions).Append("\n"); - sb.Append(" IsManagementRole: ").Append(IsManagementRole).Append("\n"); - sb.Append(" RequiresTwoFactor: ").Append(RequiresTwoFactor).Append("\n"); sb.Append(" RequiresPurchase: ").Append(RequiresPurchase).Append("\n"); - sb.Append(" Order: ").Append(Order).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" RequiresTwoFactor: ").Append(RequiresTwoFactor).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -197,9 +197,14 @@ public bool Equals(GroupRole input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.GroupId == input.GroupId || @@ -207,45 +212,40 @@ public bool Equals(GroupRole input) this.GroupId.Equals(input.GroupId)) ) && ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.IsManagementRole == input.IsManagementRole || + this.IsManagementRole.Equals(input.IsManagementRole) ) && ( this.IsSelfAssignable == input.IsSelfAssignable || this.IsSelfAssignable.Equals(input.IsSelfAssignable) ) && ( - this.Permissions == input.Permissions || - this.Permissions != null && - input.Permissions != null && - this.Permissions.SequenceEqual(input.Permissions) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( - this.IsManagementRole == input.IsManagementRole || - this.IsManagementRole.Equals(input.IsManagementRole) + this.Order == input.Order || + this.Order.Equals(input.Order) ) && ( - this.RequiresTwoFactor == input.RequiresTwoFactor || - this.RequiresTwoFactor.Equals(input.RequiresTwoFactor) + this.Permissions == input.Permissions || + this.Permissions != null && + input.Permissions != null && + this.Permissions.SequenceEqual(input.Permissions) ) && ( this.RequiresPurchase == input.RequiresPurchase || this.RequiresPurchase.Equals(input.RequiresPurchase) ) && ( - this.Order == input.Order || - this.Order.Equals(input.Order) - ) && - ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.RequiresTwoFactor == input.RequiresTwoFactor || + this.RequiresTwoFactor.Equals(input.RequiresTwoFactor) ) && ( this.UpdatedAt == input.UpdatedAt || @@ -263,35 +263,35 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + } + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } if (this.GroupId != null) { hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } - if (this.Name != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - if (this.Description != null) + hashCode = (hashCode * 59) + this.IsManagementRole.GetHashCode(); + hashCode = (hashCode * 59) + this.IsSelfAssignable.GetHashCode(); + if (this.Name != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsSelfAssignable.GetHashCode(); + hashCode = (hashCode * 59) + this.Order.GetHashCode(); if (this.Permissions != null) { hashCode = (hashCode * 59) + this.Permissions.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsManagementRole.GetHashCode(); - hashCode = (hashCode * 59) + this.RequiresTwoFactor.GetHashCode(); hashCode = (hashCode * 59) + this.RequiresPurchase.GetHashCode(); - hashCode = (hashCode * 59) + this.Order.GetHashCode(); - if (this.CreatedAt != null) - { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); - } + hashCode = (hashCode * 59) + this.RequiresTwoFactor.GetHashCode(); if (this.UpdatedAt != null) { hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); diff --git a/src/VRChat.API/Model/GroupRoleTemplate.cs b/src/VRChat.API/Model/GroupRoleTemplate.cs index 22bd817f..ba6e9ba0 100644 --- a/src/VRChat.API/Model/GroupRoleTemplate.cs +++ b/src/VRChat.API/Model/GroupRoleTemplate.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GroupRoleTemplateValues.cs b/src/VRChat.API/Model/GroupRoleTemplateValues.cs index 3c9de6ee..f84c7326 100644 --- a/src/VRChat.API/Model/GroupRoleTemplateValues.cs +++ b/src/VRChat.API/Model/GroupRoleTemplateValues.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GroupRoleTemplateValuesRoles.cs b/src/VRChat.API/Model/GroupRoleTemplateValuesRoles.cs index 44d2ead3..083d984b 100644 --- a/src/VRChat.API/Model/GroupRoleTemplateValuesRoles.cs +++ b/src/VRChat.API/Model/GroupRoleTemplateValuesRoles.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,30 +35,30 @@ public partial class GroupRoleTemplateValuesRoles : IEquatable /// Initializes a new instance of the class. /// - /// description. /// name. + /// description. /// basePermissions. /// isAddedOnJoin (default to false). - public GroupRoleTemplateValuesRoles(string description = default, string name = default, List basePermissions = default, bool isAddedOnJoin = false) + public GroupRoleTemplateValuesRoles(string name = default, string description = default, List basePermissions = default, bool isAddedOnJoin = false) { - this.Description = description; this.Name = name; + this.Description = description; this.BasePermissions = basePermissions; this.IsAddedOnJoin = isAddedOnJoin; } - /// - /// Gets or Sets Description - /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } - /// /// Gets or Sets Name /// [DataMember(Name = "name", EmitDefaultValue = false)] public string Name { get; set; } + /// + /// Gets or Sets Description + /// + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } + /// /// Gets or Sets BasePermissions /// @@ -79,8 +79,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class GroupRoleTemplateValuesRoles {\n"); - sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" BasePermissions: ").Append(BasePermissions).Append("\n"); sb.Append(" IsAddedOnJoin: ").Append(IsAddedOnJoin).Append("\n"); sb.Append("}\n"); @@ -118,16 +118,16 @@ public bool Equals(GroupRoleTemplateValuesRoles input) return false; } return - ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) - ) && ( this.Name == input.Name || (this.Name != null && this.Name.Equals(input.Name)) ) && + ( + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) + ) && ( this.BasePermissions == input.BasePermissions || this.BasePermissions != null && @@ -149,14 +149,14 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Description != null) - { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); - } if (this.Name != null) { hashCode = (hashCode * 59) + this.Name.GetHashCode(); } + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); + } if (this.BasePermissions != null) { hashCode = (hashCode * 59) + this.BasePermissions.GetHashCode(); diff --git a/src/VRChat.API/Model/GroupSearchSort.cs b/src/VRChat.API/Model/GroupSearchSort.cs index b05ad855..fdf08738 100644 --- a/src/VRChat.API/Model/GroupSearchSort.cs +++ b/src/VRChat.API/Model/GroupSearchSort.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/GroupUserVisibility.cs b/src/VRChat.API/Model/GroupUserVisibility.cs index c5af51de..74272df9 100644 --- a/src/VRChat.API/Model/GroupUserVisibility.cs +++ b/src/VRChat.API/Model/GroupUserVisibility.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,10 +33,10 @@ namespace VRChat.API.Model public enum GroupUserVisibility { /// - /// Enum Visible for value: visible + /// Enum Friends for value: friends /// - [EnumMember(Value = "visible")] - Visible = 1, + [EnumMember(Value = "friends")] + Friends = 1, /// /// Enum Hidden for value: hidden @@ -45,10 +45,10 @@ public enum GroupUserVisibility Hidden = 2, /// - /// Enum Friends for value: friends + /// Enum Visible for value: visible /// - [EnumMember(Value = "friends")] - Friends = 3 + [EnumMember(Value = "visible")] + Visible = 3 } } diff --git a/src/VRChat.API/Model/InfoPush.cs b/src/VRChat.API/Model/InfoPush.cs index 50eb83ef..b42fe250 100644 --- a/src/VRChat.API/Model/InfoPush.cs +++ b/src/VRChat.API/Model/InfoPush.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,19 +46,32 @@ protected InfoPush() { } /// /// Initializes a new instance of the class. /// + /// createdAt (required). + /// data (required). + /// endDate. + /// Unknown usage, MD5 (required). /// id (required). /// isEnabled (required) (default to true). - /// releaseStatus (required). /// priority (required). + /// releaseStatus (required). + /// startDate. /// (required). - /// data (required). - /// Unknown usage, MD5 (required). - /// createdAt (required). /// updatedAt (required). - /// startDate. - /// endDate. - public InfoPush(string id = default, bool isEnabled = true, ReleaseStatus releaseStatus = default, int priority = default, List tags = default, InfoPushData data = default, string hash = default, DateTime createdAt = default, DateTime updatedAt = default, DateTime startDate = default, DateTime endDate = default) + public InfoPush(DateTime createdAt = default, InfoPushData data = default, DateTime endDate = default, string hash = default, string id = default, bool isEnabled = true, int priority = default, ReleaseStatus releaseStatus = default, DateTime startDate = default, List tags = default, DateTime updatedAt = default) { + this.CreatedAt = createdAt; + // to ensure "data" is required (not null) + if (data == null) + { + throw new ArgumentNullException("data is a required property for InfoPush and cannot be null"); + } + this.Data = data; + // to ensure "hash" is required (not null) + if (hash == null) + { + throw new ArgumentNullException("hash is a required property for InfoPush and cannot be null"); + } + this.Hash = hash; // to ensure "id" is required (not null) if (id == null) { @@ -66,32 +79,44 @@ public InfoPush(string id = default, bool isEnabled = true, ReleaseStatus releas } this.Id = id; this.IsEnabled = isEnabled; - this.ReleaseStatus = releaseStatus; this.Priority = priority; + this.ReleaseStatus = releaseStatus; // to ensure "tags" is required (not null) if (tags == null) { throw new ArgumentNullException("tags is a required property for InfoPush and cannot be null"); } this.Tags = tags; - // to ensure "data" is required (not null) - if (data == null) - { - throw new ArgumentNullException("data is a required property for InfoPush and cannot be null"); - } - this.Data = data; - // to ensure "hash" is required (not null) - if (hash == null) - { - throw new ArgumentNullException("hash is a required property for InfoPush and cannot be null"); - } - this.Hash = hash; - this.CreatedAt = createdAt; this.UpdatedAt = updatedAt; - this.StartDate = startDate; this.EndDate = endDate; + this.StartDate = startDate; } + /// + /// Gets or Sets CreatedAt + /// + [DataMember(Name = "createdAt", IsRequired = true, EmitDefaultValue = true)] + public DateTime CreatedAt { get; set; } + + /// + /// Gets or Sets Data + /// + [DataMember(Name = "data", IsRequired = true, EmitDefaultValue = true)] + public InfoPushData Data { get; set; } + + /// + /// Gets or Sets EndDate + /// + [DataMember(Name = "endDate", EmitDefaultValue = false)] + public DateTime EndDate { get; set; } + + /// + /// Unknown usage, MD5 + /// + /// Unknown usage, MD5 + [DataMember(Name = "hash", IsRequired = true, EmitDefaultValue = true)] + public string Hash { get; set; } + /// /// Gets or Sets Id /// @@ -113,6 +138,12 @@ public InfoPush(string id = default, bool isEnabled = true, ReleaseStatus releas [DataMember(Name = "priority", IsRequired = true, EmitDefaultValue = true)] public int Priority { get; set; } + /// + /// Gets or Sets StartDate + /// + [DataMember(Name = "startDate", EmitDefaultValue = false)] + public DateTime StartDate { get; set; } + /// /// /// @@ -120,43 +151,12 @@ public InfoPush(string id = default, bool isEnabled = true, ReleaseStatus releas [DataMember(Name = "tags", IsRequired = true, EmitDefaultValue = true)] public List Tags { get; set; } - /// - /// Gets or Sets Data - /// - [DataMember(Name = "data", IsRequired = true, EmitDefaultValue = true)] - public InfoPushData Data { get; set; } - - /// - /// Unknown usage, MD5 - /// - /// Unknown usage, MD5 - [DataMember(Name = "hash", IsRequired = true, EmitDefaultValue = true)] - public string Hash { get; set; } - - /// - /// Gets or Sets CreatedAt - /// - [DataMember(Name = "createdAt", IsRequired = true, EmitDefaultValue = true)] - public DateTime CreatedAt { get; set; } - /// /// Gets or Sets UpdatedAt /// [DataMember(Name = "updatedAt", IsRequired = true, EmitDefaultValue = true)] public DateTime UpdatedAt { get; set; } - /// - /// Gets or Sets StartDate - /// - [DataMember(Name = "startDate", EmitDefaultValue = false)] - public DateTime StartDate { get; set; } - - /// - /// Gets or Sets EndDate - /// - [DataMember(Name = "endDate", EmitDefaultValue = false)] - public DateTime EndDate { get; set; } - /// /// Returns the string presentation of the object /// @@ -165,17 +165,17 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class InfoPush {\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); + sb.Append(" EndDate: ").Append(EndDate).Append("\n"); + sb.Append(" Hash: ").Append(Hash).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" IsEnabled: ").Append(IsEnabled).Append("\n"); - sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); sb.Append(" Priority: ").Append(Priority).Append("\n"); + sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); + sb.Append(" StartDate: ").Append(StartDate).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" Data: ").Append(Data).Append("\n"); - sb.Append(" Hash: ").Append(Hash).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); - sb.Append(" StartDate: ").Append(StartDate).Append("\n"); - sb.Append(" EndDate: ").Append(EndDate).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -211,6 +211,26 @@ public bool Equals(InfoPush input) return false; } return + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.Data == input.Data || + (this.Data != null && + this.Data.Equals(input.Data)) + ) && + ( + this.EndDate == input.EndDate || + (this.EndDate != null && + this.EndDate.Equals(input.EndDate)) + ) && + ( + this.Hash == input.Hash || + (this.Hash != null && + this.Hash.Equals(input.Hash)) + ) && ( this.Id == input.Id || (this.Id != null && @@ -220,13 +240,18 @@ public bool Equals(InfoPush input) this.IsEnabled == input.IsEnabled || this.IsEnabled.Equals(input.IsEnabled) ) && + ( + this.Priority == input.Priority || + this.Priority.Equals(input.Priority) + ) && ( this.ReleaseStatus == input.ReleaseStatus || this.ReleaseStatus.Equals(input.ReleaseStatus) ) && ( - this.Priority == input.Priority || - this.Priority.Equals(input.Priority) + this.StartDate == input.StartDate || + (this.StartDate != null && + this.StartDate.Equals(input.StartDate)) ) && ( this.Tags == input.Tags || @@ -234,35 +259,10 @@ public bool Equals(InfoPush input) input.Tags != null && this.Tags.SequenceEqual(input.Tags) ) && - ( - this.Data == input.Data || - (this.Data != null && - this.Data.Equals(input.Data)) - ) && - ( - this.Hash == input.Hash || - (this.Hash != null && - this.Hash.Equals(input.Hash)) - ) && - ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) - ) && ( this.UpdatedAt == input.UpdatedAt || (this.UpdatedAt != null && this.UpdatedAt.Equals(input.UpdatedAt)) - ) && - ( - this.StartDate == input.StartDate || - (this.StartDate != null && - this.StartDate.Equals(input.StartDate)) - ) && - ( - this.EndDate == input.EndDate || - (this.EndDate != null && - this.EndDate.Equals(input.EndDate)) ); } @@ -275,40 +275,40 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsEnabled.GetHashCode(); - hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); - hashCode = (hashCode * 59) + this.Priority.GetHashCode(); - if (this.Tags != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.Tags.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } if (this.Data != null) { hashCode = (hashCode * 59) + this.Data.GetHashCode(); } - if (this.Hash != null) + if (this.EndDate != null) { - hashCode = (hashCode * 59) + this.Hash.GetHashCode(); + hashCode = (hashCode * 59) + this.EndDate.GetHashCode(); } - if (this.CreatedAt != null) + if (this.Hash != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Hash.GetHashCode(); } - if (this.UpdatedAt != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + hashCode = (hashCode * 59) + this.IsEnabled.GetHashCode(); + hashCode = (hashCode * 59) + this.Priority.GetHashCode(); + hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); if (this.StartDate != null) { hashCode = (hashCode * 59) + this.StartDate.GetHashCode(); } - if (this.EndDate != null) + if (this.Tags != null) { - hashCode = (hashCode * 59) + this.EndDate.GetHashCode(); + hashCode = (hashCode * 59) + this.Tags.GetHashCode(); + } + if (this.UpdatedAt != null) + { + hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); } return hashCode; } @@ -321,18 +321,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Id (string) minLength - if (this.Id != null && this.Id.Length < 1) - { - yield return new ValidationResult("Invalid value for Id, length must be greater than 1.", new [] { "Id" }); - } - // Hash (string) minLength if (this.Hash != null && this.Hash.Length < 1) { yield return new ValidationResult("Invalid value for Hash, length must be greater than 1.", new [] { "Hash" }); } + // Id (string) minLength + if (this.Id != null && this.Id.Length < 1) + { + yield return new ValidationResult("Invalid value for Id, length must be greater than 1.", new [] { "Id" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/InfoPushData.cs b/src/VRChat.API/Model/InfoPushData.cs index 26527361..cad8005c 100644 --- a/src/VRChat.API/Model/InfoPushData.cs +++ b/src/VRChat.API/Model/InfoPushData.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,6 +35,7 @@ public partial class InfoPushData : IEquatable, IValidatableObject /// /// Initializes a new instance of the class. /// + /// article. /// contentList. /// description. /// imageUrl. @@ -42,9 +43,9 @@ public partial class InfoPushData : IEquatable, IValidatableObject /// onPressed. /// template. /// varVersion. - /// article. - public InfoPushData(DynamicContentRow contentList = default, string description = default, string imageUrl = default, string name = default, InfoPushDataClickable onPressed = default, string template = default, string varVersion = default, InfoPushDataArticle article = default) + public InfoPushData(InfoPushDataArticle article = default, DynamicContentRow contentList = default, string description = default, string imageUrl = default, string name = default, InfoPushDataClickable onPressed = default, string template = default, string varVersion = default) { + this.Article = article; this.ContentList = contentList; this.Description = description; this.ImageUrl = imageUrl; @@ -52,9 +53,14 @@ public InfoPushData(DynamicContentRow contentList = default, string description this.OnPressed = onPressed; this.Template = template; this.VarVersion = varVersion; - this.Article = article; } + /// + /// Gets or Sets Article + /// + [DataMember(Name = "article", EmitDefaultValue = false)] + public InfoPushDataArticle Article { get; set; } + /// /// Gets or Sets ContentList /// @@ -100,12 +106,6 @@ public InfoPushData(DynamicContentRow contentList = default, string description [DataMember(Name = "version", EmitDefaultValue = false)] public string VarVersion { get; set; } - /// - /// Gets or Sets Article - /// - [DataMember(Name = "article", EmitDefaultValue = false)] - public InfoPushDataArticle Article { get; set; } - /// /// Returns the string presentation of the object /// @@ -114,6 +114,7 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class InfoPushData {\n"); + sb.Append(" Article: ").Append(Article).Append("\n"); sb.Append(" ContentList: ").Append(ContentList).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); @@ -121,7 +122,6 @@ public override string ToString() sb.Append(" OnPressed: ").Append(OnPressed).Append("\n"); sb.Append(" Template: ").Append(Template).Append("\n"); sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); - sb.Append(" Article: ").Append(Article).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -157,6 +157,11 @@ public bool Equals(InfoPushData input) return false; } return + ( + this.Article == input.Article || + (this.Article != null && + this.Article.Equals(input.Article)) + ) && ( this.ContentList == input.ContentList || (this.ContentList != null && @@ -191,11 +196,6 @@ public bool Equals(InfoPushData input) this.VarVersion == input.VarVersion || (this.VarVersion != null && this.VarVersion.Equals(input.VarVersion)) - ) && - ( - this.Article == input.Article || - (this.Article != null && - this.Article.Equals(input.Article)) ); } @@ -208,6 +208,10 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + if (this.Article != null) + { + hashCode = (hashCode * 59) + this.Article.GetHashCode(); + } if (this.ContentList != null) { hashCode = (hashCode * 59) + this.ContentList.GetHashCode(); @@ -236,10 +240,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.VarVersion.GetHashCode(); } - if (this.Article != null) - { - hashCode = (hashCode * 59) + this.Article.GetHashCode(); - } return hashCode; } } diff --git a/src/VRChat.API/Model/InfoPushDataArticle.cs b/src/VRChat.API/Model/InfoPushDataArticle.cs index df4b9d8b..c74ef8d5 100644 --- a/src/VRChat.API/Model/InfoPushDataArticle.cs +++ b/src/VRChat.API/Model/InfoPushDataArticle.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InfoPushDataArticleContent.cs b/src/VRChat.API/Model/InfoPushDataArticleContent.cs index a659361e..2bd6acbf 100644 --- a/src/VRChat.API/Model/InfoPushDataArticleContent.cs +++ b/src/VRChat.API/Model/InfoPushDataArticleContent.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,22 +35,16 @@ public partial class InfoPushDataArticleContent : IEquatable /// Initializes a new instance of the class. /// - /// text. /// imageUrl. /// onPressed. - public InfoPushDataArticleContent(string text = default, string imageUrl = default, InfoPushDataClickable onPressed = default) + /// text. + public InfoPushDataArticleContent(string imageUrl = default, InfoPushDataClickable onPressed = default, string text = default) { - this.Text = text; this.ImageUrl = imageUrl; this.OnPressed = onPressed; + this.Text = text; } - /// - /// Gets or Sets Text - /// - [DataMember(Name = "text", EmitDefaultValue = false)] - public string Text { get; set; } - /// /// Gets or Sets ImageUrl /// @@ -63,6 +57,12 @@ public InfoPushDataArticleContent(string text = default, string imageUrl = defau [DataMember(Name = "onPressed", EmitDefaultValue = false)] public InfoPushDataClickable OnPressed { get; set; } + /// + /// Gets or Sets Text + /// + [DataMember(Name = "text", EmitDefaultValue = false)] + public string Text { get; set; } + /// /// Returns the string presentation of the object /// @@ -71,9 +71,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class InfoPushDataArticleContent {\n"); - sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); sb.Append(" OnPressed: ").Append(OnPressed).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -109,11 +109,6 @@ public bool Equals(InfoPushDataArticleContent input) return false; } return - ( - this.Text == input.Text || - (this.Text != null && - this.Text.Equals(input.Text)) - ) && ( this.ImageUrl == input.ImageUrl || (this.ImageUrl != null && @@ -123,6 +118,11 @@ public bool Equals(InfoPushDataArticleContent input) this.OnPressed == input.OnPressed || (this.OnPressed != null && this.OnPressed.Equals(input.OnPressed)) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) ); } @@ -135,10 +135,6 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Text != null) - { - hashCode = (hashCode * 59) + this.Text.GetHashCode(); - } if (this.ImageUrl != null) { hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); @@ -147,6 +143,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.OnPressed.GetHashCode(); } + if (this.Text != null) + { + hashCode = (hashCode * 59) + this.Text.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/InfoPushDataClickable.cs b/src/VRChat.API/Model/InfoPushDataClickable.cs index b4f250b7..bbdb83ba 100644 --- a/src/VRChat.API/Model/InfoPushDataClickable.cs +++ b/src/VRChat.API/Model/InfoPushDataClickable.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,28 +39,28 @@ public partial class InfoPushDataClickable : IEquatable, public enum CommandEnum { /// - /// Enum OpenURL for value: OpenURL + /// Enum CannedWorldSearch for value: CannedWorldSearch /// - [EnumMember(Value = "OpenURL")] - OpenURL = 1, + [EnumMember(Value = "CannedWorldSearch")] + CannedWorldSearch = 1, /// - /// Enum OpenVRCPlusMenu for value: OpenVRCPlusMenu + /// Enum OpenSafetyMenu for value: OpenSafetyMenu /// - [EnumMember(Value = "OpenVRCPlusMenu")] - OpenVRCPlusMenu = 2, + [EnumMember(Value = "OpenSafetyMenu")] + OpenSafetyMenu = 2, /// - /// Enum OpenSafetyMenu for value: OpenSafetyMenu + /// Enum OpenURL for value: OpenURL /// - [EnumMember(Value = "OpenSafetyMenu")] - OpenSafetyMenu = 3, + [EnumMember(Value = "OpenURL")] + OpenURL = 3, /// - /// Enum CannedWorldSearch for value: CannedWorldSearch + /// Enum OpenVRCPlusMenu for value: OpenVRCPlusMenu /// - [EnumMember(Value = "CannedWorldSearch")] - CannedWorldSearch = 4 + [EnumMember(Value = "OpenVRCPlusMenu")] + OpenVRCPlusMenu = 4 } @@ -80,9 +80,9 @@ protected InfoPushDataClickable() { } /// /// Initializes a new instance of the class. /// - /// command (required). /// In case of OpenURL, this would contain the link.. - public InfoPushDataClickable(CommandEnum command = default, List parameters = default) + /// command (required). + public InfoPushDataClickable(List parameters = default, CommandEnum command = default) { this.Command = command; this.Parameters = parameters; @@ -103,8 +103,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class InfoPushDataClickable {\n"); - sb.Append(" Command: ").Append(Command).Append("\n"); sb.Append(" Parameters: ").Append(Parameters).Append("\n"); + sb.Append(" Command: ").Append(Command).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -140,15 +140,15 @@ public bool Equals(InfoPushDataClickable input) return false; } return - ( - this.Command == input.Command || - this.Command.Equals(input.Command) - ) && ( this.Parameters == input.Parameters || this.Parameters != null && input.Parameters != null && this.Parameters.SequenceEqual(input.Parameters) + ) && + ( + this.Command == input.Command || + this.Command.Equals(input.Command) ); } @@ -161,11 +161,11 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - hashCode = (hashCode * 59) + this.Command.GetHashCode(); if (this.Parameters != null) { hashCode = (hashCode * 59) + this.Parameters.GetHashCode(); } + hashCode = (hashCode * 59) + this.Command.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/Instance.cs b/src/VRChat.API/Model/Instance.cs index 2481d6e8..705d5eaf 100644 --- a/src/VRChat.API/Model/Instance.cs +++ b/src/VRChat.API/Model/Instance.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,6 +33,12 @@ namespace VRChat.API.Model public partial class Instance : IEquatable, IValidatableObject { + /// + /// Gets or Sets GroupAccessType + /// + [DataMember(Name = "groupAccessType", EmitDefaultValue = false)] + public GroupAccessType? GroupAccessType { get; set; } + /// /// Gets or Sets PhotonRegion /// @@ -50,12 +56,6 @@ public partial class Instance : IEquatable, IValidatableObject /// [DataMember(Name = "type", IsRequired = true, EmitDefaultValue = true)] public InstanceType Type { get; set; } - - /// - /// Gets or Sets GroupAccessType - /// - [DataMember(Name = "groupAccessType", EmitDefaultValue = false)] - public GroupAccessType? GroupAccessType { get; set; } /// /// Initializes a new instance of the class. /// @@ -69,44 +69,44 @@ protected Instance() { } /// canRequestInvite (required) (default to true). /// capacity (required). /// Always returns \"unknown\". (required). + /// closedAt. /// contentSettings. /// displayName. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// full (required) (default to false). /// gameServerVersion. + /// groupAccessType. + /// hardClose. + /// hasCapacityForYou. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// InstanceID can be \"offline\" on User profiles if you are not friends with that user and \"private\" if you are friends and user is in private instance. (required). /// InstanceID can be \"offline\" on User profiles if you are not friends with that user and \"private\" if you are friends and user is in private instance. (required). /// instancePersistenceEnabled. /// Represents a unique location, consisting of a world identifier and an instance identifier, or \"offline\" if the user is not on your friends list. (required). /// nUsers (required). /// name (required). + /// nonce. /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise. /// permanent (required) (default to false). /// photonRegion (required). /// platforms (required). /// playerPersistenceEnabled. - /// region (required). - /// secureName (required). - /// shortName. - /// The tags array on Instances usually contain the language tags of the people in the instance. (required). - /// type (required). - /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// queueEnabled (required). /// queueSize (required). /// recommendedCapacity (required). + /// region (required). /// roleRestricted. + /// secureName (required). + /// shortName. /// strict (required). + /// The tags array on Instances usually contain the language tags of the people in the instance. (required). + /// type (required). /// userCount (required). - /// world (required). /// The users field is present on instances created by the requesting user.. - /// groupAccessType. - /// hasCapacityForYou. - /// nonce. - /// closedAt. - /// hardClose. - public Instance(bool active = true, bool? ageGate = default, bool canRequestInvite = true, int capacity = default, string clientNumber = default, InstanceContentSettings contentSettings = default, string displayName = default, bool full = false, int gameServerVersion = default, string id = default, string instanceId = default, string instancePersistenceEnabled = default, string location = default, int nUsers = default, string name = default, string ownerId = default, bool permanent = false, Region photonRegion = default, InstancePlatforms platforms = default, bool? playerPersistenceEnabled = default, InstanceRegion region = default, string secureName = default, string shortName = default, List tags = default, InstanceType type = default, string worldId = default, string hidden = default, string friends = default, string varPrivate = default, bool queueEnabled = default, int queueSize = default, int recommendedCapacity = default, bool roleRestricted = default, bool strict = default, int userCount = default, World world = default, List users = default, GroupAccessType? groupAccessType = default, bool hasCapacityForYou = default, string nonce = default, DateTime? closedAt = default, bool? hardClose = default) + /// world (required). + /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). + public Instance(bool active = true, bool? ageGate = default, bool canRequestInvite = true, int capacity = default, string clientNumber = default, DateTime? closedAt = default, InstanceContentSettings contentSettings = default, string displayName = default, string friends = default, bool full = false, int gameServerVersion = default, GroupAccessType? groupAccessType = default, bool? hardClose = default, bool hasCapacityForYou = default, string hidden = default, string id = default, string instanceId = default, string instancePersistenceEnabled = default, string location = default, int nUsers = default, string name = default, string nonce = default, string ownerId = default, bool permanent = false, Region photonRegion = default, InstancePlatforms platforms = default, bool? playerPersistenceEnabled = default, string varPrivate = default, bool queueEnabled = default, int queueSize = default, int recommendedCapacity = default, InstanceRegion region = default, bool roleRestricted = default, string secureName = default, string shortName = default, bool strict = default, List tags = default, InstanceType type = default, int userCount = default, List users = default, World world = default, string worldId = default) { this.Active = active; this.CanRequestInvite = canRequestInvite; @@ -151,6 +151,9 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi throw new ArgumentNullException("platforms is a required property for Instance and cannot be null"); } this.Platforms = platforms; + this.QueueEnabled = queueEnabled; + this.QueueSize = queueSize; + this.RecommendedCapacity = recommendedCapacity; this.Region = region; // to ensure "secureName" is required (not null) if (secureName == null) @@ -158,6 +161,7 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi throw new ArgumentNullException("secureName is a required property for Instance and cannot be null"); } this.SecureName = secureName; + this.Strict = strict; // to ensure "tags" is required (not null) if (tags == null) { @@ -165,16 +169,6 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi } this.Tags = tags; this.Type = type; - // to ensure "worldId" is required (not null) - if (worldId == null) - { - throw new ArgumentNullException("worldId is a required property for Instance and cannot be null"); - } - this.WorldId = worldId; - this.QueueEnabled = queueEnabled; - this.QueueSize = queueSize; - this.RecommendedCapacity = recommendedCapacity; - this.Strict = strict; this.UserCount = userCount; // to ensure "world" is required (not null) if (world == null) @@ -182,24 +176,30 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi throw new ArgumentNullException("world is a required property for Instance and cannot be null"); } this.World = world; + // to ensure "worldId" is required (not null) + if (worldId == null) + { + throw new ArgumentNullException("worldId is a required property for Instance and cannot be null"); + } + this.WorldId = worldId; this.AgeGate = ageGate; + this.ClosedAt = closedAt; this.ContentSettings = contentSettings; this.DisplayName = displayName; + this.Friends = friends; this.GameServerVersion = gameServerVersion; + this.GroupAccessType = groupAccessType; + this.HardClose = hardClose; + this.HasCapacityForYou = hasCapacityForYou; + this.Hidden = hidden; this.InstancePersistenceEnabled = instancePersistenceEnabled; + this.Nonce = nonce; this.OwnerId = ownerId; this.PlayerPersistenceEnabled = playerPersistenceEnabled; - this.ShortName = shortName; - this.Hidden = hidden; - this.Friends = friends; this.Private = varPrivate; this.RoleRestricted = roleRestricted; + this.ShortName = shortName; this.Users = users; - this.GroupAccessType = groupAccessType; - this.HasCapacityForYou = hasCapacityForYou; - this.Nonce = nonce; - this.ClosedAt = closedAt; - this.HardClose = hardClose; } /// @@ -243,6 +243,12 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi [Obsolete] public string ClientNumber { get; set; } + /// + /// Gets or Sets ClosedAt + /// + [DataMember(Name = "closedAt", EmitDefaultValue = true)] + public DateTime? ClosedAt { get; set; } + /// /// Gets or Sets ContentSettings /// @@ -255,6 +261,16 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi [DataMember(Name = "displayName", EmitDefaultValue = true)] public string DisplayName { get; set; } + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "friends", EmitDefaultValue = false)] + public string Friends { get; set; } + /// /// Gets or Sets Full /// @@ -267,6 +283,28 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi [DataMember(Name = "gameServerVersion", EmitDefaultValue = false)] public int GameServerVersion { get; set; } + /// + /// Gets or Sets HardClose + /// + [DataMember(Name = "hardClose", EmitDefaultValue = true)] + public bool? HardClose { get; set; } + + /// + /// Gets or Sets HasCapacityForYou + /// + [DataMember(Name = "hasCapacityForYou", EmitDefaultValue = true)] + public bool HasCapacityForYou { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "hidden", EmitDefaultValue = false)] + public string Hidden { get; set; } + /// /// InstanceID can be \"offline\" on User profiles if you are not friends with that user and \"private\" if you are friends and user is in private instance. /// @@ -321,6 +359,12 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] public string Name { get; set; } + /// + /// Gets or Sets Nonce + /// + [DataMember(Name = "nonce", EmitDefaultValue = false)] + public string Nonce { get; set; } + /// /// A groupId if the instance type is \"group\", null if instance type is public, or a userId otherwise /// @@ -349,64 +393,6 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi [DataMember(Name = "playerPersistenceEnabled", EmitDefaultValue = true)] public bool? PlayerPersistenceEnabled { get; set; } - /// - /// Gets or Sets SecureName - /// - /* - 7eavhhng - */ - [DataMember(Name = "secureName", IsRequired = true, EmitDefaultValue = true)] - public string SecureName { get; set; } - - /// - /// Gets or Sets ShortName - /// - /* - 02u7yz8j - */ - [DataMember(Name = "shortName", EmitDefaultValue = true)] - public string ShortName { get; set; } - - /// - /// The tags array on Instances usually contain the language tags of the people in the instance. - /// - /// The tags array on Instances usually contain the language tags of the people in the instance. - /* - ["show_social_rank","language_eng","language_jpn"] - */ - [DataMember(Name = "tags", IsRequired = true, EmitDefaultValue = true)] - public List Tags { get; set; } - - /// - /// WorldID be \"offline\" on User profiles if you are not friends with that user. - /// - /// WorldID be \"offline\" on User profiles if you are not friends with that user. - /* - wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd - */ - [DataMember(Name = "worldId", IsRequired = true, EmitDefaultValue = true)] - public string WorldId { get; set; } - - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "hidden", EmitDefaultValue = false)] - public string Hidden { get; set; } - - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "friends", EmitDefaultValue = false)] - public string Friends { get; set; } - /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -447,12 +433,40 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi [DataMember(Name = "roleRestricted", EmitDefaultValue = true)] public bool RoleRestricted { get; set; } + /// + /// Gets or Sets SecureName + /// + /* + 7eavhhng + */ + [DataMember(Name = "secureName", IsRequired = true, EmitDefaultValue = true)] + public string SecureName { get; set; } + + /// + /// Gets or Sets ShortName + /// + /* + 02u7yz8j + */ + [DataMember(Name = "shortName", EmitDefaultValue = true)] + public string ShortName { get; set; } + /// /// Gets or Sets Strict /// [DataMember(Name = "strict", IsRequired = true, EmitDefaultValue = true)] public bool Strict { get; set; } + /// + /// The tags array on Instances usually contain the language tags of the people in the instance. + /// + /// The tags array on Instances usually contain the language tags of the people in the instance. + /* + ["language_eng","language_jpn","show_social_rank"] + */ + [DataMember(Name = "tags", IsRequired = true, EmitDefaultValue = true)] + public List Tags { get; set; } + /// /// Gets or Sets UserCount /// @@ -462,12 +476,6 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi [DataMember(Name = "userCount", IsRequired = true, EmitDefaultValue = true)] public int UserCount { get; set; } - /// - /// Gets or Sets World - /// - [DataMember(Name = "world", IsRequired = true, EmitDefaultValue = true)] - public World World { get; set; } - /// /// The users field is present on instances created by the requesting user. /// @@ -476,28 +484,20 @@ public Instance(bool active = true, bool? ageGate = default, bool canRequestInvi public List Users { get; set; } /// - /// Gets or Sets HasCapacityForYou - /// - [DataMember(Name = "hasCapacityForYou", EmitDefaultValue = true)] - public bool HasCapacityForYou { get; set; } - - /// - /// Gets or Sets Nonce - /// - [DataMember(Name = "nonce", EmitDefaultValue = false)] - public string Nonce { get; set; } - - /// - /// Gets or Sets ClosedAt + /// Gets or Sets World /// - [DataMember(Name = "closedAt", EmitDefaultValue = true)] - public DateTime? ClosedAt { get; set; } + [DataMember(Name = "world", IsRequired = true, EmitDefaultValue = true)] + public World World { get; set; } /// - /// Gets or Sets HardClose + /// WorldID be \"offline\" on User profiles if you are not friends with that user. /// - [DataMember(Name = "hardClose", EmitDefaultValue = true)] - public bool? HardClose { get; set; } + /// WorldID be \"offline\" on User profiles if you are not friends with that user. + /* + wrld_4432ea9b-729c-46e3-8eaf-846aa0a37fdd + */ + [DataMember(Name = "worldId", IsRequired = true, EmitDefaultValue = true)] + public string WorldId { get; set; } /// /// Returns the string presentation of the object @@ -512,43 +512,43 @@ public override string ToString() sb.Append(" CanRequestInvite: ").Append(CanRequestInvite).Append("\n"); sb.Append(" Capacity: ").Append(Capacity).Append("\n"); sb.Append(" ClientNumber: ").Append(ClientNumber).Append("\n"); + sb.Append(" ClosedAt: ").Append(ClosedAt).Append("\n"); sb.Append(" ContentSettings: ").Append(ContentSettings).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); + sb.Append(" Friends: ").Append(Friends).Append("\n"); sb.Append(" Full: ").Append(Full).Append("\n"); sb.Append(" GameServerVersion: ").Append(GameServerVersion).Append("\n"); + sb.Append(" GroupAccessType: ").Append(GroupAccessType).Append("\n"); + sb.Append(" HardClose: ").Append(HardClose).Append("\n"); + sb.Append(" HasCapacityForYou: ").Append(HasCapacityForYou).Append("\n"); + sb.Append(" Hidden: ").Append(Hidden).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" InstanceId: ").Append(InstanceId).Append("\n"); sb.Append(" InstancePersistenceEnabled: ").Append(InstancePersistenceEnabled).Append("\n"); sb.Append(" Location: ").Append(Location).Append("\n"); sb.Append(" NUsers: ").Append(NUsers).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Nonce: ").Append(Nonce).Append("\n"); sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); sb.Append(" Permanent: ").Append(Permanent).Append("\n"); sb.Append(" PhotonRegion: ").Append(PhotonRegion).Append("\n"); sb.Append(" Platforms: ").Append(Platforms).Append("\n"); sb.Append(" PlayerPersistenceEnabled: ").Append(PlayerPersistenceEnabled).Append("\n"); - sb.Append(" Region: ").Append(Region).Append("\n"); - sb.Append(" SecureName: ").Append(SecureName).Append("\n"); - sb.Append(" ShortName: ").Append(ShortName).Append("\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" Type: ").Append(Type).Append("\n"); - sb.Append(" WorldId: ").Append(WorldId).Append("\n"); - sb.Append(" Hidden: ").Append(Hidden).Append("\n"); - sb.Append(" Friends: ").Append(Friends).Append("\n"); sb.Append(" Private: ").Append(Private).Append("\n"); sb.Append(" QueueEnabled: ").Append(QueueEnabled).Append("\n"); sb.Append(" QueueSize: ").Append(QueueSize).Append("\n"); sb.Append(" RecommendedCapacity: ").Append(RecommendedCapacity).Append("\n"); + sb.Append(" Region: ").Append(Region).Append("\n"); sb.Append(" RoleRestricted: ").Append(RoleRestricted).Append("\n"); + sb.Append(" SecureName: ").Append(SecureName).Append("\n"); + sb.Append(" ShortName: ").Append(ShortName).Append("\n"); sb.Append(" Strict: ").Append(Strict).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" UserCount: ").Append(UserCount).Append("\n"); - sb.Append(" World: ").Append(World).Append("\n"); sb.Append(" Users: ").Append(Users).Append("\n"); - sb.Append(" GroupAccessType: ").Append(GroupAccessType).Append("\n"); - sb.Append(" HasCapacityForYou: ").Append(HasCapacityForYou).Append("\n"); - sb.Append(" Nonce: ").Append(Nonce).Append("\n"); - sb.Append(" ClosedAt: ").Append(ClosedAt).Append("\n"); - sb.Append(" HardClose: ").Append(HardClose).Append("\n"); + sb.Append(" World: ").Append(World).Append("\n"); + sb.Append(" WorldId: ").Append(WorldId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -606,6 +606,11 @@ public bool Equals(Instance input) (this.ClientNumber != null && this.ClientNumber.Equals(input.ClientNumber)) ) && + ( + this.ClosedAt == input.ClosedAt || + (this.ClosedAt != null && + this.ClosedAt.Equals(input.ClosedAt)) + ) && ( this.ContentSettings == input.ContentSettings || (this.ContentSettings != null && @@ -616,6 +621,11 @@ public bool Equals(Instance input) (this.DisplayName != null && this.DisplayName.Equals(input.DisplayName)) ) && + ( + this.Friends == input.Friends || + (this.Friends != null && + this.Friends.Equals(input.Friends)) + ) && ( this.Full == input.Full || this.Full.Equals(input.Full) @@ -624,6 +634,24 @@ public bool Equals(Instance input) this.GameServerVersion == input.GameServerVersion || this.GameServerVersion.Equals(input.GameServerVersion) ) && + ( + this.GroupAccessType == input.GroupAccessType || + this.GroupAccessType.Equals(input.GroupAccessType) + ) && + ( + this.HardClose == input.HardClose || + (this.HardClose != null && + this.HardClose.Equals(input.HardClose)) + ) && + ( + this.HasCapacityForYou == input.HasCapacityForYou || + this.HasCapacityForYou.Equals(input.HasCapacityForYou) + ) && + ( + this.Hidden == input.Hidden || + (this.Hidden != null && + this.Hidden.Equals(input.Hidden)) + ) && ( this.Id == input.Id || (this.Id != null && @@ -653,6 +681,11 @@ public bool Equals(Instance input) (this.Name != null && this.Name.Equals(input.Name)) ) && + ( + this.Nonce == input.Nonce || + (this.Nonce != null && + this.Nonce.Equals(input.Nonce)) + ) && ( this.OwnerId == input.OwnerId || (this.OwnerId != null && @@ -676,45 +709,6 @@ public bool Equals(Instance input) (this.PlayerPersistenceEnabled != null && this.PlayerPersistenceEnabled.Equals(input.PlayerPersistenceEnabled)) ) && - ( - this.Region == input.Region || - this.Region.Equals(input.Region) - ) && - ( - this.SecureName == input.SecureName || - (this.SecureName != null && - this.SecureName.Equals(input.SecureName)) - ) && - ( - this.ShortName == input.ShortName || - (this.ShortName != null && - this.ShortName.Equals(input.ShortName)) - ) && - ( - this.Tags == input.Tags || - this.Tags != null && - input.Tags != null && - this.Tags.SequenceEqual(input.Tags) - ) && - ( - this.Type == input.Type || - this.Type.Equals(input.Type) - ) && - ( - this.WorldId == input.WorldId || - (this.WorldId != null && - this.WorldId.Equals(input.WorldId)) - ) && - ( - this.Hidden == input.Hidden || - (this.Hidden != null && - this.Hidden.Equals(input.Hidden)) - ) && - ( - this.Friends == input.Friends || - (this.Friends != null && - this.Friends.Equals(input.Friends)) - ) && ( this.Private == input.Private || (this.Private != null && @@ -732,51 +726,57 @@ public bool Equals(Instance input) this.RecommendedCapacity == input.RecommendedCapacity || this.RecommendedCapacity.Equals(input.RecommendedCapacity) ) && + ( + this.Region == input.Region || + this.Region.Equals(input.Region) + ) && ( this.RoleRestricted == input.RoleRestricted || this.RoleRestricted.Equals(input.RoleRestricted) ) && ( - this.Strict == input.Strict || - this.Strict.Equals(input.Strict) + this.SecureName == input.SecureName || + (this.SecureName != null && + this.SecureName.Equals(input.SecureName)) ) && ( - this.UserCount == input.UserCount || - this.UserCount.Equals(input.UserCount) + this.ShortName == input.ShortName || + (this.ShortName != null && + this.ShortName.Equals(input.ShortName)) ) && ( - this.World == input.World || - (this.World != null && - this.World.Equals(input.World)) + this.Strict == input.Strict || + this.Strict.Equals(input.Strict) ) && ( - this.Users == input.Users || - this.Users != null && - input.Users != null && - this.Users.SequenceEqual(input.Users) + this.Tags == input.Tags || + this.Tags != null && + input.Tags != null && + this.Tags.SequenceEqual(input.Tags) ) && ( - this.GroupAccessType == input.GroupAccessType || - this.GroupAccessType.Equals(input.GroupAccessType) + this.Type == input.Type || + this.Type.Equals(input.Type) ) && ( - this.HasCapacityForYou == input.HasCapacityForYou || - this.HasCapacityForYou.Equals(input.HasCapacityForYou) + this.UserCount == input.UserCount || + this.UserCount.Equals(input.UserCount) ) && ( - this.Nonce == input.Nonce || - (this.Nonce != null && - this.Nonce.Equals(input.Nonce)) + this.Users == input.Users || + this.Users != null && + input.Users != null && + this.Users.SequenceEqual(input.Users) ) && ( - this.ClosedAt == input.ClosedAt || - (this.ClosedAt != null && - this.ClosedAt.Equals(input.ClosedAt)) + this.World == input.World || + (this.World != null && + this.World.Equals(input.World)) ) && ( - this.HardClose == input.HardClose || - (this.HardClose != null && - this.HardClose.Equals(input.HardClose)) + this.WorldId == input.WorldId || + (this.WorldId != null && + this.WorldId.Equals(input.WorldId)) ); } @@ -800,6 +800,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ClientNumber.GetHashCode(); } + if (this.ClosedAt != null) + { + hashCode = (hashCode * 59) + this.ClosedAt.GetHashCode(); + } if (this.ContentSettings != null) { hashCode = (hashCode * 59) + this.ContentSettings.GetHashCode(); @@ -808,8 +812,22 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } + if (this.Friends != null) + { + hashCode = (hashCode * 59) + this.Friends.GetHashCode(); + } hashCode = (hashCode * 59) + this.Full.GetHashCode(); hashCode = (hashCode * 59) + this.GameServerVersion.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupAccessType.GetHashCode(); + if (this.HardClose != null) + { + hashCode = (hashCode * 59) + this.HardClose.GetHashCode(); + } + hashCode = (hashCode * 59) + this.HasCapacityForYou.GetHashCode(); + if (this.Hidden != null) + { + hashCode = (hashCode * 59) + this.Hidden.GetHashCode(); + } if (this.Id != null) { hashCode = (hashCode * 59) + this.Id.GetHashCode(); @@ -831,6 +849,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Name.GetHashCode(); } + if (this.Nonce != null) + { + hashCode = (hashCode * 59) + this.Nonce.GetHashCode(); + } if (this.OwnerId != null) { hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); @@ -845,7 +867,15 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.PlayerPersistenceEnabled.GetHashCode(); } + if (this.Private != null) + { + hashCode = (hashCode * 59) + this.Private.GetHashCode(); + } + hashCode = (hashCode * 59) + this.QueueEnabled.GetHashCode(); + hashCode = (hashCode * 59) + this.QueueSize.GetHashCode(); + hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); hashCode = (hashCode * 59) + this.Region.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleRestricted.GetHashCode(); if (this.SecureName != null) { hashCode = (hashCode * 59) + this.SecureName.GetHashCode(); @@ -854,54 +884,24 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ShortName.GetHashCode(); } + hashCode = (hashCode * 59) + this.Strict.GetHashCode(); if (this.Tags != null) { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } hashCode = (hashCode * 59) + this.Type.GetHashCode(); - if (this.WorldId != null) - { - hashCode = (hashCode * 59) + this.WorldId.GetHashCode(); - } - if (this.Hidden != null) - { - hashCode = (hashCode * 59) + this.Hidden.GetHashCode(); - } - if (this.Friends != null) - { - hashCode = (hashCode * 59) + this.Friends.GetHashCode(); - } - if (this.Private != null) - { - hashCode = (hashCode * 59) + this.Private.GetHashCode(); - } - hashCode = (hashCode * 59) + this.QueueEnabled.GetHashCode(); - hashCode = (hashCode * 59) + this.QueueSize.GetHashCode(); - hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); - hashCode = (hashCode * 59) + this.RoleRestricted.GetHashCode(); - hashCode = (hashCode * 59) + this.Strict.GetHashCode(); hashCode = (hashCode * 59) + this.UserCount.GetHashCode(); - if (this.World != null) - { - hashCode = (hashCode * 59) + this.World.GetHashCode(); - } if (this.Users != null) { hashCode = (hashCode * 59) + this.Users.GetHashCode(); } - hashCode = (hashCode * 59) + this.GroupAccessType.GetHashCode(); - hashCode = (hashCode * 59) + this.HasCapacityForYou.GetHashCode(); - if (this.Nonce != null) - { - hashCode = (hashCode * 59) + this.Nonce.GetHashCode(); - } - if (this.ClosedAt != null) + if (this.World != null) { - hashCode = (hashCode * 59) + this.ClosedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.World.GetHashCode(); } - if (this.HardClose != null) + if (this.WorldId != null) { - hashCode = (hashCode * 59) + this.HardClose.GetHashCode(); + hashCode = (hashCode * 59) + this.WorldId.GetHashCode(); } return hashCode; } @@ -938,18 +938,6 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); } - // SecureName (string) minLength - if (this.SecureName != null && this.SecureName.Length < 1) - { - yield return new ValidationResult("Invalid value for SecureName, length must be greater than 1.", new [] { "SecureName" }); - } - - // ShortName (string) minLength - if (this.ShortName != null && this.ShortName.Length < 1) - { - yield return new ValidationResult("Invalid value for ShortName, length must be greater than 1.", new [] { "ShortName" }); - } - // QueueSize (int) minimum if (this.QueueSize < (int)0) { @@ -962,6 +950,18 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for RecommendedCapacity, must be a value greater than or equal to 0.", new [] { "RecommendedCapacity" }); } + // SecureName (string) minLength + if (this.SecureName != null && this.SecureName.Length < 1) + { + yield return new ValidationResult("Invalid value for SecureName, length must be greater than 1.", new [] { "SecureName" }); + } + + // ShortName (string) minLength + if (this.ShortName != null && this.ShortName.Length < 1) + { + yield return new ValidationResult("Invalid value for ShortName, length must be greater than 1.", new [] { "ShortName" }); + } + // UserCount (int) minimum if (this.UserCount < (int)0) { diff --git a/src/VRChat.API/Model/InstanceContentSettings.cs b/src/VRChat.API/Model/InstanceContentSettings.cs index 1e0a4b30..ff758b02 100644 --- a/src/VRChat.API/Model/InstanceContentSettings.cs +++ b/src/VRChat.API/Model/InstanceContentSettings.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,16 +39,16 @@ public partial class InstanceContentSettings : IEquatableemoji (default to true). /// pedestals (default to true). /// prints (default to true). - /// stickers (default to true). /// props (default to true). - public InstanceContentSettings(bool drones = true, bool emoji = true, bool pedestals = true, bool prints = true, bool stickers = true, bool props = true) + /// stickers (default to true). + public InstanceContentSettings(bool drones = true, bool emoji = true, bool pedestals = true, bool prints = true, bool props = true, bool stickers = true) { this.Drones = drones; this.Emoji = emoji; this.Pedestals = pedestals; this.Prints = prints; - this.Stickers = stickers; this.Props = props; + this.Stickers = stickers; } /// @@ -75,18 +75,18 @@ public InstanceContentSettings(bool drones = true, bool emoji = true, bool pedes [DataMember(Name = "prints", EmitDefaultValue = true)] public bool Prints { get; set; } - /// - /// Gets or Sets Stickers - /// - [DataMember(Name = "stickers", EmitDefaultValue = true)] - public bool Stickers { get; set; } - /// /// Gets or Sets Props /// [DataMember(Name = "props", EmitDefaultValue = true)] public bool Props { get; set; } + /// + /// Gets or Sets Stickers + /// + [DataMember(Name = "stickers", EmitDefaultValue = true)] + public bool Stickers { get; set; } + /// /// Returns the string presentation of the object /// @@ -99,8 +99,8 @@ public override string ToString() sb.Append(" Emoji: ").Append(Emoji).Append("\n"); sb.Append(" Pedestals: ").Append(Pedestals).Append("\n"); sb.Append(" Prints: ").Append(Prints).Append("\n"); - sb.Append(" Stickers: ").Append(Stickers).Append("\n"); sb.Append(" Props: ").Append(Props).Append("\n"); + sb.Append(" Stickers: ").Append(Stickers).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -152,13 +152,13 @@ public bool Equals(InstanceContentSettings input) this.Prints == input.Prints || this.Prints.Equals(input.Prints) ) && - ( - this.Stickers == input.Stickers || - this.Stickers.Equals(input.Stickers) - ) && ( this.Props == input.Props || this.Props.Equals(input.Props) + ) && + ( + this.Stickers == input.Stickers || + this.Stickers.Equals(input.Stickers) ); } @@ -175,8 +175,8 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.Emoji.GetHashCode(); hashCode = (hashCode * 59) + this.Pedestals.GetHashCode(); hashCode = (hashCode * 59) + this.Prints.GetHashCode(); - hashCode = (hashCode * 59) + this.Stickers.GetHashCode(); hashCode = (hashCode * 59) + this.Props.GetHashCode(); + hashCode = (hashCode * 59) + this.Stickers.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/InstancePlatforms.cs b/src/VRChat.API/Model/InstancePlatforms.cs index 9e2f6641..6fc9bbba 100644 --- a/src/VRChat.API/Model/InstancePlatforms.cs +++ b/src/VRChat.API/Model/InstancePlatforms.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InstanceRegion.cs b/src/VRChat.API/Model/InstanceRegion.cs index 2decfc60..7abe60f2 100644 --- a/src/VRChat.API/Model/InstanceRegion.cs +++ b/src/VRChat.API/Model/InstanceRegion.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,35 +33,35 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum InstanceRegion { - /// - /// Enum Us for value: us - /// - [EnumMember(Value = "us")] - Us = 1, - - /// - /// Enum Use for value: use - /// - [EnumMember(Value = "use")] - Use = 2, - /// /// Enum Eu for value: eu /// [EnumMember(Value = "eu")] - Eu = 3, + Eu = 1, /// /// Enum Jp for value: jp /// [EnumMember(Value = "jp")] - Jp = 4, + Jp = 2, /// /// Enum Unknown for value: unknown /// [EnumMember(Value = "unknown")] - Unknown = 5 + Unknown = 3, + + /// + /// Enum Us for value: us + /// + [EnumMember(Value = "us")] + Us = 4, + + /// + /// Enum Use for value: use + /// + [EnumMember(Value = "use")] + Use = 5 } } diff --git a/src/VRChat.API/Model/InstanceShortNameResponse.cs b/src/VRChat.API/Model/InstanceShortNameResponse.cs index 843097d5..da266b81 100644 --- a/src/VRChat.API/Model/InstanceShortNameResponse.cs +++ b/src/VRChat.API/Model/InstanceShortNameResponse.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InstanceType.cs b/src/VRChat.API/Model/InstanceType.cs index 5753fbec..408f71c2 100644 --- a/src/VRChat.API/Model/InstanceType.cs +++ b/src/VRChat.API/Model/InstanceType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,22 +33,22 @@ namespace VRChat.API.Model public enum InstanceType { /// - /// Enum Public for value: public + /// Enum Friends for value: friends /// - [EnumMember(Value = "public")] - Public = 1, + [EnumMember(Value = "friends")] + Friends = 1, /// - /// Enum Hidden for value: hidden + /// Enum Group for value: group /// - [EnumMember(Value = "hidden")] - Hidden = 2, + [EnumMember(Value = "group")] + Group = 2, /// - /// Enum Friends for value: friends + /// Enum Hidden for value: hidden /// - [EnumMember(Value = "friends")] - Friends = 3, + [EnumMember(Value = "hidden")] + Hidden = 3, /// /// Enum Private for value: private @@ -57,10 +57,10 @@ public enum InstanceType Private = 4, /// - /// Enum Group for value: group + /// Enum Public for value: public /// - [EnumMember(Value = "group")] - Group = 5 + [EnumMember(Value = "public")] + Public = 5 } } diff --git a/src/VRChat.API/Model/Inventory.cs b/src/VRChat.API/Model/Inventory.cs index c202f69b..92cab17e 100644 --- a/src/VRChat.API/Model/Inventory.cs +++ b/src/VRChat.API/Model/Inventory.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventoryConsumptionResults.cs b/src/VRChat.API/Model/InventoryConsumptionResults.cs new file mode 100644 index 00000000..4737e5ec --- /dev/null +++ b/src/VRChat.API/Model/InventoryConsumptionResults.cs @@ -0,0 +1,178 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// InventoryConsumptionResults + /// + [DataContract(Name = "InventoryConsumptionResults")] + public partial class InventoryConsumptionResults : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected InventoryConsumptionResults() { } + /// + /// Initializes a new instance of the class. + /// + /// errors (required). + /// inventoryItems (required). + /// inventoryItemsCreated (required). + public InventoryConsumptionResults(List errors = default, List inventoryItems = default, int inventoryItemsCreated = default) + { + // to ensure "errors" is required (not null) + if (errors == null) + { + throw new ArgumentNullException("errors is a required property for InventoryConsumptionResults and cannot be null"); + } + this.Errors = errors; + // to ensure "inventoryItems" is required (not null) + if (inventoryItems == null) + { + throw new ArgumentNullException("inventoryItems is a required property for InventoryConsumptionResults and cannot be null"); + } + this.InventoryItems = inventoryItems; + this.InventoryItemsCreated = inventoryItemsCreated; + } + + /// + /// Gets or Sets Errors + /// + [DataMember(Name = "errors", IsRequired = true, EmitDefaultValue = true)] + public List Errors { get; set; } + + /// + /// Gets or Sets InventoryItems + /// + [DataMember(Name = "inventoryItems", IsRequired = true, EmitDefaultValue = true)] + public List InventoryItems { get; set; } + + /// + /// Gets or Sets InventoryItemsCreated + /// + [DataMember(Name = "inventoryItemsCreated", IsRequired = true, EmitDefaultValue = true)] + public int InventoryItemsCreated { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class InventoryConsumptionResults {\n"); + sb.Append(" Errors: ").Append(Errors).Append("\n"); + sb.Append(" InventoryItems: ").Append(InventoryItems).Append("\n"); + sb.Append(" InventoryItemsCreated: ").Append(InventoryItemsCreated).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as InventoryConsumptionResults); + } + + /// + /// Returns true if InventoryConsumptionResults instances are equal + /// + /// Instance of InventoryConsumptionResults to be compared + /// Boolean + public bool Equals(InventoryConsumptionResults input) + { + if (input == null) + { + return false; + } + return + ( + this.Errors == input.Errors || + this.Errors != null && + input.Errors != null && + this.Errors.SequenceEqual(input.Errors) + ) && + ( + this.InventoryItems == input.InventoryItems || + this.InventoryItems != null && + input.InventoryItems != null && + this.InventoryItems.SequenceEqual(input.InventoryItems) + ) && + ( + this.InventoryItemsCreated == input.InventoryItemsCreated || + this.InventoryItemsCreated.Equals(input.InventoryItemsCreated) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Errors != null) + { + hashCode = (hashCode * 59) + this.Errors.GetHashCode(); + } + if (this.InventoryItems != null) + { + hashCode = (hashCode * 59) + this.InventoryItems.GetHashCode(); + } + hashCode = (hashCode * 59) + this.InventoryItemsCreated.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/InventoryDefaultAttributesValue.cs b/src/VRChat.API/Model/InventoryDefaultAttributesValue.cs index f16ab8dc..75592a43 100644 --- a/src/VRChat.API/Model/InventoryDefaultAttributesValue.cs +++ b/src/VRChat.API/Model/InventoryDefaultAttributesValue.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventoryDefaultAttributesValueValidator.cs b/src/VRChat.API/Model/InventoryDefaultAttributesValueValidator.cs index c493e4fc..07cba4e9 100644 --- a/src/VRChat.API/Model/InventoryDefaultAttributesValueValidator.cs +++ b/src/VRChat.API/Model/InventoryDefaultAttributesValueValidator.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventoryDrop.cs b/src/VRChat.API/Model/InventoryDrop.cs index 5439c3ad..0f28bd62 100644 --- a/src/VRChat.API/Model/InventoryDrop.cs +++ b/src/VRChat.API/Model/InventoryDrop.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventoryEquipSlot.cs b/src/VRChat.API/Model/InventoryEquipSlot.cs index 5b22334a..e377e5c7 100644 --- a/src/VRChat.API/Model/InventoryEquipSlot.cs +++ b/src/VRChat.API/Model/InventoryEquipSlot.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -48,7 +48,13 @@ public enum InventoryEquipSlot /// Enum Portal for value: portal /// [EnumMember(Value = "portal")] - Portal = 3 + Portal = 3, + + /// + /// Enum Warp for value: warp + /// + [EnumMember(Value = "warp")] + Warp = 4 } } diff --git a/src/VRChat.API/Model/InventoryFlag.cs b/src/VRChat.API/Model/InventoryFlag.cs index 52e93466..5e26a652 100644 --- a/src/VRChat.API/Model/InventoryFlag.cs +++ b/src/VRChat.API/Model/InventoryFlag.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,16 +33,16 @@ namespace VRChat.API.Model public enum InventoryFlag { /// - /// Enum Instantiatable for value: instantiatable + /// Enum Archivable for value: archivable /// - [EnumMember(Value = "instantiatable")] - Instantiatable = 1, + [EnumMember(Value = "archivable")] + Archivable = 1, /// - /// Enum Archivable for value: archivable + /// Enum Cloneable for value: cloneable /// - [EnumMember(Value = "archivable")] - Archivable = 2, + [EnumMember(Value = "cloneable")] + Cloneable = 2, /// /// Enum Consumable for value: consumable @@ -51,28 +51,28 @@ public enum InventoryFlag Consumable = 3, /// - /// Enum Trashable for value: trashable + /// Enum Equippable for value: equippable /// - [EnumMember(Value = "trashable")] - Trashable = 4, + [EnumMember(Value = "equippable")] + Equippable = 4, /// - /// Enum Cloneable for value: cloneable + /// Enum Instantiatable for value: instantiatable /// - [EnumMember(Value = "cloneable")] - Cloneable = 5, + [EnumMember(Value = "instantiatable")] + Instantiatable = 5, /// - /// Enum Ugc for value: ugc + /// Enum Trashable for value: trashable /// - [EnumMember(Value = "ugc")] - Ugc = 6, + [EnumMember(Value = "trashable")] + Trashable = 6, /// - /// Enum Equippable for value: equippable + /// Enum Ugc for value: ugc /// - [EnumMember(Value = "equippable")] - Equippable = 7, + [EnumMember(Value = "ugc")] + Ugc = 7, /// /// Enum Unique for value: unique diff --git a/src/VRChat.API/Model/InventoryItem.cs b/src/VRChat.API/Model/InventoryItem.cs index a79278c2..db09e2a1 100644 --- a/src/VRChat.API/Model/InventoryItem.cs +++ b/src/VRChat.API/Model/InventoryItem.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventoryItemType.cs b/src/VRChat.API/Model/InventoryItemType.cs index 7d0eb45a..455ed4ed 100644 --- a/src/VRChat.API/Model/InventoryItemType.cs +++ b/src/VRChat.API/Model/InventoryItemType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,10 +39,10 @@ public enum InventoryItemType Bundle = 1, /// - /// Enum Prop for value: prop + /// Enum Droneskin for value: droneskin /// - [EnumMember(Value = "prop")] - Prop = 2, + [EnumMember(Value = "droneskin")] + Droneskin = 2, /// /// Enum Emoji for value: emoji @@ -51,22 +51,28 @@ public enum InventoryItemType Emoji = 3, /// - /// Enum Sticker for value: sticker + /// Enum Portalskin for value: portalskin /// - [EnumMember(Value = "sticker")] - Sticker = 4, + [EnumMember(Value = "portalskin")] + Portalskin = 4, /// - /// Enum Droneskin for value: droneskin + /// Enum Prop for value: prop /// - [EnumMember(Value = "droneskin")] - Droneskin = 5, + [EnumMember(Value = "prop")] + Prop = 5, /// - /// Enum Portalskin for value: portalskin + /// Enum Sticker for value: sticker /// - [EnumMember(Value = "portalskin")] - Portalskin = 6 + [EnumMember(Value = "sticker")] + Sticker = 6, + + /// + /// Enum Warpeffect for value: warpeffect + /// + [EnumMember(Value = "warpeffect")] + Warpeffect = 7 } } diff --git a/src/VRChat.API/Model/InventoryMetadata.cs b/src/VRChat.API/Model/InventoryMetadata.cs index 16e1e4ed..257fd2e3 100644 --- a/src/VRChat.API/Model/InventoryMetadata.cs +++ b/src/VRChat.API/Model/InventoryMetadata.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,33 +35,26 @@ public partial class InventoryMetadata : IEquatable, IValidat /// /// Initializes a new instance of the class. /// - /// Only in bundles. /// animated. /// animationStyle. /// assetBundleId. /// fileId. /// imageUrl. + /// Only in bundles. /// maskTag. /// propId. - public InventoryMetadata(List inventoryItemsToInstantiate = default, bool animated = default, string animationStyle = default, string assetBundleId = default, string fileId = default, string imageUrl = default, string maskTag = default, string propId = default) + public InventoryMetadata(bool animated = default, string animationStyle = default, string assetBundleId = default, string fileId = default, string imageUrl = default, List inventoryItemsToInstantiate = default, string maskTag = default, string propId = default) { - this.InventoryItemsToInstantiate = inventoryItemsToInstantiate; this.Animated = animated; this.AnimationStyle = animationStyle; this.AssetBundleId = assetBundleId; this.FileId = fileId; this.ImageUrl = imageUrl; + this.InventoryItemsToInstantiate = inventoryItemsToInstantiate; this.MaskTag = maskTag; this.PropId = propId; } - /// - /// Only in bundles - /// - /// Only in bundles - [DataMember(Name = "inventoryItemsToInstantiate", EmitDefaultValue = false)] - public List InventoryItemsToInstantiate { get; set; } - /// /// Gets or Sets Animated /// @@ -92,6 +85,13 @@ public InventoryMetadata(List inventoryItemsToInstantiate = default, boo [DataMember(Name = "imageUrl", EmitDefaultValue = false)] public string ImageUrl { get; set; } + /// + /// Only in bundles + /// + /// Only in bundles + [DataMember(Name = "inventoryItemsToInstantiate", EmitDefaultValue = false)] + public List InventoryItemsToInstantiate { get; set; } + /// /// Gets or Sets MaskTag /// @@ -115,12 +115,12 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class InventoryMetadata {\n"); - sb.Append(" InventoryItemsToInstantiate: ").Append(InventoryItemsToInstantiate).Append("\n"); sb.Append(" Animated: ").Append(Animated).Append("\n"); sb.Append(" AnimationStyle: ").Append(AnimationStyle).Append("\n"); sb.Append(" AssetBundleId: ").Append(AssetBundleId).Append("\n"); sb.Append(" FileId: ").Append(FileId).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); + sb.Append(" InventoryItemsToInstantiate: ").Append(InventoryItemsToInstantiate).Append("\n"); sb.Append(" MaskTag: ").Append(MaskTag).Append("\n"); sb.Append(" PropId: ").Append(PropId).Append("\n"); sb.Append("}\n"); @@ -158,12 +158,6 @@ public bool Equals(InventoryMetadata input) return false; } return - ( - this.InventoryItemsToInstantiate == input.InventoryItemsToInstantiate || - this.InventoryItemsToInstantiate != null && - input.InventoryItemsToInstantiate != null && - this.InventoryItemsToInstantiate.SequenceEqual(input.InventoryItemsToInstantiate) - ) && ( this.Animated == input.Animated || this.Animated.Equals(input.Animated) @@ -188,6 +182,12 @@ public bool Equals(InventoryMetadata input) (this.ImageUrl != null && this.ImageUrl.Equals(input.ImageUrl)) ) && + ( + this.InventoryItemsToInstantiate == input.InventoryItemsToInstantiate || + this.InventoryItemsToInstantiate != null && + input.InventoryItemsToInstantiate != null && + this.InventoryItemsToInstantiate.SequenceEqual(input.InventoryItemsToInstantiate) + ) && ( this.MaskTag == input.MaskTag || (this.MaskTag != null && @@ -209,10 +209,6 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.InventoryItemsToInstantiate != null) - { - hashCode = (hashCode * 59) + this.InventoryItemsToInstantiate.GetHashCode(); - } hashCode = (hashCode * 59) + this.Animated.GetHashCode(); if (this.AnimationStyle != null) { @@ -230,6 +226,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } + if (this.InventoryItemsToInstantiate != null) + { + hashCode = (hashCode * 59) + this.InventoryItemsToInstantiate.GetHashCode(); + } if (this.MaskTag != null) { hashCode = (hashCode * 59) + this.MaskTag.GetHashCode(); diff --git a/src/VRChat.API/Model/InventoryNotificationDetails.cs b/src/VRChat.API/Model/InventoryNotificationDetails.cs index 0a53debd..3c25e517 100644 --- a/src/VRChat.API/Model/InventoryNotificationDetails.cs +++ b/src/VRChat.API/Model/InventoryNotificationDetails.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventorySpawn.cs b/src/VRChat.API/Model/InventorySpawn.cs index fd25edbf..6fdded59 100644 --- a/src/VRChat.API/Model/InventorySpawn.cs +++ b/src/VRChat.API/Model/InventorySpawn.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventoryTemplate.cs b/src/VRChat.API/Model/InventoryTemplate.cs index 0dbf17a0..8a61a41c 100644 --- a/src/VRChat.API/Model/InventoryTemplate.cs +++ b/src/VRChat.API/Model/InventoryTemplate.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InventoryUserAttributes.cs b/src/VRChat.API/Model/InventoryUserAttributes.cs index 65282e59..bd1c014e 100644 --- a/src/VRChat.API/Model/InventoryUserAttributes.cs +++ b/src/VRChat.API/Model/InventoryUserAttributes.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InviteMessage.cs b/src/VRChat.API/Model/InviteMessage.cs index 9d97b8d1..39a2c5a4 100644 --- a/src/VRChat.API/Model/InviteMessage.cs +++ b/src/VRChat.API/Model/InviteMessage.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InviteMessageType.cs b/src/VRChat.API/Model/InviteMessageType.cs index dcd1b737..dce8795f 100644 --- a/src/VRChat.API/Model/InviteMessageType.cs +++ b/src/VRChat.API/Model/InviteMessageType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -38,23 +38,23 @@ public enum InviteMessageType [EnumMember(Value = "message")] Message = 1, - /// - /// Enum Response for value: response - /// - [EnumMember(Value = "response")] - Response = 2, - /// /// Enum Request for value: request /// [EnumMember(Value = "request")] - Request = 3, + Request = 2, /// /// Enum RequestResponse for value: requestResponse /// [EnumMember(Value = "requestResponse")] - RequestResponse = 4 + RequestResponse = 3, + + /// + /// Enum Response for value: response + /// + [EnumMember(Value = "response")] + Response = 4 } } diff --git a/src/VRChat.API/Model/InviteRequest.cs b/src/VRChat.API/Model/InviteRequest.cs index 82e097b3..f956ad12 100644 --- a/src/VRChat.API/Model/InviteRequest.cs +++ b/src/VRChat.API/Model/InviteRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/InviteResponse.cs b/src/VRChat.API/Model/InviteResponse.cs index cc57b45e..15e2319d 100644 --- a/src/VRChat.API/Model/InviteResponse.cs +++ b/src/VRChat.API/Model/InviteResponse.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Jam.cs b/src/VRChat.API/Model/Jam.cs index 4a165344..0bd09a10 100644 --- a/src/VRChat.API/Model/Jam.cs +++ b/src/VRChat.API/Model/Jam.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/JamStateChangeDates.cs b/src/VRChat.API/Model/JamStateChangeDates.cs index a7c7da68..858f793a 100644 --- a/src/VRChat.API/Model/JamStateChangeDates.cs +++ b/src/VRChat.API/Model/JamStateChangeDates.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/License.cs b/src/VRChat.API/Model/License.cs index 4c847da2..f79af8b0 100644 --- a/src/VRChat.API/Model/License.cs +++ b/src/VRChat.API/Model/License.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,17 +33,17 @@ namespace VRChat.API.Model public partial class License : IEquatable, IValidatableObject { - /// - /// Gets or Sets ForType - /// - [DataMember(Name = "forType", IsRequired = true, EmitDefaultValue = true)] - public LicenseType ForType { get; set; } - /// /// Gets or Sets ForAction /// [DataMember(Name = "forAction", IsRequired = true, EmitDefaultValue = true)] public LicenseAction ForAction { get; set; } + + /// + /// Gets or Sets ForType + /// + [DataMember(Name = "forType", IsRequired = true, EmitDefaultValue = true)] + public LicenseType ForType { get; set; } /// /// Initializes a new instance of the class. /// @@ -52,26 +52,26 @@ protected License() { } /// /// Initializes a new instance of the class. /// + /// forAction (required). /// Either a AvatarID, LicenseGroupID, PermissionID or ProductID. This depends on the `forType` field. (required). - /// forType (required). /// forName (required). - /// forAction (required). - public License(string forId = default, LicenseType forType = default, string forName = default, LicenseAction forAction = default) + /// forType (required). + public License(LicenseAction forAction = default, string forId = default, string forName = default, LicenseType forType = default) { + this.ForAction = forAction; // to ensure "forId" is required (not null) if (forId == null) { throw new ArgumentNullException("forId is a required property for License and cannot be null"); } this.ForId = forId; - this.ForType = forType; // to ensure "forName" is required (not null) if (forName == null) { throw new ArgumentNullException("forName is a required property for License and cannot be null"); } this.ForName = forName; - this.ForAction = forAction; + this.ForType = forType; } /// @@ -95,10 +95,10 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class License {\n"); + sb.Append(" ForAction: ").Append(ForAction).Append("\n"); sb.Append(" ForId: ").Append(ForId).Append("\n"); - sb.Append(" ForType: ").Append(ForType).Append("\n"); sb.Append(" ForName: ").Append(ForName).Append("\n"); - sb.Append(" ForAction: ").Append(ForAction).Append("\n"); + sb.Append(" ForType: ").Append(ForType).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -134,23 +134,23 @@ public bool Equals(License input) return false; } return + ( + this.ForAction == input.ForAction || + this.ForAction.Equals(input.ForAction) + ) && ( this.ForId == input.ForId || (this.ForId != null && this.ForId.Equals(input.ForId)) ) && - ( - this.ForType == input.ForType || - this.ForType.Equals(input.ForType) - ) && ( this.ForName == input.ForName || (this.ForName != null && this.ForName.Equals(input.ForName)) ) && ( - this.ForAction == input.ForAction || - this.ForAction.Equals(input.ForAction) + this.ForType == input.ForType || + this.ForType.Equals(input.ForType) ); } @@ -163,16 +163,16 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + hashCode = (hashCode * 59) + this.ForAction.GetHashCode(); if (this.ForId != null) { hashCode = (hashCode * 59) + this.ForId.GetHashCode(); } - hashCode = (hashCode * 59) + this.ForType.GetHashCode(); if (this.ForName != null) { hashCode = (hashCode * 59) + this.ForName.GetHashCode(); } - hashCode = (hashCode * 59) + this.ForAction.GetHashCode(); + hashCode = (hashCode * 59) + this.ForType.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/LicenseAction.cs b/src/VRChat.API/Model/LicenseAction.cs index 8acda95e..fb236bb7 100644 --- a/src/VRChat.API/Model/LicenseAction.cs +++ b/src/VRChat.API/Model/LicenseAction.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,16 +33,16 @@ namespace VRChat.API.Model public enum LicenseAction { /// - /// Enum Wear for value: wear + /// Enum Have for value: have /// - [EnumMember(Value = "wear")] - Wear = 1, + [EnumMember(Value = "have")] + Have = 1, /// - /// Enum Have for value: have + /// Enum Wear for value: wear /// - [EnumMember(Value = "have")] - Have = 2 + [EnumMember(Value = "wear")] + Wear = 2 } } diff --git a/src/VRChat.API/Model/LicenseGroup.cs b/src/VRChat.API/Model/LicenseGroup.cs index aced09d6..73d1aa13 100644 --- a/src/VRChat.API/Model/LicenseGroup.cs +++ b/src/VRChat.API/Model/LicenseGroup.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,38 +40,44 @@ protected LicenseGroup() { } /// /// Initializes a new instance of the class. /// - /// id (required). - /// name (required). /// description (required). + /// id (required). /// licenses (required). - public LicenseGroup(string id = default, string name = default, string description = default, List licenses = default) + /// name (required). + public LicenseGroup(string description = default, string id = default, List licenses = default, string name = default) { - // to ensure "id" is required (not null) - if (id == null) - { - throw new ArgumentNullException("id is a required property for LicenseGroup and cannot be null"); - } - this.Id = id; - // to ensure "name" is required (not null) - if (name == null) - { - throw new ArgumentNullException("name is a required property for LicenseGroup and cannot be null"); - } - this.Name = name; // to ensure "description" is required (not null) if (description == null) { throw new ArgumentNullException("description is a required property for LicenseGroup and cannot be null"); } this.Description = description; + // to ensure "id" is required (not null) + if (id == null) + { + throw new ArgumentNullException("id is a required property for LicenseGroup and cannot be null"); + } + this.Id = id; // to ensure "licenses" is required (not null) if (licenses == null) { throw new ArgumentNullException("licenses is a required property for LicenseGroup and cannot be null"); } this.Licenses = licenses; + // to ensure "name" is required (not null) + if (name == null) + { + throw new ArgumentNullException("name is a required property for LicenseGroup and cannot be null"); + } + this.Name = name; } + /// + /// Gets or Sets Description + /// + [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] + public string Description { get; set; } + /// /// Gets or Sets Id /// @@ -81,24 +87,18 @@ public LicenseGroup(string id = default, string name = default, string descripti [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] public string Id { get; set; } - /// - /// Gets or Sets Name - /// - [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] - public string Name { get; set; } - - /// - /// Gets or Sets Description - /// - [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] - public string Description { get; set; } - /// /// Gets or Sets Licenses /// [DataMember(Name = "licenses", IsRequired = true, EmitDefaultValue = true)] public List Licenses { get; set; } + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] + public string Name { get; set; } + /// /// Returns the string presentation of the object /// @@ -107,10 +107,10 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class LicenseGroup {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" Licenses: ").Append(Licenses).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -146,26 +146,26 @@ public bool Equals(LicenseGroup input) return false; } return - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && ( this.Description == input.Description || (this.Description != null && this.Description.Equals(input.Description)) ) && + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && ( this.Licenses == input.Licenses || this.Licenses != null && input.Licenses != null && this.Licenses.SequenceEqual(input.Licenses) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ); } @@ -178,22 +178,22 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } + if (this.Id != null) + { + hashCode = (hashCode * 59) + this.Id.GetHashCode(); + } if (this.Licenses != null) { hashCode = (hashCode * 59) + this.Licenses.GetHashCode(); } + if (this.Name != null) + { + hashCode = (hashCode * 59) + this.Name.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/LicenseType.cs b/src/VRChat.API/Model/LicenseType.cs index 4ad98929..e9bcc727 100644 --- a/src/VRChat.API/Model/LicenseType.cs +++ b/src/VRChat.API/Model/LicenseType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/LimitedGroup.cs b/src/VRChat.API/Model/LimitedGroup.cs index be46e466..0edf09af 100644 --- a/src/VRChat.API/Model/LimitedGroup.cs +++ b/src/VRChat.API/Model/LimitedGroup.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,82 +41,89 @@ public partial class LimitedGroup : IEquatable, IValidatableObject /// /// Initializes a new instance of the class. /// - /// id. - /// name. - /// shortCode. - /// discriminator. + /// bannerId. + /// bannerUrl. + /// createdAt. /// description. + /// discriminator. + /// . + /// iconId. /// iconUrl. - /// bannerUrl. + /// id. + /// isSearchable. + /// memberCount. + /// membershipStatus. + /// name. /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. /// rules. - /// iconId. - /// bannerId. - /// memberCount. + /// shortCode. /// . - /// createdAt. - /// membershipStatus. - /// isSearchable. - /// . - public LimitedGroup(string id = default, string name = default, string shortCode = default, string discriminator = default, string description = default, string iconUrl = default, string bannerUrl = default, string ownerId = default, string rules = default, string iconId = default, string bannerId = default, int memberCount = default, List tags = default, DateTime createdAt = default, GroupMemberStatus? membershipStatus = default, bool isSearchable = default, List galleries = default) + public LimitedGroup(string bannerId = default, string bannerUrl = default, DateTime createdAt = default, string description = default, string discriminator = default, List galleries = default, string iconId = default, string iconUrl = default, string id = default, bool isSearchable = default, int memberCount = default, GroupMemberStatus? membershipStatus = default, string name = default, string ownerId = default, string rules = default, string shortCode = default, List tags = default) { - this.Id = id; - this.Name = name; - this.ShortCode = shortCode; - this.Discriminator = discriminator; + this.BannerId = bannerId; + this.BannerUrl = bannerUrl; + this.CreatedAt = createdAt; this.Description = description; + this.Discriminator = discriminator; + this.Galleries = galleries; + this.IconId = iconId; this.IconUrl = iconUrl; - this.BannerUrl = bannerUrl; + this.Id = id; + this.IsSearchable = isSearchable; + this.MemberCount = memberCount; + this.MembershipStatus = membershipStatus; + this.Name = name; this.OwnerId = ownerId; this.Rules = rules; - this.IconId = iconId; - this.BannerId = bannerId; - this.MemberCount = memberCount; + this.ShortCode = shortCode; this.Tags = tags; - this.CreatedAt = createdAt; - this.MembershipStatus = membershipStatus; - this.IsSearchable = isSearchable; - this.Galleries = galleries; } /// - /// Gets or Sets Id + /// Gets or Sets BannerId /// - /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "bannerId", EmitDefaultValue = true)] + public string BannerId { get; set; } /// - /// Gets or Sets Name + /// Gets or Sets BannerUrl /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] + public string BannerUrl { get; set; } /// - /// Gets or Sets ShortCode + /// Gets or Sets CreatedAt /// - /* - ABC123 - */ - [DataMember(Name = "shortCode", EmitDefaultValue = false)] - public string ShortCode { get; set; } + [DataMember(Name = "createdAt", EmitDefaultValue = false)] + public DateTime CreatedAt { get; set; } + + /// + /// Gets or Sets Description + /// + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } /// /// Gets or Sets Discriminator /// /* - 1234 + 0000 */ [DataMember(Name = "discriminator", EmitDefaultValue = false)] public string Discriminator { get; set; } /// - /// Gets or Sets Description + /// /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + /// + [DataMember(Name = "galleries", EmitDefaultValue = false)] + public List Galleries { get; set; } + + /// + /// Gets or Sets IconId + /// + [DataMember(Name = "iconId", EmitDefaultValue = true)] + public string IconId { get; set; } /// /// Gets or Sets IconUrl @@ -125,10 +132,31 @@ public LimitedGroup(string id = default, string name = default, string shortCode public string IconUrl { get; set; } /// - /// Gets or Sets BannerUrl + /// Gets or Sets Id /// - [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] - public string BannerUrl { get; set; } + /* + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + */ + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } + + /// + /// Gets or Sets IsSearchable + /// + [DataMember(Name = "isSearchable", EmitDefaultValue = true)] + public bool IsSearchable { get; set; } + + /// + /// Gets or Sets MemberCount + /// + [DataMember(Name = "memberCount", EmitDefaultValue = false)] + public int MemberCount { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. @@ -147,22 +175,13 @@ public LimitedGroup(string id = default, string name = default, string shortCode public string Rules { get; set; } /// - /// Gets or Sets IconId - /// - [DataMember(Name = "iconId", EmitDefaultValue = true)] - public string IconId { get; set; } - - /// - /// Gets or Sets BannerId - /// - [DataMember(Name = "bannerId", EmitDefaultValue = true)] - public string BannerId { get; set; } - - /// - /// Gets or Sets MemberCount + /// Gets or Sets ShortCode /// - [DataMember(Name = "memberCount", EmitDefaultValue = false)] - public int MemberCount { get; set; } + /* + VRCHAT + */ + [DataMember(Name = "shortCode", EmitDefaultValue = false)] + public string ShortCode { get; set; } /// /// @@ -171,25 +190,6 @@ public LimitedGroup(string id = default, string name = default, string shortCode [DataMember(Name = "tags", EmitDefaultValue = false)] public List Tags { get; set; } - /// - /// Gets or Sets CreatedAt - /// - [DataMember(Name = "createdAt", EmitDefaultValue = false)] - public DateTime CreatedAt { get; set; } - - /// - /// Gets or Sets IsSearchable - /// - [DataMember(Name = "isSearchable", EmitDefaultValue = true)] - public bool IsSearchable { get; set; } - - /// - /// - /// - /// - [DataMember(Name = "galleries", EmitDefaultValue = false)] - public List Galleries { get; set; } - /// /// Returns the string presentation of the object /// @@ -198,23 +198,23 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class LimitedGroup {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); - sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); + sb.Append(" BannerId: ").Append(BannerId).Append("\n"); + sb.Append(" BannerUrl: ").Append(BannerUrl).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); + sb.Append(" Galleries: ").Append(Galleries).Append("\n"); + sb.Append(" IconId: ").Append(IconId).Append("\n"); sb.Append(" IconUrl: ").Append(IconUrl).Append("\n"); - sb.Append(" BannerUrl: ").Append(BannerUrl).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" IsSearchable: ").Append(IsSearchable).Append("\n"); + sb.Append(" MemberCount: ").Append(MemberCount).Append("\n"); + sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); sb.Append(" Rules: ").Append(Rules).Append("\n"); - sb.Append(" IconId: ").Append(IconId).Append("\n"); - sb.Append(" BannerId: ").Append(BannerId).Append("\n"); - sb.Append(" MemberCount: ").Append(MemberCount).Append("\n"); + sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" MembershipStatus: ").Append(MembershipStatus).Append("\n"); - sb.Append(" IsSearchable: ").Append(IsSearchable).Append("\n"); - sb.Append(" Galleries: ").Append(Galleries).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -251,19 +251,24 @@ public bool Equals(LimitedGroup input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.BannerId == input.BannerId || + (this.BannerId != null && + this.BannerId.Equals(input.BannerId)) ) && ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.BannerUrl == input.BannerUrl || + (this.BannerUrl != null && + this.BannerUrl.Equals(input.BannerUrl)) ) && ( - this.ShortCode == input.ShortCode || - (this.ShortCode != null && - this.ShortCode.Equals(input.ShortCode)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.Discriminator == input.Discriminator || @@ -271,9 +276,15 @@ public bool Equals(LimitedGroup input) this.Discriminator.Equals(input.Discriminator)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.Galleries == input.Galleries || + this.Galleries != null && + input.Galleries != null && + this.Galleries.SequenceEqual(input.Galleries) + ) && + ( + this.IconId == input.IconId || + (this.IconId != null && + this.IconId.Equals(input.IconId)) ) && ( this.IconUrl == input.IconUrl || @@ -281,9 +292,26 @@ public bool Equals(LimitedGroup input) this.IconUrl.Equals(input.IconUrl)) ) && ( - this.BannerUrl == input.BannerUrl || - (this.BannerUrl != null && - this.BannerUrl.Equals(input.BannerUrl)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.IsSearchable == input.IsSearchable || + this.IsSearchable.Equals(input.IsSearchable) + ) && + ( + this.MemberCount == input.MemberCount || + this.MemberCount.Equals(input.MemberCount) + ) && + ( + this.MembershipStatus == input.MembershipStatus || + this.MembershipStatus.Equals(input.MembershipStatus) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.OwnerId == input.OwnerId || @@ -296,43 +324,15 @@ public bool Equals(LimitedGroup input) this.Rules.Equals(input.Rules)) ) && ( - this.IconId == input.IconId || - (this.IconId != null && - this.IconId.Equals(input.IconId)) - ) && - ( - this.BannerId == input.BannerId || - (this.BannerId != null && - this.BannerId.Equals(input.BannerId)) - ) && - ( - this.MemberCount == input.MemberCount || - this.MemberCount.Equals(input.MemberCount) + this.ShortCode == input.ShortCode || + (this.ShortCode != null && + this.ShortCode.Equals(input.ShortCode)) ) && ( this.Tags == input.Tags || this.Tags != null && input.Tags != null && this.Tags.SequenceEqual(input.Tags) - ) && - ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) - ) && - ( - this.MembershipStatus == input.MembershipStatus || - this.MembershipStatus.Equals(input.MembershipStatus) - ) && - ( - this.IsSearchable == input.IsSearchable || - this.IsSearchable.Equals(input.IsSearchable) - ) && - ( - this.Galleries == input.Galleries || - this.Galleries != null && - input.Galleries != null && - this.Galleries.SequenceEqual(input.Galleries) ); } @@ -345,33 +345,48 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + if (this.BannerId != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); } - if (this.Name != null) + if (this.BannerUrl != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); } - if (this.ShortCode != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + } + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } if (this.Discriminator != null) { hashCode = (hashCode * 59) + this.Discriminator.GetHashCode(); } - if (this.Description != null) + if (this.Galleries != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.Galleries.GetHashCode(); + } + if (this.IconId != null) + { + hashCode = (hashCode * 59) + this.IconId.GetHashCode(); } if (this.IconUrl != null) { hashCode = (hashCode * 59) + this.IconUrl.GetHashCode(); } - if (this.BannerUrl != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); + } + hashCode = (hashCode * 59) + this.IsSearchable.GetHashCode(); + hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); + hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); + if (this.Name != null) + { + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } if (this.OwnerId != null) { @@ -381,29 +396,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Rules.GetHashCode(); } - if (this.IconId != null) - { - hashCode = (hashCode * 59) + this.IconId.GetHashCode(); - } - if (this.BannerId != null) + if (this.ShortCode != null) { - hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); + hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); } - hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); if (this.Tags != null) { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } - if (this.CreatedAt != null) - { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); - } - hashCode = (hashCode * 59) + this.MembershipStatus.GetHashCode(); - hashCode = (hashCode * 59) + this.IsSearchable.GetHashCode(); - if (this.Galleries != null) - { - hashCode = (hashCode * 59) + this.Galleries.GetHashCode(); - } return hashCode; } } diff --git a/src/VRChat.API/Model/LimitedUnityPackage.cs b/src/VRChat.API/Model/LimitedUnityPackage.cs index 16e335c6..b7d7f504 100644 --- a/src/VRChat.API/Model/LimitedUnityPackage.cs +++ b/src/VRChat.API/Model/LimitedUnityPackage.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/LimitedUserFriend.cs b/src/VRChat.API/Model/LimitedUserFriend.cs index 22900cf1..7a3c2515 100644 --- a/src/VRChat.API/Model/LimitedUserFriend.cs +++ b/src/VRChat.API/Model/LimitedUserFriend.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -55,19 +55,19 @@ protected LimitedUserFriend() { } /// bio. /// . /// When profilePicOverride is not empty, use it instead.. - /// When profilePicOverride is not empty, use it instead.. /// currentAvatarTags. + /// When profilePicOverride is not empty, use it instead.. /// developerType (required). /// displayName (required). /// friendKey (required). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). - /// isFriend (required). /// imageUrl (required). - /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. (required). - /// location (required). - /// lastLogin (required). + /// isFriend (required). /// lastActivity (required). + /// lastLogin (required). /// lastMobile (required). + /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. (required). + /// location (required). /// platform (required). /// profilePicOverride. /// profilePicOverrideThumbnail. @@ -75,7 +75,7 @@ protected LimitedUserFriend() { } /// statusDescription (required). /// <- Always empty. (required). /// userIcon. - public LimitedUserFriend(string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, string currentAvatarThumbnailImageUrl = default, List currentAvatarTags = default, DeveloperType developerType = default, string displayName = default, string friendKey = default, string id = default, bool isFriend = default, string imageUrl = default, string lastPlatform = default, string location = default, DateTime? lastLogin = default, DateTime? lastActivity = default, DateTime? lastMobile = default, string platform = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, UserStatus status = default, string statusDescription = default, List tags = default, string userIcon = default) + public LimitedUserFriend(string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, DeveloperType developerType = default, string displayName = default, string friendKey = default, string id = default, string imageUrl = default, bool isFriend = default, DateTime? lastActivity = default, DateTime? lastLogin = default, DateTime? lastMobile = default, string lastPlatform = default, string location = default, string platform = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, UserStatus status = default, string statusDescription = default, List tags = default, string userIcon = default) { this.DeveloperType = developerType; // to ensure "displayName" is required (not null) @@ -96,43 +96,43 @@ public LimitedUserFriend(string bio = default, List bioLinks = default, throw new ArgumentNullException("id is a required property for LimitedUserFriend and cannot be null"); } this.Id = id; - this.IsFriend = isFriend; // to ensure "imageUrl" is required (not null) if (imageUrl == null) { throw new ArgumentNullException("imageUrl is a required property for LimitedUserFriend and cannot be null"); } this.ImageUrl = imageUrl; - // to ensure "lastPlatform" is required (not null) - if (lastPlatform == null) - { - throw new ArgumentNullException("lastPlatform is a required property for LimitedUserFriend and cannot be null"); - } - this.LastPlatform = lastPlatform; - // to ensure "location" is required (not null) - if (location == null) + this.IsFriend = isFriend; + // to ensure "lastActivity" is required (not null) + if (lastActivity == null) { - throw new ArgumentNullException("location is a required property for LimitedUserFriend and cannot be null"); + throw new ArgumentNullException("lastActivity is a required property for LimitedUserFriend and cannot be null"); } - this.Location = location; + this.LastActivity = lastActivity; // to ensure "lastLogin" is required (not null) if (lastLogin == null) { throw new ArgumentNullException("lastLogin is a required property for LimitedUserFriend and cannot be null"); } this.LastLogin = lastLogin; - // to ensure "lastActivity" is required (not null) - if (lastActivity == null) - { - throw new ArgumentNullException("lastActivity is a required property for LimitedUserFriend and cannot be null"); - } - this.LastActivity = lastActivity; // to ensure "lastMobile" is required (not null) if (lastMobile == null) { throw new ArgumentNullException("lastMobile is a required property for LimitedUserFriend and cannot be null"); } this.LastMobile = lastMobile; + // to ensure "lastPlatform" is required (not null) + if (lastPlatform == null) + { + throw new ArgumentNullException("lastPlatform is a required property for LimitedUserFriend and cannot be null"); + } + this.LastPlatform = lastPlatform; + // to ensure "location" is required (not null) + if (location == null) + { + throw new ArgumentNullException("location is a required property for LimitedUserFriend and cannot be null"); + } + this.Location = location; // to ensure "platform" is required (not null) if (platform == null) { @@ -155,8 +155,8 @@ public LimitedUserFriend(string bio = default, List bioLinks = default, this.Bio = bio; this.BioLinks = bioLinks; this.CurrentAvatarImageUrl = currentAvatarImageUrl; - this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; this.CurrentAvatarTags = currentAvatarTags; + this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; this.ProfilePicOverride = profilePicOverride; this.ProfilePicOverrideThumbnail = profilePicOverrideThumbnail; this.UserIcon = userIcon; @@ -185,6 +185,12 @@ public LimitedUserFriend(string bio = default, List bioLinks = default, [DataMember(Name = "currentAvatarImageUrl", EmitDefaultValue = false)] public string CurrentAvatarImageUrl { get; set; } + /// + /// Gets or Sets CurrentAvatarTags + /// + [DataMember(Name = "currentAvatarTags", EmitDefaultValue = false)] + public List CurrentAvatarTags { get; set; } + /// /// When profilePicOverride is not empty, use it instead. /// @@ -195,12 +201,6 @@ public LimitedUserFriend(string bio = default, List bioLinks = default, [DataMember(Name = "currentAvatarThumbnailImageUrl", EmitDefaultValue = false)] public string CurrentAvatarThumbnailImageUrl { get; set; } - /// - /// Gets or Sets CurrentAvatarTags - /// - [DataMember(Name = "currentAvatarTags", EmitDefaultValue = false)] - public List CurrentAvatarTags { get; set; } - /// /// Gets or Sets DisplayName /// @@ -223,6 +223,12 @@ public LimitedUserFriend(string bio = default, List bioLinks = default, [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] public string Id { get; set; } + /// + /// Gets or Sets ImageUrl + /// + [DataMember(Name = "imageUrl", IsRequired = true, EmitDefaultValue = true)] + public string ImageUrl { get; set; } + /// /// Gets or Sets IsFriend /// @@ -230,10 +236,22 @@ public LimitedUserFriend(string bio = default, List bioLinks = default, public bool IsFriend { get; set; } /// - /// Gets or Sets ImageUrl + /// Gets or Sets LastActivity /// - [DataMember(Name = "imageUrl", IsRequired = true, EmitDefaultValue = true)] - public string ImageUrl { get; set; } + [DataMember(Name = "last_activity", IsRequired = true, EmitDefaultValue = true)] + public DateTime? LastActivity { get; set; } + + /// + /// Gets or Sets LastLogin + /// + [DataMember(Name = "last_login", IsRequired = true, EmitDefaultValue = true)] + public DateTime? LastLogin { get; set; } + + /// + /// Gets or Sets LastMobile + /// + [DataMember(Name = "last_mobile", IsRequired = true, EmitDefaultValue = true)] + public DateTime? LastMobile { get; set; } /// /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. @@ -251,24 +269,6 @@ public LimitedUserFriend(string bio = default, List bioLinks = default, [DataMember(Name = "location", IsRequired = true, EmitDefaultValue = true)] public string Location { get; set; } - /// - /// Gets or Sets LastLogin - /// - [DataMember(Name = "last_login", IsRequired = true, EmitDefaultValue = true)] - public DateTime? LastLogin { get; set; } - - /// - /// Gets or Sets LastActivity - /// - [DataMember(Name = "last_activity", IsRequired = true, EmitDefaultValue = true)] - public DateTime? LastActivity { get; set; } - - /// - /// Gets or Sets LastMobile - /// - [DataMember(Name = "last_mobile", IsRequired = true, EmitDefaultValue = true)] - public DateTime? LastMobile { get; set; } - /// /// Gets or Sets Platform /// @@ -317,19 +317,19 @@ public override string ToString() sb.Append(" Bio: ").Append(Bio).Append("\n"); sb.Append(" BioLinks: ").Append(BioLinks).Append("\n"); sb.Append(" CurrentAvatarImageUrl: ").Append(CurrentAvatarImageUrl).Append("\n"); - sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" DeveloperType: ").Append(DeveloperType).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); sb.Append(" FriendKey: ").Append(FriendKey).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" IsFriend: ").Append(IsFriend).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); - sb.Append(" LastPlatform: ").Append(LastPlatform).Append("\n"); - sb.Append(" Location: ").Append(Location).Append("\n"); - sb.Append(" LastLogin: ").Append(LastLogin).Append("\n"); + sb.Append(" IsFriend: ").Append(IsFriend).Append("\n"); sb.Append(" LastActivity: ").Append(LastActivity).Append("\n"); + sb.Append(" LastLogin: ").Append(LastLogin).Append("\n"); sb.Append(" LastMobile: ").Append(LastMobile).Append("\n"); + sb.Append(" LastPlatform: ").Append(LastPlatform).Append("\n"); + sb.Append(" Location: ").Append(Location).Append("\n"); sb.Append(" Platform: ").Append(Platform).Append("\n"); sb.Append(" ProfilePicOverride: ").Append(ProfilePicOverride).Append("\n"); sb.Append(" ProfilePicOverrideThumbnail: ").Append(ProfilePicOverrideThumbnail).Append("\n"); @@ -388,17 +388,17 @@ public bool Equals(LimitedUserFriend input) (this.CurrentAvatarImageUrl != null && this.CurrentAvatarImageUrl.Equals(input.CurrentAvatarImageUrl)) ) && - ( - this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || - (this.CurrentAvatarThumbnailImageUrl != null && - this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) - ) && ( this.CurrentAvatarTags == input.CurrentAvatarTags || this.CurrentAvatarTags != null && input.CurrentAvatarTags != null && this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) ) && + ( + this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || + (this.CurrentAvatarThumbnailImageUrl != null && + this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) + ) && ( this.DeveloperType == input.DeveloperType || this.DeveloperType.Equals(input.DeveloperType) @@ -418,40 +418,40 @@ public bool Equals(LimitedUserFriend input) (this.Id != null && this.Id.Equals(input.Id)) ) && - ( - this.IsFriend == input.IsFriend || - this.IsFriend.Equals(input.IsFriend) - ) && ( this.ImageUrl == input.ImageUrl || (this.ImageUrl != null && this.ImageUrl.Equals(input.ImageUrl)) ) && ( - this.LastPlatform == input.LastPlatform || - (this.LastPlatform != null && - this.LastPlatform.Equals(input.LastPlatform)) + this.IsFriend == input.IsFriend || + this.IsFriend.Equals(input.IsFriend) ) && ( - this.Location == input.Location || - (this.Location != null && - this.Location.Equals(input.Location)) + this.LastActivity == input.LastActivity || + (this.LastActivity != null && + this.LastActivity.Equals(input.LastActivity)) ) && ( this.LastLogin == input.LastLogin || (this.LastLogin != null && this.LastLogin.Equals(input.LastLogin)) ) && - ( - this.LastActivity == input.LastActivity || - (this.LastActivity != null && - this.LastActivity.Equals(input.LastActivity)) - ) && ( this.LastMobile == input.LastMobile || (this.LastMobile != null && this.LastMobile.Equals(input.LastMobile)) ) && + ( + this.LastPlatform == input.LastPlatform || + (this.LastPlatform != null && + this.LastPlatform.Equals(input.LastPlatform)) + ) && + ( + this.Location == input.Location || + (this.Location != null && + this.Location.Equals(input.Location)) + ) && ( this.Platform == input.Platform || (this.Platform != null && @@ -510,14 +510,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.CurrentAvatarImageUrl.GetHashCode(); } - if (this.CurrentAvatarThumbnailImageUrl != null) - { - hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); - } if (this.CurrentAvatarTags != null) { hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); } + if (this.CurrentAvatarThumbnailImageUrl != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); + } hashCode = (hashCode * 59) + this.DeveloperType.GetHashCode(); if (this.DisplayName != null) { @@ -531,31 +531,31 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsFriend.GetHashCode(); if (this.ImageUrl != null) { hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } - if (this.LastPlatform != null) - { - hashCode = (hashCode * 59) + this.LastPlatform.GetHashCode(); - } - if (this.Location != null) + hashCode = (hashCode * 59) + this.IsFriend.GetHashCode(); + if (this.LastActivity != null) { - hashCode = (hashCode * 59) + this.Location.GetHashCode(); + hashCode = (hashCode * 59) + this.LastActivity.GetHashCode(); } if (this.LastLogin != null) { hashCode = (hashCode * 59) + this.LastLogin.GetHashCode(); } - if (this.LastActivity != null) - { - hashCode = (hashCode * 59) + this.LastActivity.GetHashCode(); - } if (this.LastMobile != null) { hashCode = (hashCode * 59) + this.LastMobile.GetHashCode(); } + if (this.LastPlatform != null) + { + hashCode = (hashCode * 59) + this.LastPlatform.GetHashCode(); + } + if (this.Location != null) + { + hashCode = (hashCode * 59) + this.Location.GetHashCode(); + } if (this.Platform != null) { hashCode = (hashCode * 59) + this.Platform.GetHashCode(); diff --git a/src/VRChat.API/Model/LimitedUserGroups.cs b/src/VRChat.API/Model/LimitedUserGroups.cs index ec939996..e0b41a37 100644 --- a/src/VRChat.API/Model/LimitedUserGroups.cs +++ b/src/VRChat.API/Model/LimitedUserGroups.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,84 +35,81 @@ public partial class LimitedUserGroups : IEquatable, IValidat /// /// Initializes a new instance of the class. /// - /// id. - /// name. - /// shortCode. - /// discriminator. + /// bannerId. + /// bannerUrl. /// description. + /// discriminator. + /// groupId. /// iconId. /// iconUrl. - /// bannerId. - /// bannerUrl. - /// privacy. + /// id. + /// isRepresenting. /// lastPostCreatedAt. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// lastPostReadAt. /// memberCount. - /// groupId. /// memberVisibility. - /// isRepresenting. /// mutualGroup. - /// lastPostReadAt. - public LimitedUserGroups(string id = default, string name = default, string shortCode = default, string discriminator = default, string description = default, string iconId = default, string iconUrl = default, string bannerId = default, string bannerUrl = default, string privacy = default, DateTime? lastPostCreatedAt = default, string ownerId = default, int memberCount = default, string groupId = default, string memberVisibility = default, bool isRepresenting = default, bool mutualGroup = default, DateTime? lastPostReadAt = default) + /// name. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// privacy. + /// shortCode. + public LimitedUserGroups(string bannerId = default, string bannerUrl = default, string description = default, string discriminator = default, string groupId = default, string iconId = default, string iconUrl = default, string id = default, bool isRepresenting = default, DateTime? lastPostCreatedAt = default, DateTime? lastPostReadAt = default, int memberCount = default, string memberVisibility = default, bool mutualGroup = default, string name = default, string ownerId = default, string privacy = default, string shortCode = default) { - this.Id = id; - this.Name = name; - this.ShortCode = shortCode; - this.Discriminator = discriminator; + this.BannerId = bannerId; + this.BannerUrl = bannerUrl; this.Description = description; + this.Discriminator = discriminator; + this.GroupId = groupId; this.IconId = iconId; this.IconUrl = iconUrl; - this.BannerId = bannerId; - this.BannerUrl = bannerUrl; - this.Privacy = privacy; + this.Id = id; + this.IsRepresenting = isRepresenting; this.LastPostCreatedAt = lastPostCreatedAt; - this.OwnerId = ownerId; + this.LastPostReadAt = lastPostReadAt; this.MemberCount = memberCount; - this.GroupId = groupId; this.MemberVisibility = memberVisibility; - this.IsRepresenting = isRepresenting; this.MutualGroup = mutualGroup; - this.LastPostReadAt = lastPostReadAt; + this.Name = name; + this.OwnerId = ownerId; + this.Privacy = privacy; + this.ShortCode = shortCode; } /// - /// Gets or Sets Id + /// Gets or Sets BannerId /// - /* - gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } + [DataMember(Name = "bannerId", EmitDefaultValue = true)] + public string BannerId { get; set; } /// - /// Gets or Sets Name + /// Gets or Sets BannerUrl /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] + public string BannerUrl { get; set; } /// - /// Gets or Sets ShortCode + /// Gets or Sets Description /// - /* - ABC123 - */ - [DataMember(Name = "shortCode", EmitDefaultValue = false)] - public string ShortCode { get; set; } + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } /// /// Gets or Sets Discriminator /// /* - 1234 + 0000 */ [DataMember(Name = "discriminator", EmitDefaultValue = false)] public string Discriminator { get; set; } /// - /// Gets or Sets Description + /// Gets or Sets GroupId /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + /* + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + */ + [DataMember(Name = "groupId", EmitDefaultValue = false)] + public string GroupId { get; set; } /// /// Gets or Sets IconId @@ -127,22 +124,19 @@ public LimitedUserGroups(string id = default, string name = default, string shor public string IconUrl { get; set; } /// - /// Gets or Sets BannerId - /// - [DataMember(Name = "bannerId", EmitDefaultValue = true)] - public string BannerId { get; set; } - - /// - /// Gets or Sets BannerUrl + /// Gets or Sets Id /// - [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] - public string BannerUrl { get; set; } + /* + gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 + */ + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } /// - /// Gets or Sets Privacy + /// Gets or Sets IsRepresenting /// - [DataMember(Name = "privacy", EmitDefaultValue = false)] - public string Privacy { get; set; } + [DataMember(Name = "isRepresenting", EmitDefaultValue = true)] + public bool IsRepresenting { get; set; } /// /// Gets or Sets LastPostCreatedAt @@ -151,14 +145,10 @@ public LimitedUserGroups(string id = default, string name = default, string shor public DateTime? LastPostCreatedAt { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets LastPostReadAt /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "ownerId", EmitDefaultValue = false)] - public string OwnerId { get; set; } + [DataMember(Name = "lastPostReadAt", EmitDefaultValue = true)] + public DateTime? LastPostReadAt { get; set; } /// /// Gets or Sets MemberCount @@ -166,27 +156,12 @@ public LimitedUserGroups(string id = default, string name = default, string shor [DataMember(Name = "memberCount", EmitDefaultValue = false)] public int MemberCount { get; set; } - /// - /// Gets or Sets GroupId - /// - /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 - */ - [DataMember(Name = "groupId", EmitDefaultValue = false)] - public string GroupId { get; set; } - /// /// Gets or Sets MemberVisibility /// [DataMember(Name = "memberVisibility", EmitDefaultValue = false)] public string MemberVisibility { get; set; } - /// - /// Gets or Sets IsRepresenting - /// - [DataMember(Name = "isRepresenting", EmitDefaultValue = true)] - public bool IsRepresenting { get; set; } - /// /// Gets or Sets MutualGroup /// @@ -194,10 +169,35 @@ public LimitedUserGroups(string id = default, string name = default, string shor public bool MutualGroup { get; set; } /// - /// Gets or Sets LastPostReadAt + /// Gets or Sets Name /// - [DataMember(Name = "lastPostReadAt", EmitDefaultValue = true)] - public DateTime? LastPostReadAt { get; set; } + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "ownerId", EmitDefaultValue = false)] + public string OwnerId { get; set; } + + /// + /// Gets or Sets Privacy + /// + [DataMember(Name = "privacy", EmitDefaultValue = false)] + public string Privacy { get; set; } + + /// + /// Gets or Sets ShortCode + /// + /* + VRCHAT + */ + [DataMember(Name = "shortCode", EmitDefaultValue = false)] + public string ShortCode { get; set; } /// /// Returns the string presentation of the object @@ -207,24 +207,24 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class LimitedUserGroups {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); - sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); + sb.Append(" BannerId: ").Append(BannerId).Append("\n"); + sb.Append(" BannerUrl: ").Append(BannerUrl).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); sb.Append(" IconId: ").Append(IconId).Append("\n"); sb.Append(" IconUrl: ").Append(IconUrl).Append("\n"); - sb.Append(" BannerId: ").Append(BannerId).Append("\n"); - sb.Append(" BannerUrl: ").Append(BannerUrl).Append("\n"); - sb.Append(" Privacy: ").Append(Privacy).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); sb.Append(" LastPostCreatedAt: ").Append(LastPostCreatedAt).Append("\n"); - sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); + sb.Append(" LastPostReadAt: ").Append(LastPostReadAt).Append("\n"); sb.Append(" MemberCount: ").Append(MemberCount).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); sb.Append(" MemberVisibility: ").Append(MemberVisibility).Append("\n"); - sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); sb.Append(" MutualGroup: ").Append(MutualGroup).Append("\n"); - sb.Append(" LastPostReadAt: ").Append(LastPostReadAt).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); + sb.Append(" Privacy: ").Append(Privacy).Append("\n"); + sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -261,19 +261,19 @@ public bool Equals(LimitedUserGroups input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.BannerId == input.BannerId || + (this.BannerId != null && + this.BannerId.Equals(input.BannerId)) ) && ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.BannerUrl == input.BannerUrl || + (this.BannerUrl != null && + this.BannerUrl.Equals(input.BannerUrl)) ) && ( - this.ShortCode == input.ShortCode || - (this.ShortCode != null && - this.ShortCode.Equals(input.ShortCode)) + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.Discriminator == input.Discriminator || @@ -281,9 +281,9 @@ public bool Equals(LimitedUserGroups input) this.Discriminator.Equals(input.Discriminator)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) ) && ( this.IconId == input.IconId || @@ -296,19 +296,13 @@ public bool Equals(LimitedUserGroups input) this.IconUrl.Equals(input.IconUrl)) ) && ( - this.BannerId == input.BannerId || - (this.BannerId != null && - this.BannerId.Equals(input.BannerId)) - ) && - ( - this.BannerUrl == input.BannerUrl || - (this.BannerUrl != null && - this.BannerUrl.Equals(input.BannerUrl)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.Privacy == input.Privacy || - (this.Privacy != null && - this.Privacy.Equals(input.Privacy)) + this.IsRepresenting == input.IsRepresenting || + this.IsRepresenting.Equals(input.IsRepresenting) ) && ( this.LastPostCreatedAt == input.LastPostCreatedAt || @@ -316,36 +310,42 @@ public bool Equals(LimitedUserGroups input) this.LastPostCreatedAt.Equals(input.LastPostCreatedAt)) ) && ( - this.OwnerId == input.OwnerId || - (this.OwnerId != null && - this.OwnerId.Equals(input.OwnerId)) + this.LastPostReadAt == input.LastPostReadAt || + (this.LastPostReadAt != null && + this.LastPostReadAt.Equals(input.LastPostReadAt)) ) && ( this.MemberCount == input.MemberCount || this.MemberCount.Equals(input.MemberCount) ) && - ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) - ) && ( this.MemberVisibility == input.MemberVisibility || (this.MemberVisibility != null && this.MemberVisibility.Equals(input.MemberVisibility)) ) && - ( - this.IsRepresenting == input.IsRepresenting || - this.IsRepresenting.Equals(input.IsRepresenting) - ) && ( this.MutualGroup == input.MutualGroup || this.MutualGroup.Equals(input.MutualGroup) ) && ( - this.LastPostReadAt == input.LastPostReadAt || - (this.LastPostReadAt != null && - this.LastPostReadAt.Equals(input.LastPostReadAt)) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.OwnerId == input.OwnerId || + (this.OwnerId != null && + this.OwnerId.Equals(input.OwnerId)) + ) && + ( + this.Privacy == input.Privacy || + (this.Privacy != null && + this.Privacy.Equals(input.Privacy)) + ) && + ( + this.ShortCode == input.ShortCode || + (this.ShortCode != null && + this.ShortCode.Equals(input.ShortCode)) ); } @@ -358,25 +358,25 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + if (this.BannerId != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); } - if (this.Name != null) + if (this.BannerUrl != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); } - if (this.ShortCode != null) + if (this.Description != null) { - hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } if (this.Discriminator != null) { hashCode = (hashCode * 59) + this.Discriminator.GetHashCode(); } - if (this.Description != null) + if (this.GroupId != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } if (this.IconId != null) { @@ -386,40 +386,40 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.IconUrl.GetHashCode(); } - if (this.BannerId != null) - { - hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); - } - if (this.BannerUrl != null) - { - hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); - } - if (this.Privacy != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.Privacy.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); if (this.LastPostCreatedAt != null) { hashCode = (hashCode * 59) + this.LastPostCreatedAt.GetHashCode(); } - if (this.OwnerId != null) + if (this.LastPostReadAt != null) { - hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); + hashCode = (hashCode * 59) + this.LastPostReadAt.GetHashCode(); } hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); - if (this.GroupId != null) - { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); - } if (this.MemberVisibility != null) { hashCode = (hashCode * 59) + this.MemberVisibility.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); hashCode = (hashCode * 59) + this.MutualGroup.GetHashCode(); - if (this.LastPostReadAt != null) + if (this.Name != null) { - hashCode = (hashCode * 59) + this.LastPostReadAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); + } + if (this.OwnerId != null) + { + hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); + } + if (this.Privacy != null) + { + hashCode = (hashCode * 59) + this.Privacy.GetHashCode(); + } + if (this.ShortCode != null) + { + hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/LimitedUserInstance.cs b/src/VRChat.API/Model/LimitedUserInstance.cs index cadd8b37..5d0efb61 100644 --- a/src/VRChat.API/Model/LimitedUserInstance.cs +++ b/src/VRChat.API/Model/LimitedUserInstance.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -70,18 +70,18 @@ protected LimitedUserInstance() { } /// bio. /// . /// When profilePicOverride is not empty, use it instead. (required). - /// When profilePicOverride is not empty, use it instead. (required). /// currentAvatarTags (required). + /// When profilePicOverride is not empty, use it instead. (required). /// dateJoined (required). /// developerType (required). /// displayName (required). /// friendKey (required). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). - /// isFriend (required). /// imageUrl. - /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. (required). + /// isFriend (required). /// lastActivity (required). /// lastMobile (required). + /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. (required). /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`.. /// profilePicOverride. /// profilePicOverrideThumbnail. @@ -91,7 +91,7 @@ protected LimitedUserInstance() { } /// statusDescription (required). /// tags (required). /// userIcon. - public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default, bool ageVerified = default, bool allowAvatarCopying = default, string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, string currentAvatarThumbnailImageUrl = default, List currentAvatarTags = default, DateTime? dateJoined = default, DeveloperType developerType = default, string displayName = default, string friendKey = default, string id = default, bool isFriend = default, string imageUrl = default, string lastPlatform = default, DateTime? lastActivity = default, DateTime? lastMobile = default, string platform = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, string pronouns = default, UserState state = default, UserStatus status = default, string statusDescription = default, List tags = default, string userIcon = default) + public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default, bool ageVerified = default, bool allowAvatarCopying = default, string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, DateTime? dateJoined = default, DeveloperType developerType = default, string displayName = default, string friendKey = default, string id = default, string imageUrl = default, bool isFriend = default, DateTime? lastActivity = default, DateTime? lastMobile = default, string lastPlatform = default, string platform = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, string pronouns = default, UserState state = default, UserStatus status = default, string statusDescription = default, List tags = default, string userIcon = default) { this.AgeVerificationStatus = ageVerificationStatus; this.AgeVerified = ageVerified; @@ -102,18 +102,18 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default throw new ArgumentNullException("currentAvatarImageUrl is a required property for LimitedUserInstance and cannot be null"); } this.CurrentAvatarImageUrl = currentAvatarImageUrl; - // to ensure "currentAvatarThumbnailImageUrl" is required (not null) - if (currentAvatarThumbnailImageUrl == null) - { - throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for LimitedUserInstance and cannot be null"); - } - this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; // to ensure "currentAvatarTags" is required (not null) if (currentAvatarTags == null) { throw new ArgumentNullException("currentAvatarTags is a required property for LimitedUserInstance and cannot be null"); } this.CurrentAvatarTags = currentAvatarTags; + // to ensure "currentAvatarThumbnailImageUrl" is required (not null) + if (currentAvatarThumbnailImageUrl == null) + { + throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for LimitedUserInstance and cannot be null"); + } + this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; // to ensure "dateJoined" is required (not null) if (dateJoined == null) { @@ -140,12 +140,6 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default } this.Id = id; this.IsFriend = isFriend; - // to ensure "lastPlatform" is required (not null) - if (lastPlatform == null) - { - throw new ArgumentNullException("lastPlatform is a required property for LimitedUserInstance and cannot be null"); - } - this.LastPlatform = lastPlatform; // to ensure "lastActivity" is required (not null) if (lastActivity == null) { @@ -158,6 +152,12 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default throw new ArgumentNullException("lastMobile is a required property for LimitedUserInstance and cannot be null"); } this.LastMobile = lastMobile; + // to ensure "lastPlatform" is required (not null) + if (lastPlatform == null) + { + throw new ArgumentNullException("lastPlatform is a required property for LimitedUserInstance and cannot be null"); + } + this.LastPlatform = lastPlatform; // to ensure "pronouns" is required (not null) if (pronouns == null) { @@ -223,6 +223,12 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default [DataMember(Name = "currentAvatarImageUrl", IsRequired = true, EmitDefaultValue = true)] public string CurrentAvatarImageUrl { get; set; } + /// + /// Gets or Sets CurrentAvatarTags + /// + [DataMember(Name = "currentAvatarTags", IsRequired = true, EmitDefaultValue = true)] + public List CurrentAvatarTags { get; set; } + /// /// When profilePicOverride is not empty, use it instead. /// @@ -233,12 +239,6 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default [DataMember(Name = "currentAvatarThumbnailImageUrl", IsRequired = true, EmitDefaultValue = true)] public string CurrentAvatarThumbnailImageUrl { get; set; } - /// - /// Gets or Sets CurrentAvatarTags - /// - [DataMember(Name = "currentAvatarTags", IsRequired = true, EmitDefaultValue = true)] - public List CurrentAvatarTags { get; set; } - /// /// Gets or Sets DateJoined /// @@ -267,12 +267,6 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] public string Id { get; set; } - /// - /// Gets or Sets IsFriend - /// - [DataMember(Name = "isFriend", IsRequired = true, EmitDefaultValue = true)] - public bool IsFriend { get; set; } - /// /// Gets or Sets ImageUrl /// @@ -280,14 +274,10 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default public string ImageUrl { get; set; } /// - /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. + /// Gets or Sets IsFriend /// - /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. - /* - standalonewindows - */ - [DataMember(Name = "last_platform", IsRequired = true, EmitDefaultValue = true)] - public string LastPlatform { get; set; } + [DataMember(Name = "isFriend", IsRequired = true, EmitDefaultValue = true)] + public bool IsFriend { get; set; } /// /// Gets or Sets LastActivity @@ -301,6 +291,16 @@ public LimitedUserInstance(AgeVerificationStatus ageVerificationStatus = default [DataMember(Name = "last_mobile", IsRequired = true, EmitDefaultValue = true)] public DateTime? LastMobile { get; set; } + /// + /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. + /// + /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. + /* + standalonewindows + */ + [DataMember(Name = "last_platform", IsRequired = true, EmitDefaultValue = true)] + public string LastPlatform { get; set; } + /// /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. /// @@ -361,18 +361,18 @@ public override string ToString() sb.Append(" Bio: ").Append(Bio).Append("\n"); sb.Append(" BioLinks: ").Append(BioLinks).Append("\n"); sb.Append(" CurrentAvatarImageUrl: ").Append(CurrentAvatarImageUrl).Append("\n"); - sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" DateJoined: ").Append(DateJoined).Append("\n"); sb.Append(" DeveloperType: ").Append(DeveloperType).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); sb.Append(" FriendKey: ").Append(FriendKey).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" IsFriend: ").Append(IsFriend).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); - sb.Append(" LastPlatform: ").Append(LastPlatform).Append("\n"); + sb.Append(" IsFriend: ").Append(IsFriend).Append("\n"); sb.Append(" LastActivity: ").Append(LastActivity).Append("\n"); sb.Append(" LastMobile: ").Append(LastMobile).Append("\n"); + sb.Append(" LastPlatform: ").Append(LastPlatform).Append("\n"); sb.Append(" Platform: ").Append(Platform).Append("\n"); sb.Append(" ProfilePicOverride: ").Append(ProfilePicOverride).Append("\n"); sb.Append(" ProfilePicOverrideThumbnail: ").Append(ProfilePicOverrideThumbnail).Append("\n"); @@ -445,17 +445,17 @@ public bool Equals(LimitedUserInstance input) (this.CurrentAvatarImageUrl != null && this.CurrentAvatarImageUrl.Equals(input.CurrentAvatarImageUrl)) ) && - ( - this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || - (this.CurrentAvatarThumbnailImageUrl != null && - this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) - ) && ( this.CurrentAvatarTags == input.CurrentAvatarTags || this.CurrentAvatarTags != null && input.CurrentAvatarTags != null && this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) ) && + ( + this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || + (this.CurrentAvatarThumbnailImageUrl != null && + this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) + ) && ( this.DateJoined == input.DateJoined || (this.DateJoined != null && @@ -480,19 +480,14 @@ public bool Equals(LimitedUserInstance input) (this.Id != null && this.Id.Equals(input.Id)) ) && - ( - this.IsFriend == input.IsFriend || - this.IsFriend.Equals(input.IsFriend) - ) && ( this.ImageUrl == input.ImageUrl || (this.ImageUrl != null && this.ImageUrl.Equals(input.ImageUrl)) ) && ( - this.LastPlatform == input.LastPlatform || - (this.LastPlatform != null && - this.LastPlatform.Equals(input.LastPlatform)) + this.IsFriend == input.IsFriend || + this.IsFriend.Equals(input.IsFriend) ) && ( this.LastActivity == input.LastActivity || @@ -504,6 +499,11 @@ public bool Equals(LimitedUserInstance input) (this.LastMobile != null && this.LastMobile.Equals(input.LastMobile)) ) && + ( + this.LastPlatform == input.LastPlatform || + (this.LastPlatform != null && + this.LastPlatform.Equals(input.LastPlatform)) + ) && ( this.Platform == input.Platform || (this.Platform != null && @@ -574,14 +574,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.CurrentAvatarImageUrl.GetHashCode(); } - if (this.CurrentAvatarThumbnailImageUrl != null) - { - hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); - } if (this.CurrentAvatarTags != null) { hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); } + if (this.CurrentAvatarThumbnailImageUrl != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); + } if (this.DateJoined != null) { hashCode = (hashCode * 59) + this.DateJoined.GetHashCode(); @@ -599,15 +599,11 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsFriend.GetHashCode(); if (this.ImageUrl != null) { hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } - if (this.LastPlatform != null) - { - hashCode = (hashCode * 59) + this.LastPlatform.GetHashCode(); - } + hashCode = (hashCode * 59) + this.IsFriend.GetHashCode(); if (this.LastActivity != null) { hashCode = (hashCode * 59) + this.LastActivity.GetHashCode(); @@ -616,6 +612,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.LastMobile.GetHashCode(); } + if (this.LastPlatform != null) + { + hashCode = (hashCode * 59) + this.LastPlatform.GetHashCode(); + } if (this.Platform != null) { hashCode = (hashCode * 59) + this.Platform.GetHashCode(); diff --git a/src/VRChat.API/Model/LimitedUserSearch.cs b/src/VRChat.API/Model/LimitedUserSearch.cs index f78a4992..ffaf42e2 100644 --- a/src/VRChat.API/Model/LimitedUserSearch.cs +++ b/src/VRChat.API/Model/LimitedUserSearch.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -55,8 +55,8 @@ protected LimitedUserSearch() { } /// bio. /// . /// When profilePicOverride is not empty, use it instead. (required). - /// When profilePicOverride is not empty, use it instead. (required). /// currentAvatarTags (required). + /// When profilePicOverride is not empty, use it instead. (required). /// developerType (required). /// displayName (required). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). @@ -68,7 +68,7 @@ protected LimitedUserSearch() { } /// statusDescription (required). /// <- Always empty. (required). /// userIcon. - public LimitedUserSearch(string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, string currentAvatarThumbnailImageUrl = default, List currentAvatarTags = default, DeveloperType developerType = default, string displayName = default, string id = default, bool isFriend = default, string lastPlatform = default, string profilePicOverride = default, string pronouns = default, UserStatus status = default, string statusDescription = default, List tags = default, string userIcon = default) + public LimitedUserSearch(string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, DeveloperType developerType = default, string displayName = default, string id = default, bool isFriend = default, string lastPlatform = default, string profilePicOverride = default, string pronouns = default, UserStatus status = default, string statusDescription = default, List tags = default, string userIcon = default) { // to ensure "currentAvatarImageUrl" is required (not null) if (currentAvatarImageUrl == null) @@ -76,18 +76,18 @@ public LimitedUserSearch(string bio = default, List bioLinks = default, throw new ArgumentNullException("currentAvatarImageUrl is a required property for LimitedUserSearch and cannot be null"); } this.CurrentAvatarImageUrl = currentAvatarImageUrl; - // to ensure "currentAvatarThumbnailImageUrl" is required (not null) - if (currentAvatarThumbnailImageUrl == null) - { - throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for LimitedUserSearch and cannot be null"); - } - this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; // to ensure "currentAvatarTags" is required (not null) if (currentAvatarTags == null) { throw new ArgumentNullException("currentAvatarTags is a required property for LimitedUserSearch and cannot be null"); } this.CurrentAvatarTags = currentAvatarTags; + // to ensure "currentAvatarThumbnailImageUrl" is required (not null) + if (currentAvatarThumbnailImageUrl == null) + { + throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for LimitedUserSearch and cannot be null"); + } + this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; this.DeveloperType = developerType; // to ensure "displayName" is required (not null) if (displayName == null) @@ -151,6 +151,12 @@ public LimitedUserSearch(string bio = default, List bioLinks = default, [DataMember(Name = "currentAvatarImageUrl", IsRequired = true, EmitDefaultValue = true)] public string CurrentAvatarImageUrl { get; set; } + /// + /// Gets or Sets CurrentAvatarTags + /// + [DataMember(Name = "currentAvatarTags", IsRequired = true, EmitDefaultValue = true)] + public List CurrentAvatarTags { get; set; } + /// /// When profilePicOverride is not empty, use it instead. /// @@ -161,12 +167,6 @@ public LimitedUserSearch(string bio = default, List bioLinks = default, [DataMember(Name = "currentAvatarThumbnailImageUrl", IsRequired = true, EmitDefaultValue = true)] public string CurrentAvatarThumbnailImageUrl { get; set; } - /// - /// Gets or Sets CurrentAvatarTags - /// - [DataMember(Name = "currentAvatarTags", IsRequired = true, EmitDefaultValue = true)] - public List CurrentAvatarTags { get; set; } - /// /// Gets or Sets DisplayName /// @@ -241,8 +241,8 @@ public override string ToString() sb.Append(" Bio: ").Append(Bio).Append("\n"); sb.Append(" BioLinks: ").Append(BioLinks).Append("\n"); sb.Append(" CurrentAvatarImageUrl: ").Append(CurrentAvatarImageUrl).Append("\n"); - sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" DeveloperType: ").Append(DeveloperType).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); @@ -305,17 +305,17 @@ public bool Equals(LimitedUserSearch input) (this.CurrentAvatarImageUrl != null && this.CurrentAvatarImageUrl.Equals(input.CurrentAvatarImageUrl)) ) && - ( - this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || - (this.CurrentAvatarThumbnailImageUrl != null && - this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) - ) && ( this.CurrentAvatarTags == input.CurrentAvatarTags || this.CurrentAvatarTags != null && input.CurrentAvatarTags != null && this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) ) && + ( + this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || + (this.CurrentAvatarThumbnailImageUrl != null && + this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) + ) && ( this.DeveloperType == input.DeveloperType || this.DeveloperType.Equals(input.DeveloperType) @@ -392,14 +392,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.CurrentAvatarImageUrl.GetHashCode(); } - if (this.CurrentAvatarThumbnailImageUrl != null) - { - hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); - } if (this.CurrentAvatarTags != null) { hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); } + if (this.CurrentAvatarThumbnailImageUrl != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); + } hashCode = (hashCode * 59) + this.DeveloperType.GetHashCode(); if (this.DisplayName != null) { diff --git a/src/VRChat.API/Model/LimitedWorld.cs b/src/VRChat.API/Model/LimitedWorld.cs index e88a87cc..a9f34bde 100644 --- a/src/VRChat.API/Model/LimitedWorld.cs +++ b/src/VRChat.API/Model/LimitedWorld.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -49,11 +49,9 @@ protected LimitedWorld() { } /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// authorName (required). /// capacity (required). - /// recommendedCapacity. /// createdAt (required). /// defaultContentSettings. /// favorites (required) (default to 0). - /// visits (default to 0). /// heat (required) (default to 0). /// WorldID be \"offline\" on User profiles if you are not friends with that user. (required). /// imageUrl (required). @@ -64,14 +62,16 @@ protected LimitedWorld() { } /// popularity (required) (default to 0). /// previewYoutubeId. /// publicationDate (required). + /// recommendedCapacity. /// releaseStatus (required). /// storeId. /// (required). /// thumbnailImageUrl (required). + /// udonProducts. /// (required). /// updatedAt (required). - /// udonProducts. - public LimitedWorld(string authorId = default, string authorName = default, int capacity = default, int recommendedCapacity = default, DateTime createdAt = default, InstanceContentSettings defaultContentSettings = default, int favorites = 0, int visits = 0, int heat = 0, string id = default, string imageUrl = default, string labsPublicationDate = default, string name = default, int occupants = 0, string organization = @"vrchat", int popularity = 0, string previewYoutubeId = default, string publicationDate = default, ReleaseStatus releaseStatus = default, string storeId = default, List tags = default, string thumbnailImageUrl = default, List unityPackages = default, DateTime updatedAt = default, List udonProducts = default) + /// visits (default to 0). + public LimitedWorld(string authorId = default, string authorName = default, int capacity = default, DateTime createdAt = default, InstanceContentSettings defaultContentSettings = default, int favorites = 0, int heat = 0, string id = default, string imageUrl = default, string labsPublicationDate = default, string name = default, int occupants = 0, string organization = @"vrchat", int popularity = 0, string previewYoutubeId = default, string publicationDate = default, int recommendedCapacity = default, ReleaseStatus releaseStatus = default, string storeId = default, List tags = default, string thumbnailImageUrl = default, List udonProducts = default, List unityPackages = default, DateTime updatedAt = default, int visits = 0) { // to ensure "authorId" is required (not null) if (authorId == null) @@ -147,12 +147,12 @@ public LimitedWorld(string authorId = default, string authorName = default, int } this.UnityPackages = unityPackages; this.UpdatedAt = updatedAt; - this.RecommendedCapacity = recommendedCapacity; this.DefaultContentSettings = defaultContentSettings; - this.Visits = visits; this.PreviewYoutubeId = previewYoutubeId; + this.RecommendedCapacity = recommendedCapacity; this.StoreId = storeId; this.UdonProducts = udonProducts; + this.Visits = visits; } /// @@ -180,15 +180,6 @@ public LimitedWorld(string authorId = default, string authorName = default, int [DataMember(Name = "capacity", IsRequired = true, EmitDefaultValue = true)] public int Capacity { get; set; } - /// - /// Gets or Sets RecommendedCapacity - /// - /* - 16 - */ - [DataMember(Name = "recommendedCapacity", EmitDefaultValue = false)] - public int RecommendedCapacity { get; set; } - /// /// Gets or Sets CreatedAt /// @@ -210,15 +201,6 @@ public LimitedWorld(string authorId = default, string authorName = default, int [DataMember(Name = "favorites", IsRequired = true, EmitDefaultValue = true)] public int Favorites { get; set; } - /// - /// Gets or Sets Visits - /// - /* - 9988675 - */ - [DataMember(Name = "visits", EmitDefaultValue = false)] - public int Visits { get; set; } - /// /// Gets or Sets Heat /// @@ -298,6 +280,15 @@ public LimitedWorld(string authorId = default, string authorName = default, int [DataMember(Name = "publicationDate", IsRequired = true, EmitDefaultValue = true)] public string PublicationDate { get; set; } + /// + /// Gets or Sets RecommendedCapacity + /// + /* + 16 + */ + [DataMember(Name = "recommendedCapacity", EmitDefaultValue = false)] + public int RecommendedCapacity { get; set; } + /// /// Gets or Sets StoreId /// @@ -320,6 +311,12 @@ public LimitedWorld(string authorId = default, string authorName = default, int [DataMember(Name = "thumbnailImageUrl", IsRequired = true, EmitDefaultValue = true)] public string ThumbnailImageUrl { get; set; } + /// + /// Gets or Sets UdonProducts + /// + [DataMember(Name = "udonProducts", EmitDefaultValue = false)] + public List UdonProducts { get; set; } + /// /// /// @@ -334,10 +331,13 @@ public LimitedWorld(string authorId = default, string authorName = default, int public DateTime UpdatedAt { get; set; } /// - /// Gets or Sets UdonProducts + /// Gets or Sets Visits /// - [DataMember(Name = "udonProducts", EmitDefaultValue = false)] - public List UdonProducts { get; set; } + /* + 9988675 + */ + [DataMember(Name = "visits", EmitDefaultValue = false)] + public int Visits { get; set; } /// /// Returns the string presentation of the object @@ -350,11 +350,9 @@ public override string ToString() sb.Append(" AuthorId: ").Append(AuthorId).Append("\n"); sb.Append(" AuthorName: ").Append(AuthorName).Append("\n"); sb.Append(" Capacity: ").Append(Capacity).Append("\n"); - sb.Append(" RecommendedCapacity: ").Append(RecommendedCapacity).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" DefaultContentSettings: ").Append(DefaultContentSettings).Append("\n"); sb.Append(" Favorites: ").Append(Favorites).Append("\n"); - sb.Append(" Visits: ").Append(Visits).Append("\n"); sb.Append(" Heat: ").Append(Heat).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); @@ -365,13 +363,15 @@ public override string ToString() sb.Append(" Popularity: ").Append(Popularity).Append("\n"); sb.Append(" PreviewYoutubeId: ").Append(PreviewYoutubeId).Append("\n"); sb.Append(" PublicationDate: ").Append(PublicationDate).Append("\n"); + sb.Append(" RecommendedCapacity: ").Append(RecommendedCapacity).Append("\n"); sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); sb.Append(" StoreId: ").Append(StoreId).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); sb.Append(" ThumbnailImageUrl: ").Append(ThumbnailImageUrl).Append("\n"); + sb.Append(" UdonProducts: ").Append(UdonProducts).Append("\n"); sb.Append(" UnityPackages: ").Append(UnityPackages).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); - sb.Append(" UdonProducts: ").Append(UdonProducts).Append("\n"); + sb.Append(" Visits: ").Append(Visits).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -421,10 +421,6 @@ public bool Equals(LimitedWorld input) this.Capacity == input.Capacity || this.Capacity.Equals(input.Capacity) ) && - ( - this.RecommendedCapacity == input.RecommendedCapacity || - this.RecommendedCapacity.Equals(input.RecommendedCapacity) - ) && ( this.CreatedAt == input.CreatedAt || (this.CreatedAt != null && @@ -439,10 +435,6 @@ public bool Equals(LimitedWorld input) this.Favorites == input.Favorites || this.Favorites.Equals(input.Favorites) ) && - ( - this.Visits == input.Visits || - this.Visits.Equals(input.Visits) - ) && ( this.Heat == input.Heat || this.Heat.Equals(input.Heat) @@ -490,6 +482,10 @@ public bool Equals(LimitedWorld input) (this.PublicationDate != null && this.PublicationDate.Equals(input.PublicationDate)) ) && + ( + this.RecommendedCapacity == input.RecommendedCapacity || + this.RecommendedCapacity.Equals(input.RecommendedCapacity) + ) && ( this.ReleaseStatus == input.ReleaseStatus || this.ReleaseStatus.Equals(input.ReleaseStatus) @@ -510,6 +506,12 @@ public bool Equals(LimitedWorld input) (this.ThumbnailImageUrl != null && this.ThumbnailImageUrl.Equals(input.ThumbnailImageUrl)) ) && + ( + this.UdonProducts == input.UdonProducts || + this.UdonProducts != null && + input.UdonProducts != null && + this.UdonProducts.SequenceEqual(input.UdonProducts) + ) && ( this.UnityPackages == input.UnityPackages || this.UnityPackages != null && @@ -522,10 +524,8 @@ public bool Equals(LimitedWorld input) this.UpdatedAt.Equals(input.UpdatedAt)) ) && ( - this.UdonProducts == input.UdonProducts || - this.UdonProducts != null && - input.UdonProducts != null && - this.UdonProducts.SequenceEqual(input.UdonProducts) + this.Visits == input.Visits || + this.Visits.Equals(input.Visits) ); } @@ -547,7 +547,6 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.AuthorName.GetHashCode(); } hashCode = (hashCode * 59) + this.Capacity.GetHashCode(); - hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); if (this.CreatedAt != null) { hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); @@ -557,7 +556,6 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.DefaultContentSettings.GetHashCode(); } hashCode = (hashCode * 59) + this.Favorites.GetHashCode(); - hashCode = (hashCode * 59) + this.Visits.GetHashCode(); hashCode = (hashCode * 59) + this.Heat.GetHashCode(); if (this.Id != null) { @@ -589,6 +587,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.PublicationDate.GetHashCode(); } + hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); if (this.StoreId != null) { @@ -602,6 +601,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ThumbnailImageUrl.GetHashCode(); } + if (this.UdonProducts != null) + { + hashCode = (hashCode * 59) + this.UdonProducts.GetHashCode(); + } if (this.UnityPackages != null) { hashCode = (hashCode * 59) + this.UnityPackages.GetHashCode(); @@ -610,10 +613,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); } - if (this.UdonProducts != null) - { - hashCode = (hashCode * 59) + this.UdonProducts.GetHashCode(); - } + hashCode = (hashCode * 59) + this.Visits.GetHashCode(); return hashCode; } } @@ -637,12 +637,6 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for Favorites, must be a value greater than or equal to 0.", new [] { "Favorites" }); } - // Visits (int) minimum - if (this.Visits < (int)0) - { - yield return new ValidationResult("Invalid value for Visits, must be a value greater than or equal to 0.", new [] { "Visits" }); - } - // Heat (int) minimum if (this.Heat < (int)0) { @@ -697,6 +691,12 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for ThumbnailImageUrl, length must be greater than 1.", new [] { "ThumbnailImageUrl" }); } + // Visits (int) minimum + if (this.Visits < (int)0) + { + yield return new ValidationResult("Invalid value for Visits, must be a value greater than or equal to 0.", new [] { "Visits" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/MIMEType.cs b/src/VRChat.API/Model/MIMEType.cs index a6038fb1..874d8bc0 100644 --- a/src/VRChat.API/Model/MIMEType.cs +++ b/src/VRChat.API/Model/MIMEType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,88 +33,88 @@ namespace VRChat.API.Model public enum MIMEType { /// - /// Enum ImageJpeg for value: image/jpeg + /// Enum ApplicationGzip for value: application/gzip /// - [EnumMember(Value = "image/jpeg")] - ImageJpeg = 1, + [EnumMember(Value = "application/gzip")] + ApplicationGzip = 1, /// - /// Enum ImageJpg for value: image/jpg + /// Enum ApplicationOctetStream for value: application/octet-stream /// - [EnumMember(Value = "image/jpg")] - ImageJpg = 2, + [EnumMember(Value = "application/octet-stream")] + ApplicationOctetStream = 2, /// - /// Enum ImagePng for value: image/png + /// Enum ApplicationXAvatar for value: application/x-avatar /// - [EnumMember(Value = "image/png")] - ImagePng = 3, + [EnumMember(Value = "application/x-avatar")] + ApplicationXAvatar = 3, /// - /// Enum ImageWebp for value: image/webp + /// Enum ApplicationXRsyncDelta for value: application/x-rsync-delta /// - [EnumMember(Value = "image/webp")] - ImageWebp = 4, + [EnumMember(Value = "application/x-rsync-delta")] + ApplicationXRsyncDelta = 4, /// - /// Enum ImageGif for value: image/gif + /// Enum ApplicationXRsyncSignature for value: application/x-rsync-signature /// - [EnumMember(Value = "image/gif")] - ImageGif = 5, + [EnumMember(Value = "application/x-rsync-signature")] + ApplicationXRsyncSignature = 5, /// - /// Enum ImageBmp for value: image/bmp + /// Enum ApplicationXWorld for value: application/x-world /// - [EnumMember(Value = "image/bmp")] - ImageBmp = 6, + [EnumMember(Value = "application/x-world")] + ApplicationXWorld = 6, /// - /// Enum ImageSvgxml for value: image/svg+xml + /// Enum ImageBmp for value: image/bmp /// - [EnumMember(Value = "image/svg+xml")] - ImageSvgxml = 7, + [EnumMember(Value = "image/bmp")] + ImageBmp = 7, /// - /// Enum ImageTiff for value: image/tiff + /// Enum ImageGif for value: image/gif /// - [EnumMember(Value = "image/tiff")] - ImageTiff = 8, + [EnumMember(Value = "image/gif")] + ImageGif = 8, /// - /// Enum ApplicationXAvatar for value: application/x-avatar + /// Enum ImageJpeg for value: image/jpeg /// - [EnumMember(Value = "application/x-avatar")] - ApplicationXAvatar = 9, + [EnumMember(Value = "image/jpeg")] + ImageJpeg = 9, /// - /// Enum ApplicationXWorld for value: application/x-world + /// Enum ImageJpg for value: image/jpg /// - [EnumMember(Value = "application/x-world")] - ApplicationXWorld = 10, + [EnumMember(Value = "image/jpg")] + ImageJpg = 10, /// - /// Enum ApplicationGzip for value: application/gzip + /// Enum ImagePng for value: image/png /// - [EnumMember(Value = "application/gzip")] - ApplicationGzip = 11, + [EnumMember(Value = "image/png")] + ImagePng = 11, /// - /// Enum ApplicationXRsyncSignature for value: application/x-rsync-signature + /// Enum ImageSvgxml for value: image/svg+xml /// - [EnumMember(Value = "application/x-rsync-signature")] - ApplicationXRsyncSignature = 12, + [EnumMember(Value = "image/svg+xml")] + ImageSvgxml = 12, /// - /// Enum ApplicationXRsyncDelta for value: application/x-rsync-delta + /// Enum ImageTiff for value: image/tiff /// - [EnumMember(Value = "application/x-rsync-delta")] - ApplicationXRsyncDelta = 13, + [EnumMember(Value = "image/tiff")] + ImageTiff = 13, /// - /// Enum ApplicationOctetStream for value: application/octet-stream + /// Enum ImageWebp for value: image/webp /// - [EnumMember(Value = "application/octet-stream")] - ApplicationOctetStream = 14 + [EnumMember(Value = "image/webp")] + ImageWebp = 14 } } diff --git a/src/VRChat.API/Model/ModerateUserRequest.cs b/src/VRChat.API/Model/ModerateUserRequest.cs index fef04c9c..af9d24f4 100644 --- a/src/VRChat.API/Model/ModerateUserRequest.cs +++ b/src/VRChat.API/Model/ModerateUserRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/MutualFriend.cs b/src/VRChat.API/Model/MutualFriend.cs new file mode 100644 index 00000000..30faa46b --- /dev/null +++ b/src/VRChat.API/Model/MutualFriend.cs @@ -0,0 +1,334 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// User object received when querying mutual friends + /// + [DataContract(Name = "MutualFriend")] + public partial class MutualFriend : IEquatable, IValidatableObject + { + + /// + /// Gets or Sets Status + /// + [DataMember(Name = "status", IsRequired = true, EmitDefaultValue = true)] + public UserStatus Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected MutualFriend() { } + /// + /// Initializes a new instance of the class. + /// + /// When profilePicOverride is not empty, use it instead.. + /// When profilePicOverride is not empty, use it instead. (required). + /// currentAvatarTags. + /// When profilePicOverride is not empty, use it instead.. + /// displayName (required). + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). + /// imageUrl (required). + /// profilePicOverride. + /// status (required). + /// statusDescription (required). + public MutualFriend(string avatarThumbnail = default, string currentAvatarImageUrl = default, List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, string displayName = default, string id = default, string imageUrl = default, string profilePicOverride = default, UserStatus status = default, string statusDescription = default) + { + // to ensure "currentAvatarImageUrl" is required (not null) + if (currentAvatarImageUrl == null) + { + throw new ArgumentNullException("currentAvatarImageUrl is a required property for MutualFriend and cannot be null"); + } + this.CurrentAvatarImageUrl = currentAvatarImageUrl; + // to ensure "displayName" is required (not null) + if (displayName == null) + { + throw new ArgumentNullException("displayName is a required property for MutualFriend and cannot be null"); + } + this.DisplayName = displayName; + // to ensure "id" is required (not null) + if (id == null) + { + throw new ArgumentNullException("id is a required property for MutualFriend and cannot be null"); + } + this.Id = id; + // to ensure "imageUrl" is required (not null) + if (imageUrl == null) + { + throw new ArgumentNullException("imageUrl is a required property for MutualFriend and cannot be null"); + } + this.ImageUrl = imageUrl; + this.Status = status; + // to ensure "statusDescription" is required (not null) + if (statusDescription == null) + { + throw new ArgumentNullException("statusDescription is a required property for MutualFriend and cannot be null"); + } + this.StatusDescription = statusDescription; + this.AvatarThumbnail = avatarThumbnail; + this.CurrentAvatarTags = currentAvatarTags; + this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; + this.ProfilePicOverride = profilePicOverride; + } + + /// + /// When profilePicOverride is not empty, use it instead. + /// + /// When profilePicOverride is not empty, use it instead. + /* + https://api.vrchat.cloud/api/1/image/file_aae83ed9-d42d-4d72-9f4b-9f1e41ed17e1/1/256 + */ + [DataMember(Name = "avatarThumbnail", EmitDefaultValue = false)] + public string AvatarThumbnail { get; set; } + + /// + /// When profilePicOverride is not empty, use it instead. + /// + /// When profilePicOverride is not empty, use it instead. + /* + https://api.vrchat.cloud/api/1/file/file_ae46d521-7281-4b38-b365-804b32a1d6a7/1/file + */ + [DataMember(Name = "currentAvatarImageUrl", IsRequired = true, EmitDefaultValue = true)] + public string CurrentAvatarImageUrl { get; set; } + + /// + /// Gets or Sets CurrentAvatarTags + /// + [DataMember(Name = "currentAvatarTags", EmitDefaultValue = false)] + public List CurrentAvatarTags { get; set; } + + /// + /// When profilePicOverride is not empty, use it instead. + /// + /// When profilePicOverride is not empty, use it instead. + /* + https://api.vrchat.cloud/api/1/image/file_aae83ed9-d42d-4d72-9f4b-9f1e41ed17e1/1/256 + */ + [DataMember(Name = "currentAvatarThumbnailImageUrl", EmitDefaultValue = false)] + public string CurrentAvatarThumbnailImageUrl { get; set; } + + /// + /// Gets or Sets DisplayName + /// + [DataMember(Name = "displayName", IsRequired = true, EmitDefaultValue = true)] + public string DisplayName { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] + public string Id { get; set; } + + /// + /// Gets or Sets ImageUrl + /// + [DataMember(Name = "imageUrl", IsRequired = true, EmitDefaultValue = true)] + public string ImageUrl { get; set; } + + /// + /// Gets or Sets ProfilePicOverride + /// + [DataMember(Name = "profilePicOverride", EmitDefaultValue = false)] + public string ProfilePicOverride { get; set; } + + /// + /// Gets or Sets StatusDescription + /// + [DataMember(Name = "statusDescription", IsRequired = true, EmitDefaultValue = true)] + public string StatusDescription { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class MutualFriend {\n"); + sb.Append(" AvatarThumbnail: ").Append(AvatarThumbnail).Append("\n"); + sb.Append(" CurrentAvatarImageUrl: ").Append(CurrentAvatarImageUrl).Append("\n"); + sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); + sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); + sb.Append(" ProfilePicOverride: ").Append(ProfilePicOverride).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" StatusDescription: ").Append(StatusDescription).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as MutualFriend); + } + + /// + /// Returns true if MutualFriend instances are equal + /// + /// Instance of MutualFriend to be compared + /// Boolean + public bool Equals(MutualFriend input) + { + if (input == null) + { + return false; + } + return + ( + this.AvatarThumbnail == input.AvatarThumbnail || + (this.AvatarThumbnail != null && + this.AvatarThumbnail.Equals(input.AvatarThumbnail)) + ) && + ( + this.CurrentAvatarImageUrl == input.CurrentAvatarImageUrl || + (this.CurrentAvatarImageUrl != null && + this.CurrentAvatarImageUrl.Equals(input.CurrentAvatarImageUrl)) + ) && + ( + this.CurrentAvatarTags == input.CurrentAvatarTags || + this.CurrentAvatarTags != null && + input.CurrentAvatarTags != null && + this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) + ) && + ( + this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || + (this.CurrentAvatarThumbnailImageUrl != null && + this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) + ) && + ( + this.DisplayName == input.DisplayName || + (this.DisplayName != null && + this.DisplayName.Equals(input.DisplayName)) + ) && + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.ImageUrl == input.ImageUrl || + (this.ImageUrl != null && + this.ImageUrl.Equals(input.ImageUrl)) + ) && + ( + this.ProfilePicOverride == input.ProfilePicOverride || + (this.ProfilePicOverride != null && + this.ProfilePicOverride.Equals(input.ProfilePicOverride)) + ) && + ( + this.Status == input.Status || + this.Status.Equals(input.Status) + ) && + ( + this.StatusDescription == input.StatusDescription || + (this.StatusDescription != null && + this.StatusDescription.Equals(input.StatusDescription)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.AvatarThumbnail != null) + { + hashCode = (hashCode * 59) + this.AvatarThumbnail.GetHashCode(); + } + if (this.CurrentAvatarImageUrl != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarImageUrl.GetHashCode(); + } + if (this.CurrentAvatarTags != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); + } + if (this.CurrentAvatarThumbnailImageUrl != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); + } + if (this.DisplayName != null) + { + hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); + } + if (this.Id != null) + { + hashCode = (hashCode * 59) + this.Id.GetHashCode(); + } + if (this.ImageUrl != null) + { + hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); + } + if (this.ProfilePicOverride != null) + { + hashCode = (hashCode * 59) + this.ProfilePicOverride.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Status.GetHashCode(); + if (this.StatusDescription != null) + { + hashCode = (hashCode * 59) + this.StatusDescription.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/UpdatePermissionRequest.cs b/src/VRChat.API/Model/Mutuals.cs similarity index 52% rename from src/VRChat.API/Model/UpdatePermissionRequest.cs rename to src/VRChat.API/Model/Mutuals.cs index da375031..bb988a2a 100644 --- a/src/VRChat.API/Model/UpdatePermissionRequest.cs +++ b/src/VRChat.API/Model/Mutuals.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -27,37 +27,38 @@ namespace VRChat.API.Model { /// - /// UpdatePermissionRequest + /// Mutuals /// - [DataContract(Name = "updatePermission_request")] - public partial class UpdatePermissionRequest : IEquatable, IValidatableObject + [DataContract(Name = "Mutuals")] + public partial class Mutuals : IEquatable, IValidatableObject { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// name. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - public UpdatePermissionRequest(string name = default, string ownerId = default) + [JsonConstructorAttribute] + protected Mutuals() { } + /// + /// Initializes a new instance of the class. + /// + /// friends (required) (default to 0). + /// groups (required) (default to 0). + public Mutuals(int friends = 0, int groups = 0) { - this.Name = name; - this.OwnerId = ownerId; + this.Friends = friends; + this.Groups = groups; } /// - /// Gets or Sets Name + /// Gets or Sets Friends /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "friends", IsRequired = true, EmitDefaultValue = true)] + public int Friends { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets Groups /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "ownerId", EmitDefaultValue = false)] - public string OwnerId { get; set; } + [DataMember(Name = "groups", IsRequired = true, EmitDefaultValue = true)] + public int Groups { get; set; } /// /// Returns the string presentation of the object @@ -66,9 +67,9 @@ public UpdatePermissionRequest(string name = default, string ownerId = default) public override string ToString() { StringBuilder sb = new StringBuilder(); - sb.Append("class UpdatePermissionRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); + sb.Append("class Mutuals {\n"); + sb.Append(" Friends: ").Append(Friends).Append("\n"); + sb.Append(" Groups: ").Append(Groups).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -89,15 +90,15 @@ public virtual string ToJson() /// Boolean public override bool Equals(object input) { - return this.Equals(input as UpdatePermissionRequest); + return this.Equals(input as Mutuals); } /// - /// Returns true if UpdatePermissionRequest instances are equal + /// Returns true if Mutuals instances are equal /// - /// Instance of UpdatePermissionRequest to be compared + /// Instance of Mutuals to be compared /// Boolean - public bool Equals(UpdatePermissionRequest input) + public bool Equals(Mutuals input) { if (input == null) { @@ -105,14 +106,12 @@ public bool Equals(UpdatePermissionRequest input) } return ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.Friends == input.Friends || + this.Friends.Equals(input.Friends) ) && ( - this.OwnerId == input.OwnerId || - (this.OwnerId != null && - this.OwnerId.Equals(input.OwnerId)) + this.Groups == input.Groups || + this.Groups.Equals(input.Groups) ); } @@ -125,14 +124,8 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } - if (this.OwnerId != null) - { - hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); - } + hashCode = (hashCode * 59) + this.Friends.GetHashCode(); + hashCode = (hashCode * 59) + this.Groups.GetHashCode(); return hashCode; } } @@ -144,6 +137,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { + // Friends (int) minimum + if (this.Friends < (int)0) + { + yield return new ValidationResult("Invalid value for Friends, must be a value greater than or equal to 0.", new [] { "Friends" }); + } + + // Groups (int) minimum + if (this.Groups < (int)0) + { + yield return new ValidationResult("Invalid value for Groups, must be a value greater than or equal to 0.", new [] { "Groups" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/Notification.cs b/src/VRChat.API/Model/Notification.cs index 20de5f36..83f46af8 100644 --- a/src/VRChat.API/Model/Notification.cs +++ b/src/VRChat.API/Model/Notification.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -50,12 +50,12 @@ protected Notification() { } /// **NOTICE:** This is not a JSON object when received from the REST API, but it is when received from the Websocket API. When received from the REST API, this is a json **encoded** object, meaning you have to json-de-encode to get the NotificationDetail object depending on the NotificationType. (required) (default to "{}"). /// id (required). /// message (required). - /// Not included in notification objects received from the Websocket API (default to false). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// Not included in notification objects received from the Websocket API (default to false). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// -| **DEPRECATED:** VRChat API no longer return usernames of other users. [See issue by Tupper for more information](https://github.com/pypy-vrc/VRCX/issues/429).. /// type (required). - public Notification(DateTime createdAt = default, string details = @"{}", string id = default, string message = default, bool seen = false, string receiverUserId = default, string senderUserId = default, string senderUsername = default, NotificationType type = default) + public Notification(DateTime createdAt = default, string details = @"{}", string id = default, string message = default, string receiverUserId = default, bool seen = false, string senderUserId = default, string senderUsername = default, NotificationType type = default) { this.CreatedAt = createdAt; // to ensure "details" is required (not null) @@ -83,8 +83,8 @@ public Notification(DateTime createdAt = default, string details = @"{}", string } this.SenderUserId = senderUserId; this.Type = type; - this.Seen = seen; this.ReceiverUserId = receiverUserId; + this.Seen = seen; this.SenderUsername = senderUsername; } @@ -99,7 +99,7 @@ public Notification(DateTime createdAt = default, string details = @"{}", string /// /// **NOTICE:** This is not a JSON object when received from the REST API, but it is when received from the Websocket API. When received from the REST API, this is a json **encoded** object, meaning you have to json-de-encode to get the NotificationDetail object depending on the NotificationType. /* - OneOf: {}, NotificationDetailInvite, NotificationDetailInviteResponse, NotificationDetailRequestInvite, NotificationDetailRequestInviteResponse, NotificationDetailVoteToKick + OneOf: {}, NotificationDetailBoop, NotificationDetailInvite, NotificationDetailInviteResponse, NotificationDetailRequestInvite, NotificationDetailRequestInviteResponse, NotificationDetailVoteToKick */ [DataMember(Name = "details", IsRequired = true, EmitDefaultValue = true)] public string Details { get; set; } @@ -119,13 +119,6 @@ public Notification(DateTime createdAt = default, string details = @"{}", string [DataMember(Name = "message", IsRequired = true, EmitDefaultValue = true)] public string Message { get; set; } - /// - /// Not included in notification objects received from the Websocket API - /// - /// Not included in notification objects received from the Websocket API - [DataMember(Name = "seen", EmitDefaultValue = true)] - public bool Seen { get; set; } - /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -136,6 +129,13 @@ public Notification(DateTime createdAt = default, string details = @"{}", string [DataMember(Name = "receiverUserId", EmitDefaultValue = false)] public string ReceiverUserId { get; set; } + /// + /// Not included in notification objects received from the Websocket API + /// + /// Not included in notification objects received from the Websocket API + [DataMember(Name = "seen", EmitDefaultValue = true)] + public bool Seen { get; set; } + /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -166,8 +166,8 @@ public override string ToString() sb.Append(" Details: ").Append(Details).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" Message: ").Append(Message).Append("\n"); - sb.Append(" Seen: ").Append(Seen).Append("\n"); sb.Append(" ReceiverUserId: ").Append(ReceiverUserId).Append("\n"); + sb.Append(" Seen: ").Append(Seen).Append("\n"); sb.Append(" SenderUserId: ").Append(SenderUserId).Append("\n"); sb.Append(" SenderUsername: ").Append(SenderUsername).Append("\n"); sb.Append(" Type: ").Append(Type).Append("\n"); @@ -226,15 +226,15 @@ public bool Equals(Notification input) (this.Message != null && this.Message.Equals(input.Message)) ) && - ( - this.Seen == input.Seen || - this.Seen.Equals(input.Seen) - ) && ( this.ReceiverUserId == input.ReceiverUserId || (this.ReceiverUserId != null && this.ReceiverUserId.Equals(input.ReceiverUserId)) ) && + ( + this.Seen == input.Seen || + this.Seen.Equals(input.Seen) + ) && ( this.SenderUserId == input.SenderUserId || (this.SenderUserId != null && @@ -276,11 +276,11 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Message.GetHashCode(); } - hashCode = (hashCode * 59) + this.Seen.GetHashCode(); if (this.ReceiverUserId != null) { hashCode = (hashCode * 59) + this.ReceiverUserId.GetHashCode(); } + hashCode = (hashCode * 59) + this.Seen.GetHashCode(); if (this.SenderUserId != null) { hashCode = (hashCode * 59) + this.SenderUserId.GetHashCode(); diff --git a/src/VRChat.API/Model/NotificationDetailInvite.cs b/src/VRChat.API/Model/NotificationDetailInvite.cs index 4cd4bfbe..955630ae 100644 --- a/src/VRChat.API/Model/NotificationDetailInvite.cs +++ b/src/VRChat.API/Model/NotificationDetailInvite.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/NotificationDetailInviteResponse.cs b/src/VRChat.API/Model/NotificationDetailInviteResponse.cs index cf302eed..74eccb84 100644 --- a/src/VRChat.API/Model/NotificationDetailInviteResponse.cs +++ b/src/VRChat.API/Model/NotificationDetailInviteResponse.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/NotificationDetailRequestInvite.cs b/src/VRChat.API/Model/NotificationDetailRequestInvite.cs index a0def9ff..0443e560 100644 --- a/src/VRChat.API/Model/NotificationDetailRequestInvite.cs +++ b/src/VRChat.API/Model/NotificationDetailRequestInvite.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/NotificationDetailRequestInviteResponse.cs b/src/VRChat.API/Model/NotificationDetailRequestInviteResponse.cs index 7d26e85b..765d5dc9 100644 --- a/src/VRChat.API/Model/NotificationDetailRequestInviteResponse.cs +++ b/src/VRChat.API/Model/NotificationDetailRequestInviteResponse.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/NotificationDetailVoteToKick.cs b/src/VRChat.API/Model/NotificationDetailVoteToKick.cs index b5ba0336..6b26c7ee 100644 --- a/src/VRChat.API/Model/NotificationDetailVoteToKick.cs +++ b/src/VRChat.API/Model/NotificationDetailVoteToKick.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/NotificationType.cs b/src/VRChat.API/Model/NotificationType.cs index 8e0318ac..d3d4a942 100644 --- a/src/VRChat.API/Model/NotificationType.cs +++ b/src/VRChat.API/Model/NotificationType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -32,47 +32,53 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum NotificationType { + /// + /// Enum Boop for value: boop + /// + [EnumMember(Value = "boop")] + Boop = 1, + /// /// Enum FriendRequest for value: friendRequest /// [EnumMember(Value = "friendRequest")] - FriendRequest = 1, + FriendRequest = 2, /// /// Enum Invite for value: invite /// [EnumMember(Value = "invite")] - Invite = 2, + Invite = 3, /// /// Enum InviteResponse for value: inviteResponse /// [EnumMember(Value = "inviteResponse")] - InviteResponse = 3, + InviteResponse = 4, /// /// Enum Message for value: message /// [EnumMember(Value = "message")] - Message = 4, + Message = 5, /// /// Enum RequestInvite for value: requestInvite /// [EnumMember(Value = "requestInvite")] - RequestInvite = 5, + RequestInvite = 6, /// /// Enum RequestInviteResponse for value: requestInviteResponse /// [EnumMember(Value = "requestInviteResponse")] - RequestInviteResponse = 6, + RequestInviteResponse = 7, /// /// Enum Votetokick for value: votetokick /// [EnumMember(Value = "votetokick")] - Votetokick = 7 + Votetokick = 8 } } diff --git a/src/VRChat.API/Model/OkStatus.cs b/src/VRChat.API/Model/OkStatus.cs index 704d2638..c1664cfa 100644 --- a/src/VRChat.API/Model/OkStatus.cs +++ b/src/VRChat.API/Model/OkStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/OkStatus2.cs b/src/VRChat.API/Model/OkStatus2.cs index b9d2cd5e..db82130c 100644 --- a/src/VRChat.API/Model/OkStatus2.cs +++ b/src/VRChat.API/Model/OkStatus2.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/OrderOption.cs b/src/VRChat.API/Model/OrderOption.cs index 97a50153..25f9a4d5 100644 --- a/src/VRChat.API/Model/OrderOption.cs +++ b/src/VRChat.API/Model/OrderOption.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/OrderOptionShort.cs b/src/VRChat.API/Model/OrderOptionShort.cs new file mode 100644 index 00000000..5156e10d --- /dev/null +++ b/src/VRChat.API/Model/OrderOptionShort.cs @@ -0,0 +1,48 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// Defines OrderOptionShort + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum OrderOptionShort + { + /// + /// Enum Asc for value: asc + /// + [EnumMember(Value = "asc")] + Asc = 1, + + /// + /// Enum Desc for value: desc + /// + [EnumMember(Value = "desc")] + Desc = 2 + } + +} diff --git a/src/VRChat.API/Model/PaginatedCalendarEventList.cs b/src/VRChat.API/Model/PaginatedCalendarEventList.cs index 7f58baad..a58a256e 100644 --- a/src/VRChat.API/Model/PaginatedCalendarEventList.cs +++ b/src/VRChat.API/Model/PaginatedCalendarEventList.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -27,7 +27,7 @@ namespace VRChat.API.Model { /// - /// PaginatedCalendarEventList + /// An offset-based list of CalendarEvents /// [DataContract(Name = "PaginatedCalendarEventList")] public partial class PaginatedCalendarEventList : IEquatable, IValidatableObject @@ -35,16 +35,23 @@ public partial class PaginatedCalendarEventList : IEquatable /// Initializes a new instance of the class. /// + /// Whether there are more results after this page.. /// . /// The total number of results that the query would return if there were no pagination.. - /// Whether there are more results after this page.. - public PaginatedCalendarEventList(List results = default, int totalCount = default, bool hasNext = default) + public PaginatedCalendarEventList(bool hasNext = default, List results = default, int totalCount = default) { + this.HasNext = hasNext; this.Results = results; this.TotalCount = totalCount; - this.HasNext = hasNext; } + /// + /// Whether there are more results after this page. + /// + /// Whether there are more results after this page. + [DataMember(Name = "hasNext", EmitDefaultValue = true)] + public bool HasNext { get; set; } + /// /// /// @@ -59,13 +66,6 @@ public PaginatedCalendarEventList(List results = default, int tot [DataMember(Name = "totalCount", EmitDefaultValue = false)] public int TotalCount { get; set; } - /// - /// Whether there are more results after this page. - /// - /// Whether there are more results after this page. - [DataMember(Name = "hasNext", EmitDefaultValue = true)] - public bool HasNext { get; set; } - /// /// Returns the string presentation of the object /// @@ -74,9 +74,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class PaginatedCalendarEventList {\n"); + sb.Append(" HasNext: ").Append(HasNext).Append("\n"); sb.Append(" Results: ").Append(Results).Append("\n"); sb.Append(" TotalCount: ").Append(TotalCount).Append("\n"); - sb.Append(" HasNext: ").Append(HasNext).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -112,6 +112,10 @@ public bool Equals(PaginatedCalendarEventList input) return false; } return + ( + this.HasNext == input.HasNext || + this.HasNext.Equals(input.HasNext) + ) && ( this.Results == input.Results || this.Results != null && @@ -121,10 +125,6 @@ public bool Equals(PaginatedCalendarEventList input) ( this.TotalCount == input.TotalCount || this.TotalCount.Equals(input.TotalCount) - ) && - ( - this.HasNext == input.HasNext || - this.HasNext.Equals(input.HasNext) ); } @@ -137,12 +137,12 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + hashCode = (hashCode * 59) + this.HasNext.GetHashCode(); if (this.Results != null) { hashCode = (hashCode * 59) + this.Results.GetHashCode(); } hashCode = (hashCode * 59) + this.TotalCount.GetHashCode(); - hashCode = (hashCode * 59) + this.HasNext.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/PaginatedGroupAuditLogEntryList.cs b/src/VRChat.API/Model/PaginatedGroupAuditLogEntryList.cs index 16184b23..b712195e 100644 --- a/src/VRChat.API/Model/PaginatedGroupAuditLogEntryList.cs +++ b/src/VRChat.API/Model/PaginatedGroupAuditLogEntryList.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,16 +35,23 @@ public partial class PaginatedGroupAuditLogEntryList : IEquatable /// Initializes a new instance of the class. /// + /// Whether there are more results after this page.. /// . /// The total number of results that the query would return if there were no pagination.. - /// Whether there are more results after this page.. - public PaginatedGroupAuditLogEntryList(List results = default, int totalCount = default, bool hasNext = default) + public PaginatedGroupAuditLogEntryList(bool hasNext = default, List results = default, int totalCount = default) { + this.HasNext = hasNext; this.Results = results; this.TotalCount = totalCount; - this.HasNext = hasNext; } + /// + /// Whether there are more results after this page. + /// + /// Whether there are more results after this page. + [DataMember(Name = "hasNext", EmitDefaultValue = true)] + public bool HasNext { get; set; } + /// /// /// @@ -59,13 +66,6 @@ public PaginatedGroupAuditLogEntryList(List results = defaul [DataMember(Name = "totalCount", EmitDefaultValue = false)] public int TotalCount { get; set; } - /// - /// Whether there are more results after this page. - /// - /// Whether there are more results after this page. - [DataMember(Name = "hasNext", EmitDefaultValue = true)] - public bool HasNext { get; set; } - /// /// Returns the string presentation of the object /// @@ -74,9 +74,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class PaginatedGroupAuditLogEntryList {\n"); + sb.Append(" HasNext: ").Append(HasNext).Append("\n"); sb.Append(" Results: ").Append(Results).Append("\n"); sb.Append(" TotalCount: ").Append(TotalCount).Append("\n"); - sb.Append(" HasNext: ").Append(HasNext).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -112,6 +112,10 @@ public bool Equals(PaginatedGroupAuditLogEntryList input) return false; } return + ( + this.HasNext == input.HasNext || + this.HasNext.Equals(input.HasNext) + ) && ( this.Results == input.Results || this.Results != null && @@ -121,10 +125,6 @@ public bool Equals(PaginatedGroupAuditLogEntryList input) ( this.TotalCount == input.TotalCount || this.TotalCount.Equals(input.TotalCount) - ) && - ( - this.HasNext == input.HasNext || - this.HasNext.Equals(input.HasNext) ); } @@ -137,12 +137,12 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + hashCode = (hashCode * 59) + this.HasNext.GetHashCode(); if (this.Results != null) { hashCode = (hashCode * 59) + this.Results.GetHashCode(); } hashCode = (hashCode * 59) + this.TotalCount.GetHashCode(); - hashCode = (hashCode * 59) + this.HasNext.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/PastDisplayName.cs b/src/VRChat.API/Model/PastDisplayName.cs index d5cd770c..8faf842b 100644 --- a/src/VRChat.API/Model/PastDisplayName.cs +++ b/src/VRChat.API/Model/PastDisplayName.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Pending2FAResult.cs b/src/VRChat.API/Model/Pending2FAResult.cs index f2c1a592..63dccad1 100644 --- a/src/VRChat.API/Model/Pending2FAResult.cs +++ b/src/VRChat.API/Model/Pending2FAResult.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/PerformanceLimiterInfo.cs b/src/VRChat.API/Model/PerformanceLimiterInfo.cs index 3829d0b0..5482d45e 100644 --- a/src/VRChat.API/Model/PerformanceLimiterInfo.cs +++ b/src/VRChat.API/Model/PerformanceLimiterInfo.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/PerformanceRatings.cs b/src/VRChat.API/Model/PerformanceRatings.cs index d5ae744f..467615bd 100644 --- a/src/VRChat.API/Model/PerformanceRatings.cs +++ b/src/VRChat.API/Model/PerformanceRatings.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,29 +33,29 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum PerformanceRatings { - /// - /// Enum None for value: None - /// - [EnumMember(Value = "None")] - None = 1, - /// /// Enum Excellent for value: Excellent /// [EnumMember(Value = "Excellent")] - Excellent = 2, + Excellent = 1, /// /// Enum Good for value: Good /// [EnumMember(Value = "Good")] - Good = 3, + Good = 2, /// /// Enum Medium for value: Medium /// [EnumMember(Value = "Medium")] - Medium = 4, + Medium = 3, + + /// + /// Enum None for value: None + /// + [EnumMember(Value = "None")] + None = 4, /// /// Enum Poor for value: Poor diff --git a/src/VRChat.API/Model/Permission.cs b/src/VRChat.API/Model/Permission.cs index a5f115a5..7a43d072 100644 --- a/src/VRChat.API/Model/Permission.cs +++ b/src/VRChat.API/Model/Permission.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,15 +40,15 @@ protected Permission() { } /// /// Initializes a new instance of the class. /// - /// displayName. + /// data. /// description. + /// displayName. /// id (required). - /// ownerDisplayName (required). /// name (required). + /// ownerDisplayName (required). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// type. - /// data. - public Permission(string displayName = default, string description = default, string id = default, string ownerDisplayName = default, string name = default, string ownerId = default, string type = default, Object data = default) + public Permission(Object data = default, string description = default, string displayName = default, string id = default, string name = default, string ownerDisplayName = default, string ownerId = default, string type = default) { // to ensure "id" is required (not null) if (id == null) @@ -56,35 +56,35 @@ public Permission(string displayName = default, string description = default, st throw new ArgumentNullException("id is a required property for Permission and cannot be null"); } this.Id = id; - // to ensure "ownerDisplayName" is required (not null) - if (ownerDisplayName == null) - { - throw new ArgumentNullException("ownerDisplayName is a required property for Permission and cannot be null"); - } - this.OwnerDisplayName = ownerDisplayName; // to ensure "name" is required (not null) if (name == null) { throw new ArgumentNullException("name is a required property for Permission and cannot be null"); } this.Name = name; + // to ensure "ownerDisplayName" is required (not null) + if (ownerDisplayName == null) + { + throw new ArgumentNullException("ownerDisplayName is a required property for Permission and cannot be null"); + } + this.OwnerDisplayName = ownerDisplayName; // to ensure "ownerId" is required (not null) if (ownerId == null) { throw new ArgumentNullException("ownerId is a required property for Permission and cannot be null"); } this.OwnerId = ownerId; - this.DisplayName = displayName; + this.Data = data; this.Description = description; + this.DisplayName = displayName; this.Type = type; - this.Data = data; } /// - /// Gets or Sets DisplayName + /// Gets or Sets Data /// - [DataMember(Name = "displayName", EmitDefaultValue = false)] - public string DisplayName { get; set; } + [DataMember(Name = "data", EmitDefaultValue = false)] + public Object Data { get; set; } /// /// Gets or Sets Description @@ -92,6 +92,12 @@ public Permission(string displayName = default, string description = default, st [DataMember(Name = "description", EmitDefaultValue = false)] public string Description { get; set; } + /// + /// Gets or Sets DisplayName + /// + [DataMember(Name = "displayName", EmitDefaultValue = false)] + public string DisplayName { get; set; } + /// /// Gets or Sets Id /// @@ -101,12 +107,6 @@ public Permission(string displayName = default, string description = default, st [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] public string Id { get; set; } - /// - /// Gets or Sets OwnerDisplayName - /// - [DataMember(Name = "ownerDisplayName", IsRequired = true, EmitDefaultValue = true)] - public string OwnerDisplayName { get; set; } - /// /// Gets or Sets Name /// @@ -116,6 +116,12 @@ public Permission(string displayName = default, string description = default, st [DataMember(Name = "name", IsRequired = true, EmitDefaultValue = true)] public string Name { get; set; } + /// + /// Gets or Sets OwnerDisplayName + /// + [DataMember(Name = "ownerDisplayName", IsRequired = true, EmitDefaultValue = true)] + public string OwnerDisplayName { get; set; } + /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -132,12 +138,6 @@ public Permission(string displayName = default, string description = default, st [DataMember(Name = "type", EmitDefaultValue = false)] public string Type { get; set; } - /// - /// Gets or Sets Data - /// - [DataMember(Name = "data", EmitDefaultValue = false)] - public Object Data { get; set; } - /// /// Returns the string presentation of the object /// @@ -146,14 +146,14 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class Permission {\n"); - sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); + sb.Append(" Data: ").Append(Data).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" OwnerDisplayName: ").Append(OwnerDisplayName).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" OwnerDisplayName: ").Append(OwnerDisplayName).Append("\n"); sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); sb.Append(" Type: ").Append(Type).Append("\n"); - sb.Append(" Data: ").Append(Data).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -190,30 +190,35 @@ public bool Equals(Permission input) } return ( - this.DisplayName == input.DisplayName || - (this.DisplayName != null && - this.DisplayName.Equals(input.DisplayName)) + this.Data == input.Data || + (this.Data != null && + this.Data.Equals(input.Data)) ) && ( this.Description == input.Description || (this.Description != null && this.Description.Equals(input.Description)) ) && + ( + this.DisplayName == input.DisplayName || + (this.DisplayName != null && + this.DisplayName.Equals(input.DisplayName)) + ) && ( this.Id == input.Id || (this.Id != null && this.Id.Equals(input.Id)) ) && - ( - this.OwnerDisplayName == input.OwnerDisplayName || - (this.OwnerDisplayName != null && - this.OwnerDisplayName.Equals(input.OwnerDisplayName)) - ) && ( this.Name == input.Name || (this.Name != null && this.Name.Equals(input.Name)) ) && + ( + this.OwnerDisplayName == input.OwnerDisplayName || + (this.OwnerDisplayName != null && + this.OwnerDisplayName.Equals(input.OwnerDisplayName)) + ) && ( this.OwnerId == input.OwnerId || (this.OwnerId != null && @@ -223,11 +228,6 @@ public bool Equals(Permission input) this.Type == input.Type || (this.Type != null && this.Type.Equals(input.Type)) - ) && - ( - this.Data == input.Data || - (this.Data != null && - this.Data.Equals(input.Data)) ); } @@ -240,26 +240,30 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.DisplayName != null) + if (this.Data != null) { - hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); + hashCode = (hashCode * 59) + this.Data.GetHashCode(); } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - if (this.Id != null) + if (this.DisplayName != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } - if (this.OwnerDisplayName != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.OwnerDisplayName.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } if (this.Name != null) { hashCode = (hashCode * 59) + this.Name.GetHashCode(); } + if (this.OwnerDisplayName != null) + { + hashCode = (hashCode * 59) + this.OwnerDisplayName.GetHashCode(); + } if (this.OwnerId != null) { hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); @@ -268,10 +272,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Type.GetHashCode(); } - if (this.Data != null) - { - hashCode = (hashCode * 59) + this.Data.GetHashCode(); - } return hashCode; } } diff --git a/src/VRChat.API/Model/PlatformBuildInfo.cs b/src/VRChat.API/Model/PlatformBuildInfo.cs index b22a3960..2853c88b 100644 --- a/src/VRChat.API/Model/PlatformBuildInfo.cs +++ b/src/VRChat.API/Model/PlatformBuildInfo.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/PlayerModeration.cs b/src/VRChat.API/Model/PlayerModeration.cs index 503b2200..05ee2c91 100644 --- a/src/VRChat.API/Model/PlayerModeration.cs +++ b/src/VRChat.API/Model/PlayerModeration.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/PlayerModerationType.cs b/src/VRChat.API/Model/PlayerModerationType.cs index 92813b3d..26ca7e94 100644 --- a/src/VRChat.API/Model/PlayerModerationType.cs +++ b/src/VRChat.API/Model/PlayerModerationType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,34 +39,34 @@ public enum PlayerModerationType Block = 1, /// - /// Enum Mute for value: mute + /// Enum HideAvatar for value: hideAvatar /// - [EnumMember(Value = "mute")] - Mute = 2, + [EnumMember(Value = "hideAvatar")] + HideAvatar = 2, /// - /// Enum MuteChat for value: muteChat + /// Enum InteractOff for value: interactOff /// - [EnumMember(Value = "muteChat")] - MuteChat = 3, + [EnumMember(Value = "interactOff")] + InteractOff = 3, /// - /// Enum Unmute for value: unmute + /// Enum InteractOn for value: interactOn /// - [EnumMember(Value = "unmute")] - Unmute = 4, + [EnumMember(Value = "interactOn")] + InteractOn = 4, /// - /// Enum UnmuteChat for value: unmuteChat + /// Enum Mute for value: mute /// - [EnumMember(Value = "unmuteChat")] - UnmuteChat = 5, + [EnumMember(Value = "mute")] + Mute = 5, /// - /// Enum HideAvatar for value: hideAvatar + /// Enum MuteChat for value: muteChat /// - [EnumMember(Value = "hideAvatar")] - HideAvatar = 6, + [EnumMember(Value = "muteChat")] + MuteChat = 6, /// /// Enum ShowAvatar for value: showAvatar @@ -75,16 +75,16 @@ public enum PlayerModerationType ShowAvatar = 7, /// - /// Enum InteractOn for value: interactOn + /// Enum Unmute for value: unmute /// - [EnumMember(Value = "interactOn")] - InteractOn = 8, + [EnumMember(Value = "unmute")] + Unmute = 8, /// - /// Enum InteractOff for value: interactOff + /// Enum UnmuteChat for value: unmuteChat /// - [EnumMember(Value = "interactOff")] - InteractOff = 9 + [EnumMember(Value = "unmuteChat")] + UnmuteChat = 9 } } diff --git a/src/VRChat.API/Model/Print.cs b/src/VRChat.API/Model/Print.cs index 33216f95..bbf35af0 100644 --- a/src/VRChat.API/Model/Print.cs +++ b/src/VRChat.API/Model/Print.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/PrintFiles.cs b/src/VRChat.API/Model/PrintFiles.cs index 82e0e8db..5e6bfac3 100644 --- a/src/VRChat.API/Model/PrintFiles.cs +++ b/src/VRChat.API/Model/PrintFiles.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Product.cs b/src/VRChat.API/Model/Product.cs index 180c099a..022e3333 100644 --- a/src/VRChat.API/Model/Product.cs +++ b/src/VRChat.API/Model/Product.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/ProductListing.cs b/src/VRChat.API/Model/ProductListing.cs index f8d7364b..cbcc6016 100644 --- a/src/VRChat.API/Model/ProductListing.cs +++ b/src/VRChat.API/Model/ProductListing.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/ProductListingType.cs b/src/VRChat.API/Model/ProductListingType.cs index 8ba7dd2f..61472869 100644 --- a/src/VRChat.API/Model/ProductListingType.cs +++ b/src/VRChat.API/Model/ProductListingType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -32,11 +32,23 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum ProductListingType { + /// + /// Enum Duration for value: duration + /// + [EnumMember(Value = "duration")] + Duration = 1, + + /// + /// Enum Permanent for value: permanent + /// + [EnumMember(Value = "permanent")] + Permanent = 2, + /// /// Enum Subscription for value: subscription /// [EnumMember(Value = "subscription")] - Subscription = 1 + Subscription = 3 } } diff --git a/src/VRChat.API/Model/ProductListingVariant.cs b/src/VRChat.API/Model/ProductListingVariant.cs index 3b28f4ce..5b991730 100644 --- a/src/VRChat.API/Model/ProductListingVariant.cs +++ b/src/VRChat.API/Model/ProductListingVariant.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/ProductPurchase.cs b/src/VRChat.API/Model/ProductPurchase.cs new file mode 100644 index 00000000..51288f50 --- /dev/null +++ b/src/VRChat.API/Model/ProductPurchase.cs @@ -0,0 +1,816 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// ProductPurchase + /// + [DataContract(Name = "ProductPurchase")] + public partial class ProductPurchase : IEquatable, IValidatableObject + { + + /// + /// Gets or Sets ListingType + /// + [DataMember(Name = "listingType", IsRequired = true, EmitDefaultValue = true)] + public ProductListingType ListingType { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected ProductPurchase() { } + /// + /// Initializes a new instance of the class. + /// + /// buyerDisplayName (required). + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). + /// firstParty. + /// isBuyer (required). + /// isGift (required). + /// isReceiver (required). + /// isSeller (required). + /// listingCurrentlyAvailable (required). + /// listingDisplayName (required). + /// listingId (required). + /// listingImageId (required). + /// listingSubtitle (required). + /// listingType (required). + /// products (required). + /// purchaseActive (required). + /// purchaseContext (required). + /// purchaseCurrentStatus (required). + /// purchaseDate (required). + /// purchaseDuration. + /// purchaseDurationType. + /// purchaseEndDate (required). + /// purchaseId (required). + /// purchaseLatest (required). + /// purchasePrice (required). + /// purchaseQuantity (required). + /// purchaseStartDate (required). + /// purchaseToken (required). + /// purchaseType (required). + /// purchaseUnitPrice (required). + /// receiverDisplayName (required). + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). + /// recurrable (required). + /// refundable (required). + /// sellerDisplayName (required). + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). + /// stackable (required). + /// willRecur (required). + public ProductPurchase(string buyerDisplayName = default, string buyerId = default, bool firstParty = default, bool isBuyer = default, bool isGift = default, bool isReceiver = default, bool isSeller = default, bool listingCurrentlyAvailable = default, string listingDisplayName = default, string listingId = default, string listingImageId = default, string listingSubtitle = default, ProductListingType listingType = default, List products = default, bool purchaseActive = default, ProductPurchasePurchaseContext purchaseContext = default, string purchaseCurrentStatus = default, DateTime purchaseDate = default, int purchaseDuration = default, string purchaseDurationType = default, DateTime purchaseEndDate = default, string purchaseId = default, bool purchaseLatest = default, int purchasePrice = default, int purchaseQuantity = default, DateTime purchaseStartDate = default, Object purchaseToken = default, string purchaseType = default, int purchaseUnitPrice = default, string receiverDisplayName = default, string receiverId = default, bool recurrable = default, bool refundable = default, string sellerDisplayName = default, string sellerId = default, bool stackable = default, bool willRecur = default) + { + // to ensure "buyerDisplayName" is required (not null) + if (buyerDisplayName == null) + { + throw new ArgumentNullException("buyerDisplayName is a required property for ProductPurchase and cannot be null"); + } + this.BuyerDisplayName = buyerDisplayName; + // to ensure "buyerId" is required (not null) + if (buyerId == null) + { + throw new ArgumentNullException("buyerId is a required property for ProductPurchase and cannot be null"); + } + this.BuyerId = buyerId; + this.IsBuyer = isBuyer; + this.IsGift = isGift; + this.IsReceiver = isReceiver; + this.IsSeller = isSeller; + this.ListingCurrentlyAvailable = listingCurrentlyAvailable; + // to ensure "listingDisplayName" is required (not null) + if (listingDisplayName == null) + { + throw new ArgumentNullException("listingDisplayName is a required property for ProductPurchase and cannot be null"); + } + this.ListingDisplayName = listingDisplayName; + // to ensure "listingId" is required (not null) + if (listingId == null) + { + throw new ArgumentNullException("listingId is a required property for ProductPurchase and cannot be null"); + } + this.ListingId = listingId; + // to ensure "listingImageId" is required (not null) + if (listingImageId == null) + { + throw new ArgumentNullException("listingImageId is a required property for ProductPurchase and cannot be null"); + } + this.ListingImageId = listingImageId; + // to ensure "listingSubtitle" is required (not null) + if (listingSubtitle == null) + { + throw new ArgumentNullException("listingSubtitle is a required property for ProductPurchase and cannot be null"); + } + this.ListingSubtitle = listingSubtitle; + this.ListingType = listingType; + // to ensure "products" is required (not null) + if (products == null) + { + throw new ArgumentNullException("products is a required property for ProductPurchase and cannot be null"); + } + this.Products = products; + this.PurchaseActive = purchaseActive; + // to ensure "purchaseContext" is required (not null) + if (purchaseContext == null) + { + throw new ArgumentNullException("purchaseContext is a required property for ProductPurchase and cannot be null"); + } + this.PurchaseContext = purchaseContext; + // to ensure "purchaseCurrentStatus" is required (not null) + if (purchaseCurrentStatus == null) + { + throw new ArgumentNullException("purchaseCurrentStatus is a required property for ProductPurchase and cannot be null"); + } + this.PurchaseCurrentStatus = purchaseCurrentStatus; + this.PurchaseDate = purchaseDate; + this.PurchaseEndDate = purchaseEndDate; + // to ensure "purchaseId" is required (not null) + if (purchaseId == null) + { + throw new ArgumentNullException("purchaseId is a required property for ProductPurchase and cannot be null"); + } + this.PurchaseId = purchaseId; + this.PurchaseLatest = purchaseLatest; + this.PurchasePrice = purchasePrice; + this.PurchaseQuantity = purchaseQuantity; + this.PurchaseStartDate = purchaseStartDate; + // to ensure "purchaseToken" is required (not null) + if (purchaseToken == null) + { + throw new ArgumentNullException("purchaseToken is a required property for ProductPurchase and cannot be null"); + } + this.PurchaseToken = purchaseToken; + // to ensure "purchaseType" is required (not null) + if (purchaseType == null) + { + throw new ArgumentNullException("purchaseType is a required property for ProductPurchase and cannot be null"); + } + this.PurchaseType = purchaseType; + this.PurchaseUnitPrice = purchaseUnitPrice; + // to ensure "receiverDisplayName" is required (not null) + if (receiverDisplayName == null) + { + throw new ArgumentNullException("receiverDisplayName is a required property for ProductPurchase and cannot be null"); + } + this.ReceiverDisplayName = receiverDisplayName; + // to ensure "receiverId" is required (not null) + if (receiverId == null) + { + throw new ArgumentNullException("receiverId is a required property for ProductPurchase and cannot be null"); + } + this.ReceiverId = receiverId; + this.Recurrable = recurrable; + this.Refundable = refundable; + // to ensure "sellerDisplayName" is required (not null) + if (sellerDisplayName == null) + { + throw new ArgumentNullException("sellerDisplayName is a required property for ProductPurchase and cannot be null"); + } + this.SellerDisplayName = sellerDisplayName; + // to ensure "sellerId" is required (not null) + if (sellerId == null) + { + throw new ArgumentNullException("sellerId is a required property for ProductPurchase and cannot be null"); + } + this.SellerId = sellerId; + this.Stackable = stackable; + this.WillRecur = willRecur; + this.FirstParty = firstParty; + this.PurchaseDuration = purchaseDuration; + this.PurchaseDurationType = purchaseDurationType; + } + + /// + /// Gets or Sets BuyerDisplayName + /// + [DataMember(Name = "buyerDisplayName", IsRequired = true, EmitDefaultValue = true)] + public string BuyerDisplayName { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "buyerId", IsRequired = true, EmitDefaultValue = true)] + public string BuyerId { get; set; } + + /// + /// Gets or Sets FirstParty + /// + [DataMember(Name = "firstParty", EmitDefaultValue = true)] + public bool FirstParty { get; set; } + + /// + /// Gets or Sets IsBuyer + /// + [DataMember(Name = "isBuyer", IsRequired = true, EmitDefaultValue = true)] + public bool IsBuyer { get; set; } + + /// + /// Gets or Sets IsGift + /// + [DataMember(Name = "isGift", IsRequired = true, EmitDefaultValue = true)] + public bool IsGift { get; set; } + + /// + /// Gets or Sets IsReceiver + /// + [DataMember(Name = "isReceiver", IsRequired = true, EmitDefaultValue = true)] + public bool IsReceiver { get; set; } + + /// + /// Gets or Sets IsSeller + /// + [DataMember(Name = "isSeller", IsRequired = true, EmitDefaultValue = true)] + public bool IsSeller { get; set; } + + /// + /// Gets or Sets ListingCurrentlyAvailable + /// + [DataMember(Name = "listingCurrentlyAvailable", IsRequired = true, EmitDefaultValue = true)] + public bool ListingCurrentlyAvailable { get; set; } + + /// + /// Gets or Sets ListingDisplayName + /// + [DataMember(Name = "listingDisplayName", IsRequired = true, EmitDefaultValue = true)] + public string ListingDisplayName { get; set; } + + /// + /// Gets or Sets ListingId + /// + /* + prod_bfbc2315-247a-44d7-bfea-5237f8d56cb4 + */ + [DataMember(Name = "listingId", IsRequired = true, EmitDefaultValue = true)] + public string ListingId { get; set; } + + /// + /// Gets or Sets ListingImageId + /// + /* + file_ce35d830-e20a-4df0-a6d4-5aaef4508044 + */ + [DataMember(Name = "listingImageId", IsRequired = true, EmitDefaultValue = true)] + public string ListingImageId { get; set; } + + /// + /// Gets or Sets ListingSubtitle + /// + [DataMember(Name = "listingSubtitle", IsRequired = true, EmitDefaultValue = true)] + public string ListingSubtitle { get; set; } + + /// + /// Gets or Sets Products + /// + [DataMember(Name = "products", IsRequired = true, EmitDefaultValue = true)] + public List Products { get; set; } + + /// + /// Gets or Sets PurchaseActive + /// + [DataMember(Name = "purchaseActive", IsRequired = true, EmitDefaultValue = true)] + public bool PurchaseActive { get; set; } + + /// + /// Gets or Sets PurchaseContext + /// + [DataMember(Name = "purchaseContext", IsRequired = true, EmitDefaultValue = true)] + public ProductPurchasePurchaseContext PurchaseContext { get; set; } + + /// + /// Gets or Sets PurchaseCurrentStatus + /// + [DataMember(Name = "purchaseCurrentStatus", IsRequired = true, EmitDefaultValue = true)] + public string PurchaseCurrentStatus { get; set; } + + /// + /// Gets or Sets PurchaseDate + /// + [DataMember(Name = "purchaseDate", IsRequired = true, EmitDefaultValue = true)] + public DateTime PurchaseDate { get; set; } + + /// + /// Gets or Sets PurchaseDuration + /// + [DataMember(Name = "purchaseDuration", EmitDefaultValue = false)] + public int PurchaseDuration { get; set; } + + /// + /// Gets or Sets PurchaseDurationType + /// + [DataMember(Name = "purchaseDurationType", EmitDefaultValue = false)] + public string PurchaseDurationType { get; set; } + + /// + /// Gets or Sets PurchaseEndDate + /// + [DataMember(Name = "purchaseEndDate", IsRequired = true, EmitDefaultValue = true)] + public DateTime PurchaseEndDate { get; set; } + + /// + /// Gets or Sets PurchaseId + /// + /* + pur_f0446b91-e0f7-403e-8932-609d5057898c + */ + [DataMember(Name = "purchaseId", IsRequired = true, EmitDefaultValue = true)] + public string PurchaseId { get; set; } + + /// + /// Gets or Sets PurchaseLatest + /// + [DataMember(Name = "purchaseLatest", IsRequired = true, EmitDefaultValue = true)] + public bool PurchaseLatest { get; set; } + + /// + /// Gets or Sets PurchasePrice + /// + [DataMember(Name = "purchasePrice", IsRequired = true, EmitDefaultValue = true)] + public int PurchasePrice { get; set; } + + /// + /// Gets or Sets PurchaseQuantity + /// + [DataMember(Name = "purchaseQuantity", IsRequired = true, EmitDefaultValue = true)] + public int PurchaseQuantity { get; set; } + + /// + /// Gets or Sets PurchaseStartDate + /// + [DataMember(Name = "purchaseStartDate", IsRequired = true, EmitDefaultValue = true)] + public DateTime PurchaseStartDate { get; set; } + + /// + /// Gets or Sets PurchaseToken + /// + [DataMember(Name = "purchaseToken", IsRequired = true, EmitDefaultValue = true)] + public Object PurchaseToken { get; set; } + + /// + /// Gets or Sets PurchaseType + /// + [DataMember(Name = "purchaseType", IsRequired = true, EmitDefaultValue = true)] + public string PurchaseType { get; set; } + + /// + /// Gets or Sets PurchaseUnitPrice + /// + [DataMember(Name = "purchaseUnitPrice", IsRequired = true, EmitDefaultValue = true)] + public int PurchaseUnitPrice { get; set; } + + /// + /// Gets or Sets ReceiverDisplayName + /// + [DataMember(Name = "receiverDisplayName", IsRequired = true, EmitDefaultValue = true)] + public string ReceiverDisplayName { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "receiverId", IsRequired = true, EmitDefaultValue = true)] + public string ReceiverId { get; set; } + + /// + /// Gets or Sets Recurrable + /// + [DataMember(Name = "recurrable", IsRequired = true, EmitDefaultValue = true)] + public bool Recurrable { get; set; } + + /// + /// Gets or Sets Refundable + /// + [DataMember(Name = "refundable", IsRequired = true, EmitDefaultValue = true)] + public bool Refundable { get; set; } + + /// + /// Gets or Sets SellerDisplayName + /// + [DataMember(Name = "sellerDisplayName", IsRequired = true, EmitDefaultValue = true)] + public string SellerDisplayName { get; set; } + + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "sellerId", IsRequired = true, EmitDefaultValue = true)] + public string SellerId { get; set; } + + /// + /// Gets or Sets Stackable + /// + [DataMember(Name = "stackable", IsRequired = true, EmitDefaultValue = true)] + public bool Stackable { get; set; } + + /// + /// Gets or Sets WillRecur + /// + [DataMember(Name = "willRecur", IsRequired = true, EmitDefaultValue = true)] + public bool WillRecur { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ProductPurchase {\n"); + sb.Append(" BuyerDisplayName: ").Append(BuyerDisplayName).Append("\n"); + sb.Append(" BuyerId: ").Append(BuyerId).Append("\n"); + sb.Append(" FirstParty: ").Append(FirstParty).Append("\n"); + sb.Append(" IsBuyer: ").Append(IsBuyer).Append("\n"); + sb.Append(" IsGift: ").Append(IsGift).Append("\n"); + sb.Append(" IsReceiver: ").Append(IsReceiver).Append("\n"); + sb.Append(" IsSeller: ").Append(IsSeller).Append("\n"); + sb.Append(" ListingCurrentlyAvailable: ").Append(ListingCurrentlyAvailable).Append("\n"); + sb.Append(" ListingDisplayName: ").Append(ListingDisplayName).Append("\n"); + sb.Append(" ListingId: ").Append(ListingId).Append("\n"); + sb.Append(" ListingImageId: ").Append(ListingImageId).Append("\n"); + sb.Append(" ListingSubtitle: ").Append(ListingSubtitle).Append("\n"); + sb.Append(" ListingType: ").Append(ListingType).Append("\n"); + sb.Append(" Products: ").Append(Products).Append("\n"); + sb.Append(" PurchaseActive: ").Append(PurchaseActive).Append("\n"); + sb.Append(" PurchaseContext: ").Append(PurchaseContext).Append("\n"); + sb.Append(" PurchaseCurrentStatus: ").Append(PurchaseCurrentStatus).Append("\n"); + sb.Append(" PurchaseDate: ").Append(PurchaseDate).Append("\n"); + sb.Append(" PurchaseDuration: ").Append(PurchaseDuration).Append("\n"); + sb.Append(" PurchaseDurationType: ").Append(PurchaseDurationType).Append("\n"); + sb.Append(" PurchaseEndDate: ").Append(PurchaseEndDate).Append("\n"); + sb.Append(" PurchaseId: ").Append(PurchaseId).Append("\n"); + sb.Append(" PurchaseLatest: ").Append(PurchaseLatest).Append("\n"); + sb.Append(" PurchasePrice: ").Append(PurchasePrice).Append("\n"); + sb.Append(" PurchaseQuantity: ").Append(PurchaseQuantity).Append("\n"); + sb.Append(" PurchaseStartDate: ").Append(PurchaseStartDate).Append("\n"); + sb.Append(" PurchaseToken: ").Append(PurchaseToken).Append("\n"); + sb.Append(" PurchaseType: ").Append(PurchaseType).Append("\n"); + sb.Append(" PurchaseUnitPrice: ").Append(PurchaseUnitPrice).Append("\n"); + sb.Append(" ReceiverDisplayName: ").Append(ReceiverDisplayName).Append("\n"); + sb.Append(" ReceiverId: ").Append(ReceiverId).Append("\n"); + sb.Append(" Recurrable: ").Append(Recurrable).Append("\n"); + sb.Append(" Refundable: ").Append(Refundable).Append("\n"); + sb.Append(" SellerDisplayName: ").Append(SellerDisplayName).Append("\n"); + sb.Append(" SellerId: ").Append(SellerId).Append("\n"); + sb.Append(" Stackable: ").Append(Stackable).Append("\n"); + sb.Append(" WillRecur: ").Append(WillRecur).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as ProductPurchase); + } + + /// + /// Returns true if ProductPurchase instances are equal + /// + /// Instance of ProductPurchase to be compared + /// Boolean + public bool Equals(ProductPurchase input) + { + if (input == null) + { + return false; + } + return + ( + this.BuyerDisplayName == input.BuyerDisplayName || + (this.BuyerDisplayName != null && + this.BuyerDisplayName.Equals(input.BuyerDisplayName)) + ) && + ( + this.BuyerId == input.BuyerId || + (this.BuyerId != null && + this.BuyerId.Equals(input.BuyerId)) + ) && + ( + this.FirstParty == input.FirstParty || + this.FirstParty.Equals(input.FirstParty) + ) && + ( + this.IsBuyer == input.IsBuyer || + this.IsBuyer.Equals(input.IsBuyer) + ) && + ( + this.IsGift == input.IsGift || + this.IsGift.Equals(input.IsGift) + ) && + ( + this.IsReceiver == input.IsReceiver || + this.IsReceiver.Equals(input.IsReceiver) + ) && + ( + this.IsSeller == input.IsSeller || + this.IsSeller.Equals(input.IsSeller) + ) && + ( + this.ListingCurrentlyAvailable == input.ListingCurrentlyAvailable || + this.ListingCurrentlyAvailable.Equals(input.ListingCurrentlyAvailable) + ) && + ( + this.ListingDisplayName == input.ListingDisplayName || + (this.ListingDisplayName != null && + this.ListingDisplayName.Equals(input.ListingDisplayName)) + ) && + ( + this.ListingId == input.ListingId || + (this.ListingId != null && + this.ListingId.Equals(input.ListingId)) + ) && + ( + this.ListingImageId == input.ListingImageId || + (this.ListingImageId != null && + this.ListingImageId.Equals(input.ListingImageId)) + ) && + ( + this.ListingSubtitle == input.ListingSubtitle || + (this.ListingSubtitle != null && + this.ListingSubtitle.Equals(input.ListingSubtitle)) + ) && + ( + this.ListingType == input.ListingType || + this.ListingType.Equals(input.ListingType) + ) && + ( + this.Products == input.Products || + this.Products != null && + input.Products != null && + this.Products.SequenceEqual(input.Products) + ) && + ( + this.PurchaseActive == input.PurchaseActive || + this.PurchaseActive.Equals(input.PurchaseActive) + ) && + ( + this.PurchaseContext == input.PurchaseContext || + (this.PurchaseContext != null && + this.PurchaseContext.Equals(input.PurchaseContext)) + ) && + ( + this.PurchaseCurrentStatus == input.PurchaseCurrentStatus || + (this.PurchaseCurrentStatus != null && + this.PurchaseCurrentStatus.Equals(input.PurchaseCurrentStatus)) + ) && + ( + this.PurchaseDate == input.PurchaseDate || + (this.PurchaseDate != null && + this.PurchaseDate.Equals(input.PurchaseDate)) + ) && + ( + this.PurchaseDuration == input.PurchaseDuration || + this.PurchaseDuration.Equals(input.PurchaseDuration) + ) && + ( + this.PurchaseDurationType == input.PurchaseDurationType || + (this.PurchaseDurationType != null && + this.PurchaseDurationType.Equals(input.PurchaseDurationType)) + ) && + ( + this.PurchaseEndDate == input.PurchaseEndDate || + (this.PurchaseEndDate != null && + this.PurchaseEndDate.Equals(input.PurchaseEndDate)) + ) && + ( + this.PurchaseId == input.PurchaseId || + (this.PurchaseId != null && + this.PurchaseId.Equals(input.PurchaseId)) + ) && + ( + this.PurchaseLatest == input.PurchaseLatest || + this.PurchaseLatest.Equals(input.PurchaseLatest) + ) && + ( + this.PurchasePrice == input.PurchasePrice || + this.PurchasePrice.Equals(input.PurchasePrice) + ) && + ( + this.PurchaseQuantity == input.PurchaseQuantity || + this.PurchaseQuantity.Equals(input.PurchaseQuantity) + ) && + ( + this.PurchaseStartDate == input.PurchaseStartDate || + (this.PurchaseStartDate != null && + this.PurchaseStartDate.Equals(input.PurchaseStartDate)) + ) && + ( + this.PurchaseToken == input.PurchaseToken || + (this.PurchaseToken != null && + this.PurchaseToken.Equals(input.PurchaseToken)) + ) && + ( + this.PurchaseType == input.PurchaseType || + (this.PurchaseType != null && + this.PurchaseType.Equals(input.PurchaseType)) + ) && + ( + this.PurchaseUnitPrice == input.PurchaseUnitPrice || + this.PurchaseUnitPrice.Equals(input.PurchaseUnitPrice) + ) && + ( + this.ReceiverDisplayName == input.ReceiverDisplayName || + (this.ReceiverDisplayName != null && + this.ReceiverDisplayName.Equals(input.ReceiverDisplayName)) + ) && + ( + this.ReceiverId == input.ReceiverId || + (this.ReceiverId != null && + this.ReceiverId.Equals(input.ReceiverId)) + ) && + ( + this.Recurrable == input.Recurrable || + this.Recurrable.Equals(input.Recurrable) + ) && + ( + this.Refundable == input.Refundable || + this.Refundable.Equals(input.Refundable) + ) && + ( + this.SellerDisplayName == input.SellerDisplayName || + (this.SellerDisplayName != null && + this.SellerDisplayName.Equals(input.SellerDisplayName)) + ) && + ( + this.SellerId == input.SellerId || + (this.SellerId != null && + this.SellerId.Equals(input.SellerId)) + ) && + ( + this.Stackable == input.Stackable || + this.Stackable.Equals(input.Stackable) + ) && + ( + this.WillRecur == input.WillRecur || + this.WillRecur.Equals(input.WillRecur) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.BuyerDisplayName != null) + { + hashCode = (hashCode * 59) + this.BuyerDisplayName.GetHashCode(); + } + if (this.BuyerId != null) + { + hashCode = (hashCode * 59) + this.BuyerId.GetHashCode(); + } + hashCode = (hashCode * 59) + this.FirstParty.GetHashCode(); + hashCode = (hashCode * 59) + this.IsBuyer.GetHashCode(); + hashCode = (hashCode * 59) + this.IsGift.GetHashCode(); + hashCode = (hashCode * 59) + this.IsReceiver.GetHashCode(); + hashCode = (hashCode * 59) + this.IsSeller.GetHashCode(); + hashCode = (hashCode * 59) + this.ListingCurrentlyAvailable.GetHashCode(); + if (this.ListingDisplayName != null) + { + hashCode = (hashCode * 59) + this.ListingDisplayName.GetHashCode(); + } + if (this.ListingId != null) + { + hashCode = (hashCode * 59) + this.ListingId.GetHashCode(); + } + if (this.ListingImageId != null) + { + hashCode = (hashCode * 59) + this.ListingImageId.GetHashCode(); + } + if (this.ListingSubtitle != null) + { + hashCode = (hashCode * 59) + this.ListingSubtitle.GetHashCode(); + } + hashCode = (hashCode * 59) + this.ListingType.GetHashCode(); + if (this.Products != null) + { + hashCode = (hashCode * 59) + this.Products.GetHashCode(); + } + hashCode = (hashCode * 59) + this.PurchaseActive.GetHashCode(); + if (this.PurchaseContext != null) + { + hashCode = (hashCode * 59) + this.PurchaseContext.GetHashCode(); + } + if (this.PurchaseCurrentStatus != null) + { + hashCode = (hashCode * 59) + this.PurchaseCurrentStatus.GetHashCode(); + } + if (this.PurchaseDate != null) + { + hashCode = (hashCode * 59) + this.PurchaseDate.GetHashCode(); + } + hashCode = (hashCode * 59) + this.PurchaseDuration.GetHashCode(); + if (this.PurchaseDurationType != null) + { + hashCode = (hashCode * 59) + this.PurchaseDurationType.GetHashCode(); + } + if (this.PurchaseEndDate != null) + { + hashCode = (hashCode * 59) + this.PurchaseEndDate.GetHashCode(); + } + if (this.PurchaseId != null) + { + hashCode = (hashCode * 59) + this.PurchaseId.GetHashCode(); + } + hashCode = (hashCode * 59) + this.PurchaseLatest.GetHashCode(); + hashCode = (hashCode * 59) + this.PurchasePrice.GetHashCode(); + hashCode = (hashCode * 59) + this.PurchaseQuantity.GetHashCode(); + if (this.PurchaseStartDate != null) + { + hashCode = (hashCode * 59) + this.PurchaseStartDate.GetHashCode(); + } + if (this.PurchaseToken != null) + { + hashCode = (hashCode * 59) + this.PurchaseToken.GetHashCode(); + } + if (this.PurchaseType != null) + { + hashCode = (hashCode * 59) + this.PurchaseType.GetHashCode(); + } + hashCode = (hashCode * 59) + this.PurchaseUnitPrice.GetHashCode(); + if (this.ReceiverDisplayName != null) + { + hashCode = (hashCode * 59) + this.ReceiverDisplayName.GetHashCode(); + } + if (this.ReceiverId != null) + { + hashCode = (hashCode * 59) + this.ReceiverId.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Recurrable.GetHashCode(); + hashCode = (hashCode * 59) + this.Refundable.GetHashCode(); + if (this.SellerDisplayName != null) + { + hashCode = (hashCode * 59) + this.SellerDisplayName.GetHashCode(); + } + if (this.SellerId != null) + { + hashCode = (hashCode * 59) + this.SellerId.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Stackable.GetHashCode(); + hashCode = (hashCode * 59) + this.WillRecur.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/ProductPurchasePurchaseContext.cs b/src/VRChat.API/Model/ProductPurchasePurchaseContext.cs new file mode 100644 index 00000000..dace6e2f --- /dev/null +++ b/src/VRChat.API/Model/ProductPurchasePurchaseContext.cs @@ -0,0 +1,132 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// ProductPurchasePurchaseContext + /// + [DataContract(Name = "ProductPurchase_purchaseContext")] + public partial class ProductPurchasePurchaseContext : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + /// locationType. + public ProductPurchasePurchaseContext(string locationType = default) + { + this.LocationType = locationType; + } + + /// + /// Gets or Sets LocationType + /// + /* + undefined + */ + [DataMember(Name = "locationType", EmitDefaultValue = false)] + public string LocationType { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class ProductPurchasePurchaseContext {\n"); + sb.Append(" LocationType: ").Append(LocationType).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as ProductPurchasePurchaseContext); + } + + /// + /// Returns true if ProductPurchasePurchaseContext instances are equal + /// + /// Instance of ProductPurchasePurchaseContext to be compared + /// Boolean + public bool Equals(ProductPurchasePurchaseContext input) + { + if (input == null) + { + return false; + } + return + ( + this.LocationType == input.LocationType || + (this.LocationType != null && + this.LocationType.Equals(input.LocationType)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.LocationType != null) + { + hashCode = (hashCode * 59) + this.LocationType.GetHashCode(); + } + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/ProductType.cs b/src/VRChat.API/Model/ProductType.cs index 6b8af887..44f046a6 100644 --- a/src/VRChat.API/Model/ProductType.cs +++ b/src/VRChat.API/Model/ProductType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -32,23 +32,29 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum ProductType { + /// + /// Enum Inventory for value: inventory + /// + [EnumMember(Value = "inventory")] + Inventory = 1, + /// /// Enum Listing for value: listing /// [EnumMember(Value = "listing")] - Listing = 1, + Listing = 2, /// /// Enum Role for value: role /// [EnumMember(Value = "role")] - Role = 2, + Role = 3, /// /// Enum Udon for value: udon /// [EnumMember(Value = "udon")] - Udon = 3 + Udon = 4 } } diff --git a/src/VRChat.API/Model/Prop.cs b/src/VRChat.API/Model/Prop.cs index 5400f635..69187a90 100644 --- a/src/VRChat.API/Model/Prop.cs +++ b/src/VRChat.API/Model/Prop.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/PropUnityPackage.cs b/src/VRChat.API/Model/PropUnityPackage.cs index 5ac92e38..0166c2a8 100644 --- a/src/VRChat.API/Model/PropUnityPackage.cs +++ b/src/VRChat.API/Model/PropUnityPackage.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -42,11 +42,11 @@ protected PropUnityPackage() { } /// /// assetUrl (required). /// assetVersion (required). - /// propSignature (required). /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. (required). + /// propSignature (required). /// unityVersion (required) (default to "2022.3.22f1"). /// variant (required). - public PropUnityPackage(string assetUrl = default, int assetVersion = default, string propSignature = default, string platform = default, string unityVersion = @"2022.3.22f1", string variant = default) + public PropUnityPackage(string assetUrl = default, int assetVersion = default, string platform = default, string propSignature = default, string unityVersion = @"2022.3.22f1", string variant = default) { // to ensure "assetUrl" is required (not null) if (assetUrl == null) @@ -55,18 +55,18 @@ public PropUnityPackage(string assetUrl = default, int assetVersion = default, s } this.AssetUrl = assetUrl; this.AssetVersion = assetVersion; - // to ensure "propSignature" is required (not null) - if (propSignature == null) - { - throw new ArgumentNullException("propSignature is a required property for PropUnityPackage and cannot be null"); - } - this.PropSignature = propSignature; // to ensure "platform" is required (not null) if (platform == null) { throw new ArgumentNullException("platform is a required property for PropUnityPackage and cannot be null"); } this.Platform = platform; + // to ensure "propSignature" is required (not null) + if (propSignature == null) + { + throw new ArgumentNullException("propSignature is a required property for PropUnityPackage and cannot be null"); + } + this.PropSignature = propSignature; // to ensure "unityVersion" is required (not null) if (unityVersion == null) { @@ -99,12 +99,6 @@ public PropUnityPackage(string assetUrl = default, int assetVersion = default, s [DataMember(Name = "assetVersion", IsRequired = true, EmitDefaultValue = true)] public int AssetVersion { get; set; } - /// - /// Gets or Sets PropSignature - /// - [DataMember(Name = "propSignature", IsRequired = true, EmitDefaultValue = true)] - public string PropSignature { get; set; } - /// /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. /// @@ -115,6 +109,12 @@ public PropUnityPackage(string assetUrl = default, int assetVersion = default, s [DataMember(Name = "platform", IsRequired = true, EmitDefaultValue = true)] public string Platform { get; set; } + /// + /// Gets or Sets PropSignature + /// + [DataMember(Name = "propSignature", IsRequired = true, EmitDefaultValue = true)] + public string PropSignature { get; set; } + /// /// Gets or Sets UnityVersion /// @@ -140,8 +140,8 @@ public override string ToString() sb.Append("class PropUnityPackage {\n"); sb.Append(" AssetUrl: ").Append(AssetUrl).Append("\n"); sb.Append(" AssetVersion: ").Append(AssetVersion).Append("\n"); - sb.Append(" PropSignature: ").Append(PropSignature).Append("\n"); sb.Append(" Platform: ").Append(Platform).Append("\n"); + sb.Append(" PropSignature: ").Append(PropSignature).Append("\n"); sb.Append(" UnityVersion: ").Append(UnityVersion).Append("\n"); sb.Append(" Variant: ").Append(Variant).Append("\n"); sb.Append("}\n"); @@ -188,16 +188,16 @@ public bool Equals(PropUnityPackage input) this.AssetVersion == input.AssetVersion || this.AssetVersion.Equals(input.AssetVersion) ) && - ( - this.PropSignature == input.PropSignature || - (this.PropSignature != null && - this.PropSignature.Equals(input.PropSignature)) - ) && ( this.Platform == input.Platform || (this.Platform != null && this.Platform.Equals(input.Platform)) ) && + ( + this.PropSignature == input.PropSignature || + (this.PropSignature != null && + this.PropSignature.Equals(input.PropSignature)) + ) && ( this.UnityVersion == input.UnityVersion || (this.UnityVersion != null && @@ -224,14 +224,14 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.AssetUrl.GetHashCode(); } hashCode = (hashCode * 59) + this.AssetVersion.GetHashCode(); - if (this.PropSignature != null) - { - hashCode = (hashCode * 59) + this.PropSignature.GetHashCode(); - } if (this.Platform != null) { hashCode = (hashCode * 59) + this.Platform.GetHashCode(); } + if (this.PropSignature != null) + { + hashCode = (hashCode * 59) + this.PropSignature.GetHashCode(); + } if (this.UnityVersion != null) { hashCode = (hashCode * 59) + this.UnityVersion.GetHashCode(); diff --git a/src/VRChat.API/Model/PurchaseProductListingRequest.cs b/src/VRChat.API/Model/PurchaseProductListingRequest.cs new file mode 100644 index 00000000..46011f85 --- /dev/null +++ b/src/VRChat.API/Model/PurchaseProductListingRequest.cs @@ -0,0 +1,188 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// PurchaseProductListingRequest + /// + [DataContract(Name = "PurchaseProductListingRequest")] + public partial class PurchaseProductListingRequest : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected PurchaseProductListingRequest() { } + /// + /// Initializes a new instance of the class. + /// + /// listingId (required). + /// quantity (required) (default to 1). + /// totalPrice (required). + public PurchaseProductListingRequest(string listingId = default, int quantity = 1, int totalPrice = default) + { + // to ensure "listingId" is required (not null) + if (listingId == null) + { + throw new ArgumentNullException("listingId is a required property for PurchaseProductListingRequest and cannot be null"); + } + this.ListingId = listingId; + this.Quantity = quantity; + this.TotalPrice = totalPrice; + } + + /// + /// Gets or Sets ListingId + /// + /* + prod_bfbc2315-247a-44d7-bfea-5237f8d56cb4 + */ + [DataMember(Name = "listingId", IsRequired = true, EmitDefaultValue = true)] + public string ListingId { get; set; } + + /// + /// Gets or Sets Quantity + /// + [DataMember(Name = "quantity", IsRequired = true, EmitDefaultValue = true)] + public int Quantity { get; set; } + + /// + /// Gets or Sets TotalPrice + /// + [DataMember(Name = "totalPrice", IsRequired = true, EmitDefaultValue = true)] + public int TotalPrice { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class PurchaseProductListingRequest {\n"); + sb.Append(" ListingId: ").Append(ListingId).Append("\n"); + sb.Append(" Quantity: ").Append(Quantity).Append("\n"); + sb.Append(" TotalPrice: ").Append(TotalPrice).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as PurchaseProductListingRequest); + } + + /// + /// Returns true if PurchaseProductListingRequest instances are equal + /// + /// Instance of PurchaseProductListingRequest to be compared + /// Boolean + public bool Equals(PurchaseProductListingRequest input) + { + if (input == null) + { + return false; + } + return + ( + this.ListingId == input.ListingId || + (this.ListingId != null && + this.ListingId.Equals(input.ListingId)) + ) && + ( + this.Quantity == input.Quantity || + this.Quantity.Equals(input.Quantity) + ) && + ( + this.TotalPrice == input.TotalPrice || + this.TotalPrice.Equals(input.TotalPrice) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ListingId != null) + { + hashCode = (hashCode * 59) + this.ListingId.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Quantity.GetHashCode(); + hashCode = (hashCode * 59) + this.TotalPrice.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + // Quantity (int) maximum + if (this.Quantity > (int)99) + { + yield return new ValidationResult("Invalid value for Quantity, must be a value less than or equal to 99.", new [] { "Quantity" }); + } + + // Quantity (int) minimum + if (this.Quantity < (int)1) + { + yield return new ValidationResult("Invalid value for Quantity, must be a value greater than or equal to 1.", new [] { "Quantity" }); + } + + // TotalPrice (int) minimum + if (this.TotalPrice < (int)0) + { + yield return new ValidationResult("Invalid value for TotalPrice, must be a value greater than or equal to 0.", new [] { "TotalPrice" }); + } + + yield break; + } + } + +} diff --git a/src/VRChat.API/Model/Region.cs b/src/VRChat.API/Model/Region.cs index 2e7972ea..d36fe880 100644 --- a/src/VRChat.API/Model/Region.cs +++ b/src/VRChat.API/Model/Region.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -34,46 +34,46 @@ namespace VRChat.API.Model public enum Region { /// - /// Enum Us for value: us + /// Enum Eu for value: eu /// - [EnumMember(Value = "us")] - Us = 1, + [EnumMember(Value = "eu")] + Eu = 1, /// - /// Enum Use for value: use + /// Enum Jp for value: jp /// - [EnumMember(Value = "use")] - Use = 2, + [EnumMember(Value = "jp")] + Jp = 2, /// - /// Enum Usw for value: usw + /// Enum Unknown for value: unknown /// - [EnumMember(Value = "usw")] - Usw = 3, + [EnumMember(Value = "unknown")] + Unknown = 3, /// - /// Enum Usx for value: usx + /// Enum Us for value: us /// - [EnumMember(Value = "usx")] - Usx = 4, + [EnumMember(Value = "us")] + Us = 4, /// - /// Enum Eu for value: eu + /// Enum Use for value: use /// - [EnumMember(Value = "eu")] - Eu = 5, + [EnumMember(Value = "use")] + Use = 5, /// - /// Enum Jp for value: jp + /// Enum Usw for value: usw /// - [EnumMember(Value = "jp")] - Jp = 6, + [EnumMember(Value = "usw")] + Usw = 6, /// - /// Enum Unknown for value: unknown + /// Enum Usx for value: usx /// - [EnumMember(Value = "unknown")] - Unknown = 7 + [EnumMember(Value = "usx")] + Usx = 7 } } diff --git a/src/VRChat.API/Model/RegisterUserAccountRequest.cs b/src/VRChat.API/Model/RegisterUserAccountRequest.cs index b259c291..3f9852e2 100644 --- a/src/VRChat.API/Model/RegisterUserAccountRequest.cs +++ b/src/VRChat.API/Model/RegisterUserAccountRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,76 +40,83 @@ protected RegisterUserAccountRequest() { } /// /// Initializes a new instance of the class. /// - /// Display Name / Username (Username is a sanitized version) (required). - /// Password (required). + /// The most recent version of the TOS (required). + /// Captcha code (required). + /// Birth day of month (required). /// Email address (required). - /// Birth year (required). /// Birth month of year (required). - /// Birth day of month (required). - /// Captcha code (required). + /// Password (required). /// Whether to recieve promotional emails (required). - /// The most recent version of the TOS (required). - public RegisterUserAccountRequest(string username = default, string password = default, string email = default, string year = default, string month = default, string day = default, string captchaCode = default, bool subscribe = default, int acceptedTOSVersion = default) + /// Display Name / Username (Username is a sanitized version) (required). + /// Birth year (required). + public RegisterUserAccountRequest(int acceptedTOSVersion = default, string captchaCode = default, string day = default, string email = default, string month = default, string password = default, bool subscribe = default, string username = default, string year = default) { - // to ensure "username" is required (not null) - if (username == null) + this.AcceptedTOSVersion = acceptedTOSVersion; + // to ensure "captchaCode" is required (not null) + if (captchaCode == null) { - throw new ArgumentNullException("username is a required property for RegisterUserAccountRequest and cannot be null"); + throw new ArgumentNullException("captchaCode is a required property for RegisterUserAccountRequest and cannot be null"); } - this.Username = username; - // to ensure "password" is required (not null) - if (password == null) + this.CaptchaCode = captchaCode; + // to ensure "day" is required (not null) + if (day == null) { - throw new ArgumentNullException("password is a required property for RegisterUserAccountRequest and cannot be null"); + throw new ArgumentNullException("day is a required property for RegisterUserAccountRequest and cannot be null"); } - this.Password = password; + this.Day = day; // to ensure "email" is required (not null) if (email == null) { throw new ArgumentNullException("email is a required property for RegisterUserAccountRequest and cannot be null"); } this.Email = email; - // to ensure "year" is required (not null) - if (year == null) - { - throw new ArgumentNullException("year is a required property for RegisterUserAccountRequest and cannot be null"); - } - this.Year = year; // to ensure "month" is required (not null) if (month == null) { throw new ArgumentNullException("month is a required property for RegisterUserAccountRequest and cannot be null"); } this.Month = month; - // to ensure "day" is required (not null) - if (day == null) + // to ensure "password" is required (not null) + if (password == null) { - throw new ArgumentNullException("day is a required property for RegisterUserAccountRequest and cannot be null"); + throw new ArgumentNullException("password is a required property for RegisterUserAccountRequest and cannot be null"); } - this.Day = day; - // to ensure "captchaCode" is required (not null) - if (captchaCode == null) + this.Password = password; + this.Subscribe = subscribe; + // to ensure "username" is required (not null) + if (username == null) { - throw new ArgumentNullException("captchaCode is a required property for RegisterUserAccountRequest and cannot be null"); + throw new ArgumentNullException("username is a required property for RegisterUserAccountRequest and cannot be null"); } - this.CaptchaCode = captchaCode; - this.Subscribe = subscribe; - this.AcceptedTOSVersion = acceptedTOSVersion; + this.Username = username; + // to ensure "year" is required (not null) + if (year == null) + { + throw new ArgumentNullException("year is a required property for RegisterUserAccountRequest and cannot be null"); + } + this.Year = year; } /// - /// Display Name / Username (Username is a sanitized version) + /// The most recent version of the TOS /// - /// Display Name / Username (Username is a sanitized version) - [DataMember(Name = "username", IsRequired = true, EmitDefaultValue = true)] - public string Username { get; set; } + /// The most recent version of the TOS + [DataMember(Name = "acceptedTOSVersion", IsRequired = true, EmitDefaultValue = true)] + public int AcceptedTOSVersion { get; set; } /// - /// Password + /// Captcha code /// - /// Password - [DataMember(Name = "password", IsRequired = true, EmitDefaultValue = true)] - public string Password { get; set; } + /// Captcha code + [DataMember(Name = "captchaCode", IsRequired = true, EmitDefaultValue = true)] + public string CaptchaCode { get; set; } + + /// + /// Birth day of month + /// + /// Birth day of month + [DataMember(Name = "day", IsRequired = true, EmitDefaultValue = true)] + public string Day { get; set; } /// /// Email address @@ -118,13 +125,6 @@ public RegisterUserAccountRequest(string username = default, string password = d [DataMember(Name = "email", IsRequired = true, EmitDefaultValue = true)] public string Email { get; set; } - /// - /// Birth year - /// - /// Birth year - [DataMember(Name = "year", IsRequired = true, EmitDefaultValue = true)] - public string Year { get; set; } - /// /// Birth month of year /// @@ -133,18 +133,11 @@ public RegisterUserAccountRequest(string username = default, string password = d public string Month { get; set; } /// - /// Birth day of month - /// - /// Birth day of month - [DataMember(Name = "day", IsRequired = true, EmitDefaultValue = true)] - public string Day { get; set; } - - /// - /// Captcha code + /// Password /// - /// Captcha code - [DataMember(Name = "captchaCode", IsRequired = true, EmitDefaultValue = true)] - public string CaptchaCode { get; set; } + /// Password + [DataMember(Name = "password", IsRequired = true, EmitDefaultValue = true)] + public string Password { get; set; } /// /// Whether to recieve promotional emails @@ -154,11 +147,18 @@ public RegisterUserAccountRequest(string username = default, string password = d public bool Subscribe { get; set; } /// - /// The most recent version of the TOS + /// Display Name / Username (Username is a sanitized version) /// - /// The most recent version of the TOS - [DataMember(Name = "acceptedTOSVersion", IsRequired = true, EmitDefaultValue = true)] - public int AcceptedTOSVersion { get; set; } + /// Display Name / Username (Username is a sanitized version) + [DataMember(Name = "username", IsRequired = true, EmitDefaultValue = true)] + public string Username { get; set; } + + /// + /// Birth year + /// + /// Birth year + [DataMember(Name = "year", IsRequired = true, EmitDefaultValue = true)] + public string Year { get; set; } /// /// Returns the string presentation of the object @@ -168,15 +168,15 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class RegisterUserAccountRequest {\n"); - sb.Append(" Username: ").Append(Username).Append("\n"); - sb.Append(" Password: ").Append(Password).Append("\n"); + sb.Append(" AcceptedTOSVersion: ").Append(AcceptedTOSVersion).Append("\n"); + sb.Append(" CaptchaCode: ").Append(CaptchaCode).Append("\n"); + sb.Append(" Day: ").Append(Day).Append("\n"); sb.Append(" Email: ").Append(Email).Append("\n"); - sb.Append(" Year: ").Append(Year).Append("\n"); sb.Append(" Month: ").Append(Month).Append("\n"); - sb.Append(" Day: ").Append(Day).Append("\n"); - sb.Append(" CaptchaCode: ").Append(CaptchaCode).Append("\n"); + sb.Append(" Password: ").Append(Password).Append("\n"); sb.Append(" Subscribe: ").Append(Subscribe).Append("\n"); - sb.Append(" AcceptedTOSVersion: ").Append(AcceptedTOSVersion).Append("\n"); + sb.Append(" Username: ").Append(Username).Append("\n"); + sb.Append(" Year: ").Append(Year).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -213,47 +213,47 @@ public bool Equals(RegisterUserAccountRequest input) } return ( - this.Username == input.Username || - (this.Username != null && - this.Username.Equals(input.Username)) + this.AcceptedTOSVersion == input.AcceptedTOSVersion || + this.AcceptedTOSVersion.Equals(input.AcceptedTOSVersion) ) && ( - this.Password == input.Password || - (this.Password != null && - this.Password.Equals(input.Password)) + this.CaptchaCode == input.CaptchaCode || + (this.CaptchaCode != null && + this.CaptchaCode.Equals(input.CaptchaCode)) + ) && + ( + this.Day == input.Day || + (this.Day != null && + this.Day.Equals(input.Day)) ) && ( this.Email == input.Email || (this.Email != null && this.Email.Equals(input.Email)) ) && - ( - this.Year == input.Year || - (this.Year != null && - this.Year.Equals(input.Year)) - ) && ( this.Month == input.Month || (this.Month != null && this.Month.Equals(input.Month)) ) && ( - this.Day == input.Day || - (this.Day != null && - this.Day.Equals(input.Day)) - ) && - ( - this.CaptchaCode == input.CaptchaCode || - (this.CaptchaCode != null && - this.CaptchaCode.Equals(input.CaptchaCode)) + this.Password == input.Password || + (this.Password != null && + this.Password.Equals(input.Password)) ) && ( this.Subscribe == input.Subscribe || this.Subscribe.Equals(input.Subscribe) ) && ( - this.AcceptedTOSVersion == input.AcceptedTOSVersion || - this.AcceptedTOSVersion.Equals(input.AcceptedTOSVersion) + this.Username == input.Username || + (this.Username != null && + this.Username.Equals(input.Username)) + ) && + ( + this.Year == input.Year || + (this.Year != null && + this.Year.Equals(input.Year)) ); } @@ -266,36 +266,36 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Username != null) + hashCode = (hashCode * 59) + this.AcceptedTOSVersion.GetHashCode(); + if (this.CaptchaCode != null) { - hashCode = (hashCode * 59) + this.Username.GetHashCode(); + hashCode = (hashCode * 59) + this.CaptchaCode.GetHashCode(); } - if (this.Password != null) + if (this.Day != null) { - hashCode = (hashCode * 59) + this.Password.GetHashCode(); + hashCode = (hashCode * 59) + this.Day.GetHashCode(); } if (this.Email != null) { hashCode = (hashCode * 59) + this.Email.GetHashCode(); } - if (this.Year != null) - { - hashCode = (hashCode * 59) + this.Year.GetHashCode(); - } if (this.Month != null) { hashCode = (hashCode * 59) + this.Month.GetHashCode(); } - if (this.Day != null) + if (this.Password != null) { - hashCode = (hashCode * 59) + this.Day.GetHashCode(); + hashCode = (hashCode * 59) + this.Password.GetHashCode(); } - if (this.CaptchaCode != null) + hashCode = (hashCode * 59) + this.Subscribe.GetHashCode(); + if (this.Username != null) { - hashCode = (hashCode * 59) + this.CaptchaCode.GetHashCode(); + hashCode = (hashCode * 59) + this.Username.GetHashCode(); + } + if (this.Year != null) + { + hashCode = (hashCode * 59) + this.Year.GetHashCode(); } - hashCode = (hashCode * 59) + this.Subscribe.GetHashCode(); - hashCode = (hashCode * 59) + this.AcceptedTOSVersion.GetHashCode(); return hashCode; } } @@ -307,6 +307,12 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { + // Password (string) minLength + if (this.Password != null && this.Password.Length < 8) + { + yield return new ValidationResult("Invalid value for Password, length must be greater than 8.", new [] { "Password" }); + } + // Username (string) maxLength if (this.Username != null && this.Username.Length > 15) { @@ -319,12 +325,6 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for Username, length must be greater than 4.", new [] { "Username" }); } - // Password (string) minLength - if (this.Password != null && this.Password.Length < 8) - { - yield return new ValidationResult("Invalid value for Password, length must be greater than 8.", new [] { "Password" }); - } - yield break; } } diff --git a/src/VRChat.API/Model/ReleaseStatus.cs b/src/VRChat.API/Model/ReleaseStatus.cs index 1217f4e9..37021a13 100644 --- a/src/VRChat.API/Model/ReleaseStatus.cs +++ b/src/VRChat.API/Model/ReleaseStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,28 +33,28 @@ namespace VRChat.API.Model public enum ReleaseStatus { /// - /// Enum Public for value: public + /// Enum All for value: all /// - [EnumMember(Value = "public")] - Public = 1, + [EnumMember(Value = "all")] + All = 1, /// - /// Enum Private for value: private + /// Enum Hidden for value: hidden /// - [EnumMember(Value = "private")] - Private = 2, + [EnumMember(Value = "hidden")] + Hidden = 2, /// - /// Enum Hidden for value: hidden + /// Enum Private for value: private /// - [EnumMember(Value = "hidden")] - Hidden = 3, + [EnumMember(Value = "private")] + Private = 3, /// - /// Enum All for value: all + /// Enum Public for value: public /// - [EnumMember(Value = "all")] - All = 4 + [EnumMember(Value = "public")] + Public = 4 } } diff --git a/src/VRChat.API/Model/ReportCategory.cs b/src/VRChat.API/Model/ReportCategory.cs index e32ae8ca..3c00c65f 100644 --- a/src/VRChat.API/Model/ReportCategory.cs +++ b/src/VRChat.API/Model/ReportCategory.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,10 +41,10 @@ protected ReportCategory() { } /// Initializes a new instance of the class. /// /// The description of the report category. - /// The title of the report category. /// The label of the report category (required). + /// The title of the report category. /// The tooltip that describes the category (required). - public ReportCategory(string description = default, string title = default, string text = default, string tooltip = default) + public ReportCategory(string description = default, string text = default, string title = default, string tooltip = default) { // to ensure "text" is required (not null) if (text == null) @@ -69,13 +69,6 @@ public ReportCategory(string description = default, string title = default, stri [DataMember(Name = "description", EmitDefaultValue = false)] public string Description { get; set; } - /// - /// The title of the report category - /// - /// The title of the report category - [DataMember(Name = "title", EmitDefaultValue = false)] - public string Title { get; set; } - /// /// The label of the report category /// @@ -83,6 +76,13 @@ public ReportCategory(string description = default, string title = default, stri [DataMember(Name = "text", IsRequired = true, EmitDefaultValue = true)] public string Text { get; set; } + /// + /// The title of the report category + /// + /// The title of the report category + [DataMember(Name = "title", EmitDefaultValue = false)] + public string Title { get; set; } + /// /// The tooltip that describes the category /// @@ -99,8 +99,8 @@ public override string ToString() StringBuilder sb = new StringBuilder(); sb.Append("class ReportCategory {\n"); sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" Tooltip: ").Append(Tooltip).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -142,16 +142,16 @@ public bool Equals(ReportCategory input) (this.Description != null && this.Description.Equals(input.Description)) ) && - ( - this.Title == input.Title || - (this.Title != null && - this.Title.Equals(input.Title)) - ) && ( this.Text == input.Text || (this.Text != null && this.Text.Equals(input.Text)) ) && + ( + this.Title == input.Title || + (this.Title != null && + this.Title.Equals(input.Title)) + ) && ( this.Tooltip == input.Tooltip || (this.Tooltip != null && @@ -172,14 +172,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - if (this.Title != null) - { - hashCode = (hashCode * 59) + this.Title.GetHashCode(); - } if (this.Text != null) { hashCode = (hashCode * 59) + this.Text.GetHashCode(); } + if (this.Title != null) + { + hashCode = (hashCode * 59) + this.Title.GetHashCode(); + } if (this.Tooltip != null) { hashCode = (hashCode * 59) + this.Tooltip.GetHashCode(); diff --git a/src/VRChat.API/Model/ReportReason.cs b/src/VRChat.API/Model/ReportReason.cs index aa825486..f82aa625 100644 --- a/src/VRChat.API/Model/ReportReason.cs +++ b/src/VRChat.API/Model/ReportReason.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/RepresentedGroup.cs b/src/VRChat.API/Model/RepresentedGroup.cs index 5980f650..d86f46d9 100644 --- a/src/VRChat.API/Model/RepresentedGroup.cs +++ b/src/VRChat.API/Model/RepresentedGroup.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,81 +33,87 @@ namespace VRChat.API.Model public partial class RepresentedGroup : IEquatable, IValidatableObject { - /// - /// Gets or Sets Privacy - /// - [DataMember(Name = "privacy", EmitDefaultValue = false)] - public GroupPrivacy? Privacy { get; set; } - /// /// Gets or Sets MemberVisibility /// [DataMember(Name = "memberVisibility", EmitDefaultValue = false)] public GroupUserVisibility? MemberVisibility { get; set; } + + /// + /// Gets or Sets Privacy + /// + [DataMember(Name = "privacy", EmitDefaultValue = false)] + public GroupPrivacy? Privacy { get; set; } /// /// Initializes a new instance of the class. /// - /// name. - /// shortCode. - /// discriminator. + /// bannerId. + /// bannerUrl. /// description. + /// discriminator. + /// groupId. /// iconId. /// iconUrl. - /// bannerId. - /// bannerUrl. - /// privacy. - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// isRepresenting. /// memberCount. - /// groupId. /// memberVisibility. - /// isRepresenting. - public RepresentedGroup(string name = default, string shortCode = default, string discriminator = default, string description = default, string iconId = default, string iconUrl = default, string bannerId = default, string bannerUrl = default, GroupPrivacy? privacy = default, string ownerId = default, int memberCount = default, string groupId = default, GroupUserVisibility? memberVisibility = default, bool isRepresenting = default) + /// name. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + /// privacy. + /// shortCode. + public RepresentedGroup(string bannerId = default, string bannerUrl = default, string description = default, string discriminator = default, string groupId = default, string iconId = default, string iconUrl = default, bool isRepresenting = default, int memberCount = default, GroupUserVisibility? memberVisibility = default, string name = default, string ownerId = default, GroupPrivacy? privacy = default, string shortCode = default) { - this.Name = name; - this.ShortCode = shortCode; - this.Discriminator = discriminator; + this.BannerId = bannerId; + this.BannerUrl = bannerUrl; this.Description = description; + this.Discriminator = discriminator; + this.GroupId = groupId; this.IconId = iconId; this.IconUrl = iconUrl; - this.BannerId = bannerId; - this.BannerUrl = bannerUrl; - this.Privacy = privacy; - this.OwnerId = ownerId; + this.IsRepresenting = isRepresenting; this.MemberCount = memberCount; - this.GroupId = groupId; this.MemberVisibility = memberVisibility; - this.IsRepresenting = isRepresenting; + this.Name = name; + this.OwnerId = ownerId; + this.Privacy = privacy; + this.ShortCode = shortCode; } /// - /// Gets or Sets Name + /// Gets or Sets BannerId /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "bannerId", EmitDefaultValue = true)] + public string BannerId { get; set; } /// - /// Gets or Sets ShortCode + /// Gets or Sets BannerUrl /// - /* - ABC123 - */ - [DataMember(Name = "shortCode", EmitDefaultValue = false)] - public string ShortCode { get; set; } + [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] + public string BannerUrl { get; set; } + + /// + /// Gets or Sets Description + /// + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } /// /// Gets or Sets Discriminator /// /* - 1234 + 0000 */ [DataMember(Name = "discriminator", EmitDefaultValue = false)] public string Discriminator { get; set; } /// - /// Gets or Sets Description + /// Gets or Sets GroupId /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + /* + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + */ + [DataMember(Name = "groupId", EmitDefaultValue = false)] + public string GroupId { get; set; } /// /// Gets or Sets IconId @@ -122,16 +128,22 @@ public RepresentedGroup(string name = default, string shortCode = default, strin public string IconUrl { get; set; } /// - /// Gets or Sets BannerId + /// Gets or Sets IsRepresenting /// - [DataMember(Name = "bannerId", EmitDefaultValue = true)] - public string BannerId { get; set; } + [DataMember(Name = "isRepresenting", EmitDefaultValue = true)] + public bool IsRepresenting { get; set; } /// - /// Gets or Sets BannerUrl + /// Gets or Sets MemberCount /// - [DataMember(Name = "bannerUrl", EmitDefaultValue = true)] - public string BannerUrl { get; set; } + [DataMember(Name = "memberCount", EmitDefaultValue = false)] + public int MemberCount { get; set; } + + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. @@ -144,25 +156,13 @@ public RepresentedGroup(string name = default, string shortCode = default, strin public string OwnerId { get; set; } /// - /// Gets or Sets MemberCount - /// - [DataMember(Name = "memberCount", EmitDefaultValue = false)] - public int MemberCount { get; set; } - - /// - /// Gets or Sets GroupId + /// Gets or Sets ShortCode /// /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + VRCHAT */ - [DataMember(Name = "groupId", EmitDefaultValue = false)] - public string GroupId { get; set; } - - /// - /// Gets or Sets IsRepresenting - /// - [DataMember(Name = "isRepresenting", EmitDefaultValue = true)] - public bool IsRepresenting { get; set; } + [DataMember(Name = "shortCode", EmitDefaultValue = false)] + public string ShortCode { get; set; } /// /// Returns the string presentation of the object @@ -172,20 +172,20 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class RepresentedGroup {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); - sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); + sb.Append(" BannerId: ").Append(BannerId).Append("\n"); + sb.Append(" BannerUrl: ").Append(BannerUrl).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Discriminator: ").Append(Discriminator).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); sb.Append(" IconId: ").Append(IconId).Append("\n"); sb.Append(" IconUrl: ").Append(IconUrl).Append("\n"); - sb.Append(" BannerId: ").Append(BannerId).Append("\n"); - sb.Append(" BannerUrl: ").Append(BannerUrl).Append("\n"); - sb.Append(" Privacy: ").Append(Privacy).Append("\n"); - sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); + sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); sb.Append(" MemberCount: ").Append(MemberCount).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); sb.Append(" MemberVisibility: ").Append(MemberVisibility).Append("\n"); - sb.Append(" IsRepresenting: ").Append(IsRepresenting).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" OwnerId: ").Append(OwnerId).Append("\n"); + sb.Append(" Privacy: ").Append(Privacy).Append("\n"); + sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -222,14 +222,19 @@ public bool Equals(RepresentedGroup input) } return ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) + this.BannerId == input.BannerId || + (this.BannerId != null && + this.BannerId.Equals(input.BannerId)) ) && ( - this.ShortCode == input.ShortCode || - (this.ShortCode != null && - this.ShortCode.Equals(input.ShortCode)) + this.BannerUrl == input.BannerUrl || + (this.BannerUrl != null && + this.BannerUrl.Equals(input.BannerUrl)) + ) && + ( + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.Discriminator == input.Discriminator || @@ -237,9 +242,9 @@ public bool Equals(RepresentedGroup input) this.Discriminator.Equals(input.Discriminator)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) ) && ( this.IconId == input.IconId || @@ -252,18 +257,21 @@ public bool Equals(RepresentedGroup input) this.IconUrl.Equals(input.IconUrl)) ) && ( - this.BannerId == input.BannerId || - (this.BannerId != null && - this.BannerId.Equals(input.BannerId)) + this.IsRepresenting == input.IsRepresenting || + this.IsRepresenting.Equals(input.IsRepresenting) ) && ( - this.BannerUrl == input.BannerUrl || - (this.BannerUrl != null && - this.BannerUrl.Equals(input.BannerUrl)) + this.MemberCount == input.MemberCount || + this.MemberCount.Equals(input.MemberCount) ) && ( - this.Privacy == input.Privacy || - this.Privacy.Equals(input.Privacy) + this.MemberVisibility == input.MemberVisibility || + this.MemberVisibility.Equals(input.MemberVisibility) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.OwnerId == input.OwnerId || @@ -271,21 +279,13 @@ public bool Equals(RepresentedGroup input) this.OwnerId.Equals(input.OwnerId)) ) && ( - this.MemberCount == input.MemberCount || - this.MemberCount.Equals(input.MemberCount) - ) && - ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) - ) && - ( - this.MemberVisibility == input.MemberVisibility || - this.MemberVisibility.Equals(input.MemberVisibility) + this.Privacy == input.Privacy || + this.Privacy.Equals(input.Privacy) ) && ( - this.IsRepresenting == input.IsRepresenting || - this.IsRepresenting.Equals(input.IsRepresenting) + this.ShortCode == input.ShortCode || + (this.ShortCode != null && + this.ShortCode.Equals(input.ShortCode)) ); } @@ -298,21 +298,25 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) + if (this.BannerId != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); } - if (this.ShortCode != null) + if (this.BannerUrl != null) { - hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); + } + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } if (this.Discriminator != null) { hashCode = (hashCode * 59) + this.Discriminator.GetHashCode(); } - if (this.Description != null) + if (this.GroupId != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); } if (this.IconId != null) { @@ -322,26 +326,22 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.IconUrl.GetHashCode(); } - if (this.BannerId != null) - { - hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); - } - if (this.BannerUrl != null) + hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); + hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); + hashCode = (hashCode * 59) + this.MemberVisibility.GetHashCode(); + if (this.Name != null) { - hashCode = (hashCode * 59) + this.BannerUrl.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } - hashCode = (hashCode * 59) + this.Privacy.GetHashCode(); if (this.OwnerId != null) { hashCode = (hashCode * 59) + this.OwnerId.GetHashCode(); } - hashCode = (hashCode * 59) + this.MemberCount.GetHashCode(); - if (this.GroupId != null) + hashCode = (hashCode * 59) + this.Privacy.GetHashCode(); + if (this.ShortCode != null) { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); + hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); } - hashCode = (hashCode * 59) + this.MemberVisibility.GetHashCode(); - hashCode = (hashCode * 59) + this.IsRepresenting.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/RequestInviteRequest.cs b/src/VRChat.API/Model/RequestInviteRequest.cs index f71585d5..c3314c1e 100644 --- a/src/VRChat.API/Model/RequestInviteRequest.cs +++ b/src/VRChat.API/Model/RequestInviteRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/RespondGroupJoinRequest.cs b/src/VRChat.API/Model/RespondGroupJoinRequest.cs index 3cab1cb2..c1b614a7 100644 --- a/src/VRChat.API/Model/RespondGroupJoinRequest.cs +++ b/src/VRChat.API/Model/RespondGroupJoinRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Response.cs b/src/VRChat.API/Model/Response.cs index 5ec7b524..51a3a7ca 100644 --- a/src/VRChat.API/Model/Response.cs +++ b/src/VRChat.API/Model/Response.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/SentNotification.cs b/src/VRChat.API/Model/SentNotification.cs index 51eccce3..61e36de4 100644 --- a/src/VRChat.API/Model/SentNotification.cs +++ b/src/VRChat.API/Model/SentNotification.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -101,7 +101,7 @@ public SentNotification(DateTime createdAt = default, Object details = default, /// Gets or Sets Details /// /* - {"OneOf":[{},"NotificationDetailInvite","NotificationDetailInviteResponse","NotificationDetailRequestInvite","NotificationDetailRequestInviteResponse","NotificationDetailVoteToKick"]} + {"OneOf":[{},"NotificationDetailBoop","NotificationDetailInvite","NotificationDetailInviteResponse","NotificationDetailRequestInvite","NotificationDetailRequestInviteResponse","NotificationDetailVoteToKick"]} */ [DataMember(Name = "details", IsRequired = true, EmitDefaultValue = true)] public Object Details { get; set; } diff --git a/src/VRChat.API/Model/ServiceQueueStats.cs b/src/VRChat.API/Model/ServiceQueueStats.cs index 193c3f60..7226d5c2 100644 --- a/src/VRChat.API/Model/ServiceQueueStats.cs +++ b/src/VRChat.API/Model/ServiceQueueStats.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/ServiceStatus.cs b/src/VRChat.API/Model/ServiceStatus.cs index 43377b63..f4e5f81f 100644 --- a/src/VRChat.API/Model/ServiceStatus.cs +++ b/src/VRChat.API/Model/ServiceStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/ShareInventoryItemDirectRequest.cs b/src/VRChat.API/Model/ShareInventoryItemDirectRequest.cs index 0d7379a0..c24aa066 100644 --- a/src/VRChat.API/Model/ShareInventoryItemDirectRequest.cs +++ b/src/VRChat.API/Model/ShareInventoryItemDirectRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/SortOption.cs b/src/VRChat.API/Model/SortOption.cs index a24f32f0..1a885faa 100644 --- a/src/VRChat.API/Model/SortOption.cs +++ b/src/VRChat.API/Model/SortOption.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -33,112 +33,112 @@ namespace VRChat.API.Model public enum SortOption { /// - /// Enum Popularity for value: popularity + /// Enum CreatedAt for value: _created_at /// - [EnumMember(Value = "popularity")] - Popularity = 1, + [EnumMember(Value = "_created_at")] + CreatedAt = 1, /// - /// Enum Heat for value: heat + /// Enum UpdatedAt for value: _updated_at /// - [EnumMember(Value = "heat")] - Heat = 2, + [EnumMember(Value = "_updated_at")] + UpdatedAt = 2, /// - /// Enum Trust for value: trust + /// Enum Created for value: created /// - [EnumMember(Value = "trust")] - Trust = 3, + [EnumMember(Value = "created")] + Created = 3, /// - /// Enum Shuffle for value: shuffle + /// Enum Favorites for value: favorites /// - [EnumMember(Value = "shuffle")] - Shuffle = 4, + [EnumMember(Value = "favorites")] + Favorites = 4, /// - /// Enum Random for value: random + /// Enum Heat for value: heat /// - [EnumMember(Value = "random")] - Random = 5, + [EnumMember(Value = "heat")] + Heat = 5, /// - /// Enum Favorites for value: favorites + /// Enum LabsPublicationDate for value: labsPublicationDate /// - [EnumMember(Value = "favorites")] - Favorites = 6, + [EnumMember(Value = "labsPublicationDate")] + LabsPublicationDate = 6, /// - /// Enum ReportScore for value: reportScore + /// Enum Magic for value: magic /// - [EnumMember(Value = "reportScore")] - ReportScore = 7, + [EnumMember(Value = "magic")] + Magic = 7, /// - /// Enum ReportCount for value: reportCount + /// Enum Name for value: name /// - [EnumMember(Value = "reportCount")] - ReportCount = 8, + [EnumMember(Value = "name")] + Name = 8, /// - /// Enum PublicationDate for value: publicationDate + /// Enum Order for value: order /// - [EnumMember(Value = "publicationDate")] - PublicationDate = 9, + [EnumMember(Value = "order")] + Order = 9, /// - /// Enum LabsPublicationDate for value: labsPublicationDate + /// Enum Popularity for value: popularity /// - [EnumMember(Value = "labsPublicationDate")] - LabsPublicationDate = 10, + [EnumMember(Value = "popularity")] + Popularity = 10, /// - /// Enum Created for value: created + /// Enum PublicationDate for value: publicationDate /// - [EnumMember(Value = "created")] - Created = 11, + [EnumMember(Value = "publicationDate")] + PublicationDate = 11, /// - /// Enum CreatedAt for value: _created_at + /// Enum Random for value: random /// - [EnumMember(Value = "_created_at")] - CreatedAt = 12, + [EnumMember(Value = "random")] + Random = 12, /// - /// Enum Updated for value: updated + /// Enum Relevance for value: relevance /// - [EnumMember(Value = "updated")] - Updated = 13, + [EnumMember(Value = "relevance")] + Relevance = 13, /// - /// Enum UpdatedAt for value: _updated_at + /// Enum ReportCount for value: reportCount /// - [EnumMember(Value = "_updated_at")] - UpdatedAt = 14, + [EnumMember(Value = "reportCount")] + ReportCount = 14, /// - /// Enum Order for value: order + /// Enum ReportScore for value: reportScore /// - [EnumMember(Value = "order")] - Order = 15, + [EnumMember(Value = "reportScore")] + ReportScore = 15, /// - /// Enum Relevance for value: relevance + /// Enum Shuffle for value: shuffle /// - [EnumMember(Value = "relevance")] - Relevance = 16, + [EnumMember(Value = "shuffle")] + Shuffle = 16, /// - /// Enum Magic for value: magic + /// Enum Trust for value: trust /// - [EnumMember(Value = "magic")] - Magic = 17, + [EnumMember(Value = "trust")] + Trust = 17, /// - /// Enum Name for value: name + /// Enum Updated for value: updated /// - [EnumMember(Value = "name")] - Name = 18 + [EnumMember(Value = "updated")] + Updated = 18 } } diff --git a/src/VRChat.API/Model/SortOptionProductPurchase.cs b/src/VRChat.API/Model/SortOptionProductPurchase.cs new file mode 100644 index 00000000..9d35a47c --- /dev/null +++ b/src/VRChat.API/Model/SortOptionProductPurchase.cs @@ -0,0 +1,42 @@ +/* + * VRChat API Documentation + * + * + * The version of the OpenAPI document: 1.20.7-nightly.3 + * Contact: vrchatapi.lpv0t@aries.fyi + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using FileParameter = VRChat.API.Client.FileParameter; +using OpenAPIDateConverter = VRChat.API.Client.OpenAPIDateConverter; + +namespace VRChat.API.Model +{ + /// + /// Defines SortOptionProductPurchase + /// + [JsonConverter(typeof(StringEnumConverter))] + public enum SortOptionProductPurchase + { + /// + /// Enum PurchaseDate for value: purchaseDate + /// + [EnumMember(Value = "purchaseDate")] + PurchaseDate = 1 + } + +} diff --git a/src/VRChat.API/Model/Store.cs b/src/VRChat.API/Model/Store.cs index dc75baeb..401ba0f7 100644 --- a/src/VRChat.API/Model/Store.cs +++ b/src/VRChat.API/Model/Store.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -48,19 +48,19 @@ protected Store() { } /// /// description (required). /// displayName (required). + /// groupId. /// id (required). + /// Only for store type world and group. + /// Only for store type world and group. /// sellerDisplayName (required). /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). + /// Only for store type house. + /// Only for store type house. /// storeId (required). /// storeType (required). /// tags (required). - /// Only for store type world and group. - /// Only for store type world and group. /// WorldID be \"offline\" on User profiles if you are not friends with that user.. - /// groupId. - /// Only for store type house. - /// Only for store type house. - public Store(string description = default, string displayName = default, string id = default, string sellerDisplayName = default, string sellerId = default, string storeId = default, StoreType storeType = default, List tags = default, List listingIds = default, List listings = default, string worldId = default, string groupId = default, List shelfIds = default, List shelves = default) + public Store(string description = default, string displayName = default, string groupId = default, string id = default, List listingIds = default, List listings = default, string sellerDisplayName = default, string sellerId = default, List shelfIds = default, List shelves = default, string storeId = default, StoreType storeType = default, List tags = default, string worldId = default) { // to ensure "description" is required (not null) if (description == null) @@ -105,12 +105,12 @@ public Store(string description = default, string displayName = default, string throw new ArgumentNullException("tags is a required property for Store and cannot be null"); } this.Tags = tags; + this.GroupId = groupId; this.ListingIds = listingIds; this.Listings = listings; - this.WorldId = worldId; - this.GroupId = groupId; this.ShelfIds = shelfIds; this.Shelves = shelves; + this.WorldId = worldId; } /// @@ -125,6 +125,15 @@ public Store(string description = default, string displayName = default, string [DataMember(Name = "displayName", IsRequired = true, EmitDefaultValue = true)] public string DisplayName { get; set; } + /// + /// Gets or Sets GroupId + /// + /* + grp_71a7ff59-112c-4e78-a990-c7cc650776e5 + */ + [DataMember(Name = "groupId", EmitDefaultValue = false)] + public string GroupId { get; set; } + /// /// Gets or Sets Id /// @@ -134,6 +143,20 @@ public Store(string description = default, string displayName = default, string [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] public string Id { get; set; } + /// + /// Only for store type world and group + /// + /// Only for store type world and group + [DataMember(Name = "listingIds", EmitDefaultValue = false)] + public List ListingIds { get; set; } + + /// + /// Only for store type world and group + /// + /// Only for store type world and group + [DataMember(Name = "listings", EmitDefaultValue = false)] + public List Listings { get; set; } + /// /// Gets or Sets SellerDisplayName /// @@ -150,6 +173,20 @@ public Store(string description = default, string displayName = default, string [DataMember(Name = "sellerId", IsRequired = true, EmitDefaultValue = true)] public string SellerId { get; set; } + /// + /// Only for store type house + /// + /// Only for store type house + [DataMember(Name = "shelfIds", EmitDefaultValue = false)] + public List ShelfIds { get; set; } + + /// + /// Only for store type house + /// + /// Only for store type house + [DataMember(Name = "shelves", EmitDefaultValue = false)] + public List Shelves { get; set; } + /// /// Gets or Sets StoreId /// @@ -165,20 +202,6 @@ public Store(string description = default, string displayName = default, string [DataMember(Name = "tags", IsRequired = true, EmitDefaultValue = true)] public List Tags { get; set; } - /// - /// Only for store type world and group - /// - /// Only for store type world and group - [DataMember(Name = "listingIds", EmitDefaultValue = false)] - public List ListingIds { get; set; } - - /// - /// Only for store type world and group - /// - /// Only for store type world and group - [DataMember(Name = "listings", EmitDefaultValue = false)] - public List Listings { get; set; } - /// /// WorldID be \"offline\" on User profiles if you are not friends with that user. /// @@ -189,29 +212,6 @@ public Store(string description = default, string displayName = default, string [DataMember(Name = "worldId", EmitDefaultValue = false)] public string WorldId { get; set; } - /// - /// Gets or Sets GroupId - /// - /* - grp_71a7ff59-112c-4e78-a990-c7cc650776e5 - */ - [DataMember(Name = "groupId", EmitDefaultValue = false)] - public string GroupId { get; set; } - - /// - /// Only for store type house - /// - /// Only for store type house - [DataMember(Name = "shelfIds", EmitDefaultValue = false)] - public List ShelfIds { get; set; } - - /// - /// Only for store type house - /// - /// Only for store type house - [DataMember(Name = "shelves", EmitDefaultValue = false)] - public List Shelves { get; set; } - /// /// Returns the string presentation of the object /// @@ -222,18 +222,18 @@ public override string ToString() sb.Append("class Store {\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" ListingIds: ").Append(ListingIds).Append("\n"); + sb.Append(" Listings: ").Append(Listings).Append("\n"); sb.Append(" SellerDisplayName: ").Append(SellerDisplayName).Append("\n"); sb.Append(" SellerId: ").Append(SellerId).Append("\n"); + sb.Append(" ShelfIds: ").Append(ShelfIds).Append("\n"); + sb.Append(" Shelves: ").Append(Shelves).Append("\n"); sb.Append(" StoreId: ").Append(StoreId).Append("\n"); sb.Append(" StoreType: ").Append(StoreType).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" ListingIds: ").Append(ListingIds).Append("\n"); - sb.Append(" Listings: ").Append(Listings).Append("\n"); sb.Append(" WorldId: ").Append(WorldId).Append("\n"); - sb.Append(" GroupId: ").Append(GroupId).Append("\n"); - sb.Append(" ShelfIds: ").Append(ShelfIds).Append("\n"); - sb.Append(" Shelves: ").Append(Shelves).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -279,11 +279,28 @@ public bool Equals(Store input) (this.DisplayName != null && this.DisplayName.Equals(input.DisplayName)) ) && + ( + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) + ) && ( this.Id == input.Id || (this.Id != null && this.Id.Equals(input.Id)) ) && + ( + this.ListingIds == input.ListingIds || + this.ListingIds != null && + input.ListingIds != null && + this.ListingIds.SequenceEqual(input.ListingIds) + ) && + ( + this.Listings == input.Listings || + this.Listings != null && + input.Listings != null && + this.Listings.SequenceEqual(input.Listings) + ) && ( this.SellerDisplayName == input.SellerDisplayName || (this.SellerDisplayName != null && @@ -294,6 +311,18 @@ public bool Equals(Store input) (this.SellerId != null && this.SellerId.Equals(input.SellerId)) ) && + ( + this.ShelfIds == input.ShelfIds || + this.ShelfIds != null && + input.ShelfIds != null && + this.ShelfIds.SequenceEqual(input.ShelfIds) + ) && + ( + this.Shelves == input.Shelves || + this.Shelves != null && + input.Shelves != null && + this.Shelves.SequenceEqual(input.Shelves) + ) && ( this.StoreId == input.StoreId || (this.StoreId != null && @@ -309,39 +338,10 @@ public bool Equals(Store input) input.Tags != null && this.Tags.SequenceEqual(input.Tags) ) && - ( - this.ListingIds == input.ListingIds || - this.ListingIds != null && - input.ListingIds != null && - this.ListingIds.SequenceEqual(input.ListingIds) - ) && - ( - this.Listings == input.Listings || - this.Listings != null && - input.Listings != null && - this.Listings.SequenceEqual(input.Listings) - ) && ( this.WorldId == input.WorldId || (this.WorldId != null && this.WorldId.Equals(input.WorldId)) - ) && - ( - this.GroupId == input.GroupId || - (this.GroupId != null && - this.GroupId.Equals(input.GroupId)) - ) && - ( - this.ShelfIds == input.ShelfIds || - this.ShelfIds != null && - input.ShelfIds != null && - this.ShelfIds.SequenceEqual(input.ShelfIds) - ) && - ( - this.Shelves == input.Shelves || - this.Shelves != null && - input.Shelves != null && - this.Shelves.SequenceEqual(input.Shelves) ); } @@ -362,10 +362,22 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } + if (this.GroupId != null) + { + hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); + } if (this.Id != null) { hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + if (this.ListingIds != null) + { + hashCode = (hashCode * 59) + this.ListingIds.GetHashCode(); + } + if (this.Listings != null) + { + hashCode = (hashCode * 59) + this.Listings.GetHashCode(); + } if (this.SellerDisplayName != null) { hashCode = (hashCode * 59) + this.SellerDisplayName.GetHashCode(); @@ -374,6 +386,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.SellerId.GetHashCode(); } + if (this.ShelfIds != null) + { + hashCode = (hashCode * 59) + this.ShelfIds.GetHashCode(); + } + if (this.Shelves != null) + { + hashCode = (hashCode * 59) + this.Shelves.GetHashCode(); + } if (this.StoreId != null) { hashCode = (hashCode * 59) + this.StoreId.GetHashCode(); @@ -383,30 +403,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } - if (this.ListingIds != null) - { - hashCode = (hashCode * 59) + this.ListingIds.GetHashCode(); - } - if (this.Listings != null) - { - hashCode = (hashCode * 59) + this.Listings.GetHashCode(); - } if (this.WorldId != null) { hashCode = (hashCode * 59) + this.WorldId.GetHashCode(); } - if (this.GroupId != null) - { - hashCode = (hashCode * 59) + this.GroupId.GetHashCode(); - } - if (this.ShelfIds != null) - { - hashCode = (hashCode * 59) + this.ShelfIds.GetHashCode(); - } - if (this.Shelves != null) - { - hashCode = (hashCode * 59) + this.Shelves.GetHashCode(); - } return hashCode; } } diff --git a/src/VRChat.API/Model/StoreShelf.cs b/src/VRChat.API/Model/StoreShelf.cs index 40f79ef4..8474237b 100644 --- a/src/VRChat.API/Model/StoreShelf.cs +++ b/src/VRChat.API/Model/StoreShelf.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/StoreType.cs b/src/VRChat.API/Model/StoreType.cs index bba40648..7a220f69 100644 --- a/src/VRChat.API/Model/StoreType.cs +++ b/src/VRChat.API/Model/StoreType.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -32,23 +32,23 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum StoreType { + /// + /// Enum Group for value: group + /// + [EnumMember(Value = "group")] + Group = 1, + /// /// Enum House for value: house /// [EnumMember(Value = "house")] - House = 1, + House = 2, /// /// Enum World for value: world /// [EnumMember(Value = "world")] - World = 2, - - /// - /// Enum Group for value: group - /// - [EnumMember(Value = "group")] - Group = 3 + World = 3 } } diff --git a/src/VRChat.API/Model/StoreView.cs b/src/VRChat.API/Model/StoreView.cs index 12d4789d..f3321175 100644 --- a/src/VRChat.API/Model/StoreView.cs +++ b/src/VRChat.API/Model/StoreView.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,28 +39,28 @@ public enum StoreView All = 1, /// - /// Enum PublicPreview for value: publicPreview + /// Enum Draft for value: draft /// - [EnumMember(Value = "publicPreview")] - PublicPreview = 2, + [EnumMember(Value = "draft")] + Draft = 2, /// - /// Enum Public for value: public + /// Enum Preview for value: preview /// - [EnumMember(Value = "public")] - Public = 3, + [EnumMember(Value = "preview")] + Preview = 3, /// - /// Enum Preview for value: preview + /// Enum Public for value: public /// - [EnumMember(Value = "preview")] - Preview = 4, + [EnumMember(Value = "public")] + Public = 4, /// - /// Enum Draft for value: draft + /// Enum PublicPreview for value: publicPreview /// - [EnumMember(Value = "draft")] - Draft = 5 + [EnumMember(Value = "publicPreview")] + PublicPreview = 5 } } diff --git a/src/VRChat.API/Model/Submission.cs b/src/VRChat.API/Model/Submission.cs index 43f0672a..b7fe6800 100644 --- a/src/VRChat.API/Model/Submission.cs +++ b/src/VRChat.API/Model/Submission.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Subscription.cs b/src/VRChat.API/Model/Subscription.cs index 50dde349..d295cead 100644 --- a/src/VRChat.API/Model/Subscription.cs +++ b/src/VRChat.API/Model/Subscription.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,70 +46,64 @@ protected Subscription() { } /// /// Initializes a new instance of the class. /// - /// id (required). - /// steamItemId (required). - /// oculusSku. - /// googleProductId. - /// googlePlanId. - /// picoSku. - /// appleProductId. /// amount (required). + /// appleProductId. /// description (required). + /// googlePlanId. + /// googleProductId. + /// id (required). + /// oculusSku. /// period (required). + /// picoSku. + /// steamItemId (required). /// tier (required). - public Subscription(string id = default, string steamItemId = default, string oculusSku = default, string googleProductId = default, string googlePlanId = default, string picoSku = default, string appleProductId = default, decimal amount = default, string description = default, SubscriptionPeriod period = default, int tier = default) + public Subscription(decimal amount = default, string appleProductId = default, string description = default, string googlePlanId = default, string googleProductId = default, string id = default, string oculusSku = default, SubscriptionPeriod period = default, string picoSku = default, string steamItemId = default, int tier = default) { + this.Amount = amount; + // to ensure "description" is required (not null) + if (description == null) + { + throw new ArgumentNullException("description is a required property for Subscription and cannot be null"); + } + this.Description = description; // to ensure "id" is required (not null) if (id == null) { throw new ArgumentNullException("id is a required property for Subscription and cannot be null"); } this.Id = id; + this.Period = period; // to ensure "steamItemId" is required (not null) if (steamItemId == null) { throw new ArgumentNullException("steamItemId is a required property for Subscription and cannot be null"); } this.SteamItemId = steamItemId; - this.Amount = amount; - // to ensure "description" is required (not null) - if (description == null) - { - throw new ArgumentNullException("description is a required property for Subscription and cannot be null"); - } - this.Description = description; - this.Period = period; this.Tier = tier; - this.OculusSku = oculusSku; - this.GoogleProductId = googleProductId; + this.AppleProductId = appleProductId; this.GooglePlanId = googlePlanId; + this.GoogleProductId = googleProductId; + this.OculusSku = oculusSku; this.PicoSku = picoSku; - this.AppleProductId = appleProductId; } /// - /// Gets or Sets Id - /// - [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] - public string Id { get; set; } - - /// - /// Gets or Sets SteamItemId + /// Gets or Sets Amount /// - [DataMember(Name = "steamItemId", IsRequired = true, EmitDefaultValue = true)] - public string SteamItemId { get; set; } + [DataMember(Name = "amount", IsRequired = true, EmitDefaultValue = true)] + public decimal Amount { get; set; } /// - /// Gets or Sets OculusSku + /// Gets or Sets AppleProductId /// - [DataMember(Name = "oculusSku", EmitDefaultValue = false)] - public string OculusSku { get; set; } + [DataMember(Name = "appleProductId", EmitDefaultValue = false)] + public string AppleProductId { get; set; } /// - /// Gets or Sets GoogleProductId + /// Gets or Sets Description /// - [DataMember(Name = "googleProductId", EmitDefaultValue = false)] - public string GoogleProductId { get; set; } + [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] + public string Description { get; set; } /// /// Gets or Sets GooglePlanId @@ -118,28 +112,34 @@ public Subscription(string id = default, string steamItemId = default, string oc public string GooglePlanId { get; set; } /// - /// Gets or Sets PicoSku + /// Gets or Sets GoogleProductId /// - [DataMember(Name = "picoSku", EmitDefaultValue = false)] - public string PicoSku { get; set; } + [DataMember(Name = "googleProductId", EmitDefaultValue = false)] + public string GoogleProductId { get; set; } /// - /// Gets or Sets AppleProductId + /// Gets or Sets Id /// - [DataMember(Name = "appleProductId", EmitDefaultValue = false)] - public string AppleProductId { get; set; } + [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] + public string Id { get; set; } /// - /// Gets or Sets Amount + /// Gets or Sets OculusSku /// - [DataMember(Name = "amount", IsRequired = true, EmitDefaultValue = true)] - public decimal Amount { get; set; } + [DataMember(Name = "oculusSku", EmitDefaultValue = false)] + public string OculusSku { get; set; } /// - /// Gets or Sets Description + /// Gets or Sets PicoSku /// - [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] - public string Description { get; set; } + [DataMember(Name = "picoSku", EmitDefaultValue = false)] + public string PicoSku { get; set; } + + /// + /// Gets or Sets SteamItemId + /// + [DataMember(Name = "steamItemId", IsRequired = true, EmitDefaultValue = true)] + public string SteamItemId { get; set; } /// /// Gets or Sets Tier @@ -155,16 +155,16 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class Subscription {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" SteamItemId: ").Append(SteamItemId).Append("\n"); - sb.Append(" OculusSku: ").Append(OculusSku).Append("\n"); - sb.Append(" GoogleProductId: ").Append(GoogleProductId).Append("\n"); - sb.Append(" GooglePlanId: ").Append(GooglePlanId).Append("\n"); - sb.Append(" PicoSku: ").Append(PicoSku).Append("\n"); - sb.Append(" AppleProductId: ").Append(AppleProductId).Append("\n"); sb.Append(" Amount: ").Append(Amount).Append("\n"); + sb.Append(" AppleProductId: ").Append(AppleProductId).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" GooglePlanId: ").Append(GooglePlanId).Append("\n"); + sb.Append(" GoogleProductId: ").Append(GoogleProductId).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" OculusSku: ").Append(OculusSku).Append("\n"); sb.Append(" Period: ").Append(Period).Append("\n"); + sb.Append(" PicoSku: ").Append(PicoSku).Append("\n"); + sb.Append(" SteamItemId: ").Append(SteamItemId).Append("\n"); sb.Append(" Tier: ").Append(Tier).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -202,24 +202,18 @@ public bool Equals(Subscription input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.SteamItemId == input.SteamItemId || - (this.SteamItemId != null && - this.SteamItemId.Equals(input.SteamItemId)) + this.Amount == input.Amount || + this.Amount.Equals(input.Amount) ) && ( - this.OculusSku == input.OculusSku || - (this.OculusSku != null && - this.OculusSku.Equals(input.OculusSku)) + this.AppleProductId == input.AppleProductId || + (this.AppleProductId != null && + this.AppleProductId.Equals(input.AppleProductId)) ) && ( - this.GoogleProductId == input.GoogleProductId || - (this.GoogleProductId != null && - this.GoogleProductId.Equals(input.GoogleProductId)) + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.GooglePlanId == input.GooglePlanId || @@ -227,28 +221,34 @@ public bool Equals(Subscription input) this.GooglePlanId.Equals(input.GooglePlanId)) ) && ( - this.PicoSku == input.PicoSku || - (this.PicoSku != null && - this.PicoSku.Equals(input.PicoSku)) - ) && - ( - this.AppleProductId == input.AppleProductId || - (this.AppleProductId != null && - this.AppleProductId.Equals(input.AppleProductId)) + this.GoogleProductId == input.GoogleProductId || + (this.GoogleProductId != null && + this.GoogleProductId.Equals(input.GoogleProductId)) ) && ( - this.Amount == input.Amount || - this.Amount.Equals(input.Amount) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.OculusSku == input.OculusSku || + (this.OculusSku != null && + this.OculusSku.Equals(input.OculusSku)) ) && ( this.Period == input.Period || this.Period.Equals(input.Period) ) && + ( + this.PicoSku == input.PicoSku || + (this.PicoSku != null && + this.PicoSku.Equals(input.PicoSku)) + ) && + ( + this.SteamItemId == input.SteamItemId || + (this.SteamItemId != null && + this.SteamItemId.Equals(input.SteamItemId)) + ) && ( this.Tier == input.Tier || this.Tier.Equals(input.Tier) @@ -264,40 +264,40 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + hashCode = (hashCode * 59) + this.Amount.GetHashCode(); + if (this.AppleProductId != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.AppleProductId.GetHashCode(); } - if (this.SteamItemId != null) + if (this.Description != null) { - hashCode = (hashCode * 59) + this.SteamItemId.GetHashCode(); + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - if (this.OculusSku != null) + if (this.GooglePlanId != null) { - hashCode = (hashCode * 59) + this.OculusSku.GetHashCode(); + hashCode = (hashCode * 59) + this.GooglePlanId.GetHashCode(); } if (this.GoogleProductId != null) { hashCode = (hashCode * 59) + this.GoogleProductId.GetHashCode(); } - if (this.GooglePlanId != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.GooglePlanId.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - if (this.PicoSku != null) + if (this.OculusSku != null) { - hashCode = (hashCode * 59) + this.PicoSku.GetHashCode(); + hashCode = (hashCode * 59) + this.OculusSku.GetHashCode(); } - if (this.AppleProductId != null) + hashCode = (hashCode * 59) + this.Period.GetHashCode(); + if (this.PicoSku != null) { - hashCode = (hashCode * 59) + this.AppleProductId.GetHashCode(); + hashCode = (hashCode * 59) + this.PicoSku.GetHashCode(); } - hashCode = (hashCode * 59) + this.Amount.GetHashCode(); - if (this.Description != null) + if (this.SteamItemId != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.SteamItemId.GetHashCode(); } - hashCode = (hashCode * 59) + this.Period.GetHashCode(); hashCode = (hashCode * 59) + this.Tier.GetHashCode(); return hashCode; } @@ -310,28 +310,28 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Id (string) minLength - if (this.Id != null && this.Id.Length < 1) + // AppleProductId (string) minLength + if (this.AppleProductId != null && this.AppleProductId.Length < 1) { - yield return new ValidationResult("Invalid value for Id, length must be greater than 1.", new [] { "Id" }); + yield return new ValidationResult("Invalid value for AppleProductId, length must be greater than 1.", new [] { "AppleProductId" }); } - // SteamItemId (string) minLength - if (this.SteamItemId != null && this.SteamItemId.Length < 1) + // GoogleProductId (string) minLength + if (this.GoogleProductId != null && this.GoogleProductId.Length < 1) { - yield return new ValidationResult("Invalid value for SteamItemId, length must be greater than 1.", new [] { "SteamItemId" }); + yield return new ValidationResult("Invalid value for GoogleProductId, length must be greater than 1.", new [] { "GoogleProductId" }); } - // OculusSku (string) minLength - if (this.OculusSku != null && this.OculusSku.Length < 1) + // Id (string) minLength + if (this.Id != null && this.Id.Length < 1) { - yield return new ValidationResult("Invalid value for OculusSku, length must be greater than 1.", new [] { "OculusSku" }); + yield return new ValidationResult("Invalid value for Id, length must be greater than 1.", new [] { "Id" }); } - // GoogleProductId (string) minLength - if (this.GoogleProductId != null && this.GoogleProductId.Length < 1) + // OculusSku (string) minLength + if (this.OculusSku != null && this.OculusSku.Length < 1) { - yield return new ValidationResult("Invalid value for GoogleProductId, length must be greater than 1.", new [] { "GoogleProductId" }); + yield return new ValidationResult("Invalid value for OculusSku, length must be greater than 1.", new [] { "OculusSku" }); } // PicoSku (string) minLength @@ -340,10 +340,10 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for PicoSku, length must be greater than 1.", new [] { "PicoSku" }); } - // AppleProductId (string) minLength - if (this.AppleProductId != null && this.AppleProductId.Length < 1) + // SteamItemId (string) minLength + if (this.SteamItemId != null && this.SteamItemId.Length < 1) { - yield return new ValidationResult("Invalid value for AppleProductId, length must be greater than 1.", new [] { "AppleProductId" }); + yield return new ValidationResult("Invalid value for SteamItemId, length must be greater than 1.", new [] { "SteamItemId" }); } yield break; diff --git a/src/VRChat.API/Model/SubscriptionPeriod.cs b/src/VRChat.API/Model/SubscriptionPeriod.cs index 03510016..a5038e99 100644 --- a/src/VRChat.API/Model/SubscriptionPeriod.cs +++ b/src/VRChat.API/Model/SubscriptionPeriod.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -32,29 +32,29 @@ namespace VRChat.API.Model [JsonConverter(typeof(StringEnumConverter))] public enum SubscriptionPeriod { - /// - /// Enum Hour for value: hour - /// - [EnumMember(Value = "hour")] - Hour = 1, - /// /// Enum Day for value: day /// [EnumMember(Value = "day")] - Day = 2, + Day = 1, /// - /// Enum Week for value: week + /// Enum Hour for value: hour /// - [EnumMember(Value = "week")] - Week = 3, + [EnumMember(Value = "hour")] + Hour = 2, /// /// Enum Month for value: month /// [EnumMember(Value = "month")] - Month = 4, + Month = 3, + + /// + /// Enum Week for value: week + /// + [EnumMember(Value = "week")] + Week = 4, /// /// Enum Year for value: year diff --git a/src/VRChat.API/Model/Success.cs b/src/VRChat.API/Model/Success.cs index ae9965df..37b3a634 100644 --- a/src/VRChat.API/Model/Success.cs +++ b/src/VRChat.API/Model/Success.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/SuccessFlag.cs b/src/VRChat.API/Model/SuccessFlag.cs index 9cbeaade..65f38aa6 100644 --- a/src/VRChat.API/Model/SuccessFlag.cs +++ b/src/VRChat.API/Model/SuccessFlag.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/TiliaStatus.cs b/src/VRChat.API/Model/TiliaStatus.cs index 1111e51d..62161e90 100644 --- a/src/VRChat.API/Model/TiliaStatus.cs +++ b/src/VRChat.API/Model/TiliaStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -42,14 +42,14 @@ protected TiliaStatus() { } /// /// economyOnline (required). /// economyState. - /// plannedOfflineWindowStart. /// plannedOfflineWindowEnd. - public TiliaStatus(bool economyOnline = default, int economyState = default, DateTime plannedOfflineWindowStart = default, DateTime plannedOfflineWindowEnd = default) + /// plannedOfflineWindowStart. + public TiliaStatus(bool economyOnline = default, int economyState = default, DateTime plannedOfflineWindowEnd = default, DateTime plannedOfflineWindowStart = default) { this.EconomyOnline = economyOnline; this.EconomyState = economyState; - this.PlannedOfflineWindowStart = plannedOfflineWindowStart; this.PlannedOfflineWindowEnd = plannedOfflineWindowEnd; + this.PlannedOfflineWindowStart = plannedOfflineWindowStart; } /// @@ -64,18 +64,18 @@ public TiliaStatus(bool economyOnline = default, int economyState = default, Dat [DataMember(Name = "economyState", EmitDefaultValue = false)] public int EconomyState { get; set; } - /// - /// Gets or Sets PlannedOfflineWindowStart - /// - [DataMember(Name = "plannedOfflineWindowStart", EmitDefaultValue = false)] - public DateTime PlannedOfflineWindowStart { get; set; } - /// /// Gets or Sets PlannedOfflineWindowEnd /// [DataMember(Name = "plannedOfflineWindowEnd", EmitDefaultValue = false)] public DateTime PlannedOfflineWindowEnd { get; set; } + /// + /// Gets or Sets PlannedOfflineWindowStart + /// + [DataMember(Name = "plannedOfflineWindowStart", EmitDefaultValue = false)] + public DateTime PlannedOfflineWindowStart { get; set; } + /// /// Returns the string presentation of the object /// @@ -86,8 +86,8 @@ public override string ToString() sb.Append("class TiliaStatus {\n"); sb.Append(" EconomyOnline: ").Append(EconomyOnline).Append("\n"); sb.Append(" EconomyState: ").Append(EconomyState).Append("\n"); - sb.Append(" PlannedOfflineWindowStart: ").Append(PlannedOfflineWindowStart).Append("\n"); sb.Append(" PlannedOfflineWindowEnd: ").Append(PlannedOfflineWindowEnd).Append("\n"); + sb.Append(" PlannedOfflineWindowStart: ").Append(PlannedOfflineWindowStart).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -131,15 +131,15 @@ public bool Equals(TiliaStatus input) this.EconomyState == input.EconomyState || this.EconomyState.Equals(input.EconomyState) ) && - ( - this.PlannedOfflineWindowStart == input.PlannedOfflineWindowStart || - (this.PlannedOfflineWindowStart != null && - this.PlannedOfflineWindowStart.Equals(input.PlannedOfflineWindowStart)) - ) && ( this.PlannedOfflineWindowEnd == input.PlannedOfflineWindowEnd || (this.PlannedOfflineWindowEnd != null && this.PlannedOfflineWindowEnd.Equals(input.PlannedOfflineWindowEnd)) + ) && + ( + this.PlannedOfflineWindowStart == input.PlannedOfflineWindowStart || + (this.PlannedOfflineWindowStart != null && + this.PlannedOfflineWindowStart.Equals(input.PlannedOfflineWindowStart)) ); } @@ -154,14 +154,14 @@ public override int GetHashCode() int hashCode = 41; hashCode = (hashCode * 59) + this.EconomyOnline.GetHashCode(); hashCode = (hashCode * 59) + this.EconomyState.GetHashCode(); - if (this.PlannedOfflineWindowStart != null) - { - hashCode = (hashCode * 59) + this.PlannedOfflineWindowStart.GetHashCode(); - } if (this.PlannedOfflineWindowEnd != null) { hashCode = (hashCode * 59) + this.PlannedOfflineWindowEnd.GetHashCode(); } + if (this.PlannedOfflineWindowStart != null) + { + hashCode = (hashCode * 59) + this.PlannedOfflineWindowStart.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/TiliaTOS.cs b/src/VRChat.API/Model/TiliaTOS.cs index b47af042..0399dee3 100644 --- a/src/VRChat.API/Model/TiliaTOS.cs +++ b/src/VRChat.API/Model/TiliaTOS.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/TokenBundle.cs b/src/VRChat.API/Model/TokenBundle.cs index d8391d69..3d52a343 100644 --- a/src/VRChat.API/Model/TokenBundle.cs +++ b/src/VRChat.API/Model/TokenBundle.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,63 +40,64 @@ protected TokenBundle() { } /// /// Initializes a new instance of the class. /// - /// id (required). - /// appleProductId (required). - /// steamItemId (required). - /// oculusSku (required). - /// googleProductId. /// price of the bundle (required). + /// appleProductId (required). /// description (required). - /// number of tokens received (required). + /// googleProductId. + /// id (required). /// direct url to image (required). - public TokenBundle(string id = default, string appleProductId = default, string steamItemId = default, string oculusSku = default, string googleProductId = default, int amount = default, string description = default, int tokens = default, string imageUrl = default) + /// oculusSku (required). + /// steamItemId (required). + /// number of tokens received (required). + public TokenBundle(int amount = default, string appleProductId = default, string description = default, string googleProductId = default, string id = default, string imageUrl = default, string oculusSku = default, string steamItemId = default, int tokens = default) { - // to ensure "id" is required (not null) - if (id == null) - { - throw new ArgumentNullException("id is a required property for TokenBundle and cannot be null"); - } - this.Id = id; + this.Amount = amount; // to ensure "appleProductId" is required (not null) if (appleProductId == null) { throw new ArgumentNullException("appleProductId is a required property for TokenBundle and cannot be null"); } this.AppleProductId = appleProductId; - // to ensure "steamItemId" is required (not null) - if (steamItemId == null) - { - throw new ArgumentNullException("steamItemId is a required property for TokenBundle and cannot be null"); - } - this.SteamItemId = steamItemId; - // to ensure "oculusSku" is required (not null) - if (oculusSku == null) - { - throw new ArgumentNullException("oculusSku is a required property for TokenBundle and cannot be null"); - } - this.OculusSku = oculusSku; - this.Amount = amount; // to ensure "description" is required (not null) if (description == null) { throw new ArgumentNullException("description is a required property for TokenBundle and cannot be null"); } this.Description = description; - this.Tokens = tokens; + // to ensure "id" is required (not null) + if (id == null) + { + throw new ArgumentNullException("id is a required property for TokenBundle and cannot be null"); + } + this.Id = id; // to ensure "imageUrl" is required (not null) if (imageUrl == null) { throw new ArgumentNullException("imageUrl is a required property for TokenBundle and cannot be null"); } this.ImageUrl = imageUrl; + // to ensure "oculusSku" is required (not null) + if (oculusSku == null) + { + throw new ArgumentNullException("oculusSku is a required property for TokenBundle and cannot be null"); + } + this.OculusSku = oculusSku; + // to ensure "steamItemId" is required (not null) + if (steamItemId == null) + { + throw new ArgumentNullException("steamItemId is a required property for TokenBundle and cannot be null"); + } + this.SteamItemId = steamItemId; + this.Tokens = tokens; this.GoogleProductId = googleProductId; } /// - /// Gets or Sets Id + /// price of the bundle /// - [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] - public string Id { get; set; } + /// price of the bundle + [DataMember(Name = "amount", IsRequired = true, EmitDefaultValue = true)] + public int Amount { get; set; } /// /// Gets or Sets AppleProductId @@ -105,16 +106,10 @@ public TokenBundle(string id = default, string appleProductId = default, string public string AppleProductId { get; set; } /// - /// Gets or Sets SteamItemId - /// - [DataMember(Name = "steamItemId", IsRequired = true, EmitDefaultValue = true)] - public string SteamItemId { get; set; } - - /// - /// Gets or Sets OculusSku + /// Gets or Sets Description /// - [DataMember(Name = "oculusSku", IsRequired = true, EmitDefaultValue = true)] - public string OculusSku { get; set; } + [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] + public string Description { get; set; } /// /// Gets or Sets GoogleProductId @@ -123,17 +118,29 @@ public TokenBundle(string id = default, string appleProductId = default, string public string GoogleProductId { get; set; } /// - /// price of the bundle + /// Gets or Sets Id /// - /// price of the bundle - [DataMember(Name = "amount", IsRequired = true, EmitDefaultValue = true)] - public int Amount { get; set; } + [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] + public string Id { get; set; } /// - /// Gets or Sets Description + /// direct url to image /// - [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] - public string Description { get; set; } + /// direct url to image + [DataMember(Name = "imageUrl", IsRequired = true, EmitDefaultValue = true)] + public string ImageUrl { get; set; } + + /// + /// Gets or Sets OculusSku + /// + [DataMember(Name = "oculusSku", IsRequired = true, EmitDefaultValue = true)] + public string OculusSku { get; set; } + + /// + /// Gets or Sets SteamItemId + /// + [DataMember(Name = "steamItemId", IsRequired = true, EmitDefaultValue = true)] + public string SteamItemId { get; set; } /// /// number of tokens received @@ -142,13 +149,6 @@ public TokenBundle(string id = default, string appleProductId = default, string [DataMember(Name = "tokens", IsRequired = true, EmitDefaultValue = true)] public int Tokens { get; set; } - /// - /// direct url to image - /// - /// direct url to image - [DataMember(Name = "imageUrl", IsRequired = true, EmitDefaultValue = true)] - public string ImageUrl { get; set; } - /// /// Returns the string presentation of the object /// @@ -157,15 +157,15 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class TokenBundle {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" AppleProductId: ").Append(AppleProductId).Append("\n"); - sb.Append(" SteamItemId: ").Append(SteamItemId).Append("\n"); - sb.Append(" OculusSku: ").Append(OculusSku).Append("\n"); - sb.Append(" GoogleProductId: ").Append(GoogleProductId).Append("\n"); sb.Append(" Amount: ").Append(Amount).Append("\n"); + sb.Append(" AppleProductId: ").Append(AppleProductId).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" Tokens: ").Append(Tokens).Append("\n"); + sb.Append(" GoogleProductId: ").Append(GoogleProductId).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); + sb.Append(" OculusSku: ").Append(OculusSku).Append("\n"); + sb.Append(" SteamItemId: ").Append(SteamItemId).Append("\n"); + sb.Append(" Tokens: ").Append(Tokens).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -202,9 +202,8 @@ public bool Equals(TokenBundle input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.Amount == input.Amount || + this.Amount.Equals(input.Amount) ) && ( this.AppleProductId == input.AppleProductId || @@ -212,14 +211,9 @@ public bool Equals(TokenBundle input) this.AppleProductId.Equals(input.AppleProductId)) ) && ( - this.SteamItemId == input.SteamItemId || - (this.SteamItemId != null && - this.SteamItemId.Equals(input.SteamItemId)) - ) && - ( - this.OculusSku == input.OculusSku || - (this.OculusSku != null && - this.OculusSku.Equals(input.OculusSku)) + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( this.GoogleProductId == input.GoogleProductId || @@ -227,22 +221,28 @@ public bool Equals(TokenBundle input) this.GoogleProductId.Equals(input.GoogleProductId)) ) && ( - this.Amount == input.Amount || - this.Amount.Equals(input.Amount) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.ImageUrl == input.ImageUrl || + (this.ImageUrl != null && + this.ImageUrl.Equals(input.ImageUrl)) ) && ( - this.Tokens == input.Tokens || - this.Tokens.Equals(input.Tokens) + this.OculusSku == input.OculusSku || + (this.OculusSku != null && + this.OculusSku.Equals(input.OculusSku)) ) && ( - this.ImageUrl == input.ImageUrl || - (this.ImageUrl != null && - this.ImageUrl.Equals(input.ImageUrl)) + this.SteamItemId == input.SteamItemId || + (this.SteamItemId != null && + this.SteamItemId.Equals(input.SteamItemId)) + ) && + ( + this.Tokens == input.Tokens || + this.Tokens.Equals(input.Tokens) ); } @@ -255,36 +255,36 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } + hashCode = (hashCode * 59) + this.Amount.GetHashCode(); if (this.AppleProductId != null) { hashCode = (hashCode * 59) + this.AppleProductId.GetHashCode(); } - if (this.SteamItemId != null) - { - hashCode = (hashCode * 59) + this.SteamItemId.GetHashCode(); - } - if (this.OculusSku != null) + if (this.Description != null) { - hashCode = (hashCode * 59) + this.OculusSku.GetHashCode(); + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } if (this.GoogleProductId != null) { hashCode = (hashCode * 59) + this.GoogleProductId.GetHashCode(); } - hashCode = (hashCode * 59) + this.Amount.GetHashCode(); - if (this.Description != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - hashCode = (hashCode * 59) + this.Tokens.GetHashCode(); if (this.ImageUrl != null) { hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } + if (this.OculusSku != null) + { + hashCode = (hashCode * 59) + this.OculusSku.GetHashCode(); + } + if (this.SteamItemId != null) + { + hashCode = (hashCode * 59) + this.SteamItemId.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Tokens.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/Transaction.cs b/src/VRChat.API/Model/Transaction.cs index f7a45d90..0a33e7b2 100644 --- a/src/VRChat.API/Model/Transaction.cs +++ b/src/VRChat.API/Model/Transaction.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,27 +46,35 @@ protected Transaction() { } /// /// Initializes a new instance of the class. /// - /// id (required). - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. - /// userDisplayName. - /// status (required). - /// subscription (required). - /// sandbox (required) (default to false). - /// createdAt (required). - /// updatedAt (required). - /// steam. /// agreement. + /// createdAt (required). /// error (required). + /// id (required). /// isGift (default to false). /// isTokens (default to false). - public Transaction(string id = default, string userId = default, string userDisplayName = default, TransactionStatus status = default, Subscription subscription = default, bool sandbox = false, DateTime createdAt = default, DateTime updatedAt = default, TransactionSteamInfo steam = default, TransactionAgreement agreement = default, string error = default, bool isGift = false, bool isTokens = false) + /// sandbox (required) (default to false). + /// status (required). + /// steam. + /// subscription (required). + /// updatedAt (required). + /// userDisplayName. + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed.. + public Transaction(TransactionAgreement agreement = default, DateTime createdAt = default, string error = default, string id = default, bool isGift = false, bool isTokens = false, bool sandbox = false, TransactionStatus status = default, TransactionSteamInfo steam = default, Subscription subscription = default, DateTime updatedAt = default, string userDisplayName = default, string userId = default) { + this.CreatedAt = createdAt; + // to ensure "error" is required (not null) + if (error == null) + { + throw new ArgumentNullException("error is a required property for Transaction and cannot be null"); + } + this.Error = error; // to ensure "id" is required (not null) if (id == null) { throw new ArgumentNullException("id is a required property for Transaction and cannot be null"); } this.Id = id; + this.Sandbox = sandbox; this.Status = status; // to ensure "subscription" is required (not null) if (subscription == null) @@ -74,71 +82,59 @@ public Transaction(string id = default, string userId = default, string userDisp throw new ArgumentNullException("subscription is a required property for Transaction and cannot be null"); } this.Subscription = subscription; - this.Sandbox = sandbox; - this.CreatedAt = createdAt; this.UpdatedAt = updatedAt; - // to ensure "error" is required (not null) - if (error == null) - { - throw new ArgumentNullException("error is a required property for Transaction and cannot be null"); - } - this.Error = error; - this.UserId = userId; - this.UserDisplayName = userDisplayName; - this.Steam = steam; this.Agreement = agreement; this.IsGift = isGift; this.IsTokens = isTokens; + this.Steam = steam; + this.UserDisplayName = userDisplayName; + this.UserId = userId; } /// - /// Gets or Sets Id + /// Gets or Sets Agreement /// - /* - txn_e5c72948-e735-4880-8245-24b2a41198b0 - */ - [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] - public string Id { get; set; } + [DataMember(Name = "agreement", EmitDefaultValue = false)] + public TransactionAgreement Agreement { get; set; } /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /// Gets or Sets CreatedAt /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. - /* - usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 - */ - [DataMember(Name = "userId", EmitDefaultValue = false)] - public string UserId { get; set; } + [DataMember(Name = "created_at", IsRequired = true, EmitDefaultValue = true)] + public DateTime CreatedAt { get; set; } /// - /// Gets or Sets UserDisplayName + /// Gets or Sets Error /// - [DataMember(Name = "userDisplayName", EmitDefaultValue = false)] - public string UserDisplayName { get; set; } + [DataMember(Name = "error", IsRequired = true, EmitDefaultValue = true)] + public string Error { get; set; } /// - /// Gets or Sets Subscription + /// Gets or Sets Id /// - [DataMember(Name = "subscription", IsRequired = true, EmitDefaultValue = true)] - public Subscription Subscription { get; set; } + /* + txn_e5c72948-e735-4880-8245-24b2a41198b0 + */ + [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] + public string Id { get; set; } /// - /// Gets or Sets Sandbox + /// Gets or Sets IsGift /// - [DataMember(Name = "sandbox", IsRequired = true, EmitDefaultValue = true)] - public bool Sandbox { get; set; } + [DataMember(Name = "isGift", EmitDefaultValue = true)] + public bool IsGift { get; set; } /// - /// Gets or Sets CreatedAt + /// Gets or Sets IsTokens /// - [DataMember(Name = "created_at", IsRequired = true, EmitDefaultValue = true)] - public DateTime CreatedAt { get; set; } + [DataMember(Name = "isTokens", EmitDefaultValue = true)] + public bool IsTokens { get; set; } /// - /// Gets or Sets UpdatedAt + /// Gets or Sets Sandbox /// - [DataMember(Name = "updated_at", IsRequired = true, EmitDefaultValue = true)] - public DateTime UpdatedAt { get; set; } + [DataMember(Name = "sandbox", IsRequired = true, EmitDefaultValue = true)] + public bool Sandbox { get; set; } /// /// Gets or Sets Steam @@ -147,28 +143,32 @@ public Transaction(string id = default, string userId = default, string userDisp public TransactionSteamInfo Steam { get; set; } /// - /// Gets or Sets Agreement + /// Gets or Sets Subscription /// - [DataMember(Name = "agreement", EmitDefaultValue = false)] - public TransactionAgreement Agreement { get; set; } + [DataMember(Name = "subscription", IsRequired = true, EmitDefaultValue = true)] + public Subscription Subscription { get; set; } /// - /// Gets or Sets Error + /// Gets or Sets UpdatedAt /// - [DataMember(Name = "error", IsRequired = true, EmitDefaultValue = true)] - public string Error { get; set; } + [DataMember(Name = "updated_at", IsRequired = true, EmitDefaultValue = true)] + public DateTime UpdatedAt { get; set; } /// - /// Gets or Sets IsGift + /// Gets or Sets UserDisplayName /// - [DataMember(Name = "isGift", EmitDefaultValue = true)] - public bool IsGift { get; set; } + [DataMember(Name = "userDisplayName", EmitDefaultValue = false)] + public string UserDisplayName { get; set; } /// - /// Gets or Sets IsTokens + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// - [DataMember(Name = "isTokens", EmitDefaultValue = true)] - public bool IsTokens { get; set; } + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. + /* + usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 + */ + [DataMember(Name = "userId", EmitDefaultValue = false)] + public string UserId { get; set; } /// /// Returns the string presentation of the object @@ -178,19 +178,19 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class Transaction {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" UserId: ").Append(UserId).Append("\n"); - sb.Append(" UserDisplayName: ").Append(UserDisplayName).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); - sb.Append(" Subscription: ").Append(Subscription).Append("\n"); - sb.Append(" Sandbox: ").Append(Sandbox).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); - sb.Append(" Steam: ").Append(Steam).Append("\n"); sb.Append(" Agreement: ").Append(Agreement).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" Error: ").Append(Error).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" IsGift: ").Append(IsGift).Append("\n"); sb.Append(" IsTokens: ").Append(IsTokens).Append("\n"); + sb.Append(" Sandbox: ").Append(Sandbox).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Steam: ").Append(Steam).Append("\n"); + sb.Append(" Subscription: ").Append(Subscription).Append("\n"); + sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); + sb.Append(" UserDisplayName: ").Append(UserDisplayName).Append("\n"); + sb.Append(" UserId: ").Append(UserId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -227,42 +227,40 @@ public bool Equals(Transaction input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.Agreement == input.Agreement || + (this.Agreement != null && + this.Agreement.Equals(input.Agreement)) ) && ( - this.UserId == input.UserId || - (this.UserId != null && - this.UserId.Equals(input.UserId)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( - this.UserDisplayName == input.UserDisplayName || - (this.UserDisplayName != null && - this.UserDisplayName.Equals(input.UserDisplayName)) + this.Error == input.Error || + (this.Error != null && + this.Error.Equals(input.Error)) ) && ( - this.Status == input.Status || - this.Status.Equals(input.Status) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.Subscription == input.Subscription || - (this.Subscription != null && - this.Subscription.Equals(input.Subscription)) + this.IsGift == input.IsGift || + this.IsGift.Equals(input.IsGift) ) && ( - this.Sandbox == input.Sandbox || - this.Sandbox.Equals(input.Sandbox) + this.IsTokens == input.IsTokens || + this.IsTokens.Equals(input.IsTokens) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.Sandbox == input.Sandbox || + this.Sandbox.Equals(input.Sandbox) ) && ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) + this.Status == input.Status || + this.Status.Equals(input.Status) ) && ( this.Steam == input.Steam || @@ -270,22 +268,24 @@ public bool Equals(Transaction input) this.Steam.Equals(input.Steam)) ) && ( - this.Agreement == input.Agreement || - (this.Agreement != null && - this.Agreement.Equals(input.Agreement)) + this.Subscription == input.Subscription || + (this.Subscription != null && + this.Subscription.Equals(input.Subscription)) ) && ( - this.Error == input.Error || - (this.Error != null && - this.Error.Equals(input.Error)) + this.UpdatedAt == input.UpdatedAt || + (this.UpdatedAt != null && + this.UpdatedAt.Equals(input.UpdatedAt)) ) && ( - this.IsGift == input.IsGift || - this.IsGift.Equals(input.IsGift) + this.UserDisplayName == input.UserDisplayName || + (this.UserDisplayName != null && + this.UserDisplayName.Equals(input.UserDisplayName)) ) && ( - this.IsTokens == input.IsTokens || - this.IsTokens.Equals(input.IsTokens) + this.UserId == input.UserId || + (this.UserId != null && + this.UserId.Equals(input.UserId)) ); } @@ -298,46 +298,46 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + if (this.Agreement != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.Agreement.GetHashCode(); } - if (this.UserId != null) + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.UserId.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } - if (this.UserDisplayName != null) + if (this.Error != null) { - hashCode = (hashCode * 59) + this.UserDisplayName.GetHashCode(); + hashCode = (hashCode * 59) + this.Error.GetHashCode(); } - hashCode = (hashCode * 59) + this.Status.GetHashCode(); - if (this.Subscription != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.Subscription.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } + hashCode = (hashCode * 59) + this.IsGift.GetHashCode(); + hashCode = (hashCode * 59) + this.IsTokens.GetHashCode(); hashCode = (hashCode * 59) + this.Sandbox.GetHashCode(); - if (this.CreatedAt != null) + hashCode = (hashCode * 59) + this.Status.GetHashCode(); + if (this.Steam != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Steam.GetHashCode(); } - if (this.UpdatedAt != null) + if (this.Subscription != null) { - hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Subscription.GetHashCode(); } - if (this.Steam != null) + if (this.UpdatedAt != null) { - hashCode = (hashCode * 59) + this.Steam.GetHashCode(); + hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); } - if (this.Agreement != null) + if (this.UserDisplayName != null) { - hashCode = (hashCode * 59) + this.Agreement.GetHashCode(); + hashCode = (hashCode * 59) + this.UserDisplayName.GetHashCode(); } - if (this.Error != null) + if (this.UserId != null) { - hashCode = (hashCode * 59) + this.Error.GetHashCode(); + hashCode = (hashCode * 59) + this.UserId.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsGift.GetHashCode(); - hashCode = (hashCode * 59) + this.IsTokens.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/TransactionAgreement.cs b/src/VRChat.API/Model/TransactionAgreement.cs index f6f76f4d..beecf7f7 100644 --- a/src/VRChat.API/Model/TransactionAgreement.cs +++ b/src/VRChat.API/Model/TransactionAgreement.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,101 +40,107 @@ protected TransactionAgreement() { } /// /// Initializes a new instance of the class. /// - /// agreementId (required). - /// itemId (required). /// agreement (required). - /// This is NOT TransactionStatus, but whatever Steam return. (required). - /// period (required). - /// frequency (required). + /// agreementId (required). /// billingType (required). - /// startDate (required). - /// endDate (required). - /// recurringAmt (required). /// currency (required). - /// timeCreated (required). - /// nextPayment (required). - /// lastPayment (required). + /// endDate (required). + /// failedAttempts (required). + /// frequency (required). + /// itemId (required). /// lastAmount (required). /// lastAmountVat (required). + /// lastPayment (required). + /// nextPayment (required). /// outstanding (required). - /// failedAttempts (required). - public TransactionAgreement(string agreementId = default, int itemId = default, string agreement = default, string status = default, string period = default, int frequency = default, string billingType = default, string startDate = default, string endDate = default, decimal recurringAmt = default, string currency = default, string timeCreated = default, string nextPayment = default, string lastPayment = default, decimal lastAmount = default, decimal lastAmountVat = default, int outstanding = default, int failedAttempts = default) + /// period (required). + /// recurringAmt (required). + /// startDate (required). + /// This is NOT TransactionStatus, but whatever Steam return. (required). + /// timeCreated (required). + public TransactionAgreement(string agreement = default, string agreementId = default, string billingType = default, string currency = default, string endDate = default, int failedAttempts = default, int frequency = default, int itemId = default, decimal lastAmount = default, decimal lastAmountVat = default, string lastPayment = default, string nextPayment = default, int outstanding = default, string period = default, decimal recurringAmt = default, string startDate = default, string status = default, string timeCreated = default) { - // to ensure "agreementId" is required (not null) - if (agreementId == null) - { - throw new ArgumentNullException("agreementId is a required property for TransactionAgreement and cannot be null"); - } - this.AgreementId = agreementId; - this.ItemId = itemId; // to ensure "agreement" is required (not null) if (agreement == null) { throw new ArgumentNullException("agreement is a required property for TransactionAgreement and cannot be null"); } this.Agreement = agreement; - // to ensure "status" is required (not null) - if (status == null) - { - throw new ArgumentNullException("status is a required property for TransactionAgreement and cannot be null"); - } - this.Status = status; - // to ensure "period" is required (not null) - if (period == null) + // to ensure "agreementId" is required (not null) + if (agreementId == null) { - throw new ArgumentNullException("period is a required property for TransactionAgreement and cannot be null"); + throw new ArgumentNullException("agreementId is a required property for TransactionAgreement and cannot be null"); } - this.Period = period; - this.Frequency = frequency; + this.AgreementId = agreementId; // to ensure "billingType" is required (not null) if (billingType == null) { throw new ArgumentNullException("billingType is a required property for TransactionAgreement and cannot be null"); } this.BillingType = billingType; - // to ensure "startDate" is required (not null) - if (startDate == null) + // to ensure "currency" is required (not null) + if (currency == null) { - throw new ArgumentNullException("startDate is a required property for TransactionAgreement and cannot be null"); + throw new ArgumentNullException("currency is a required property for TransactionAgreement and cannot be null"); } - this.StartDate = startDate; + this.Currency = currency; // to ensure "endDate" is required (not null) if (endDate == null) { throw new ArgumentNullException("endDate is a required property for TransactionAgreement and cannot be null"); } this.EndDate = endDate; - this.RecurringAmt = recurringAmt; - // to ensure "currency" is required (not null) - if (currency == null) - { - throw new ArgumentNullException("currency is a required property for TransactionAgreement and cannot be null"); - } - this.Currency = currency; - // to ensure "timeCreated" is required (not null) - if (timeCreated == null) + this.FailedAttempts = failedAttempts; + this.Frequency = frequency; + this.ItemId = itemId; + this.LastAmount = lastAmount; + this.LastAmountVat = lastAmountVat; + // to ensure "lastPayment" is required (not null) + if (lastPayment == null) { - throw new ArgumentNullException("timeCreated is a required property for TransactionAgreement and cannot be null"); + throw new ArgumentNullException("lastPayment is a required property for TransactionAgreement and cannot be null"); } - this.TimeCreated = timeCreated; + this.LastPayment = lastPayment; // to ensure "nextPayment" is required (not null) if (nextPayment == null) { throw new ArgumentNullException("nextPayment is a required property for TransactionAgreement and cannot be null"); } this.NextPayment = nextPayment; - // to ensure "lastPayment" is required (not null) - if (lastPayment == null) + this.Outstanding = outstanding; + // to ensure "period" is required (not null) + if (period == null) { - throw new ArgumentNullException("lastPayment is a required property for TransactionAgreement and cannot be null"); + throw new ArgumentNullException("period is a required property for TransactionAgreement and cannot be null"); } - this.LastPayment = lastPayment; - this.LastAmount = lastAmount; - this.LastAmountVat = lastAmountVat; - this.Outstanding = outstanding; - this.FailedAttempts = failedAttempts; + this.Period = period; + this.RecurringAmt = recurringAmt; + // to ensure "startDate" is required (not null) + if (startDate == null) + { + throw new ArgumentNullException("startDate is a required property for TransactionAgreement and cannot be null"); + } + this.StartDate = startDate; + // to ensure "status" is required (not null) + if (status == null) + { + throw new ArgumentNullException("status is a required property for TransactionAgreement and cannot be null"); + } + this.Status = status; + // to ensure "timeCreated" is required (not null) + if (timeCreated == null) + { + throw new ArgumentNullException("timeCreated is a required property for TransactionAgreement and cannot be null"); + } + this.TimeCreated = timeCreated; } + /// + /// Gets or Sets Agreement + /// + [DataMember(Name = "agreement", IsRequired = true, EmitDefaultValue = true)] + public string Agreement { get; set; } + /// /// Gets or Sets AgreementId /// @@ -142,29 +148,28 @@ public TransactionAgreement(string agreementId = default, int itemId = default, public string AgreementId { get; set; } /// - /// Gets or Sets ItemId + /// Gets or Sets BillingType /// - [DataMember(Name = "itemId", IsRequired = true, EmitDefaultValue = true)] - public int ItemId { get; set; } + [DataMember(Name = "billingType", IsRequired = true, EmitDefaultValue = true)] + public string BillingType { get; set; } /// - /// Gets or Sets Agreement + /// Gets or Sets Currency /// - [DataMember(Name = "agreement", IsRequired = true, EmitDefaultValue = true)] - public string Agreement { get; set; } + [DataMember(Name = "currency", IsRequired = true, EmitDefaultValue = true)] + public string Currency { get; set; } /// - /// This is NOT TransactionStatus, but whatever Steam return. + /// Gets or Sets EndDate /// - /// This is NOT TransactionStatus, but whatever Steam return. - [DataMember(Name = "status", IsRequired = true, EmitDefaultValue = true)] - public string Status { get; set; } + [DataMember(Name = "endDate", IsRequired = true, EmitDefaultValue = true)] + public string EndDate { get; set; } /// - /// Gets or Sets Period + /// Gets or Sets FailedAttempts /// - [DataMember(Name = "period", IsRequired = true, EmitDefaultValue = true)] - public string Period { get; set; } + [DataMember(Name = "failedAttempts", IsRequired = true, EmitDefaultValue = true)] + public int FailedAttempts { get; set; } /// /// Gets or Sets Frequency @@ -173,40 +178,28 @@ public TransactionAgreement(string agreementId = default, int itemId = default, public int Frequency { get; set; } /// - /// Gets or Sets BillingType - /// - [DataMember(Name = "billingType", IsRequired = true, EmitDefaultValue = true)] - public string BillingType { get; set; } - - /// - /// Gets or Sets StartDate - /// - [DataMember(Name = "startDate", IsRequired = true, EmitDefaultValue = true)] - public string StartDate { get; set; } - - /// - /// Gets or Sets EndDate + /// Gets or Sets ItemId /// - [DataMember(Name = "endDate", IsRequired = true, EmitDefaultValue = true)] - public string EndDate { get; set; } + [DataMember(Name = "itemId", IsRequired = true, EmitDefaultValue = true)] + public int ItemId { get; set; } /// - /// Gets or Sets RecurringAmt + /// Gets or Sets LastAmount /// - [DataMember(Name = "recurringAmt", IsRequired = true, EmitDefaultValue = true)] - public decimal RecurringAmt { get; set; } + [DataMember(Name = "lastAmount", IsRequired = true, EmitDefaultValue = true)] + public decimal LastAmount { get; set; } /// - /// Gets or Sets Currency + /// Gets or Sets LastAmountVat /// - [DataMember(Name = "currency", IsRequired = true, EmitDefaultValue = true)] - public string Currency { get; set; } + [DataMember(Name = "lastAmountVat", IsRequired = true, EmitDefaultValue = true)] + public decimal LastAmountVat { get; set; } /// - /// Gets or Sets TimeCreated + /// Gets or Sets LastPayment /// - [DataMember(Name = "timeCreated", IsRequired = true, EmitDefaultValue = true)] - public string TimeCreated { get; set; } + [DataMember(Name = "lastPayment", IsRequired = true, EmitDefaultValue = true)] + public string LastPayment { get; set; } /// /// Gets or Sets NextPayment @@ -215,34 +208,41 @@ public TransactionAgreement(string agreementId = default, int itemId = default, public string NextPayment { get; set; } /// - /// Gets or Sets LastPayment + /// Gets or Sets Outstanding /// - [DataMember(Name = "lastPayment", IsRequired = true, EmitDefaultValue = true)] - public string LastPayment { get; set; } + [DataMember(Name = "outstanding", IsRequired = true, EmitDefaultValue = true)] + public int Outstanding { get; set; } /// - /// Gets or Sets LastAmount + /// Gets or Sets Period /// - [DataMember(Name = "lastAmount", IsRequired = true, EmitDefaultValue = true)] - public decimal LastAmount { get; set; } + [DataMember(Name = "period", IsRequired = true, EmitDefaultValue = true)] + public string Period { get; set; } /// - /// Gets or Sets LastAmountVat + /// Gets or Sets RecurringAmt /// - [DataMember(Name = "lastAmountVat", IsRequired = true, EmitDefaultValue = true)] - public decimal LastAmountVat { get; set; } + [DataMember(Name = "recurringAmt", IsRequired = true, EmitDefaultValue = true)] + public decimal RecurringAmt { get; set; } /// - /// Gets or Sets Outstanding + /// Gets or Sets StartDate /// - [DataMember(Name = "outstanding", IsRequired = true, EmitDefaultValue = true)] - public int Outstanding { get; set; } + [DataMember(Name = "startDate", IsRequired = true, EmitDefaultValue = true)] + public string StartDate { get; set; } /// - /// Gets or Sets FailedAttempts + /// This is NOT TransactionStatus, but whatever Steam return. /// - [DataMember(Name = "failedAttempts", IsRequired = true, EmitDefaultValue = true)] - public int FailedAttempts { get; set; } + /// This is NOT TransactionStatus, but whatever Steam return. + [DataMember(Name = "status", IsRequired = true, EmitDefaultValue = true)] + public string Status { get; set; } + + /// + /// Gets or Sets TimeCreated + /// + [DataMember(Name = "timeCreated", IsRequired = true, EmitDefaultValue = true)] + public string TimeCreated { get; set; } /// /// Returns the string presentation of the object @@ -252,24 +252,24 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class TransactionAgreement {\n"); - sb.Append(" AgreementId: ").Append(AgreementId).Append("\n"); - sb.Append(" ItemId: ").Append(ItemId).Append("\n"); sb.Append(" Agreement: ").Append(Agreement).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); - sb.Append(" Period: ").Append(Period).Append("\n"); - sb.Append(" Frequency: ").Append(Frequency).Append("\n"); + sb.Append(" AgreementId: ").Append(AgreementId).Append("\n"); sb.Append(" BillingType: ").Append(BillingType).Append("\n"); - sb.Append(" StartDate: ").Append(StartDate).Append("\n"); - sb.Append(" EndDate: ").Append(EndDate).Append("\n"); - sb.Append(" RecurringAmt: ").Append(RecurringAmt).Append("\n"); sb.Append(" Currency: ").Append(Currency).Append("\n"); - sb.Append(" TimeCreated: ").Append(TimeCreated).Append("\n"); - sb.Append(" NextPayment: ").Append(NextPayment).Append("\n"); - sb.Append(" LastPayment: ").Append(LastPayment).Append("\n"); + sb.Append(" EndDate: ").Append(EndDate).Append("\n"); + sb.Append(" FailedAttempts: ").Append(FailedAttempts).Append("\n"); + sb.Append(" Frequency: ").Append(Frequency).Append("\n"); + sb.Append(" ItemId: ").Append(ItemId).Append("\n"); sb.Append(" LastAmount: ").Append(LastAmount).Append("\n"); sb.Append(" LastAmountVat: ").Append(LastAmountVat).Append("\n"); + sb.Append(" LastPayment: ").Append(LastPayment).Append("\n"); + sb.Append(" NextPayment: ").Append(NextPayment).Append("\n"); sb.Append(" Outstanding: ").Append(Outstanding).Append("\n"); - sb.Append(" FailedAttempts: ").Append(FailedAttempts).Append("\n"); + sb.Append(" Period: ").Append(Period).Append("\n"); + sb.Append(" RecurringAmt: ").Append(RecurringAmt).Append("\n"); + sb.Append(" StartDate: ").Append(StartDate).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" TimeCreated: ").Append(TimeCreated).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -305,33 +305,15 @@ public bool Equals(TransactionAgreement input) return false; } return - ( - this.AgreementId == input.AgreementId || - (this.AgreementId != null && - this.AgreementId.Equals(input.AgreementId)) - ) && - ( - this.ItemId == input.ItemId || - this.ItemId.Equals(input.ItemId) - ) && ( this.Agreement == input.Agreement || (this.Agreement != null && this.Agreement.Equals(input.Agreement)) ) && ( - this.Status == input.Status || - (this.Status != null && - this.Status.Equals(input.Status)) - ) && - ( - this.Period == input.Period || - (this.Period != null && - this.Period.Equals(input.Period)) - ) && - ( - this.Frequency == input.Frequency || - this.Frequency.Equals(input.Frequency) + this.AgreementId == input.AgreementId || + (this.AgreementId != null && + this.AgreementId.Equals(input.AgreementId)) ) && ( this.BillingType == input.BillingType || @@ -339,9 +321,9 @@ public bool Equals(TransactionAgreement input) this.BillingType.Equals(input.BillingType)) ) && ( - this.StartDate == input.StartDate || - (this.StartDate != null && - this.StartDate.Equals(input.StartDate)) + this.Currency == input.Currency || + (this.Currency != null && + this.Currency.Equals(input.Currency)) ) && ( this.EndDate == input.EndDate || @@ -349,23 +331,24 @@ public bool Equals(TransactionAgreement input) this.EndDate.Equals(input.EndDate)) ) && ( - this.RecurringAmt == input.RecurringAmt || - this.RecurringAmt.Equals(input.RecurringAmt) + this.FailedAttempts == input.FailedAttempts || + this.FailedAttempts.Equals(input.FailedAttempts) ) && ( - this.Currency == input.Currency || - (this.Currency != null && - this.Currency.Equals(input.Currency)) + this.Frequency == input.Frequency || + this.Frequency.Equals(input.Frequency) ) && ( - this.TimeCreated == input.TimeCreated || - (this.TimeCreated != null && - this.TimeCreated.Equals(input.TimeCreated)) + this.ItemId == input.ItemId || + this.ItemId.Equals(input.ItemId) ) && ( - this.NextPayment == input.NextPayment || - (this.NextPayment != null && - this.NextPayment.Equals(input.NextPayment)) + this.LastAmount == input.LastAmount || + this.LastAmount.Equals(input.LastAmount) + ) && + ( + this.LastAmountVat == input.LastAmountVat || + this.LastAmountVat.Equals(input.LastAmountVat) ) && ( this.LastPayment == input.LastPayment || @@ -373,20 +356,37 @@ public bool Equals(TransactionAgreement input) this.LastPayment.Equals(input.LastPayment)) ) && ( - this.LastAmount == input.LastAmount || - this.LastAmount.Equals(input.LastAmount) - ) && - ( - this.LastAmountVat == input.LastAmountVat || - this.LastAmountVat.Equals(input.LastAmountVat) + this.NextPayment == input.NextPayment || + (this.NextPayment != null && + this.NextPayment.Equals(input.NextPayment)) ) && ( this.Outstanding == input.Outstanding || this.Outstanding.Equals(input.Outstanding) ) && ( - this.FailedAttempts == input.FailedAttempts || - this.FailedAttempts.Equals(input.FailedAttempts) + this.Period == input.Period || + (this.Period != null && + this.Period.Equals(input.Period)) + ) && + ( + this.RecurringAmt == input.RecurringAmt || + this.RecurringAmt.Equals(input.RecurringAmt) + ) && + ( + this.StartDate == input.StartDate || + (this.StartDate != null && + this.StartDate.Equals(input.StartDate)) + ) && + ( + this.Status == input.Status || + (this.Status != null && + this.Status.Equals(input.Status)) + ) && + ( + this.TimeCreated == input.TimeCreated || + (this.TimeCreated != null && + this.TimeCreated.Equals(input.TimeCreated)) ); } @@ -399,57 +399,57 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.AgreementId != null) - { - hashCode = (hashCode * 59) + this.AgreementId.GetHashCode(); - } - hashCode = (hashCode * 59) + this.ItemId.GetHashCode(); if (this.Agreement != null) { hashCode = (hashCode * 59) + this.Agreement.GetHashCode(); } - if (this.Status != null) - { - hashCode = (hashCode * 59) + this.Status.GetHashCode(); - } - if (this.Period != null) + if (this.AgreementId != null) { - hashCode = (hashCode * 59) + this.Period.GetHashCode(); + hashCode = (hashCode * 59) + this.AgreementId.GetHashCode(); } - hashCode = (hashCode * 59) + this.Frequency.GetHashCode(); if (this.BillingType != null) { hashCode = (hashCode * 59) + this.BillingType.GetHashCode(); } - if (this.StartDate != null) + if (this.Currency != null) { - hashCode = (hashCode * 59) + this.StartDate.GetHashCode(); + hashCode = (hashCode * 59) + this.Currency.GetHashCode(); } if (this.EndDate != null) { hashCode = (hashCode * 59) + this.EndDate.GetHashCode(); } - hashCode = (hashCode * 59) + this.RecurringAmt.GetHashCode(); - if (this.Currency != null) - { - hashCode = (hashCode * 59) + this.Currency.GetHashCode(); - } - if (this.TimeCreated != null) + hashCode = (hashCode * 59) + this.FailedAttempts.GetHashCode(); + hashCode = (hashCode * 59) + this.Frequency.GetHashCode(); + hashCode = (hashCode * 59) + this.ItemId.GetHashCode(); + hashCode = (hashCode * 59) + this.LastAmount.GetHashCode(); + hashCode = (hashCode * 59) + this.LastAmountVat.GetHashCode(); + if (this.LastPayment != null) { - hashCode = (hashCode * 59) + this.TimeCreated.GetHashCode(); + hashCode = (hashCode * 59) + this.LastPayment.GetHashCode(); } if (this.NextPayment != null) { hashCode = (hashCode * 59) + this.NextPayment.GetHashCode(); } - if (this.LastPayment != null) + hashCode = (hashCode * 59) + this.Outstanding.GetHashCode(); + if (this.Period != null) { - hashCode = (hashCode * 59) + this.LastPayment.GetHashCode(); + hashCode = (hashCode * 59) + this.Period.GetHashCode(); + } + hashCode = (hashCode * 59) + this.RecurringAmt.GetHashCode(); + if (this.StartDate != null) + { + hashCode = (hashCode * 59) + this.StartDate.GetHashCode(); + } + if (this.Status != null) + { + hashCode = (hashCode * 59) + this.Status.GetHashCode(); + } + if (this.TimeCreated != null) + { + hashCode = (hashCode * 59) + this.TimeCreated.GetHashCode(); } - hashCode = (hashCode * 59) + this.LastAmount.GetHashCode(); - hashCode = (hashCode * 59) + this.LastAmountVat.GetHashCode(); - hashCode = (hashCode * 59) + this.Outstanding.GetHashCode(); - hashCode = (hashCode * 59) + this.FailedAttempts.GetHashCode(); return hashCode; } } @@ -467,28 +467,16 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for AgreementId, length must be greater than 1.", new [] { "AgreementId" }); } - // Status (string) minLength - if (this.Status != null && this.Status.Length < 1) - { - yield return new ValidationResult("Invalid value for Status, length must be greater than 1.", new [] { "Status" }); - } - - // Period (string) minLength - if (this.Period != null && this.Period.Length < 1) - { - yield return new ValidationResult("Invalid value for Period, length must be greater than 1.", new [] { "Period" }); - } - // BillingType (string) minLength if (this.BillingType != null && this.BillingType.Length < 1) { yield return new ValidationResult("Invalid value for BillingType, length must be greater than 1.", new [] { "BillingType" }); } - // StartDate (string) minLength - if (this.StartDate != null && this.StartDate.Length < 1) + // Currency (string) minLength + if (this.Currency != null && this.Currency.Length < 1) { - yield return new ValidationResult("Invalid value for StartDate, length must be greater than 1.", new [] { "StartDate" }); + yield return new ValidationResult("Invalid value for Currency, length must be greater than 1.", new [] { "Currency" }); } // EndDate (string) minLength @@ -497,16 +485,10 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for EndDate, length must be greater than 1.", new [] { "EndDate" }); } - // Currency (string) minLength - if (this.Currency != null && this.Currency.Length < 1) - { - yield return new ValidationResult("Invalid value for Currency, length must be greater than 1.", new [] { "Currency" }); - } - - // TimeCreated (string) minLength - if (this.TimeCreated != null && this.TimeCreated.Length < 1) + // LastPayment (string) minLength + if (this.LastPayment != null && this.LastPayment.Length < 1) { - yield return new ValidationResult("Invalid value for TimeCreated, length must be greater than 1.", new [] { "TimeCreated" }); + yield return new ValidationResult("Invalid value for LastPayment, length must be greater than 1.", new [] { "LastPayment" }); } // NextPayment (string) minLength @@ -515,10 +497,28 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for NextPayment, length must be greater than 1.", new [] { "NextPayment" }); } - // LastPayment (string) minLength - if (this.LastPayment != null && this.LastPayment.Length < 1) + // Period (string) minLength + if (this.Period != null && this.Period.Length < 1) { - yield return new ValidationResult("Invalid value for LastPayment, length must be greater than 1.", new [] { "LastPayment" }); + yield return new ValidationResult("Invalid value for Period, length must be greater than 1.", new [] { "Period" }); + } + + // StartDate (string) minLength + if (this.StartDate != null && this.StartDate.Length < 1) + { + yield return new ValidationResult("Invalid value for StartDate, length must be greater than 1.", new [] { "StartDate" }); + } + + // Status (string) minLength + if (this.Status != null && this.Status.Length < 1) + { + yield return new ValidationResult("Invalid value for Status, length must be greater than 1.", new [] { "Status" }); + } + + // TimeCreated (string) minLength + if (this.TimeCreated != null && this.TimeCreated.Length < 1) + { + yield return new ValidationResult("Invalid value for TimeCreated, length must be greater than 1.", new [] { "TimeCreated" }); } yield break; diff --git a/src/VRChat.API/Model/TransactionStatus.cs b/src/VRChat.API/Model/TransactionStatus.cs index 25f00f77..cbb3e67e 100644 --- a/src/VRChat.API/Model/TransactionStatus.cs +++ b/src/VRChat.API/Model/TransactionStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,10 +39,10 @@ public enum TransactionStatus Active = 1, /// - /// Enum Failed for value: failed + /// Enum Chargeback for value: chargeback /// - [EnumMember(Value = "failed")] - Failed = 2, + [EnumMember(Value = "chargeback")] + Chargeback = 2, /// /// Enum Expired for value: expired @@ -51,10 +51,10 @@ public enum TransactionStatus Expired = 3, /// - /// Enum Chargeback for value: chargeback + /// Enum Failed for value: failed /// - [EnumMember(Value = "chargeback")] - Chargeback = 4 + [EnumMember(Value = "failed")] + Failed = 4 } } diff --git a/src/VRChat.API/Model/TransactionSteamInfo.cs b/src/VRChat.API/Model/TransactionSteamInfo.cs index 7e9b26a8..b79e7b7c 100644 --- a/src/VRChat.API/Model/TransactionSteamInfo.cs +++ b/src/VRChat.API/Model/TransactionSteamInfo.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,31 +40,25 @@ protected TransactionSteamInfo() { } /// /// Initializes a new instance of the class. /// - /// walletInfo (required). - /// Steam User ID (required). /// Steam Order ID (required). + /// Steam User ID (required). /// Empty (required). /// Steam Transaction ID, NOT the same as VRChat TransactionID (required). - public TransactionSteamInfo(TransactionSteamWalletInfo walletInfo = default, string steamId = default, string orderId = default, string steamUrl = default, string transId = default) + /// walletInfo (required). + public TransactionSteamInfo(string orderId = default, string steamId = default, string steamUrl = default, string transId = default, TransactionSteamWalletInfo walletInfo = default) { - // to ensure "walletInfo" is required (not null) - if (walletInfo == null) + // to ensure "orderId" is required (not null) + if (orderId == null) { - throw new ArgumentNullException("walletInfo is a required property for TransactionSteamInfo and cannot be null"); + throw new ArgumentNullException("orderId is a required property for TransactionSteamInfo and cannot be null"); } - this.WalletInfo = walletInfo; + this.OrderId = orderId; // to ensure "steamId" is required (not null) if (steamId == null) { throw new ArgumentNullException("steamId is a required property for TransactionSteamInfo and cannot be null"); } this.SteamId = steamId; - // to ensure "orderId" is required (not null) - if (orderId == null) - { - throw new ArgumentNullException("orderId is a required property for TransactionSteamInfo and cannot be null"); - } - this.OrderId = orderId; // to ensure "steamUrl" is required (not null) if (steamUrl == null) { @@ -77,13 +71,20 @@ public TransactionSteamInfo(TransactionSteamWalletInfo walletInfo = default, str throw new ArgumentNullException("transId is a required property for TransactionSteamInfo and cannot be null"); } this.TransId = transId; + // to ensure "walletInfo" is required (not null) + if (walletInfo == null) + { + throw new ArgumentNullException("walletInfo is a required property for TransactionSteamInfo and cannot be null"); + } + this.WalletInfo = walletInfo; } /// - /// Gets or Sets WalletInfo + /// Steam Order ID /// - [DataMember(Name = "walletInfo", IsRequired = true, EmitDefaultValue = true)] - public TransactionSteamWalletInfo WalletInfo { get; set; } + /// Steam Order ID + [DataMember(Name = "orderId", IsRequired = true, EmitDefaultValue = true)] + public string OrderId { get; set; } /// /// Steam User ID @@ -92,13 +93,6 @@ public TransactionSteamInfo(TransactionSteamWalletInfo walletInfo = default, str [DataMember(Name = "steamId", IsRequired = true, EmitDefaultValue = true)] public string SteamId { get; set; } - /// - /// Steam Order ID - /// - /// Steam Order ID - [DataMember(Name = "orderId", IsRequired = true, EmitDefaultValue = true)] - public string OrderId { get; set; } - /// /// Empty /// @@ -113,6 +107,12 @@ public TransactionSteamInfo(TransactionSteamWalletInfo walletInfo = default, str [DataMember(Name = "transId", IsRequired = true, EmitDefaultValue = true)] public string TransId { get; set; } + /// + /// Gets or Sets WalletInfo + /// + [DataMember(Name = "walletInfo", IsRequired = true, EmitDefaultValue = true)] + public TransactionSteamWalletInfo WalletInfo { get; set; } + /// /// Returns the string presentation of the object /// @@ -121,11 +121,11 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class TransactionSteamInfo {\n"); - sb.Append(" WalletInfo: ").Append(WalletInfo).Append("\n"); - sb.Append(" SteamId: ").Append(SteamId).Append("\n"); sb.Append(" OrderId: ").Append(OrderId).Append("\n"); + sb.Append(" SteamId: ").Append(SteamId).Append("\n"); sb.Append(" SteamUrl: ").Append(SteamUrl).Append("\n"); sb.Append(" TransId: ").Append(TransId).Append("\n"); + sb.Append(" WalletInfo: ").Append(WalletInfo).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -162,20 +162,15 @@ public bool Equals(TransactionSteamInfo input) } return ( - this.WalletInfo == input.WalletInfo || - (this.WalletInfo != null && - this.WalletInfo.Equals(input.WalletInfo)) + this.OrderId == input.OrderId || + (this.OrderId != null && + this.OrderId.Equals(input.OrderId)) ) && ( this.SteamId == input.SteamId || (this.SteamId != null && this.SteamId.Equals(input.SteamId)) ) && - ( - this.OrderId == input.OrderId || - (this.OrderId != null && - this.OrderId.Equals(input.OrderId)) - ) && ( this.SteamUrl == input.SteamUrl || (this.SteamUrl != null && @@ -185,6 +180,11 @@ public bool Equals(TransactionSteamInfo input) this.TransId == input.TransId || (this.TransId != null && this.TransId.Equals(input.TransId)) + ) && + ( + this.WalletInfo == input.WalletInfo || + (this.WalletInfo != null && + this.WalletInfo.Equals(input.WalletInfo)) ); } @@ -197,18 +197,14 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.WalletInfo != null) + if (this.OrderId != null) { - hashCode = (hashCode * 59) + this.WalletInfo.GetHashCode(); + hashCode = (hashCode * 59) + this.OrderId.GetHashCode(); } if (this.SteamId != null) { hashCode = (hashCode * 59) + this.SteamId.GetHashCode(); } - if (this.OrderId != null) - { - hashCode = (hashCode * 59) + this.OrderId.GetHashCode(); - } if (this.SteamUrl != null) { hashCode = (hashCode * 59) + this.SteamUrl.GetHashCode(); @@ -217,6 +213,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.TransId.GetHashCode(); } + if (this.WalletInfo != null) + { + hashCode = (hashCode * 59) + this.WalletInfo.GetHashCode(); + } return hashCode; } } @@ -228,18 +228,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // SteamId (string) minLength - if (this.SteamId != null && this.SteamId.Length < 1) - { - yield return new ValidationResult("Invalid value for SteamId, length must be greater than 1.", new [] { "SteamId" }); - } - // OrderId (string) minLength if (this.OrderId != null && this.OrderId.Length < 1) { yield return new ValidationResult("Invalid value for OrderId, length must be greater than 1.", new [] { "OrderId" }); } + // SteamId (string) minLength + if (this.SteamId != null && this.SteamId.Length < 1) + { + yield return new ValidationResult("Invalid value for SteamId, length must be greater than 1.", new [] { "SteamId" }); + } + // TransId (string) minLength if (this.TransId != null && this.TransId.Length < 1) { diff --git a/src/VRChat.API/Model/TransactionSteamWalletInfo.cs b/src/VRChat.API/Model/TransactionSteamWalletInfo.cs index 7596de20..a087b0eb 100644 --- a/src/VRChat.API/Model/TransactionSteamWalletInfo.cs +++ b/src/VRChat.API/Model/TransactionSteamWalletInfo.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,18 +40,12 @@ protected TransactionSteamWalletInfo() { } /// /// Initializes a new instance of the class. /// - /// state (required). /// country (required) (default to "US"). /// currency (required) (default to "USD"). + /// state (required). /// status (required). - public TransactionSteamWalletInfo(string state = default, string country = @"US", string currency = @"USD", string status = default) + public TransactionSteamWalletInfo(string country = @"US", string currency = @"USD", string state = default, string status = default) { - // to ensure "state" is required (not null) - if (state == null) - { - throw new ArgumentNullException("state is a required property for TransactionSteamWalletInfo and cannot be null"); - } - this.State = state; // to ensure "country" is required (not null) if (country == null) { @@ -64,6 +58,12 @@ public TransactionSteamWalletInfo(string state = default, string country = @"US" throw new ArgumentNullException("currency is a required property for TransactionSteamWalletInfo and cannot be null"); } this.Currency = currency; + // to ensure "state" is required (not null) + if (state == null) + { + throw new ArgumentNullException("state is a required property for TransactionSteamWalletInfo and cannot be null"); + } + this.State = state; // to ensure "status" is required (not null) if (status == null) { @@ -72,12 +72,6 @@ public TransactionSteamWalletInfo(string state = default, string country = @"US" this.Status = status; } - /// - /// Gets or Sets State - /// - [DataMember(Name = "state", IsRequired = true, EmitDefaultValue = true)] - public string State { get; set; } - /// /// Gets or Sets Country /// @@ -96,6 +90,12 @@ public TransactionSteamWalletInfo(string state = default, string country = @"US" [DataMember(Name = "currency", IsRequired = true, EmitDefaultValue = true)] public string Currency { get; set; } + /// + /// Gets or Sets State + /// + [DataMember(Name = "state", IsRequired = true, EmitDefaultValue = true)] + public string State { get; set; } + /// /// Gets or Sets Status /// @@ -113,9 +113,9 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class TransactionSteamWalletInfo {\n"); - sb.Append(" State: ").Append(State).Append("\n"); sb.Append(" Country: ").Append(Country).Append("\n"); sb.Append(" Currency: ").Append(Currency).Append("\n"); + sb.Append(" State: ").Append(State).Append("\n"); sb.Append(" Status: ").Append(Status).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -152,11 +152,6 @@ public bool Equals(TransactionSteamWalletInfo input) return false; } return - ( - this.State == input.State || - (this.State != null && - this.State.Equals(input.State)) - ) && ( this.Country == input.Country || (this.Country != null && @@ -167,6 +162,11 @@ public bool Equals(TransactionSteamWalletInfo input) (this.Currency != null && this.Currency.Equals(input.Currency)) ) && + ( + this.State == input.State || + (this.State != null && + this.State.Equals(input.State)) + ) && ( this.Status == input.Status || (this.Status != null && @@ -183,10 +183,6 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.State != null) - { - hashCode = (hashCode * 59) + this.State.GetHashCode(); - } if (this.Country != null) { hashCode = (hashCode * 59) + this.Country.GetHashCode(); @@ -195,6 +191,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Currency.GetHashCode(); } + if (this.State != null) + { + hashCode = (hashCode * 59) + this.State.GetHashCode(); + } if (this.Status != null) { hashCode = (hashCode * 59) + this.Status.GetHashCode(); diff --git a/src/VRChat.API/Model/TwoFactorAuthCode.cs b/src/VRChat.API/Model/TwoFactorAuthCode.cs index bc73c4ba..8ed4bd10 100644 --- a/src/VRChat.API/Model/TwoFactorAuthCode.cs +++ b/src/VRChat.API/Model/TwoFactorAuthCode.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/TwoFactorEmailCode.cs b/src/VRChat.API/Model/TwoFactorEmailCode.cs index 28fe41c5..856f9669 100644 --- a/src/VRChat.API/Model/TwoFactorEmailCode.cs +++ b/src/VRChat.API/Model/TwoFactorEmailCode.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/TwoFactorRecoveryCodes.cs b/src/VRChat.API/Model/TwoFactorRecoveryCodes.cs index f7ee8aaf..a8272cfa 100644 --- a/src/VRChat.API/Model/TwoFactorRecoveryCodes.cs +++ b/src/VRChat.API/Model/TwoFactorRecoveryCodes.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,26 +35,26 @@ public partial class TwoFactorRecoveryCodes : IEquatable /// /// Initializes a new instance of the class. /// - /// requiresTwoFactorAuth. /// otp. - public TwoFactorRecoveryCodes(List requiresTwoFactorAuth = default, List otp = default) + /// requiresTwoFactorAuth. + public TwoFactorRecoveryCodes(List otp = default, List requiresTwoFactorAuth = default) { - this.RequiresTwoFactorAuth = requiresTwoFactorAuth; this.Otp = otp; + this.RequiresTwoFactorAuth = requiresTwoFactorAuth; } - /// - /// Gets or Sets RequiresTwoFactorAuth - /// - [DataMember(Name = "requiresTwoFactorAuth", EmitDefaultValue = false)] - public List RequiresTwoFactorAuth { get; set; } - /// /// Gets or Sets Otp /// [DataMember(Name = "otp", EmitDefaultValue = false)] public List Otp { get; set; } + /// + /// Gets or Sets RequiresTwoFactorAuth + /// + [DataMember(Name = "requiresTwoFactorAuth", EmitDefaultValue = false)] + public List RequiresTwoFactorAuth { get; set; } + /// /// Returns the string presentation of the object /// @@ -63,8 +63,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class TwoFactorRecoveryCodes {\n"); - sb.Append(" RequiresTwoFactorAuth: ").Append(RequiresTwoFactorAuth).Append("\n"); sb.Append(" Otp: ").Append(Otp).Append("\n"); + sb.Append(" RequiresTwoFactorAuth: ").Append(RequiresTwoFactorAuth).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -100,17 +100,17 @@ public bool Equals(TwoFactorRecoveryCodes input) return false; } return - ( - this.RequiresTwoFactorAuth == input.RequiresTwoFactorAuth || - this.RequiresTwoFactorAuth != null && - input.RequiresTwoFactorAuth != null && - this.RequiresTwoFactorAuth.SequenceEqual(input.RequiresTwoFactorAuth) - ) && ( this.Otp == input.Otp || this.Otp != null && input.Otp != null && this.Otp.SequenceEqual(input.Otp) + ) && + ( + this.RequiresTwoFactorAuth == input.RequiresTwoFactorAuth || + this.RequiresTwoFactorAuth != null && + input.RequiresTwoFactorAuth != null && + this.RequiresTwoFactorAuth.SequenceEqual(input.RequiresTwoFactorAuth) ); } @@ -123,14 +123,14 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.RequiresTwoFactorAuth != null) - { - hashCode = (hashCode * 59) + this.RequiresTwoFactorAuth.GetHashCode(); - } if (this.Otp != null) { hashCode = (hashCode * 59) + this.Otp.GetHashCode(); } + if (this.RequiresTwoFactorAuth != null) + { + hashCode = (hashCode * 59) + this.RequiresTwoFactorAuth.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/TwoFactorRecoveryCodesOtpInner.cs b/src/VRChat.API/Model/TwoFactorRecoveryCodesOtpInner.cs index 4c25304f..64a6bb63 100644 --- a/src/VRChat.API/Model/TwoFactorRecoveryCodesOtpInner.cs +++ b/src/VRChat.API/Model/TwoFactorRecoveryCodesOtpInner.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UnityPackage.cs b/src/VRChat.API/Model/UnityPackage.cs index 7df94da7..8ac8fc69 100644 --- a/src/VRChat.API/Model/UnityPackage.cs +++ b/src/VRChat.API/Model/UnityPackage.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -46,31 +46,31 @@ protected UnityPackage() { } /// /// Initializes a new instance of the class. /// - /// id (required). /// assetUrl. /// assetUrlObject. /// assetVersion (required). /// createdAt. + /// id (required). + /// impostorUrl. /// impostorizerVersion. /// performanceRating. /// This can be `standalonewindows` or `android`, but can also pretty much be any random Unity verison such as `2019.2.4-801-Release` or `2019.2.2-772-Release` or even `unknownplatform`. (required). /// pluginUrl. /// pluginUrlObject. + /// scanStatus. /// unitySortNumber. /// unityVersion (required) (default to "5.3.4p1"). - /// worldSignature. - /// impostorUrl. - /// scanStatus. /// variant. - public UnityPackage(string id = default, string assetUrl = default, Object assetUrlObject = default, int assetVersion = default, DateTime createdAt = default, string impostorizerVersion = default, PerformanceRatings? performanceRating = default, string platform = default, string pluginUrl = default, Object pluginUrlObject = default, long unitySortNumber = default, string unityVersion = @"5.3.4p1", string worldSignature = default, string impostorUrl = default, string scanStatus = default, string variant = default) + /// worldSignature. + public UnityPackage(string assetUrl = default, Object assetUrlObject = default, int assetVersion = default, DateTime createdAt = default, string id = default, string impostorUrl = default, string impostorizerVersion = default, PerformanceRatings? performanceRating = default, string platform = default, string pluginUrl = default, Object pluginUrlObject = default, string scanStatus = default, long unitySortNumber = default, string unityVersion = @"5.3.4p1", string variant = default, string worldSignature = default) { + this.AssetVersion = assetVersion; // to ensure "id" is required (not null) if (id == null) { throw new ArgumentNullException("id is a required property for UnityPackage and cannot be null"); } this.Id = id; - this.AssetVersion = assetVersion; // to ensure "platform" is required (not null) if (platform == null) { @@ -86,26 +86,17 @@ public UnityPackage(string id = default, string assetUrl = default, Object asset this.AssetUrl = assetUrl; this.AssetUrlObject = assetUrlObject; this.CreatedAt = createdAt; + this.ImpostorUrl = impostorUrl; this.ImpostorizerVersion = impostorizerVersion; this.PerformanceRating = performanceRating; this.PluginUrl = pluginUrl; this.PluginUrlObject = pluginUrlObject; - this.UnitySortNumber = unitySortNumber; - this.WorldSignature = worldSignature; - this.ImpostorUrl = impostorUrl; this.ScanStatus = scanStatus; + this.UnitySortNumber = unitySortNumber; this.Variant = variant; + this.WorldSignature = worldSignature; } - /// - /// Gets or Sets Id - /// - /* - unp_52b12c39-4163-457d-a4a9-630e7aff1bff - */ - [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] - public string Id { get; set; } - /// /// Gets or Sets AssetUrl /// @@ -142,6 +133,21 @@ public UnityPackage(string id = default, string assetUrl = default, Object asset [DataMember(Name = "created_at", EmitDefaultValue = false)] public DateTime CreatedAt { get; set; } + /// + /// Gets or Sets Id + /// + /* + unp_52b12c39-4163-457d-a4a9-630e7aff1bff + */ + [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] + public string Id { get; set; } + + /// + /// Gets or Sets ImpostorUrl + /// + [DataMember(Name = "impostorUrl", EmitDefaultValue = true)] + public string ImpostorUrl { get; set; } + /// /// Gets or Sets ImpostorizerVersion /// @@ -176,6 +182,12 @@ public UnityPackage(string id = default, string assetUrl = default, Object asset [DataMember(Name = "pluginUrlObject", EmitDefaultValue = false)] public Object PluginUrlObject { get; set; } + /// + /// Gets or Sets ScanStatus + /// + [DataMember(Name = "scanStatus", EmitDefaultValue = false)] + public string ScanStatus { get; set; } + /// /// Gets or Sets UnitySortNumber /// @@ -194,6 +206,12 @@ public UnityPackage(string id = default, string assetUrl = default, Object asset [DataMember(Name = "unityVersion", IsRequired = true, EmitDefaultValue = true)] public string UnityVersion { get; set; } + /// + /// Gets or Sets Variant + /// + [DataMember(Name = "variant", EmitDefaultValue = false)] + public string Variant { get; set; } + /// /// Gets or Sets WorldSignature /// @@ -203,24 +221,6 @@ public UnityPackage(string id = default, string assetUrl = default, Object asset [DataMember(Name = "worldSignature", EmitDefaultValue = true)] public string WorldSignature { get; set; } - /// - /// Gets or Sets ImpostorUrl - /// - [DataMember(Name = "impostorUrl", EmitDefaultValue = true)] - public string ImpostorUrl { get; set; } - - /// - /// Gets or Sets ScanStatus - /// - [DataMember(Name = "scanStatus", EmitDefaultValue = false)] - public string ScanStatus { get; set; } - - /// - /// Gets or Sets Variant - /// - [DataMember(Name = "variant", EmitDefaultValue = false)] - public string Variant { get; set; } - /// /// Returns the string presentation of the object /// @@ -229,22 +229,22 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UnityPackage {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" AssetUrl: ").Append(AssetUrl).Append("\n"); sb.Append(" AssetUrlObject: ").Append(AssetUrlObject).Append("\n"); sb.Append(" AssetVersion: ").Append(AssetVersion).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" ImpostorUrl: ").Append(ImpostorUrl).Append("\n"); sb.Append(" ImpostorizerVersion: ").Append(ImpostorizerVersion).Append("\n"); sb.Append(" PerformanceRating: ").Append(PerformanceRating).Append("\n"); sb.Append(" Platform: ").Append(Platform).Append("\n"); sb.Append(" PluginUrl: ").Append(PluginUrl).Append("\n"); sb.Append(" PluginUrlObject: ").Append(PluginUrlObject).Append("\n"); + sb.Append(" ScanStatus: ").Append(ScanStatus).Append("\n"); sb.Append(" UnitySortNumber: ").Append(UnitySortNumber).Append("\n"); sb.Append(" UnityVersion: ").Append(UnityVersion).Append("\n"); - sb.Append(" WorldSignature: ").Append(WorldSignature).Append("\n"); - sb.Append(" ImpostorUrl: ").Append(ImpostorUrl).Append("\n"); - sb.Append(" ScanStatus: ").Append(ScanStatus).Append("\n"); sb.Append(" Variant: ").Append(Variant).Append("\n"); + sb.Append(" WorldSignature: ").Append(WorldSignature).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -280,11 +280,6 @@ public bool Equals(UnityPackage input) return false; } return - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && ( this.AssetUrl == input.AssetUrl || (this.AssetUrl != null && @@ -304,6 +299,16 @@ public bool Equals(UnityPackage input) (this.CreatedAt != null && this.CreatedAt.Equals(input.CreatedAt)) ) && + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.ImpostorUrl == input.ImpostorUrl || + (this.ImpostorUrl != null && + this.ImpostorUrl.Equals(input.ImpostorUrl)) + ) && ( this.ImpostorizerVersion == input.ImpostorizerVersion || (this.ImpostorizerVersion != null && @@ -328,6 +333,11 @@ public bool Equals(UnityPackage input) (this.PluginUrlObject != null && this.PluginUrlObject.Equals(input.PluginUrlObject)) ) && + ( + this.ScanStatus == input.ScanStatus || + (this.ScanStatus != null && + this.ScanStatus.Equals(input.ScanStatus)) + ) && ( this.UnitySortNumber == input.UnitySortNumber || this.UnitySortNumber.Equals(input.UnitySortNumber) @@ -337,25 +347,15 @@ public bool Equals(UnityPackage input) (this.UnityVersion != null && this.UnityVersion.Equals(input.UnityVersion)) ) && - ( - this.WorldSignature == input.WorldSignature || - (this.WorldSignature != null && - this.WorldSignature.Equals(input.WorldSignature)) - ) && - ( - this.ImpostorUrl == input.ImpostorUrl || - (this.ImpostorUrl != null && - this.ImpostorUrl.Equals(input.ImpostorUrl)) - ) && - ( - this.ScanStatus == input.ScanStatus || - (this.ScanStatus != null && - this.ScanStatus.Equals(input.ScanStatus)) - ) && ( this.Variant == input.Variant || (this.Variant != null && this.Variant.Equals(input.Variant)) + ) && + ( + this.WorldSignature == input.WorldSignature || + (this.WorldSignature != null && + this.WorldSignature.Equals(input.WorldSignature)) ); } @@ -368,10 +368,6 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } if (this.AssetUrl != null) { hashCode = (hashCode * 59) + this.AssetUrl.GetHashCode(); @@ -385,6 +381,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } + if (this.Id != null) + { + hashCode = (hashCode * 59) + this.Id.GetHashCode(); + } + if (this.ImpostorUrl != null) + { + hashCode = (hashCode * 59) + this.ImpostorUrl.GetHashCode(); + } if (this.ImpostorizerVersion != null) { hashCode = (hashCode * 59) + this.ImpostorizerVersion.GetHashCode(); @@ -402,27 +406,23 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.PluginUrlObject.GetHashCode(); } + if (this.ScanStatus != null) + { + hashCode = (hashCode * 59) + this.ScanStatus.GetHashCode(); + } hashCode = (hashCode * 59) + this.UnitySortNumber.GetHashCode(); if (this.UnityVersion != null) { hashCode = (hashCode * 59) + this.UnityVersion.GetHashCode(); } - if (this.WorldSignature != null) - { - hashCode = (hashCode * 59) + this.WorldSignature.GetHashCode(); - } - if (this.ImpostorUrl != null) - { - hashCode = (hashCode * 59) + this.ImpostorUrl.GetHashCode(); - } - if (this.ScanStatus != null) - { - hashCode = (hashCode * 59) + this.ScanStatus.GetHashCode(); - } if (this.Variant != null) { hashCode = (hashCode * 59) + this.Variant.GetHashCode(); } + if (this.WorldSignature != null) + { + hashCode = (hashCode * 59) + this.WorldSignature.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/UpdateAvatarRequest.cs b/src/VRChat.API/Model/UpdateAvatarRequest.cs index 769192ee..fc56a8d5 100644 --- a/src/VRChat.API/Model/UpdateAvatarRequest.cs +++ b/src/VRChat.API/Model/UpdateAvatarRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -42,30 +42,28 @@ public partial class UpdateAvatarRequest : IEquatable, IVal /// Initializes a new instance of the class. /// /// assetUrl. - /// id. - /// name. /// description. - /// . + /// id. /// imageUrl. + /// name. /// releaseStatus. - /// varVersion (default to 1). - /// Enabling featured tag requires Admin Credentials.. + /// . /// unityPackageUrl. /// unityVersion (default to "5.3.4p1"). - public UpdateAvatarRequest(string assetUrl = default, string id = default, string name = default, string description = default, List tags = default, string imageUrl = default, ReleaseStatus? releaseStatus = default, int varVersion = 1, bool featured = default, string unityPackageUrl = default, string unityVersion = @"5.3.4p1") + /// varVersion (default to 1). + public UpdateAvatarRequest(string assetUrl = default, string description = default, string id = default, string imageUrl = default, string name = default, ReleaseStatus? releaseStatus = default, List tags = default, string unityPackageUrl = default, string unityVersion = @"5.3.4p1", int varVersion = 1) { this.AssetUrl = assetUrl; - this.Id = id; - this.Name = name; this.Description = description; - this.Tags = tags; + this.Id = id; this.ImageUrl = imageUrl; + this.Name = name; this.ReleaseStatus = releaseStatus; - this.VarVersion = varVersion; - this.Featured = featured; + this.Tags = tags; this.UnityPackageUrl = unityPackageUrl; // use default value if no "unityVersion" provided this.UnityVersion = unityVersion ?? @"5.3.4p1"; + this.VarVersion = varVersion; } /// @@ -74,6 +72,12 @@ public UpdateAvatarRequest(string assetUrl = default, string id = default, strin [DataMember(Name = "assetUrl", EmitDefaultValue = false)] public string AssetUrl { get; set; } + /// + /// Gets or Sets Description + /// + [DataMember(Name = "description", EmitDefaultValue = false)] + public string Description { get; set; } + /// /// Gets or Sets Id /// @@ -84,16 +88,16 @@ public UpdateAvatarRequest(string assetUrl = default, string id = default, strin public string Id { get; set; } /// - /// Gets or Sets Name + /// Gets or Sets ImageUrl /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } + [DataMember(Name = "imageUrl", EmitDefaultValue = false)] + public string ImageUrl { get; set; } /// - /// Gets or Sets Description + /// Gets or Sets Name /// - [DataMember(Name = "description", EmitDefaultValue = false)] - public string Description { get; set; } + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } /// /// @@ -102,25 +106,6 @@ public UpdateAvatarRequest(string assetUrl = default, string id = default, strin [DataMember(Name = "tags", EmitDefaultValue = false)] public List Tags { get; set; } - /// - /// Gets or Sets ImageUrl - /// - [DataMember(Name = "imageUrl", EmitDefaultValue = false)] - public string ImageUrl { get; set; } - - /// - /// Gets or Sets VarVersion - /// - [DataMember(Name = "version", EmitDefaultValue = false)] - public int VarVersion { get; set; } - - /// - /// Enabling featured tag requires Admin Credentials. - /// - /// Enabling featured tag requires Admin Credentials. - [DataMember(Name = "featured", EmitDefaultValue = true)] - public bool Featured { get; set; } - /// /// Gets or Sets UnityPackageUrl /// @@ -136,6 +121,12 @@ public UpdateAvatarRequest(string assetUrl = default, string id = default, strin [DataMember(Name = "unityVersion", EmitDefaultValue = false)] public string UnityVersion { get; set; } + /// + /// Gets or Sets VarVersion + /// + [DataMember(Name = "version", EmitDefaultValue = false)] + public int VarVersion { get; set; } + /// /// Returns the string presentation of the object /// @@ -145,16 +136,15 @@ public override string ToString() StringBuilder sb = new StringBuilder(); sb.Append("class UpdateAvatarRequest {\n"); sb.Append(" AssetUrl: ").Append(AssetUrl).Append("\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); - sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); - sb.Append(" Featured: ").Append(Featured).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); sb.Append(" UnityPackageUrl: ").Append(UnityPackageUrl).Append("\n"); sb.Append(" UnityVersion: ").Append(UnityVersion).Append("\n"); + sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -195,26 +185,15 @@ public bool Equals(UpdateAvatarRequest input) (this.AssetUrl != null && this.AssetUrl.Equals(input.AssetUrl)) ) && - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && - ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && ( this.Description == input.Description || (this.Description != null && this.Description.Equals(input.Description)) ) && ( - this.Tags == input.Tags || - this.Tags != null && - input.Tags != null && - this.Tags.SequenceEqual(input.Tags) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( this.ImageUrl == input.ImageUrl || @@ -222,16 +201,19 @@ public bool Equals(UpdateAvatarRequest input) this.ImageUrl.Equals(input.ImageUrl)) ) && ( - this.ReleaseStatus == input.ReleaseStatus || - this.ReleaseStatus.Equals(input.ReleaseStatus) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( - this.VarVersion == input.VarVersion || - this.VarVersion.Equals(input.VarVersion) + this.ReleaseStatus == input.ReleaseStatus || + this.ReleaseStatus.Equals(input.ReleaseStatus) ) && ( - this.Featured == input.Featured || - this.Featured.Equals(input.Featured) + this.Tags == input.Tags || + this.Tags != null && + input.Tags != null && + this.Tags.SequenceEqual(input.Tags) ) && ( this.UnityPackageUrl == input.UnityPackageUrl || @@ -242,6 +224,10 @@ public bool Equals(UpdateAvatarRequest input) this.UnityVersion == input.UnityVersion || (this.UnityVersion != null && this.UnityVersion.Equals(input.UnityVersion)) + ) && + ( + this.VarVersion == input.VarVersion || + this.VarVersion.Equals(input.VarVersion) ); } @@ -258,29 +244,27 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.AssetUrl.GetHashCode(); } + if (this.Description != null) + { + hashCode = (hashCode * 59) + this.Description.GetHashCode(); + } if (this.Id != null) { hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - if (this.Name != null) + if (this.ImageUrl != null) { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); + hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); } - if (this.Description != null) + if (this.Name != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } + hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); if (this.Tags != null) { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } - if (this.ImageUrl != null) - { - hashCode = (hashCode * 59) + this.ImageUrl.GetHashCode(); - } - hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); - hashCode = (hashCode * 59) + this.VarVersion.GetHashCode(); - hashCode = (hashCode * 59) + this.Featured.GetHashCode(); if (this.UnityPackageUrl != null) { hashCode = (hashCode * 59) + this.UnityPackageUrl.GetHashCode(); @@ -289,6 +273,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.UnityVersion.GetHashCode(); } + hashCode = (hashCode * 59) + this.VarVersion.GetHashCode(); return hashCode; } } @@ -300,12 +285,6 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Name (string) minLength - if (this.Name != null && this.Name.Length < 1) - { - yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); - } - // Description (string) minLength if (this.Description != null && this.Description.Length < 1) { @@ -318,10 +297,10 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for ImageUrl, length must be greater than 1.", new [] { "ImageUrl" }); } - // VarVersion (int) minimum - if (this.VarVersion < (int)0) + // Name (string) minLength + if (this.Name != null && this.Name.Length < 1) { - yield return new ValidationResult("Invalid value for VarVersion, must be a value greater than or equal to 0.", new [] { "VarVersion" }); + yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); } // UnityVersion (string) minLength @@ -330,6 +309,12 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for UnityVersion, length must be greater than 1.", new [] { "UnityVersion" }); } + // VarVersion (int) minimum + if (this.VarVersion < (int)0) + { + yield return new ValidationResult("Invalid value for VarVersion, must be a value greater than or equal to 0.", new [] { "VarVersion" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/UpdateCalendarEventRequest.cs b/src/VRChat.API/Model/UpdateCalendarEventRequest.cs index 0694ca50..633e1e32 100644 --- a/src/VRChat.API/Model/UpdateCalendarEventRequest.cs +++ b/src/VRChat.API/Model/UpdateCalendarEventRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,62 +35,63 @@ public partial class UpdateCalendarEventRequest : IEquatable /// Initializes a new instance of the class. /// - /// Event title. - /// Time the vent starts at. + /// category. + /// closeInstanceAfterEndMinutes. /// description. /// Time the vent starts at. - /// category. - /// tags. - /// isDraft. + /// featured. + /// guestEarlyJoinMinutes. + /// hostEarlyJoinMinutes. /// imageId. - /// roleIds. + /// isDraft. + /// languages. /// parentId. /// platforms. - /// languages. + /// roleIds. /// Send notification to group members. (default to false). - /// featured. - /// hostEarlyJoinMinutes. - /// guestEarlyJoinMinutes. - /// closeInstanceAfterEndMinutes. + /// Time the vent starts at. + /// tags. + /// Event title. /// usesInstanceOverflow. - public UpdateCalendarEventRequest(string title = default, DateTime startsAt = default, string description = default, DateTime endsAt = default, string category = default, List tags = default, bool isDraft = default, string imageId = default, List roleIds = default, string parentId = default, List platforms = default, List languages = default, bool sendCreationNotification = false, bool featured = default, int hostEarlyJoinMinutes = default, int guestEarlyJoinMinutes = default, int closeInstanceAfterEndMinutes = default, bool usesInstanceOverflow = default) + public UpdateCalendarEventRequest(string category = default, int closeInstanceAfterEndMinutes = default, string description = default, DateTime endsAt = default, bool featured = default, int guestEarlyJoinMinutes = default, int hostEarlyJoinMinutes = default, string imageId = default, bool isDraft = default, List languages = default, string parentId = default, List platforms = default, List roleIds = default, bool sendCreationNotification = false, DateTime startsAt = default, List tags = default, string title = default, bool usesInstanceOverflow = default) { - this.Title = title; - this.StartsAt = startsAt; + this.Category = category; + this.CloseInstanceAfterEndMinutes = closeInstanceAfterEndMinutes; this.Description = description; this.EndsAt = endsAt; - this.Category = category; - this.Tags = tags; - this.IsDraft = isDraft; + this.Featured = featured; + this.GuestEarlyJoinMinutes = guestEarlyJoinMinutes; + this.HostEarlyJoinMinutes = hostEarlyJoinMinutes; this.ImageId = imageId; - this.RoleIds = roleIds; + this.IsDraft = isDraft; + this.Languages = languages; this.ParentId = parentId; this.Platforms = platforms; - this.Languages = languages; + this.RoleIds = roleIds; this.SendCreationNotification = sendCreationNotification; - this.Featured = featured; - this.HostEarlyJoinMinutes = hostEarlyJoinMinutes; - this.GuestEarlyJoinMinutes = guestEarlyJoinMinutes; - this.CloseInstanceAfterEndMinutes = closeInstanceAfterEndMinutes; + this.StartsAt = startsAt; + this.Tags = tags; + this.Title = title; this.UsesInstanceOverflow = usesInstanceOverflow; } /// - /// Event title + /// Gets or Sets Category /// - /// Event title /* - Performance Event! + performance */ - [DataMember(Name = "title", EmitDefaultValue = false)] - public string Title { get; set; } + [DataMember(Name = "category", EmitDefaultValue = false)] + public string Category { get; set; } /// - /// Time the vent starts at + /// Gets or Sets CloseInstanceAfterEndMinutes /// - /// Time the vent starts at - [DataMember(Name = "startsAt", EmitDefaultValue = false)] - public DateTime StartsAt { get; set; } + /* + 5 + */ + [DataMember(Name = "closeInstanceAfterEndMinutes", EmitDefaultValue = false)] + public int CloseInstanceAfterEndMinutes { get; set; } /// /// Gets or Sets Description @@ -106,25 +107,28 @@ public UpdateCalendarEventRequest(string title = default, DateTime startsAt = de public DateTime EndsAt { get; set; } /// - /// Gets or Sets Category + /// Gets or Sets Featured /// - /* - performance - */ - [DataMember(Name = "category", EmitDefaultValue = false)] - public string Category { get; set; } + [DataMember(Name = "featured", EmitDefaultValue = true)] + public bool Featured { get; set; } /// - /// Gets or Sets Tags + /// Gets or Sets GuestEarlyJoinMinutes /// - [DataMember(Name = "tags", EmitDefaultValue = false)] - public List Tags { get; set; } + /* + 5 + */ + [DataMember(Name = "guestEarlyJoinMinutes", EmitDefaultValue = false)] + public int GuestEarlyJoinMinutes { get; set; } /// - /// Gets or Sets IsDraft + /// Gets or Sets HostEarlyJoinMinutes /// - [DataMember(Name = "isDraft", EmitDefaultValue = true)] - public bool IsDraft { get; set; } + /* + 60 + */ + [DataMember(Name = "hostEarlyJoinMinutes", EmitDefaultValue = false)] + public int HostEarlyJoinMinutes { get; set; } /// /// Gets or Sets ImageId @@ -136,10 +140,16 @@ public UpdateCalendarEventRequest(string title = default, DateTime startsAt = de public string ImageId { get; set; } /// - /// Gets or Sets RoleIds + /// Gets or Sets IsDraft /// - [DataMember(Name = "roleIds", EmitDefaultValue = false)] - public List RoleIds { get; set; } + [DataMember(Name = "isDraft", EmitDefaultValue = true)] + public bool IsDraft { get; set; } + + /// + /// Gets or Sets Languages + /// + [DataMember(Name = "languages", EmitDefaultValue = false)] + public List Languages { get; set; } /// /// Gets or Sets ParentId @@ -154,10 +164,10 @@ public UpdateCalendarEventRequest(string title = default, DateTime startsAt = de public List Platforms { get; set; } /// - /// Gets or Sets Languages + /// Gets or Sets RoleIds /// - [DataMember(Name = "languages", EmitDefaultValue = false)] - public List Languages { get; set; } + [DataMember(Name = "roleIds", EmitDefaultValue = false)] + public List RoleIds { get; set; } /// /// Send notification to group members. @@ -170,37 +180,27 @@ public UpdateCalendarEventRequest(string title = default, DateTime startsAt = de public bool SendCreationNotification { get; set; } /// - /// Gets or Sets Featured - /// - [DataMember(Name = "featured", EmitDefaultValue = true)] - public bool Featured { get; set; } - - /// - /// Gets or Sets HostEarlyJoinMinutes + /// Time the vent starts at /// - /* - 60 - */ - [DataMember(Name = "hostEarlyJoinMinutes", EmitDefaultValue = false)] - public int HostEarlyJoinMinutes { get; set; } + /// Time the vent starts at + [DataMember(Name = "startsAt", EmitDefaultValue = false)] + public DateTime StartsAt { get; set; } /// - /// Gets or Sets GuestEarlyJoinMinutes + /// Gets or Sets Tags /// - /* - 5 - */ - [DataMember(Name = "guestEarlyJoinMinutes", EmitDefaultValue = false)] - public int GuestEarlyJoinMinutes { get; set; } + [DataMember(Name = "tags", EmitDefaultValue = false)] + public List Tags { get; set; } /// - /// Gets or Sets CloseInstanceAfterEndMinutes + /// Event title /// + /// Event title /* - 5 + Performance Event! */ - [DataMember(Name = "closeInstanceAfterEndMinutes", EmitDefaultValue = false)] - public int CloseInstanceAfterEndMinutes { get; set; } + [DataMember(Name = "title", EmitDefaultValue = false)] + public string Title { get; set; } /// /// Gets or Sets UsesInstanceOverflow @@ -219,23 +219,23 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UpdateCalendarEventRequest {\n"); - sb.Append(" Title: ").Append(Title).Append("\n"); - sb.Append(" StartsAt: ").Append(StartsAt).Append("\n"); + sb.Append(" Category: ").Append(Category).Append("\n"); + sb.Append(" CloseInstanceAfterEndMinutes: ").Append(CloseInstanceAfterEndMinutes).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" EndsAt: ").Append(EndsAt).Append("\n"); - sb.Append(" Category: ").Append(Category).Append("\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" IsDraft: ").Append(IsDraft).Append("\n"); + sb.Append(" Featured: ").Append(Featured).Append("\n"); + sb.Append(" GuestEarlyJoinMinutes: ").Append(GuestEarlyJoinMinutes).Append("\n"); + sb.Append(" HostEarlyJoinMinutes: ").Append(HostEarlyJoinMinutes).Append("\n"); sb.Append(" ImageId: ").Append(ImageId).Append("\n"); - sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); + sb.Append(" IsDraft: ").Append(IsDraft).Append("\n"); + sb.Append(" Languages: ").Append(Languages).Append("\n"); sb.Append(" ParentId: ").Append(ParentId).Append("\n"); sb.Append(" Platforms: ").Append(Platforms).Append("\n"); - sb.Append(" Languages: ").Append(Languages).Append("\n"); + sb.Append(" RoleIds: ").Append(RoleIds).Append("\n"); sb.Append(" SendCreationNotification: ").Append(SendCreationNotification).Append("\n"); - sb.Append(" Featured: ").Append(Featured).Append("\n"); - sb.Append(" HostEarlyJoinMinutes: ").Append(HostEarlyJoinMinutes).Append("\n"); - sb.Append(" GuestEarlyJoinMinutes: ").Append(GuestEarlyJoinMinutes).Append("\n"); - sb.Append(" CloseInstanceAfterEndMinutes: ").Append(CloseInstanceAfterEndMinutes).Append("\n"); + sb.Append(" StartsAt: ").Append(StartsAt).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append(" UsesInstanceOverflow: ").Append(UsesInstanceOverflow).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -273,14 +273,13 @@ public bool Equals(UpdateCalendarEventRequest input) } return ( - this.Title == input.Title || - (this.Title != null && - this.Title.Equals(input.Title)) + this.Category == input.Category || + (this.Category != null && + this.Category.Equals(input.Category)) ) && ( - this.StartsAt == input.StartsAt || - (this.StartsAt != null && - this.StartsAt.Equals(input.StartsAt)) + this.CloseInstanceAfterEndMinutes == input.CloseInstanceAfterEndMinutes || + this.CloseInstanceAfterEndMinutes.Equals(input.CloseInstanceAfterEndMinutes) ) && ( this.Description == input.Description || @@ -293,19 +292,16 @@ public bool Equals(UpdateCalendarEventRequest input) this.EndsAt.Equals(input.EndsAt)) ) && ( - this.Category == input.Category || - (this.Category != null && - this.Category.Equals(input.Category)) + this.Featured == input.Featured || + this.Featured.Equals(input.Featured) ) && ( - this.Tags == input.Tags || - this.Tags != null && - input.Tags != null && - this.Tags.SequenceEqual(input.Tags) + this.GuestEarlyJoinMinutes == input.GuestEarlyJoinMinutes || + this.GuestEarlyJoinMinutes.Equals(input.GuestEarlyJoinMinutes) ) && ( - this.IsDraft == input.IsDraft || - this.IsDraft.Equals(input.IsDraft) + this.HostEarlyJoinMinutes == input.HostEarlyJoinMinutes || + this.HostEarlyJoinMinutes.Equals(input.HostEarlyJoinMinutes) ) && ( this.ImageId == input.ImageId || @@ -313,10 +309,14 @@ public bool Equals(UpdateCalendarEventRequest input) this.ImageId.Equals(input.ImageId)) ) && ( - this.RoleIds == input.RoleIds || - this.RoleIds != null && - input.RoleIds != null && - this.RoleIds.SequenceEqual(input.RoleIds) + this.IsDraft == input.IsDraft || + this.IsDraft.Equals(input.IsDraft) + ) && + ( + this.Languages == input.Languages || + this.Languages != null && + input.Languages != null && + this.Languages.SequenceEqual(input.Languages) ) && ( this.ParentId == input.ParentId || @@ -330,30 +330,30 @@ public bool Equals(UpdateCalendarEventRequest input) this.Platforms.SequenceEqual(input.Platforms) ) && ( - this.Languages == input.Languages || - this.Languages != null && - input.Languages != null && - this.Languages.SequenceEqual(input.Languages) + this.RoleIds == input.RoleIds || + this.RoleIds != null && + input.RoleIds != null && + this.RoleIds.SequenceEqual(input.RoleIds) ) && ( this.SendCreationNotification == input.SendCreationNotification || this.SendCreationNotification.Equals(input.SendCreationNotification) ) && ( - this.Featured == input.Featured || - this.Featured.Equals(input.Featured) - ) && - ( - this.HostEarlyJoinMinutes == input.HostEarlyJoinMinutes || - this.HostEarlyJoinMinutes.Equals(input.HostEarlyJoinMinutes) + this.StartsAt == input.StartsAt || + (this.StartsAt != null && + this.StartsAt.Equals(input.StartsAt)) ) && ( - this.GuestEarlyJoinMinutes == input.GuestEarlyJoinMinutes || - this.GuestEarlyJoinMinutes.Equals(input.GuestEarlyJoinMinutes) + this.Tags == input.Tags || + this.Tags != null && + input.Tags != null && + this.Tags.SequenceEqual(input.Tags) ) && ( - this.CloseInstanceAfterEndMinutes == input.CloseInstanceAfterEndMinutes || - this.CloseInstanceAfterEndMinutes.Equals(input.CloseInstanceAfterEndMinutes) + this.Title == input.Title || + (this.Title != null && + this.Title.Equals(input.Title)) ) && ( this.UsesInstanceOverflow == input.UsesInstanceOverflow || @@ -370,14 +370,11 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Title != null) - { - hashCode = (hashCode * 59) + this.Title.GetHashCode(); - } - if (this.StartsAt != null) + if (this.Category != null) { - hashCode = (hashCode * 59) + this.StartsAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Category.GetHashCode(); } + hashCode = (hashCode * 59) + this.CloseInstanceAfterEndMinutes.GetHashCode(); if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); @@ -386,22 +383,17 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.EndsAt.GetHashCode(); } - if (this.Category != null) - { - hashCode = (hashCode * 59) + this.Category.GetHashCode(); - } - if (this.Tags != null) - { - hashCode = (hashCode * 59) + this.Tags.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsDraft.GetHashCode(); + hashCode = (hashCode * 59) + this.Featured.GetHashCode(); + hashCode = (hashCode * 59) + this.GuestEarlyJoinMinutes.GetHashCode(); + hashCode = (hashCode * 59) + this.HostEarlyJoinMinutes.GetHashCode(); if (this.ImageId != null) { hashCode = (hashCode * 59) + this.ImageId.GetHashCode(); } - if (this.RoleIds != null) + hashCode = (hashCode * 59) + this.IsDraft.GetHashCode(); + if (this.Languages != null) { - hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); + hashCode = (hashCode * 59) + this.Languages.GetHashCode(); } if (this.ParentId != null) { @@ -411,15 +403,23 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Platforms.GetHashCode(); } - if (this.Languages != null) + if (this.RoleIds != null) { - hashCode = (hashCode * 59) + this.Languages.GetHashCode(); + hashCode = (hashCode * 59) + this.RoleIds.GetHashCode(); } hashCode = (hashCode * 59) + this.SendCreationNotification.GetHashCode(); - hashCode = (hashCode * 59) + this.Featured.GetHashCode(); - hashCode = (hashCode * 59) + this.HostEarlyJoinMinutes.GetHashCode(); - hashCode = (hashCode * 59) + this.GuestEarlyJoinMinutes.GetHashCode(); - hashCode = (hashCode * 59) + this.CloseInstanceAfterEndMinutes.GetHashCode(); + if (this.StartsAt != null) + { + hashCode = (hashCode * 59) + this.StartsAt.GetHashCode(); + } + if (this.Tags != null) + { + hashCode = (hashCode * 59) + this.Tags.GetHashCode(); + } + if (this.Title != null) + { + hashCode = (hashCode * 59) + this.Title.GetHashCode(); + } hashCode = (hashCode * 59) + this.UsesInstanceOverflow.GetHashCode(); return hashCode; } @@ -432,18 +432,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Title (string) minLength - if (this.Title != null && this.Title.Length < 1) - { - yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); - } - // Description (string) minLength if (this.Description != null && this.Description.Length < 1) { yield return new ValidationResult("Invalid value for Description, length must be greater than 1.", new [] { "Description" }); } + // Title (string) minLength + if (this.Title != null && this.Title.Length < 1) + { + yield return new ValidationResult("Invalid value for Title, length must be greater than 1.", new [] { "Title" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/UpdateFavoriteGroupRequest.cs b/src/VRChat.API/Model/UpdateFavoriteGroupRequest.cs index a3f4e489..6d8055fc 100644 --- a/src/VRChat.API/Model/UpdateFavoriteGroupRequest.cs +++ b/src/VRChat.API/Model/UpdateFavoriteGroupRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -42,13 +42,13 @@ public partial class UpdateFavoriteGroupRequest : IEquatable class. /// /// displayName. - /// visibility. /// Tags on FavoriteGroups are believed to do nothing.. - public UpdateFavoriteGroupRequest(string displayName = default, FavoriteGroupVisibility? visibility = default, List tags = default) + /// visibility. + public UpdateFavoriteGroupRequest(string displayName = default, List tags = default, FavoriteGroupVisibility? visibility = default) { this.DisplayName = displayName; - this.Visibility = visibility; this.Tags = tags; + this.Visibility = visibility; } /// @@ -73,8 +73,8 @@ public override string ToString() StringBuilder sb = new StringBuilder(); sb.Append("class UpdateFavoriteGroupRequest {\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); - sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -115,15 +115,15 @@ public bool Equals(UpdateFavoriteGroupRequest input) (this.DisplayName != null && this.DisplayName.Equals(input.DisplayName)) ) && - ( - this.Visibility == input.Visibility || - this.Visibility.Equals(input.Visibility) - ) && ( this.Tags == input.Tags || this.Tags != null && input.Tags != null && this.Tags.SequenceEqual(input.Tags) + ) && + ( + this.Visibility == input.Visibility || + this.Visibility.Equals(input.Visibility) ); } @@ -140,11 +140,11 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } - hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); if (this.Tags != null) { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); } + hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/UpdateGroupGalleryRequest.cs b/src/VRChat.API/Model/UpdateGroupGalleryRequest.cs index 0d17c3b6..210051da 100644 --- a/src/VRChat.API/Model/UpdateGroupGalleryRequest.cs +++ b/src/VRChat.API/Model/UpdateGroupGalleryRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,34 +35,24 @@ public partial class UpdateGroupGalleryRequest : IEquatable /// Initializes a new instance of the class. /// - /// Name of the gallery.. /// Description of the gallery.. /// Whether the gallery is members only. (default to false). - /// . - /// . + /// Name of the gallery.. /// . /// . - public UpdateGroupGalleryRequest(string name = default, string description = default, bool membersOnly = false, List roleIdsToView = default, List roleIdsToSubmit = default, List roleIdsToAutoApprove = default, List roleIdsToManage = default) + /// . + /// . + public UpdateGroupGalleryRequest(string description = default, bool membersOnly = false, string name = default, List roleIdsToAutoApprove = default, List roleIdsToManage = default, List roleIdsToSubmit = default, List roleIdsToView = default) { - this.Name = name; this.Description = description; this.MembersOnly = membersOnly; - this.RoleIdsToView = roleIdsToView; - this.RoleIdsToSubmit = roleIdsToSubmit; + this.Name = name; this.RoleIdsToAutoApprove = roleIdsToAutoApprove; this.RoleIdsToManage = roleIdsToManage; + this.RoleIdsToSubmit = roleIdsToSubmit; + this.RoleIdsToView = roleIdsToView; } - /// - /// Name of the gallery. - /// - /// Name of the gallery. - /* - Example Gallery - */ - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } - /// /// Description of the gallery. /// @@ -83,33 +73,43 @@ public UpdateGroupGalleryRequest(string name = default, string description = def [DataMember(Name = "membersOnly", EmitDefaultValue = true)] public bool MembersOnly { get; set; } + /// + /// Name of the gallery. + /// + /// Name of the gallery. + /* + Example Gallery + */ + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } + /// /// /// /// - [DataMember(Name = "roleIdsToView", EmitDefaultValue = true)] - public List RoleIdsToView { get; set; } + [DataMember(Name = "roleIdsToAutoApprove", EmitDefaultValue = true)] + public List RoleIdsToAutoApprove { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToSubmit", EmitDefaultValue = true)] - public List RoleIdsToSubmit { get; set; } + [DataMember(Name = "roleIdsToManage", EmitDefaultValue = true)] + public List RoleIdsToManage { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToAutoApprove", EmitDefaultValue = true)] - public List RoleIdsToAutoApprove { get; set; } + [DataMember(Name = "roleIdsToSubmit", EmitDefaultValue = true)] + public List RoleIdsToSubmit { get; set; } /// /// /// /// - [DataMember(Name = "roleIdsToManage", EmitDefaultValue = true)] - public List RoleIdsToManage { get; set; } + [DataMember(Name = "roleIdsToView", EmitDefaultValue = true)] + public List RoleIdsToView { get; set; } /// /// Returns the string presentation of the object @@ -119,13 +119,13 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UpdateGroupGalleryRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" MembersOnly: ").Append(MembersOnly).Append("\n"); - sb.Append(" RoleIdsToView: ").Append(RoleIdsToView).Append("\n"); - sb.Append(" RoleIdsToSubmit: ").Append(RoleIdsToSubmit).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" RoleIdsToAutoApprove: ").Append(RoleIdsToAutoApprove).Append("\n"); sb.Append(" RoleIdsToManage: ").Append(RoleIdsToManage).Append("\n"); + sb.Append(" RoleIdsToSubmit: ").Append(RoleIdsToSubmit).Append("\n"); + sb.Append(" RoleIdsToView: ").Append(RoleIdsToView).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -161,11 +161,6 @@ public bool Equals(UpdateGroupGalleryRequest input) return false; } return - ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && ( this.Description == input.Description || (this.Description != null && @@ -176,16 +171,9 @@ public bool Equals(UpdateGroupGalleryRequest input) this.MembersOnly.Equals(input.MembersOnly) ) && ( - this.RoleIdsToView == input.RoleIdsToView || - this.RoleIdsToView != null && - input.RoleIdsToView != null && - this.RoleIdsToView.SequenceEqual(input.RoleIdsToView) - ) && - ( - this.RoleIdsToSubmit == input.RoleIdsToSubmit || - this.RoleIdsToSubmit != null && - input.RoleIdsToSubmit != null && - this.RoleIdsToSubmit.SequenceEqual(input.RoleIdsToSubmit) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.RoleIdsToAutoApprove == input.RoleIdsToAutoApprove || @@ -198,6 +186,18 @@ public bool Equals(UpdateGroupGalleryRequest input) this.RoleIdsToManage != null && input.RoleIdsToManage != null && this.RoleIdsToManage.SequenceEqual(input.RoleIdsToManage) + ) && + ( + this.RoleIdsToSubmit == input.RoleIdsToSubmit || + this.RoleIdsToSubmit != null && + input.RoleIdsToSubmit != null && + this.RoleIdsToSubmit.SequenceEqual(input.RoleIdsToSubmit) + ) && + ( + this.RoleIdsToView == input.RoleIdsToView || + this.RoleIdsToView != null && + input.RoleIdsToView != null && + this.RoleIdsToView.SequenceEqual(input.RoleIdsToView) ); } @@ -210,22 +210,14 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } hashCode = (hashCode * 59) + this.MembersOnly.GetHashCode(); - if (this.RoleIdsToView != null) - { - hashCode = (hashCode * 59) + this.RoleIdsToView.GetHashCode(); - } - if (this.RoleIdsToSubmit != null) + if (this.Name != null) { - hashCode = (hashCode * 59) + this.RoleIdsToSubmit.GetHashCode(); + hashCode = (hashCode * 59) + this.Name.GetHashCode(); } if (this.RoleIdsToAutoApprove != null) { @@ -235,6 +227,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.RoleIdsToManage.GetHashCode(); } + if (this.RoleIdsToSubmit != null) + { + hashCode = (hashCode * 59) + this.RoleIdsToSubmit.GetHashCode(); + } + if (this.RoleIdsToView != null) + { + hashCode = (hashCode * 59) + this.RoleIdsToView.GetHashCode(); + } return hashCode; } } @@ -246,18 +246,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { - // Name (string) minLength - if (this.Name != null && this.Name.Length < 1) - { - yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); - } - // Description (string) minLength if (this.Description != null && this.Description.Length < 0) { yield return new ValidationResult("Invalid value for Description, length must be greater than 0.", new [] { "Description" }); } + // Name (string) minLength + if (this.Name != null && this.Name.Length < 1) + { + yield return new ValidationResult("Invalid value for Name, length must be greater than 1.", new [] { "Name" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/UpdateGroupMemberRequest.cs b/src/VRChat.API/Model/UpdateGroupMemberRequest.cs index 07d91b1d..b6cb2354 100644 --- a/src/VRChat.API/Model/UpdateGroupMemberRequest.cs +++ b/src/VRChat.API/Model/UpdateGroupMemberRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,16 +41,16 @@ public partial class UpdateGroupMemberRequest : IEquatable /// Initializes a new instance of the class. /// - /// visibility. /// isSubscribedToAnnouncements. /// isSubscribedToEventAnnouncements. /// managerNotes. - public UpdateGroupMemberRequest(GroupUserVisibility? visibility = default, bool isSubscribedToAnnouncements = default, bool isSubscribedToEventAnnouncements = default, string managerNotes = default) + /// visibility. + public UpdateGroupMemberRequest(bool isSubscribedToAnnouncements = default, bool isSubscribedToEventAnnouncements = default, string managerNotes = default, GroupUserVisibility? visibility = default) { - this.Visibility = visibility; this.IsSubscribedToAnnouncements = isSubscribedToAnnouncements; this.IsSubscribedToEventAnnouncements = isSubscribedToEventAnnouncements; this.ManagerNotes = managerNotes; + this.Visibility = visibility; } /// @@ -79,10 +79,10 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UpdateGroupMemberRequest {\n"); - sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append(" IsSubscribedToAnnouncements: ").Append(IsSubscribedToAnnouncements).Append("\n"); sb.Append(" IsSubscribedToEventAnnouncements: ").Append(IsSubscribedToEventAnnouncements).Append("\n"); sb.Append(" ManagerNotes: ").Append(ManagerNotes).Append("\n"); + sb.Append(" Visibility: ").Append(Visibility).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -118,10 +118,6 @@ public bool Equals(UpdateGroupMemberRequest input) return false; } return - ( - this.Visibility == input.Visibility || - this.Visibility.Equals(input.Visibility) - ) && ( this.IsSubscribedToAnnouncements == input.IsSubscribedToAnnouncements || this.IsSubscribedToAnnouncements.Equals(input.IsSubscribedToAnnouncements) @@ -134,6 +130,10 @@ public bool Equals(UpdateGroupMemberRequest input) this.ManagerNotes == input.ManagerNotes || (this.ManagerNotes != null && this.ManagerNotes.Equals(input.ManagerNotes)) + ) && + ( + this.Visibility == input.Visibility || + this.Visibility.Equals(input.Visibility) ); } @@ -146,13 +146,13 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); hashCode = (hashCode * 59) + this.IsSubscribedToAnnouncements.GetHashCode(); hashCode = (hashCode * 59) + this.IsSubscribedToEventAnnouncements.GetHashCode(); if (this.ManagerNotes != null) { hashCode = (hashCode * 59) + this.ManagerNotes.GetHashCode(); } + hashCode = (hashCode * 59) + this.Visibility.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/UpdateGroupRepresentationRequest.cs b/src/VRChat.API/Model/UpdateGroupRepresentationRequest.cs index 459ab3b9..af8cad87 100644 --- a/src/VRChat.API/Model/UpdateGroupRepresentationRequest.cs +++ b/src/VRChat.API/Model/UpdateGroupRepresentationRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UpdateGroupRequest.cs b/src/VRChat.API/Model/UpdateGroupRequest.cs index 5c0e66e1..450c2422 100644 --- a/src/VRChat.API/Model/UpdateGroupRequest.cs +++ b/src/VRChat.API/Model/UpdateGroupRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,41 +41,35 @@ public partial class UpdateGroupRequest : IEquatable, IValid /// /// Initializes a new instance of the class. /// - /// name. - /// shortCode. + /// bannerId. /// description. - /// joinState. /// iconId. - /// bannerId. + /// joinState. /// 3 letter language code. /// links. + /// name. /// rules. + /// shortCode. /// . - public UpdateGroupRequest(string name = default, string shortCode = default, string description = default, GroupJoinState? joinState = default, string iconId = default, string bannerId = default, List languages = default, List links = default, string rules = default, List tags = default) + public UpdateGroupRequest(string bannerId = default, string description = default, string iconId = default, GroupJoinState? joinState = default, List languages = default, List links = default, string name = default, string rules = default, string shortCode = default, List tags = default) { - this.Name = name; - this.ShortCode = shortCode; + this.BannerId = bannerId; this.Description = description; - this.JoinState = joinState; this.IconId = iconId; - this.BannerId = bannerId; + this.JoinState = joinState; this.Languages = languages; this.Links = links; + this.Name = name; this.Rules = rules; + this.ShortCode = shortCode; this.Tags = tags; } /// - /// Gets or Sets Name - /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } - - /// - /// Gets or Sets ShortCode + /// Gets or Sets BannerId /// - [DataMember(Name = "shortCode", EmitDefaultValue = false)] - public string ShortCode { get; set; } + [DataMember(Name = "bannerId", EmitDefaultValue = true)] + public string BannerId { get; set; } /// /// Gets or Sets Description @@ -89,12 +83,6 @@ public UpdateGroupRequest(string name = default, string shortCode = default, str [DataMember(Name = "iconId", EmitDefaultValue = true)] public string IconId { get; set; } - /// - /// Gets or Sets BannerId - /// - [DataMember(Name = "bannerId", EmitDefaultValue = true)] - public string BannerId { get; set; } - /// /// 3 letter language code /// @@ -108,12 +96,24 @@ public UpdateGroupRequest(string name = default, string shortCode = default, str [DataMember(Name = "links", EmitDefaultValue = false)] public List Links { get; set; } + /// + /// Gets or Sets Name + /// + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } + /// /// Gets or Sets Rules /// [DataMember(Name = "rules", EmitDefaultValue = false)] public string Rules { get; set; } + /// + /// Gets or Sets ShortCode + /// + [DataMember(Name = "shortCode", EmitDefaultValue = false)] + public string ShortCode { get; set; } + /// /// /// @@ -129,15 +129,15 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UpdateGroupRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); + sb.Append(" BannerId: ").Append(BannerId).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); - sb.Append(" JoinState: ").Append(JoinState).Append("\n"); sb.Append(" IconId: ").Append(IconId).Append("\n"); - sb.Append(" BannerId: ").Append(BannerId).Append("\n"); + sb.Append(" JoinState: ").Append(JoinState).Append("\n"); sb.Append(" Languages: ").Append(Languages).Append("\n"); sb.Append(" Links: ").Append(Links).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Rules: ").Append(Rules).Append("\n"); + sb.Append(" ShortCode: ").Append(ShortCode).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -175,33 +175,23 @@ public bool Equals(UpdateGroupRequest input) } return ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && - ( - this.ShortCode == input.ShortCode || - (this.ShortCode != null && - this.ShortCode.Equals(input.ShortCode)) + this.BannerId == input.BannerId || + (this.BannerId != null && + this.BannerId.Equals(input.BannerId)) ) && ( this.Description == input.Description || (this.Description != null && this.Description.Equals(input.Description)) ) && - ( - this.JoinState == input.JoinState || - this.JoinState.Equals(input.JoinState) - ) && ( this.IconId == input.IconId || (this.IconId != null && this.IconId.Equals(input.IconId)) ) && ( - this.BannerId == input.BannerId || - (this.BannerId != null && - this.BannerId.Equals(input.BannerId)) + this.JoinState == input.JoinState || + this.JoinState.Equals(input.JoinState) ) && ( this.Languages == input.Languages || @@ -215,11 +205,21 @@ public bool Equals(UpdateGroupRequest input) input.Links != null && this.Links.SequenceEqual(input.Links) ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && ( this.Rules == input.Rules || (this.Rules != null && this.Rules.Equals(input.Rules)) ) && + ( + this.ShortCode == input.ShortCode || + (this.ShortCode != null && + this.ShortCode.Equals(input.ShortCode)) + ) && ( this.Tags == input.Tags || this.Tags != null && @@ -237,27 +237,19 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } - if (this.ShortCode != null) + if (this.BannerId != null) { - hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - hashCode = (hashCode * 59) + this.JoinState.GetHashCode(); if (this.IconId != null) { hashCode = (hashCode * 59) + this.IconId.GetHashCode(); } - if (this.BannerId != null) - { - hashCode = (hashCode * 59) + this.BannerId.GetHashCode(); - } + hashCode = (hashCode * 59) + this.JoinState.GetHashCode(); if (this.Languages != null) { hashCode = (hashCode * 59) + this.Languages.GetHashCode(); @@ -266,10 +258,18 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Links.GetHashCode(); } + if (this.Name != null) + { + hashCode = (hashCode * 59) + this.Name.GetHashCode(); + } if (this.Rules != null) { hashCode = (hashCode * 59) + this.Rules.GetHashCode(); } + if (this.ShortCode != null) + { + hashCode = (hashCode * 59) + this.ShortCode.GetHashCode(); + } if (this.Tags != null) { hashCode = (hashCode * 59) + this.Tags.GetHashCode(); @@ -285,6 +285,18 @@ public override int GetHashCode() /// Validation Result IEnumerable IValidatableObject.Validate(ValidationContext validationContext) { + // Description (string) maxLength + if (this.Description != null && this.Description.Length > 250) + { + yield return new ValidationResult("Invalid value for Description, length must be less than 250.", new [] { "Description" }); + } + + // Description (string) minLength + if (this.Description != null && this.Description.Length < 0) + { + yield return new ValidationResult("Invalid value for Description, length must be greater than 0.", new [] { "Description" }); + } + // Name (string) maxLength if (this.Name != null && this.Name.Length > 64) { @@ -309,18 +321,6 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for ShortCode, length must be greater than 3.", new [] { "ShortCode" }); } - // Description (string) maxLength - if (this.Description != null && this.Description.Length > 250) - { - yield return new ValidationResult("Invalid value for Description, length must be less than 250.", new [] { "Description" }); - } - - // Description (string) minLength - if (this.Description != null && this.Description.Length < 0) - { - yield return new ValidationResult("Invalid value for Description, length must be greater than 0.", new [] { "Description" }); - } - yield break; } } diff --git a/src/VRChat.API/Model/UpdateGroupRoleRequest.cs b/src/VRChat.API/Model/UpdateGroupRoleRequest.cs index 7ed713e6..811fe97e 100644 --- a/src/VRChat.API/Model/UpdateGroupRoleRequest.cs +++ b/src/VRChat.API/Model/UpdateGroupRoleRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,26 +35,20 @@ public partial class UpdateGroupRoleRequest : IEquatable /// /// Initializes a new instance of the class. /// - /// name. /// description. /// isSelfAssignable (default to false). - /// permissions. + /// name. /// order. - public UpdateGroupRoleRequest(string name = default, string description = default, bool isSelfAssignable = false, List permissions = default, int order = default) + /// permissions. + public UpdateGroupRoleRequest(string description = default, bool isSelfAssignable = false, string name = default, int order = default, List permissions = default) { - this.Name = name; this.Description = description; this.IsSelfAssignable = isSelfAssignable; - this.Permissions = permissions; + this.Name = name; this.Order = order; + this.Permissions = permissions; } - /// - /// Gets or Sets Name - /// - [DataMember(Name = "name", EmitDefaultValue = false)] - public string Name { get; set; } - /// /// Gets or Sets Description /// @@ -68,10 +62,10 @@ public UpdateGroupRoleRequest(string name = default, string description = defaul public bool IsSelfAssignable { get; set; } /// - /// Gets or Sets Permissions + /// Gets or Sets Name /// - [DataMember(Name = "permissions", EmitDefaultValue = false)] - public List Permissions { get; set; } + [DataMember(Name = "name", EmitDefaultValue = false)] + public string Name { get; set; } /// /// Gets or Sets Order @@ -79,6 +73,12 @@ public UpdateGroupRoleRequest(string name = default, string description = defaul [DataMember(Name = "order", EmitDefaultValue = false)] public int Order { get; set; } + /// + /// Gets or Sets Permissions + /// + [DataMember(Name = "permissions", EmitDefaultValue = false)] + public List Permissions { get; set; } + /// /// Returns the string presentation of the object /// @@ -87,11 +87,11 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UpdateGroupRoleRequest {\n"); - sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); sb.Append(" IsSelfAssignable: ").Append(IsSelfAssignable).Append("\n"); - sb.Append(" Permissions: ").Append(Permissions).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" Order: ").Append(Order).Append("\n"); + sb.Append(" Permissions: ").Append(Permissions).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -127,11 +127,6 @@ public bool Equals(UpdateGroupRoleRequest input) return false; } return - ( - this.Name == input.Name || - (this.Name != null && - this.Name.Equals(input.Name)) - ) && ( this.Description == input.Description || (this.Description != null && @@ -142,14 +137,19 @@ public bool Equals(UpdateGroupRoleRequest input) this.IsSelfAssignable.Equals(input.IsSelfAssignable) ) && ( - this.Permissions == input.Permissions || - this.Permissions != null && - input.Permissions != null && - this.Permissions.SequenceEqual(input.Permissions) + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) ) && ( this.Order == input.Order || this.Order.Equals(input.Order) + ) && + ( + this.Permissions == input.Permissions || + this.Permissions != null && + input.Permissions != null && + this.Permissions.SequenceEqual(input.Permissions) ); } @@ -162,20 +162,20 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Name != null) - { - hashCode = (hashCode * 59) + this.Name.GetHashCode(); - } if (this.Description != null) { hashCode = (hashCode * 59) + this.Description.GetHashCode(); } hashCode = (hashCode * 59) + this.IsSelfAssignable.GetHashCode(); + if (this.Name != null) + { + hashCode = (hashCode * 59) + this.Name.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Order.GetHashCode(); if (this.Permissions != null) { hashCode = (hashCode * 59) + this.Permissions.GetHashCode(); } - hashCode = (hashCode * 59) + this.Order.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/UpdateInventoryItemRequest.cs b/src/VRChat.API/Model/UpdateInventoryItemRequest.cs index 99f4c711..7ff84804 100644 --- a/src/VRChat.API/Model/UpdateInventoryItemRequest.cs +++ b/src/VRChat.API/Model/UpdateInventoryItemRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UpdateInviteMessageRequest.cs b/src/VRChat.API/Model/UpdateInviteMessageRequest.cs index ef7f7d8b..98ddb2ac 100644 --- a/src/VRChat.API/Model/UpdateInviteMessageRequest.cs +++ b/src/VRChat.API/Model/UpdateInviteMessageRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UpdateTiliaTOSRequest.cs b/src/VRChat.API/Model/UpdateTiliaTOSRequest.cs index f6498229..81522a2a 100644 --- a/src/VRChat.API/Model/UpdateTiliaTOSRequest.cs +++ b/src/VRChat.API/Model/UpdateTiliaTOSRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UpdateUserBadgeRequest.cs b/src/VRChat.API/Model/UpdateUserBadgeRequest.cs index eaaea41e..6b1cd005 100644 --- a/src/VRChat.API/Model/UpdateUserBadgeRequest.cs +++ b/src/VRChat.API/Model/UpdateUserBadgeRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UpdateUserNoteRequest.cs b/src/VRChat.API/Model/UpdateUserNoteRequest.cs index 9fe24915..7a1db5ac 100644 --- a/src/VRChat.API/Model/UpdateUserNoteRequest.cs +++ b/src/VRChat.API/Model/UpdateUserNoteRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,24 +40,30 @@ protected UpdateUserNoteRequest() { } /// /// Initializes a new instance of the class. /// - /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// note (required). - public UpdateUserNoteRequest(string targetUserId = default, string note = default) + /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). + public UpdateUserNoteRequest(string note = default, string targetUserId = default) { - // to ensure "targetUserId" is required (not null) - if (targetUserId == null) - { - throw new ArgumentNullException("targetUserId is a required property for UpdateUserNoteRequest and cannot be null"); - } - this.TargetUserId = targetUserId; // to ensure "note" is required (not null) if (note == null) { throw new ArgumentNullException("note is a required property for UpdateUserNoteRequest and cannot be null"); } this.Note = note; + // to ensure "targetUserId" is required (not null) + if (targetUserId == null) + { + throw new ArgumentNullException("targetUserId is a required property for UpdateUserNoteRequest and cannot be null"); + } + this.TargetUserId = targetUserId; } + /// + /// Gets or Sets Note + /// + [DataMember(Name = "note", IsRequired = true, EmitDefaultValue = true)] + public string Note { get; set; } + /// /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. /// @@ -68,12 +74,6 @@ public UpdateUserNoteRequest(string targetUserId = default, string note = defaul [DataMember(Name = "targetUserId", IsRequired = true, EmitDefaultValue = true)] public string TargetUserId { get; set; } - /// - /// Gets or Sets Note - /// - [DataMember(Name = "note", IsRequired = true, EmitDefaultValue = true)] - public string Note { get; set; } - /// /// Returns the string presentation of the object /// @@ -82,8 +82,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UpdateUserNoteRequest {\n"); - sb.Append(" TargetUserId: ").Append(TargetUserId).Append("\n"); sb.Append(" Note: ").Append(Note).Append("\n"); + sb.Append(" TargetUserId: ").Append(TargetUserId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -119,15 +119,15 @@ public bool Equals(UpdateUserNoteRequest input) return false; } return - ( - this.TargetUserId == input.TargetUserId || - (this.TargetUserId != null && - this.TargetUserId.Equals(input.TargetUserId)) - ) && ( this.Note == input.Note || (this.Note != null && this.Note.Equals(input.Note)) + ) && + ( + this.TargetUserId == input.TargetUserId || + (this.TargetUserId != null && + this.TargetUserId.Equals(input.TargetUserId)) ); } @@ -140,14 +140,14 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.TargetUserId != null) - { - hashCode = (hashCode * 59) + this.TargetUserId.GetHashCode(); - } if (this.Note != null) { hashCode = (hashCode * 59) + this.Note.GetHashCode(); } + if (this.TargetUserId != null) + { + hashCode = (hashCode * 59) + this.TargetUserId.GetHashCode(); + } return hashCode; } } diff --git a/src/VRChat.API/Model/UpdateUserRequest.cs b/src/VRChat.API/Model/UpdateUserRequest.cs index a4b25215..db3f3ae8 100644 --- a/src/VRChat.API/Model/UpdateUserRequest.cs +++ b/src/VRChat.API/Model/UpdateUserRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -41,98 +41,93 @@ public partial class UpdateUserRequest : IEquatable, IValidat /// /// Initializes a new instance of the class. /// - /// email. - /// unsubscribe. - /// birthday. /// acceptedTOSVersion. - /// . - /// status. - /// statusDescription. /// bio. /// bioLinks. - /// pronouns. - /// isBoopingEnabled. - /// MUST be a valid VRChat /file/ url.. + /// birthday. /// These tags begin with `content_` and control content gating. + /// currentPassword. /// MUST specify currentPassword as well to change display name. - /// MUST specify currentPassword as well to revert display name. + /// email. + /// isBoopingEnabled. /// MUST specify currentPassword as well to change password. - /// currentPassword. - public UpdateUserRequest(string email = default, bool unsubscribe = default, DateOnly birthday = default, int acceptedTOSVersion = default, List tags = default, UserStatus? status = default, string statusDescription = default, string bio = default, List bioLinks = default, string pronouns = default, bool isBoopingEnabled = default, string userIcon = default, List contentFilters = default, string displayName = default, bool revertDisplayName = default, string password = default, string currentPassword = default) + /// pronouns. + /// MUST specify currentPassword as well to revert display name. + /// status. + /// statusDescription. + /// . + /// unsubscribe. + /// MUST be a valid VRChat /file/ url.. + public UpdateUserRequest(int acceptedTOSVersion = default, string bio = default, List bioLinks = default, DateOnly birthday = default, List contentFilters = default, string currentPassword = default, string displayName = default, string email = default, bool isBoopingEnabled = default, string password = default, string pronouns = default, bool revertDisplayName = default, UserStatus? status = default, string statusDescription = default, List tags = default, bool unsubscribe = default, string userIcon = default) { - this.Email = email; - this.Unsubscribe = unsubscribe; - this.Birthday = birthday; this.AcceptedTOSVersion = acceptedTOSVersion; - this.Tags = tags; - this.Status = status; - this.StatusDescription = statusDescription; this.Bio = bio; this.BioLinks = bioLinks; - this.Pronouns = pronouns; - this.IsBoopingEnabled = isBoopingEnabled; - this.UserIcon = userIcon; + this.Birthday = birthday; this.ContentFilters = contentFilters; + this.CurrentPassword = currentPassword; this.DisplayName = displayName; - this.RevertDisplayName = revertDisplayName; + this.Email = email; + this.IsBoopingEnabled = isBoopingEnabled; this.Password = password; - this.CurrentPassword = currentPassword; + this.Pronouns = pronouns; + this.RevertDisplayName = revertDisplayName; + this.Status = status; + this.StatusDescription = statusDescription; + this.Tags = tags; + this.Unsubscribe = unsubscribe; + this.UserIcon = userIcon; } /// - /// Gets or Sets Email - /// - [DataMember(Name = "email", EmitDefaultValue = false)] - public string Email { get; set; } - - /// - /// Gets or Sets Unsubscribe + /// Gets or Sets AcceptedTOSVersion /// - [DataMember(Name = "unsubscribe", EmitDefaultValue = true)] - public bool Unsubscribe { get; set; } + [DataMember(Name = "acceptedTOSVersion", EmitDefaultValue = false)] + public int AcceptedTOSVersion { get; set; } /// - /// Gets or Sets Birthday + /// Gets or Sets Bio /// - [DataMember(Name = "birthday", EmitDefaultValue = false)] - public DateOnly Birthday { get; set; } + [DataMember(Name = "bio", EmitDefaultValue = false)] + public string Bio { get; set; } /// - /// Gets or Sets AcceptedTOSVersion + /// Gets or Sets BioLinks /// - [DataMember(Name = "acceptedTOSVersion", EmitDefaultValue = false)] - public int AcceptedTOSVersion { get; set; } + [DataMember(Name = "bioLinks", EmitDefaultValue = false)] + public List BioLinks { get; set; } /// - /// + /// Gets or Sets Birthday /// - /// - [DataMember(Name = "tags", EmitDefaultValue = false)] - public List Tags { get; set; } + [DataMember(Name = "birthday", EmitDefaultValue = false)] + public DateOnly Birthday { get; set; } /// - /// Gets or Sets StatusDescription + /// These tags begin with `content_` and control content gating /// - [DataMember(Name = "statusDescription", EmitDefaultValue = false)] - public string StatusDescription { get; set; } + /// These tags begin with `content_` and control content gating + [DataMember(Name = "contentFilters", EmitDefaultValue = false)] + public List ContentFilters { get; set; } /// - /// Gets or Sets Bio + /// Gets or Sets CurrentPassword /// - [DataMember(Name = "bio", EmitDefaultValue = false)] - public string Bio { get; set; } + [DataMember(Name = "currentPassword", EmitDefaultValue = false)] + public string CurrentPassword { get; set; } /// - /// Gets or Sets BioLinks + /// MUST specify currentPassword as well to change display name /// - [DataMember(Name = "bioLinks", EmitDefaultValue = false)] - public List BioLinks { get; set; } + /// MUST specify currentPassword as well to change display name + [DataMember(Name = "displayName", EmitDefaultValue = false)] + public string DisplayName { get; set; } /// - /// Gets or Sets Pronouns + /// Gets or Sets Email /// - [DataMember(Name = "pronouns", EmitDefaultValue = false)] - public string Pronouns { get; set; } + [DataMember(Name = "email", EmitDefaultValue = false)] + public string Email { get; set; } /// /// Gets or Sets IsBoopingEnabled @@ -141,28 +136,17 @@ public UpdateUserRequest(string email = default, bool unsubscribe = default, Dat public bool IsBoopingEnabled { get; set; } /// - /// MUST be a valid VRChat /file/ url. - /// - /// MUST be a valid VRChat /file/ url. - /* - https://api.vrchat.cloud/api/1/file/file_76dc2964-0ce8-41df-b2e7-8edf994fee31/1 - */ - [DataMember(Name = "userIcon", EmitDefaultValue = false)] - public string UserIcon { get; set; } - - /// - /// These tags begin with `content_` and control content gating + /// MUST specify currentPassword as well to change password /// - /// These tags begin with `content_` and control content gating - [DataMember(Name = "contentFilters", EmitDefaultValue = false)] - public List ContentFilters { get; set; } + /// MUST specify currentPassword as well to change password + [DataMember(Name = "password", EmitDefaultValue = false)] + public string Password { get; set; } /// - /// MUST specify currentPassword as well to change display name + /// Gets or Sets Pronouns /// - /// MUST specify currentPassword as well to change display name - [DataMember(Name = "displayName", EmitDefaultValue = false)] - public string DisplayName { get; set; } + [DataMember(Name = "pronouns", EmitDefaultValue = false)] + public string Pronouns { get; set; } /// /// MUST specify currentPassword as well to revert display name @@ -172,17 +156,33 @@ public UpdateUserRequest(string email = default, bool unsubscribe = default, Dat public bool RevertDisplayName { get; set; } /// - /// MUST specify currentPassword as well to change password + /// Gets or Sets StatusDescription /// - /// MUST specify currentPassword as well to change password - [DataMember(Name = "password", EmitDefaultValue = false)] - public string Password { get; set; } + [DataMember(Name = "statusDescription", EmitDefaultValue = false)] + public string StatusDescription { get; set; } /// - /// Gets or Sets CurrentPassword + /// /// - [DataMember(Name = "currentPassword", EmitDefaultValue = false)] - public string CurrentPassword { get; set; } + /// + [DataMember(Name = "tags", EmitDefaultValue = false)] + public List Tags { get; set; } + + /// + /// Gets or Sets Unsubscribe + /// + [DataMember(Name = "unsubscribe", EmitDefaultValue = true)] + public bool Unsubscribe { get; set; } + + /// + /// MUST be a valid VRChat /file/ url. + /// + /// MUST be a valid VRChat /file/ url. + /* + https://api.vrchat.cloud/api/1/file/file_76dc2964-0ce8-41df-b2e7-8edf994fee31/1 + */ + [DataMember(Name = "userIcon", EmitDefaultValue = false)] + public string UserIcon { get; set; } /// /// Returns the string presentation of the object @@ -192,23 +192,23 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UpdateUserRequest {\n"); - sb.Append(" Email: ").Append(Email).Append("\n"); - sb.Append(" Unsubscribe: ").Append(Unsubscribe).Append("\n"); - sb.Append(" Birthday: ").Append(Birthday).Append("\n"); sb.Append(" AcceptedTOSVersion: ").Append(AcceptedTOSVersion).Append("\n"); - sb.Append(" Tags: ").Append(Tags).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); - sb.Append(" StatusDescription: ").Append(StatusDescription).Append("\n"); sb.Append(" Bio: ").Append(Bio).Append("\n"); sb.Append(" BioLinks: ").Append(BioLinks).Append("\n"); - sb.Append(" Pronouns: ").Append(Pronouns).Append("\n"); - sb.Append(" IsBoopingEnabled: ").Append(IsBoopingEnabled).Append("\n"); - sb.Append(" UserIcon: ").Append(UserIcon).Append("\n"); + sb.Append(" Birthday: ").Append(Birthday).Append("\n"); sb.Append(" ContentFilters: ").Append(ContentFilters).Append("\n"); + sb.Append(" CurrentPassword: ").Append(CurrentPassword).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); - sb.Append(" RevertDisplayName: ").Append(RevertDisplayName).Append("\n"); + sb.Append(" Email: ").Append(Email).Append("\n"); + sb.Append(" IsBoopingEnabled: ").Append(IsBoopingEnabled).Append("\n"); sb.Append(" Password: ").Append(Password).Append("\n"); - sb.Append(" CurrentPassword: ").Append(CurrentPassword).Append("\n"); + sb.Append(" Pronouns: ").Append(Pronouns).Append("\n"); + sb.Append(" RevertDisplayName: ").Append(RevertDisplayName).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" StatusDescription: ").Append(StatusDescription).Append("\n"); + sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" Unsubscribe: ").Append(Unsubscribe).Append("\n"); + sb.Append(" UserIcon: ").Append(UserIcon).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -245,13 +245,19 @@ public bool Equals(UpdateUserRequest input) } return ( - this.Email == input.Email || - (this.Email != null && - this.Email.Equals(input.Email)) + this.AcceptedTOSVersion == input.AcceptedTOSVersion || + this.AcceptedTOSVersion.Equals(input.AcceptedTOSVersion) ) && ( - this.Unsubscribe == input.Unsubscribe || - this.Unsubscribe.Equals(input.Unsubscribe) + this.Bio == input.Bio || + (this.Bio != null && + this.Bio.Equals(input.Bio)) + ) && + ( + this.BioLinks == input.BioLinks || + this.BioLinks != null && + input.BioLinks != null && + this.BioLinks.SequenceEqual(input.BioLinks) ) && ( this.Birthday == input.Birthday || @@ -259,34 +265,34 @@ public bool Equals(UpdateUserRequest input) this.Birthday.Equals(input.Birthday)) ) && ( - this.AcceptedTOSVersion == input.AcceptedTOSVersion || - this.AcceptedTOSVersion.Equals(input.AcceptedTOSVersion) + this.ContentFilters == input.ContentFilters || + this.ContentFilters != null && + input.ContentFilters != null && + this.ContentFilters.SequenceEqual(input.ContentFilters) ) && ( - this.Tags == input.Tags || - this.Tags != null && - input.Tags != null && - this.Tags.SequenceEqual(input.Tags) + this.CurrentPassword == input.CurrentPassword || + (this.CurrentPassword != null && + this.CurrentPassword.Equals(input.CurrentPassword)) ) && ( - this.Status == input.Status || - this.Status.Equals(input.Status) + this.DisplayName == input.DisplayName || + (this.DisplayName != null && + this.DisplayName.Equals(input.DisplayName)) ) && ( - this.StatusDescription == input.StatusDescription || - (this.StatusDescription != null && - this.StatusDescription.Equals(input.StatusDescription)) + this.Email == input.Email || + (this.Email != null && + this.Email.Equals(input.Email)) ) && ( - this.Bio == input.Bio || - (this.Bio != null && - this.Bio.Equals(input.Bio)) + this.IsBoopingEnabled == input.IsBoopingEnabled || + this.IsBoopingEnabled.Equals(input.IsBoopingEnabled) ) && ( - this.BioLinks == input.BioLinks || - this.BioLinks != null && - input.BioLinks != null && - this.BioLinks.SequenceEqual(input.BioLinks) + this.Password == input.Password || + (this.Password != null && + this.Password.Equals(input.Password)) ) && ( this.Pronouns == input.Pronouns || @@ -294,38 +300,32 @@ public bool Equals(UpdateUserRequest input) this.Pronouns.Equals(input.Pronouns)) ) && ( - this.IsBoopingEnabled == input.IsBoopingEnabled || - this.IsBoopingEnabled.Equals(input.IsBoopingEnabled) - ) && - ( - this.UserIcon == input.UserIcon || - (this.UserIcon != null && - this.UserIcon.Equals(input.UserIcon)) + this.RevertDisplayName == input.RevertDisplayName || + this.RevertDisplayName.Equals(input.RevertDisplayName) ) && ( - this.ContentFilters == input.ContentFilters || - this.ContentFilters != null && - input.ContentFilters != null && - this.ContentFilters.SequenceEqual(input.ContentFilters) + this.Status == input.Status || + this.Status.Equals(input.Status) ) && ( - this.DisplayName == input.DisplayName || - (this.DisplayName != null && - this.DisplayName.Equals(input.DisplayName)) + this.StatusDescription == input.StatusDescription || + (this.StatusDescription != null && + this.StatusDescription.Equals(input.StatusDescription)) ) && ( - this.RevertDisplayName == input.RevertDisplayName || - this.RevertDisplayName.Equals(input.RevertDisplayName) + this.Tags == input.Tags || + this.Tags != null && + input.Tags != null && + this.Tags.SequenceEqual(input.Tags) ) && ( - this.Password == input.Password || - (this.Password != null && - this.Password.Equals(input.Password)) + this.Unsubscribe == input.Unsubscribe || + this.Unsubscribe.Equals(input.Unsubscribe) ) && ( - this.CurrentPassword == input.CurrentPassword || - (this.CurrentPassword != null && - this.CurrentPassword.Equals(input.CurrentPassword)) + this.UserIcon == input.UserIcon || + (this.UserIcon != null && + this.UserIcon.Equals(input.UserIcon)) ); } @@ -338,25 +338,7 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Email != null) - { - hashCode = (hashCode * 59) + this.Email.GetHashCode(); - } - hashCode = (hashCode * 59) + this.Unsubscribe.GetHashCode(); - if (this.Birthday != null) - { - hashCode = (hashCode * 59) + this.Birthday.GetHashCode(); - } hashCode = (hashCode * 59) + this.AcceptedTOSVersion.GetHashCode(); - if (this.Tags != null) - { - hashCode = (hashCode * 59) + this.Tags.GetHashCode(); - } - hashCode = (hashCode * 59) + this.Status.GetHashCode(); - if (this.StatusDescription != null) - { - hashCode = (hashCode * 59) + this.StatusDescription.GetHashCode(); - } if (this.Bio != null) { hashCode = (hashCode * 59) + this.Bio.GetHashCode(); @@ -365,31 +347,49 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.BioLinks.GetHashCode(); } - if (this.Pronouns != null) - { - hashCode = (hashCode * 59) + this.Pronouns.GetHashCode(); - } - hashCode = (hashCode * 59) + this.IsBoopingEnabled.GetHashCode(); - if (this.UserIcon != null) + if (this.Birthday != null) { - hashCode = (hashCode * 59) + this.UserIcon.GetHashCode(); + hashCode = (hashCode * 59) + this.Birthday.GetHashCode(); } if (this.ContentFilters != null) { hashCode = (hashCode * 59) + this.ContentFilters.GetHashCode(); } + if (this.CurrentPassword != null) + { + hashCode = (hashCode * 59) + this.CurrentPassword.GetHashCode(); + } if (this.DisplayName != null) { hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } - hashCode = (hashCode * 59) + this.RevertDisplayName.GetHashCode(); + if (this.Email != null) + { + hashCode = (hashCode * 59) + this.Email.GetHashCode(); + } + hashCode = (hashCode * 59) + this.IsBoopingEnabled.GetHashCode(); if (this.Password != null) { hashCode = (hashCode * 59) + this.Password.GetHashCode(); } - if (this.CurrentPassword != null) + if (this.Pronouns != null) { - hashCode = (hashCode * 59) + this.CurrentPassword.GetHashCode(); + hashCode = (hashCode * 59) + this.Pronouns.GetHashCode(); + } + hashCode = (hashCode * 59) + this.RevertDisplayName.GetHashCode(); + hashCode = (hashCode * 59) + this.Status.GetHashCode(); + if (this.StatusDescription != null) + { + hashCode = (hashCode * 59) + this.StatusDescription.GetHashCode(); + } + if (this.Tags != null) + { + hashCode = (hashCode * 59) + this.Tags.GetHashCode(); + } + hashCode = (hashCode * 59) + this.Unsubscribe.GetHashCode(); + if (this.UserIcon != null) + { + hashCode = (hashCode * 59) + this.UserIcon.GetHashCode(); } return hashCode; } diff --git a/src/VRChat.API/Model/UpdateWorldRequest.cs b/src/VRChat.API/Model/UpdateWorldRequest.cs index 54b402bd..70921a27 100644 --- a/src/VRChat.API/Model/UpdateWorldRequest.cs +++ b/src/VRChat.API/Model/UpdateWorldRequest.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/User.cs b/src/VRChat.API/Model/User.cs index 1256081e..44a9f11f 100644 --- a/src/VRChat.API/Model/User.cs +++ b/src/VRChat.API/Model/User.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -71,8 +71,8 @@ protected User() { } /// bio (required). /// bioLinks (required). /// When profilePicOverride is not empty, use it instead. (required). - /// When profilePicOverride is not empty, use it instead. (required). /// currentAvatarTags (required). + /// When profilePicOverride is not empty, use it instead. (required). /// dateJoined (required). /// developerType (required). /// A users visual display name. This is what shows up in-game, and can different from their `username`. Changing display name is restricted to a cooldown period. (required). @@ -101,7 +101,7 @@ protected User() { } /// userIcon (required). /// -| A users unique name, used during login. This is different from `displayName` which is what shows up in-game. A users `username` can never be changed.' **DEPRECATED:** VRChat API no longer return usernames of other users. [See issue by Tupper for more information](https://github.com/pypy-vrc/VRCX/issues/429).. /// WorldID be \"offline\" on User profiles if you are not friends with that user.. - public User(AgeVerificationStatus ageVerificationStatus = default, bool ageVerified = default, bool allowAvatarCopying = true, List badges = default, string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, string currentAvatarThumbnailImageUrl = default, List currentAvatarTags = default, DateOnly dateJoined = default, DeveloperType developerType = default, string displayName = default, string friendKey = default, string friendRequestStatus = default, string id = default, string instanceId = default, bool isFriend = default, string lastActivity = default, string lastLogin = default, string lastMobile = default, string lastPlatform = default, string location = default, string note = default, string platform = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, string pronouns = default, UserState state = default, UserStatus status = default, string statusDescription = default, List tags = default, string travelingToInstance = default, string travelingToLocation = default, string travelingToWorld = default, string userIcon = default, string username = default, string worldId = default) + public User(AgeVerificationStatus ageVerificationStatus = default, bool ageVerified = default, bool allowAvatarCopying = true, List badges = default, string bio = default, List bioLinks = default, string currentAvatarImageUrl = default, List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, DateOnly dateJoined = default, DeveloperType developerType = default, string displayName = default, string friendKey = default, string friendRequestStatus = default, string id = default, string instanceId = default, bool isFriend = default, string lastActivity = default, string lastLogin = default, string lastMobile = default, string lastPlatform = default, string location = default, string note = default, string platform = default, string profilePicOverride = default, string profilePicOverrideThumbnail = default, string pronouns = default, UserState state = default, UserStatus status = default, string statusDescription = default, List tags = default, string travelingToInstance = default, string travelingToLocation = default, string travelingToWorld = default, string userIcon = default, string username = default, string worldId = default) { this.AgeVerificationStatus = ageVerificationStatus; this.AgeVerified = ageVerified; @@ -124,18 +124,18 @@ public User(AgeVerificationStatus ageVerificationStatus = default, bool ageVerif throw new ArgumentNullException("currentAvatarImageUrl is a required property for User and cannot be null"); } this.CurrentAvatarImageUrl = currentAvatarImageUrl; - // to ensure "currentAvatarThumbnailImageUrl" is required (not null) - if (currentAvatarThumbnailImageUrl == null) - { - throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for User and cannot be null"); - } - this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; // to ensure "currentAvatarTags" is required (not null) if (currentAvatarTags == null) { throw new ArgumentNullException("currentAvatarTags is a required property for User and cannot be null"); } this.CurrentAvatarTags = currentAvatarTags; + // to ensure "currentAvatarThumbnailImageUrl" is required (not null) + if (currentAvatarThumbnailImageUrl == null) + { + throw new ArgumentNullException("currentAvatarThumbnailImageUrl is a required property for User and cannot be null"); + } + this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; this.DateJoined = dateJoined; this.DeveloperType = developerType; // to ensure "displayName" is required (not null) @@ -269,6 +269,12 @@ public User(AgeVerificationStatus ageVerificationStatus = default, bool ageVerif [DataMember(Name = "currentAvatarImageUrl", IsRequired = true, EmitDefaultValue = true)] public string CurrentAvatarImageUrl { get; set; } + /// + /// Gets or Sets CurrentAvatarTags + /// + [DataMember(Name = "currentAvatarTags", IsRequired = true, EmitDefaultValue = true)] + public List CurrentAvatarTags { get; set; } + /// /// When profilePicOverride is not empty, use it instead. /// @@ -279,12 +285,6 @@ public User(AgeVerificationStatus ageVerificationStatus = default, bool ageVerif [DataMember(Name = "currentAvatarThumbnailImageUrl", IsRequired = true, EmitDefaultValue = true)] public string CurrentAvatarThumbnailImageUrl { get; set; } - /// - /// Gets or Sets CurrentAvatarTags - /// - [DataMember(Name = "currentAvatarTags", IsRequired = true, EmitDefaultValue = true)] - public List CurrentAvatarTags { get; set; } - /// /// Gets or Sets DateJoined /// @@ -477,8 +477,8 @@ public override string ToString() sb.Append(" Bio: ").Append(Bio).Append("\n"); sb.Append(" BioLinks: ").Append(BioLinks).Append("\n"); sb.Append(" CurrentAvatarImageUrl: ").Append(CurrentAvatarImageUrl).Append("\n"); - sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); + sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" DateJoined: ").Append(DateJoined).Append("\n"); sb.Append(" DeveloperType: ").Append(DeveloperType).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); @@ -576,17 +576,17 @@ public bool Equals(User input) (this.CurrentAvatarImageUrl != null && this.CurrentAvatarImageUrl.Equals(input.CurrentAvatarImageUrl)) ) && - ( - this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || - (this.CurrentAvatarThumbnailImageUrl != null && - this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) - ) && ( this.CurrentAvatarTags == input.CurrentAvatarTags || this.CurrentAvatarTags != null && input.CurrentAvatarTags != null && this.CurrentAvatarTags.SequenceEqual(input.CurrentAvatarTags) ) && + ( + this.CurrentAvatarThumbnailImageUrl == input.CurrentAvatarThumbnailImageUrl || + (this.CurrentAvatarThumbnailImageUrl != null && + this.CurrentAvatarThumbnailImageUrl.Equals(input.CurrentAvatarThumbnailImageUrl)) + ) && ( this.DateJoined == input.DateJoined || (this.DateJoined != null && @@ -754,14 +754,14 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.CurrentAvatarImageUrl.GetHashCode(); } - if (this.CurrentAvatarThumbnailImageUrl != null) - { - hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); - } if (this.CurrentAvatarTags != null) { hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); } + if (this.CurrentAvatarThumbnailImageUrl != null) + { + hashCode = (hashCode * 59) + this.CurrentAvatarThumbnailImageUrl.GetHashCode(); + } if (this.DateJoined != null) { hashCode = (hashCode * 59) + this.DateJoined.GetHashCode(); diff --git a/src/VRChat.API/Model/UserCreditsEligible.cs b/src/VRChat.API/Model/UserCreditsEligible.cs index ee8235b7..0621b0bb 100644 --- a/src/VRChat.API/Model/UserCreditsEligible.cs +++ b/src/VRChat.API/Model/UserCreditsEligible.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UserExists.cs b/src/VRChat.API/Model/UserExists.cs index ecc4f253..72b8c619 100644 --- a/src/VRChat.API/Model/UserExists.cs +++ b/src/VRChat.API/Model/UserExists.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,21 +40,14 @@ protected UserExists() { } /// /// Initializes a new instance of the class. /// - /// Status if a user exist with that username or userId. (required) (default to false). /// Is the username valid? (default to false). - public UserExists(bool varUserExists = false, bool nameOk = false) + /// Status if a user exist with that username or userId. (required) (default to false). + public UserExists(bool nameOk = false, bool varUserExists = false) { this.VarUserExists = varUserExists; this.NameOk = nameOk; } - /// - /// Status if a user exist with that username or userId. - /// - /// Status if a user exist with that username or userId. - [DataMember(Name = "userExists", IsRequired = true, EmitDefaultValue = true)] - public bool VarUserExists { get; set; } - /// /// Is the username valid? /// @@ -62,6 +55,13 @@ public UserExists(bool varUserExists = false, bool nameOk = false) [DataMember(Name = "nameOk", EmitDefaultValue = true)] public bool NameOk { get; set; } + /// + /// Status if a user exist with that username or userId. + /// + /// Status if a user exist with that username or userId. + [DataMember(Name = "userExists", IsRequired = true, EmitDefaultValue = true)] + public bool VarUserExists { get; set; } + /// /// Returns the string presentation of the object /// @@ -70,8 +70,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UserExists {\n"); - sb.Append(" VarUserExists: ").Append(VarUserExists).Append("\n"); sb.Append(" NameOk: ").Append(NameOk).Append("\n"); + sb.Append(" VarUserExists: ").Append(VarUserExists).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -107,13 +107,13 @@ public bool Equals(UserExists input) return false; } return - ( - this.VarUserExists == input.VarUserExists || - this.VarUserExists.Equals(input.VarUserExists) - ) && ( this.NameOk == input.NameOk || this.NameOk.Equals(input.NameOk) + ) && + ( + this.VarUserExists == input.VarUserExists || + this.VarUserExists.Equals(input.VarUserExists) ); } @@ -126,8 +126,8 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - hashCode = (hashCode * 59) + this.VarUserExists.GetHashCode(); hashCode = (hashCode * 59) + this.NameOk.GetHashCode(); + hashCode = (hashCode * 59) + this.VarUserExists.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/UserNote.cs b/src/VRChat.API/Model/UserNote.cs index 7d9a411e..7b965c8b 100644 --- a/src/VRChat.API/Model/UserNote.cs +++ b/src/VRChat.API/Model/UserNote.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/UserNoteTargetUser.cs b/src/VRChat.API/Model/UserNoteTargetUser.cs index 6e3f6c8a..2ba3513a 100644 --- a/src/VRChat.API/Model/UserNoteTargetUser.cs +++ b/src/VRChat.API/Model/UserNoteTargetUser.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -35,22 +35,31 @@ public partial class UserNoteTargetUser : IEquatable, IValid /// /// Initializes a new instance of the class. /// + /// id. /// currentAvatarTags. /// When profilePicOverride is not empty, use it instead.. /// displayName. - /// id. /// profilePicOverride. /// userIcon. - public UserNoteTargetUser(List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, string displayName = default, string id = default, string profilePicOverride = default, string userIcon = default) + public UserNoteTargetUser(string id = default, List currentAvatarTags = default, string currentAvatarThumbnailImageUrl = default, string displayName = default, string profilePicOverride = default, string userIcon = default) { + this.Id = id; this.CurrentAvatarTags = currentAvatarTags; this.CurrentAvatarThumbnailImageUrl = currentAvatarThumbnailImageUrl; this.DisplayName = displayName; - this.Id = id; this.ProfilePicOverride = profilePicOverride; this.UserIcon = userIcon; } + /// + /// Gets or Sets Id + /// + /* + unt_e9074848-d107-4019-b4aa-bbd19e67660d + */ + [DataMember(Name = "id", EmitDefaultValue = false)] + public string Id { get; set; } + /// /// Gets or Sets CurrentAvatarTags /// @@ -73,15 +82,6 @@ public UserNoteTargetUser(List currentAvatarTags = default, string curre [DataMember(Name = "displayName", EmitDefaultValue = false)] public string DisplayName { get; set; } - /// - /// Gets or Sets Id - /// - /* - unt_e9074848-d107-4019-b4aa-bbd19e67660d - */ - [DataMember(Name = "id", EmitDefaultValue = false)] - public string Id { get; set; } - /// /// Gets or Sets ProfilePicOverride /// @@ -102,10 +102,10 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UserNoteTargetUser {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" CurrentAvatarTags: ").Append(CurrentAvatarTags).Append("\n"); sb.Append(" CurrentAvatarThumbnailImageUrl: ").Append(CurrentAvatarThumbnailImageUrl).Append("\n"); sb.Append(" DisplayName: ").Append(DisplayName).Append("\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" ProfilePicOverride: ").Append(ProfilePicOverride).Append("\n"); sb.Append(" UserIcon: ").Append(UserIcon).Append("\n"); sb.Append("}\n"); @@ -143,6 +143,11 @@ public bool Equals(UserNoteTargetUser input) return false; } return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && ( this.CurrentAvatarTags == input.CurrentAvatarTags || this.CurrentAvatarTags != null && @@ -159,11 +164,6 @@ public bool Equals(UserNoteTargetUser input) (this.DisplayName != null && this.DisplayName.Equals(input.DisplayName)) ) && - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && ( this.ProfilePicOverride == input.ProfilePicOverride || (this.ProfilePicOverride != null && @@ -185,6 +185,10 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; + if (this.Id != null) + { + hashCode = (hashCode * 59) + this.Id.GetHashCode(); + } if (this.CurrentAvatarTags != null) { hashCode = (hashCode * 59) + this.CurrentAvatarTags.GetHashCode(); @@ -197,10 +201,6 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.DisplayName.GetHashCode(); } - if (this.Id != null) - { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); - } if (this.ProfilePicOverride != null) { hashCode = (hashCode * 59) + this.ProfilePicOverride.GetHashCode(); diff --git a/src/VRChat.API/Model/UserState.cs b/src/VRChat.API/Model/UserState.cs index cadefe0d..97dde364 100644 --- a/src/VRChat.API/Model/UserState.cs +++ b/src/VRChat.API/Model/UserState.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -34,16 +34,16 @@ namespace VRChat.API.Model public enum UserState { /// - /// Enum Offline for value: offline + /// Enum Active for value: active /// - [EnumMember(Value = "offline")] - Offline = 1, + [EnumMember(Value = "active")] + Active = 1, /// - /// Enum Active for value: active + /// Enum Offline for value: offline /// - [EnumMember(Value = "active")] - Active = 2, + [EnumMember(Value = "offline")] + Offline = 2, /// /// Enum Online for value: online diff --git a/src/VRChat.API/Model/UserStatus.cs b/src/VRChat.API/Model/UserStatus.cs index 69871619..34f3cb6c 100644 --- a/src/VRChat.API/Model/UserStatus.cs +++ b/src/VRChat.API/Model/UserStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -39,23 +39,23 @@ public enum UserStatus [EnumMember(Value = "active")] Active = 1, - /// - /// Enum JoinMe for value: join me - /// - [EnumMember(Value = "join me")] - JoinMe = 2, - /// /// Enum AskMe for value: ask me /// [EnumMember(Value = "ask me")] - AskMe = 3, + AskMe = 2, /// /// Enum Busy for value: busy /// [EnumMember(Value = "busy")] - Busy = 4, + Busy = 3, + + /// + /// Enum JoinMe for value: join me + /// + [EnumMember(Value = "join me")] + JoinMe = 4, /// /// Enum Offline for value: offline diff --git a/src/VRChat.API/Model/UserSubscription.cs b/src/VRChat.API/Model/UserSubscription.cs index cd0bd14b..c2714a72 100644 --- a/src/VRChat.API/Model/UserSubscription.cs +++ b/src/VRChat.API/Model/UserSubscription.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -52,180 +52,180 @@ protected UserSubscription() { } /// /// Initializes a new instance of the class. /// - /// id (required). - /// transactionId (required). - /// Which \"Store\" it came from. Right now only Stores are \"Steam\" and \"Admin\". (required). - /// steamItemId. + /// active (required) (default to true). /// amount (required). + /// createdAt (required). /// description (required). + /// expires (required). + /// id (required). + /// isBulkGift (required) (default to false). + /// isGift (required) (default to false). + /// licenseGroups (required). /// period (required). - /// tier (required). - /// active (required) (default to true). - /// status (required). /// starts. - /// expires (required). - /// createdAt (required). + /// status (required). + /// steamItemId. + /// Which \"Store\" it came from. Right now only Stores are \"Steam\" and \"Admin\". (required). + /// tier (required). + /// transactionId (required). /// updatedAt (required). - /// licenseGroups (required). - /// isGift (required) (default to false). - /// isBulkGift (required) (default to false). - public UserSubscription(string id = default, string transactionId = default, string store = default, string steamItemId = default, decimal amount = default, string description = default, SubscriptionPeriod period = default, int tier = default, bool active = true, TransactionStatus status = default, string starts = default, DateTime expires = default, DateTime createdAt = default, DateTime updatedAt = default, List licenseGroups = default, bool isGift = false, bool isBulkGift = false) + public UserSubscription(bool active = true, decimal amount = default, DateTime createdAt = default, string description = default, DateTime expires = default, string id = default, bool isBulkGift = false, bool isGift = false, List licenseGroups = default, SubscriptionPeriod period = default, string starts = default, TransactionStatus status = default, string steamItemId = default, string store = default, int tier = default, string transactionId = default, DateTime updatedAt = default) { + this.Active = active; + this.Amount = amount; + this.CreatedAt = createdAt; + // to ensure "description" is required (not null) + if (description == null) + { + throw new ArgumentNullException("description is a required property for UserSubscription and cannot be null"); + } + this.Description = description; + this.Expires = expires; // to ensure "id" is required (not null) if (id == null) { throw new ArgumentNullException("id is a required property for UserSubscription and cannot be null"); } this.Id = id; - // to ensure "transactionId" is required (not null) - if (transactionId == null) + this.IsBulkGift = isBulkGift; + this.IsGift = isGift; + // to ensure "licenseGroups" is required (not null) + if (licenseGroups == null) { - throw new ArgumentNullException("transactionId is a required property for UserSubscription and cannot be null"); + throw new ArgumentNullException("licenseGroups is a required property for UserSubscription and cannot be null"); } - this.TransactionId = transactionId; + this.LicenseGroups = licenseGroups; + this.Period = period; + this.Status = status; // to ensure "store" is required (not null) if (store == null) { throw new ArgumentNullException("store is a required property for UserSubscription and cannot be null"); } this.Store = store; - this.Amount = amount; - // to ensure "description" is required (not null) - if (description == null) - { - throw new ArgumentNullException("description is a required property for UserSubscription and cannot be null"); - } - this.Description = description; - this.Period = period; this.Tier = tier; - this.Active = active; - this.Status = status; - this.Expires = expires; - this.CreatedAt = createdAt; - this.UpdatedAt = updatedAt; - // to ensure "licenseGroups" is required (not null) - if (licenseGroups == null) + // to ensure "transactionId" is required (not null) + if (transactionId == null) { - throw new ArgumentNullException("licenseGroups is a required property for UserSubscription and cannot be null"); + throw new ArgumentNullException("transactionId is a required property for UserSubscription and cannot be null"); } - this.LicenseGroups = licenseGroups; - this.IsGift = isGift; - this.IsBulkGift = isBulkGift; - this.SteamItemId = steamItemId; + this.TransactionId = transactionId; + this.UpdatedAt = updatedAt; this.Starts = starts; + this.SteamItemId = steamItemId; } /// - /// Gets or Sets Id + /// Gets or Sets Active /// - /* - vrchatplus-yearly - */ - [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] - public string Id { get; set; } + [DataMember(Name = "active", IsRequired = true, EmitDefaultValue = true)] + public bool Active { get; set; } /// - /// Gets or Sets TransactionId + /// Gets or Sets Amount /// /* - txn_e5c72948-e735-4880-8245-24b2a41198b0 + 9999 */ - [DataMember(Name = "transactionId", IsRequired = true, EmitDefaultValue = true)] - public string TransactionId { get; set; } + [DataMember(Name = "amount", IsRequired = true, EmitDefaultValue = true)] + public decimal Amount { get; set; } /// - /// Which \"Store\" it came from. Right now only Stores are \"Steam\" and \"Admin\". + /// Gets or Sets CreatedAt /// - /// Which \"Store\" it came from. Right now only Stores are \"Steam\" and \"Admin\". - /* - Steam - */ - [DataMember(Name = "store", IsRequired = true, EmitDefaultValue = true)] - public string Store { get; set; } + [DataMember(Name = "created_at", IsRequired = true, EmitDefaultValue = true)] + public DateTime CreatedAt { get; set; } /// - /// Gets or Sets SteamItemId + /// Gets or Sets Description /// /* - 5000 + VRChat Plus (Yearly) */ - [DataMember(Name = "steamItemId", EmitDefaultValue = false)] - public string SteamItemId { get; set; } + [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] + public string Description { get; set; } /// - /// Gets or Sets Amount + /// Gets or Sets Expires /// - /* - 9999 - */ - [DataMember(Name = "amount", IsRequired = true, EmitDefaultValue = true)] - public decimal Amount { get; set; } + [DataMember(Name = "expires", IsRequired = true, EmitDefaultValue = true)] + public DateTime Expires { get; set; } /// - /// Gets or Sets Description + /// Gets or Sets Id /// /* - VRChat Plus (Yearly) + vrchatplus-yearly */ - [DataMember(Name = "description", IsRequired = true, EmitDefaultValue = true)] - public string Description { get; set; } + [DataMember(Name = "id", IsRequired = true, EmitDefaultValue = true)] + public string Id { get; set; } /// - /// Gets or Sets Tier + /// Gets or Sets IsBulkGift /// - /* - 5 - */ - [DataMember(Name = "tier", IsRequired = true, EmitDefaultValue = true)] - public int Tier { get; set; } + [DataMember(Name = "isBulkGift", IsRequired = true, EmitDefaultValue = true)] + public bool IsBulkGift { get; set; } /// - /// Gets or Sets Active + /// Gets or Sets IsGift /// - [DataMember(Name = "active", IsRequired = true, EmitDefaultValue = true)] - public bool Active { get; set; } + [DataMember(Name = "isGift", IsRequired = true, EmitDefaultValue = true)] + public bool IsGift { get; set; } /// - /// Gets or Sets Starts + /// Gets or Sets LicenseGroups /// - [DataMember(Name = "starts", EmitDefaultValue = false)] - public string Starts { get; set; } + [DataMember(Name = "licenseGroups", IsRequired = true, EmitDefaultValue = true)] + public List LicenseGroups { get; set; } /// - /// Gets or Sets Expires + /// Gets or Sets Starts /// - [DataMember(Name = "expires", IsRequired = true, EmitDefaultValue = true)] - public DateTime Expires { get; set; } + [DataMember(Name = "starts", EmitDefaultValue = false)] + public string Starts { get; set; } /// - /// Gets or Sets CreatedAt + /// Gets or Sets SteamItemId /// - [DataMember(Name = "created_at", IsRequired = true, EmitDefaultValue = true)] - public DateTime CreatedAt { get; set; } + /* + 5000 + */ + [DataMember(Name = "steamItemId", EmitDefaultValue = false)] + public string SteamItemId { get; set; } /// - /// Gets or Sets UpdatedAt + /// Which \"Store\" it came from. Right now only Stores are \"Steam\" and \"Admin\". /// - [DataMember(Name = "updated_at", IsRequired = true, EmitDefaultValue = true)] - public DateTime UpdatedAt { get; set; } + /// Which \"Store\" it came from. Right now only Stores are \"Steam\" and \"Admin\". + /* + Steam + */ + [DataMember(Name = "store", IsRequired = true, EmitDefaultValue = true)] + public string Store { get; set; } /// - /// Gets or Sets LicenseGroups + /// Gets or Sets Tier /// - [DataMember(Name = "licenseGroups", IsRequired = true, EmitDefaultValue = true)] - public List LicenseGroups { get; set; } + /* + 5 + */ + [DataMember(Name = "tier", IsRequired = true, EmitDefaultValue = true)] + public int Tier { get; set; } /// - /// Gets or Sets IsGift + /// Gets or Sets TransactionId /// - [DataMember(Name = "isGift", IsRequired = true, EmitDefaultValue = true)] - public bool IsGift { get; set; } + /* + txn_e5c72948-e735-4880-8245-24b2a41198b0 + */ + [DataMember(Name = "transactionId", IsRequired = true, EmitDefaultValue = true)] + public string TransactionId { get; set; } /// - /// Gets or Sets IsBulkGift + /// Gets or Sets UpdatedAt /// - [DataMember(Name = "isBulkGift", IsRequired = true, EmitDefaultValue = true)] - public bool IsBulkGift { get; set; } + [DataMember(Name = "updated_at", IsRequired = true, EmitDefaultValue = true)] + public DateTime UpdatedAt { get; set; } /// /// Returns the string presentation of the object @@ -235,23 +235,23 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class UserSubscription {\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" TransactionId: ").Append(TransactionId).Append("\n"); - sb.Append(" Store: ").Append(Store).Append("\n"); - sb.Append(" SteamItemId: ").Append(SteamItemId).Append("\n"); + sb.Append(" Active: ").Append(Active).Append("\n"); sb.Append(" Amount: ").Append(Amount).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); + sb.Append(" Expires: ").Append(Expires).Append("\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" IsBulkGift: ").Append(IsBulkGift).Append("\n"); + sb.Append(" IsGift: ").Append(IsGift).Append("\n"); + sb.Append(" LicenseGroups: ").Append(LicenseGroups).Append("\n"); sb.Append(" Period: ").Append(Period).Append("\n"); - sb.Append(" Tier: ").Append(Tier).Append("\n"); - sb.Append(" Active: ").Append(Active).Append("\n"); - sb.Append(" Status: ").Append(Status).Append("\n"); sb.Append(" Starts: ").Append(Starts).Append("\n"); - sb.Append(" Expires: ").Append(Expires).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" SteamItemId: ").Append(SteamItemId).Append("\n"); + sb.Append(" Store: ").Append(Store).Append("\n"); + sb.Append(" Tier: ").Append(Tier).Append("\n"); + sb.Append(" TransactionId: ").Append(TransactionId).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); - sb.Append(" LicenseGroups: ").Append(LicenseGroups).Append("\n"); - sb.Append(" IsGift: ").Append(IsGift).Append("\n"); - sb.Append(" IsBulkGift: ").Append(IsBulkGift).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -288,49 +288,50 @@ public bool Equals(UserSubscription input) } return ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) + this.Active == input.Active || + this.Active.Equals(input.Active) ) && ( - this.TransactionId == input.TransactionId || - (this.TransactionId != null && - this.TransactionId.Equals(input.TransactionId)) + this.Amount == input.Amount || + this.Amount.Equals(input.Amount) ) && ( - this.Store == input.Store || - (this.Store != null && - this.Store.Equals(input.Store)) + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) ) && ( - this.SteamItemId == input.SteamItemId || - (this.SteamItemId != null && - this.SteamItemId.Equals(input.SteamItemId)) + this.Description == input.Description || + (this.Description != null && + this.Description.Equals(input.Description)) ) && ( - this.Amount == input.Amount || - this.Amount.Equals(input.Amount) + this.Expires == input.Expires || + (this.Expires != null && + this.Expires.Equals(input.Expires)) ) && ( - this.Description == input.Description || - (this.Description != null && - this.Description.Equals(input.Description)) + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) ) && ( - this.Period == input.Period || - this.Period.Equals(input.Period) + this.IsBulkGift == input.IsBulkGift || + this.IsBulkGift.Equals(input.IsBulkGift) ) && ( - this.Tier == input.Tier || - this.Tier.Equals(input.Tier) + this.IsGift == input.IsGift || + this.IsGift.Equals(input.IsGift) ) && ( - this.Active == input.Active || - this.Active.Equals(input.Active) + this.LicenseGroups == input.LicenseGroups || + this.LicenseGroups != null && + input.LicenseGroups != null && + this.LicenseGroups.SequenceEqual(input.LicenseGroups) ) && ( - this.Status == input.Status || - this.Status.Equals(input.Status) + this.Period == input.Period || + this.Period.Equals(input.Period) ) && ( this.Starts == input.Starts || @@ -338,33 +339,32 @@ public bool Equals(UserSubscription input) this.Starts.Equals(input.Starts)) ) && ( - this.Expires == input.Expires || - (this.Expires != null && - this.Expires.Equals(input.Expires)) + this.Status == input.Status || + this.Status.Equals(input.Status) ) && ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) + this.SteamItemId == input.SteamItemId || + (this.SteamItemId != null && + this.SteamItemId.Equals(input.SteamItemId)) ) && ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) + this.Store == input.Store || + (this.Store != null && + this.Store.Equals(input.Store)) ) && ( - this.LicenseGroups == input.LicenseGroups || - this.LicenseGroups != null && - input.LicenseGroups != null && - this.LicenseGroups.SequenceEqual(input.LicenseGroups) + this.Tier == input.Tier || + this.Tier.Equals(input.Tier) ) && ( - this.IsGift == input.IsGift || - this.IsGift.Equals(input.IsGift) + this.TransactionId == input.TransactionId || + (this.TransactionId != null && + this.TransactionId.Equals(input.TransactionId)) ) && ( - this.IsBulkGift == input.IsBulkGift || - this.IsBulkGift.Equals(input.IsBulkGift) + this.UpdatedAt == input.UpdatedAt || + (this.UpdatedAt != null && + this.UpdatedAt.Equals(input.UpdatedAt)) ); } @@ -377,53 +377,53 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Id != null) + hashCode = (hashCode * 59) + this.Active.GetHashCode(); + hashCode = (hashCode * 59) + this.Amount.GetHashCode(); + if (this.CreatedAt != null) { - hashCode = (hashCode * 59) + this.Id.GetHashCode(); + hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); } - if (this.TransactionId != null) + if (this.Description != null) { - hashCode = (hashCode * 59) + this.TransactionId.GetHashCode(); + hashCode = (hashCode * 59) + this.Description.GetHashCode(); } - if (this.Store != null) + if (this.Expires != null) { - hashCode = (hashCode * 59) + this.Store.GetHashCode(); + hashCode = (hashCode * 59) + this.Expires.GetHashCode(); } - if (this.SteamItemId != null) + if (this.Id != null) { - hashCode = (hashCode * 59) + this.SteamItemId.GetHashCode(); + hashCode = (hashCode * 59) + this.Id.GetHashCode(); } - hashCode = (hashCode * 59) + this.Amount.GetHashCode(); - if (this.Description != null) + hashCode = (hashCode * 59) + this.IsBulkGift.GetHashCode(); + hashCode = (hashCode * 59) + this.IsGift.GetHashCode(); + if (this.LicenseGroups != null) { - hashCode = (hashCode * 59) + this.Description.GetHashCode(); + hashCode = (hashCode * 59) + this.LicenseGroups.GetHashCode(); } hashCode = (hashCode * 59) + this.Period.GetHashCode(); - hashCode = (hashCode * 59) + this.Tier.GetHashCode(); - hashCode = (hashCode * 59) + this.Active.GetHashCode(); - hashCode = (hashCode * 59) + this.Status.GetHashCode(); if (this.Starts != null) { hashCode = (hashCode * 59) + this.Starts.GetHashCode(); } - if (this.Expires != null) + hashCode = (hashCode * 59) + this.Status.GetHashCode(); + if (this.SteamItemId != null) { - hashCode = (hashCode * 59) + this.Expires.GetHashCode(); + hashCode = (hashCode * 59) + this.SteamItemId.GetHashCode(); } - if (this.CreatedAt != null) + if (this.Store != null) { - hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.Store.GetHashCode(); } - if (this.UpdatedAt != null) + hashCode = (hashCode * 59) + this.Tier.GetHashCode(); + if (this.TransactionId != null) { - hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); + hashCode = (hashCode * 59) + this.TransactionId.GetHashCode(); } - if (this.LicenseGroups != null) + if (this.UpdatedAt != null) { - hashCode = (hashCode * 59) + this.LicenseGroups.GetHashCode(); + hashCode = (hashCode * 59) + this.UpdatedAt.GetHashCode(); } - hashCode = (hashCode * 59) + this.IsGift.GetHashCode(); - hashCode = (hashCode * 59) + this.IsBulkGift.GetHashCode(); return hashCode; } } @@ -441,18 +441,18 @@ IEnumerable IValidatableObject.Validate(ValidationContext vali yield return new ValidationResult("Invalid value for Id, length must be greater than 1.", new [] { "Id" }); } - // Store (string) minLength - if (this.Store != null && this.Store.Length < 1) - { - yield return new ValidationResult("Invalid value for Store, length must be greater than 1.", new [] { "Store" }); - } - // SteamItemId (string) minLength if (this.SteamItemId != null && this.SteamItemId.Length < 1) { yield return new ValidationResult("Invalid value for SteamItemId, length must be greater than 1.", new [] { "SteamItemId" }); } + // Store (string) minLength + if (this.Store != null && this.Store.Length < 1) + { + yield return new ValidationResult("Invalid value for Store, length must be greater than 1.", new [] { "Store" }); + } + yield break; } } diff --git a/src/VRChat.API/Model/UserSubscriptionEligible.cs b/src/VRChat.API/Model/UserSubscriptionEligible.cs index 510fba44..c20ac709 100644 --- a/src/VRChat.API/Model/UserSubscriptionEligible.cs +++ b/src/VRChat.API/Model/UserSubscriptionEligible.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Verify2FAEmailCodeResult.cs b/src/VRChat.API/Model/Verify2FAEmailCodeResult.cs index 35c89ce2..acb96f4e 100644 --- a/src/VRChat.API/Model/Verify2FAEmailCodeResult.cs +++ b/src/VRChat.API/Model/Verify2FAEmailCodeResult.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/Verify2FAResult.cs b/src/VRChat.API/Model/Verify2FAResult.cs index b8cff235..c4171d5a 100644 --- a/src/VRChat.API/Model/Verify2FAResult.cs +++ b/src/VRChat.API/Model/Verify2FAResult.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -40,26 +40,26 @@ protected Verify2FAResult() { } /// /// Initializes a new instance of the class. /// - /// verified (required). /// enabled (default to true). - public Verify2FAResult(bool verified = default, bool enabled = true) + /// verified (required). + public Verify2FAResult(bool enabled = true, bool verified = default) { this.Verified = verified; this.Enabled = enabled; } - /// - /// Gets or Sets Verified - /// - [DataMember(Name = "verified", IsRequired = true, EmitDefaultValue = true)] - public bool Verified { get; set; } - /// /// Gets or Sets Enabled /// [DataMember(Name = "enabled", EmitDefaultValue = true)] public bool Enabled { get; set; } + /// + /// Gets or Sets Verified + /// + [DataMember(Name = "verified", IsRequired = true, EmitDefaultValue = true)] + public bool Verified { get; set; } + /// /// Returns the string presentation of the object /// @@ -68,8 +68,8 @@ public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("class Verify2FAResult {\n"); - sb.Append(" Verified: ").Append(Verified).Append("\n"); sb.Append(" Enabled: ").Append(Enabled).Append("\n"); + sb.Append(" Verified: ").Append(Verified).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -105,13 +105,13 @@ public bool Equals(Verify2FAResult input) return false; } return - ( - this.Verified == input.Verified || - this.Verified.Equals(input.Verified) - ) && ( this.Enabled == input.Enabled || this.Enabled.Equals(input.Enabled) + ) && + ( + this.Verified == input.Verified || + this.Verified.Equals(input.Verified) ); } @@ -124,8 +124,8 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - hashCode = (hashCode * 59) + this.Verified.GetHashCode(); hashCode = (hashCode * 59) + this.Enabled.GetHashCode(); + hashCode = (hashCode * 59) + this.Verified.GetHashCode(); return hashCode; } } diff --git a/src/VRChat.API/Model/VerifyAuthTokenResult.cs b/src/VRChat.API/Model/VerifyAuthTokenResult.cs index 53c60bfb..91d239b5 100644 --- a/src/VRChat.API/Model/VerifyAuthTokenResult.cs +++ b/src/VRChat.API/Model/VerifyAuthTokenResult.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/World.cs b/src/VRChat.API/Model/World.cs index c57933af..ecb85144 100644 --- a/src/VRChat.API/Model/World.cs +++ b/src/VRChat.API/Model/World.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ @@ -49,7 +49,6 @@ protected World() { } /// A users unique ID, usually in the form of `usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469`. Legacy players can have old IDs in the form of `8JoV9XEdpo`. The ID can never be changed. (required). /// authorName (required). /// capacity (required). - /// recommendedCapacity (required). /// createdAt (required). /// defaultContentSettings. /// description (required). @@ -69,17 +68,18 @@ protected World() { } /// Will always be `0` when unauthenticated. (default to 0). /// Will always be `0` when unauthenticated. (default to 0). /// publicationDate (required). + /// recommendedCapacity (required). /// releaseStatus (required). /// storeId. /// (required). /// thumbnailImageUrl (required). + /// udonProducts. /// Empty if unauthenticated.. /// updatedAt (required). /// urlList. /// varVersion (required) (default to 0). /// visits (required) (default to 0). - /// udonProducts. - public World(string authorId = default, string authorName = default, int capacity = default, int recommendedCapacity = default, DateTime createdAt = default, InstanceContentSettings defaultContentSettings = default, string description = default, int favorites = 0, bool featured = false, int heat = 0, string id = default, string imageUrl = default, List> instances = default, string labsPublicationDate = default, string name = default, string varNamespace = default, int occupants = 0, string organization = @"vrchat", int popularity = 0, string previewYoutubeId = default, int privateOccupants = 0, int publicOccupants = 0, string publicationDate = default, ReleaseStatus releaseStatus = default, string storeId = default, List tags = default, string thumbnailImageUrl = default, List unityPackages = default, DateTime updatedAt = default, List urlList = default, int varVersion = 0, int visits = 0, List udonProducts = default) + public World(string authorId = default, string authorName = default, int capacity = default, DateTime createdAt = default, InstanceContentSettings defaultContentSettings = default, string description = default, int favorites = 0, bool featured = false, int heat = 0, string id = default, string imageUrl = default, List> instances = default, string labsPublicationDate = default, string name = default, string varNamespace = default, int occupants = 0, string organization = @"vrchat", int popularity = 0, string previewYoutubeId = default, int privateOccupants = 0, int publicOccupants = 0, string publicationDate = default, int recommendedCapacity = default, ReleaseStatus releaseStatus = default, string storeId = default, List tags = default, string thumbnailImageUrl = default, List udonProducts = default, List unityPackages = default, DateTime updatedAt = default, List urlList = default, int varVersion = 0, int visits = 0) { // to ensure "authorId" is required (not null) if (authorId == null) @@ -94,7 +94,6 @@ public World(string authorId = default, string authorName = default, int capacit } this.AuthorName = authorName; this.Capacity = capacity; - this.RecommendedCapacity = recommendedCapacity; this.CreatedAt = createdAt; // to ensure "description" is required (not null) if (description == null) @@ -141,6 +140,7 @@ public World(string authorId = default, string authorName = default, int capacit throw new ArgumentNullException("publicationDate is a required property for World and cannot be null"); } this.PublicationDate = publicationDate; + this.RecommendedCapacity = recommendedCapacity; this.ReleaseStatus = releaseStatus; // to ensure "tags" is required (not null) if (tags == null) @@ -166,9 +166,9 @@ public World(string authorId = default, string authorName = default, int capacit this.PrivateOccupants = privateOccupants; this.PublicOccupants = publicOccupants; this.StoreId = storeId; + this.UdonProducts = udonProducts; this.UnityPackages = unityPackages; this.UrlList = urlList; - this.UdonProducts = udonProducts; } /// @@ -196,15 +196,6 @@ public World(string authorId = default, string authorName = default, int capacit [DataMember(Name = "capacity", IsRequired = true, EmitDefaultValue = true)] public int Capacity { get; set; } - /// - /// Gets or Sets RecommendedCapacity - /// - /* - 4 - */ - [DataMember(Name = "recommendedCapacity", IsRequired = true, EmitDefaultValue = true)] - public int RecommendedCapacity { get; set; } - /// /// Gets or Sets CreatedAt /// @@ -351,6 +342,15 @@ public World(string authorId = default, string authorName = default, int capacit [DataMember(Name = "publicationDate", IsRequired = true, EmitDefaultValue = true)] public string PublicationDate { get; set; } + /// + /// Gets or Sets RecommendedCapacity + /// + /* + 4 + */ + [DataMember(Name = "recommendedCapacity", IsRequired = true, EmitDefaultValue = true)] + public int RecommendedCapacity { get; set; } + /// /// Gets or Sets StoreId /// @@ -373,6 +373,12 @@ public World(string authorId = default, string authorName = default, int capacit [DataMember(Name = "thumbnailImageUrl", IsRequired = true, EmitDefaultValue = true)] public string ThumbnailImageUrl { get; set; } + /// + /// Gets or Sets UdonProducts + /// + [DataMember(Name = "udonProducts", EmitDefaultValue = false)] + public List UdonProducts { get; set; } + /// /// Empty if unauthenticated. /// @@ -410,12 +416,6 @@ public World(string authorId = default, string authorName = default, int capacit [DataMember(Name = "visits", IsRequired = true, EmitDefaultValue = true)] public int Visits { get; set; } - /// - /// Gets or Sets UdonProducts - /// - [DataMember(Name = "udonProducts", EmitDefaultValue = false)] - public List UdonProducts { get; set; } - /// /// Returns the string presentation of the object /// @@ -427,7 +427,6 @@ public override string ToString() sb.Append(" AuthorId: ").Append(AuthorId).Append("\n"); sb.Append(" AuthorName: ").Append(AuthorName).Append("\n"); sb.Append(" Capacity: ").Append(Capacity).Append("\n"); - sb.Append(" RecommendedCapacity: ").Append(RecommendedCapacity).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); sb.Append(" DefaultContentSettings: ").Append(DefaultContentSettings).Append("\n"); sb.Append(" Description: ").Append(Description).Append("\n"); @@ -447,16 +446,17 @@ public override string ToString() sb.Append(" PrivateOccupants: ").Append(PrivateOccupants).Append("\n"); sb.Append(" PublicOccupants: ").Append(PublicOccupants).Append("\n"); sb.Append(" PublicationDate: ").Append(PublicationDate).Append("\n"); + sb.Append(" RecommendedCapacity: ").Append(RecommendedCapacity).Append("\n"); sb.Append(" ReleaseStatus: ").Append(ReleaseStatus).Append("\n"); sb.Append(" StoreId: ").Append(StoreId).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); sb.Append(" ThumbnailImageUrl: ").Append(ThumbnailImageUrl).Append("\n"); + sb.Append(" UdonProducts: ").Append(UdonProducts).Append("\n"); sb.Append(" UnityPackages: ").Append(UnityPackages).Append("\n"); sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append(" UrlList: ").Append(UrlList).Append("\n"); sb.Append(" VarVersion: ").Append(VarVersion).Append("\n"); sb.Append(" Visits: ").Append(Visits).Append("\n"); - sb.Append(" UdonProducts: ").Append(UdonProducts).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -506,10 +506,6 @@ public bool Equals(World input) this.Capacity == input.Capacity || this.Capacity.Equals(input.Capacity) ) && - ( - this.RecommendedCapacity == input.RecommendedCapacity || - this.RecommendedCapacity.Equals(input.RecommendedCapacity) - ) && ( this.CreatedAt == input.CreatedAt || (this.CreatedAt != null && @@ -599,6 +595,10 @@ public bool Equals(World input) (this.PublicationDate != null && this.PublicationDate.Equals(input.PublicationDate)) ) && + ( + this.RecommendedCapacity == input.RecommendedCapacity || + this.RecommendedCapacity.Equals(input.RecommendedCapacity) + ) && ( this.ReleaseStatus == input.ReleaseStatus || this.ReleaseStatus.Equals(input.ReleaseStatus) @@ -619,6 +619,12 @@ public bool Equals(World input) (this.ThumbnailImageUrl != null && this.ThumbnailImageUrl.Equals(input.ThumbnailImageUrl)) ) && + ( + this.UdonProducts == input.UdonProducts || + this.UdonProducts != null && + input.UdonProducts != null && + this.UdonProducts.SequenceEqual(input.UdonProducts) + ) && ( this.UnityPackages == input.UnityPackages || this.UnityPackages != null && @@ -643,12 +649,6 @@ public bool Equals(World input) ( this.Visits == input.Visits || this.Visits.Equals(input.Visits) - ) && - ( - this.UdonProducts == input.UdonProducts || - this.UdonProducts != null && - input.UdonProducts != null && - this.UdonProducts.SequenceEqual(input.UdonProducts) ); } @@ -670,7 +670,6 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.AuthorName.GetHashCode(); } hashCode = (hashCode * 59) + this.Capacity.GetHashCode(); - hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); if (this.CreatedAt != null) { hashCode = (hashCode * 59) + this.CreatedAt.GetHashCode(); @@ -726,6 +725,7 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.PublicationDate.GetHashCode(); } + hashCode = (hashCode * 59) + this.RecommendedCapacity.GetHashCode(); hashCode = (hashCode * 59) + this.ReleaseStatus.GetHashCode(); if (this.StoreId != null) { @@ -739,6 +739,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.ThumbnailImageUrl.GetHashCode(); } + if (this.UdonProducts != null) + { + hashCode = (hashCode * 59) + this.UdonProducts.GetHashCode(); + } if (this.UnityPackages != null) { hashCode = (hashCode * 59) + this.UnityPackages.GetHashCode(); @@ -753,10 +757,6 @@ public override int GetHashCode() } hashCode = (hashCode * 59) + this.VarVersion.GetHashCode(); hashCode = (hashCode * 59) + this.Visits.GetHashCode(); - if (this.UdonProducts != null) - { - hashCode = (hashCode * 59) + this.UdonProducts.GetHashCode(); - } return hashCode; } } diff --git a/src/VRChat.API/Model/WorldMetadata.cs b/src/VRChat.API/Model/WorldMetadata.cs index 64fb0745..63024a42 100644 --- a/src/VRChat.API/Model/WorldMetadata.cs +++ b/src/VRChat.API/Model/WorldMetadata.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/Model/WorldPublishStatus.cs b/src/VRChat.API/Model/WorldPublishStatus.cs index bd6df224..e066b25f 100644 --- a/src/VRChat.API/Model/WorldPublishStatus.cs +++ b/src/VRChat.API/Model/WorldPublishStatus.cs @@ -2,7 +2,7 @@ * VRChat API Documentation * * - * The version of the OpenAPI document: 1.20.5 + * The version of the OpenAPI document: 1.20.7-nightly.3 * Contact: vrchatapi.lpv0t@aries.fyi * Generated by: https://github.com/openapitools/openapi-generator.git */ diff --git a/src/VRChat.API/README.md b/src/VRChat.API/README.md index 9e22bca6..2e8c7b7e 100644 --- a/src/VRChat.API/README.md +++ b/src/VRChat.API/README.md @@ -133,8 +133,16 @@ public class MyController : Controller Console app (login): see [VRChat.API.Examples.Console](examples/VRChat.API.Examples.Console/) +Console app (WebSocket): see [VRChat.API.Examples.WebSocket](examples/VRChat.API.Examples.WebSocket/) + ASP.NET Core (depedency injection): see [VRChat.API.Examples.AspNetCore](examples/VRChat.API.Examples.AspNetCore/) +# WebSockets / VRChat Pipeline + +You can use the `VRChat.API.Realtime` library to connect to VRChat's WebSocket and listen to events. + +The documentation for it is available at [WEBSOCKET.md](WEBSOCKET.md). + # Manually authenticating Sometimes, we don't have two-factor authentication set up on our accounts. While it's **reccomended** for most bots or apps, your app may be a WPF/WinForms application that requires user credential input. In these cases, the `LoginAsync()` methods on `IVRChat` won't work, because they only support token-based two-factor authentication. diff --git a/src/VRChat.API/VRChat.API.csproj b/src/VRChat.API/VRChat.API.csproj index 670583fa..0372c482 100644 --- a/src/VRChat.API/VRChat.API.csproj +++ b/src/VRChat.API/VRChat.API.csproj @@ -10,9 +10,9 @@ VRChat API Docs Community VRChat API Library for .NET VRChat API Library for .NET - Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. + Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API - 2.20.5 + 2.20.7-nightly bin\$(Configuration)\$(TargetFramework)\VRChat.API.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git diff --git a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj index 95b66eba..f6535dea 100644 --- a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj +++ b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj @@ -12,7 +12,7 @@ Extensions for hosting and dependency injection for the VRChat API Library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API.Extensions.Hosting - 2.20.5 + 2.20.7-nightly bin\$(Configuration)\$(TargetFramework)\VRChat.API.Extensions.Hosting.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git From feb5aad688ad7b5fdb5e6d849d1e0ffeff8f9058 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:21:03 -0600 Subject: [PATCH 18/25] fix ci versioning --- .github/workflows/ci.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d9b72f2e..68ab2f04 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -57,11 +57,7 @@ jobs: - name: Check version number run: | - major=$(echo ${PASSED_VERSION} | cut -d. -f1) - minor=$(echo ${PASSED_VERSION} | cut -d. -f2) - patch=$(echo ${PASSED_VERSION} | cut -d. -f3) - - vrchat_sdk_version="$((major+1)).${minor}.${patch}${VERSION_POSTPEND}" + vrchat_sdk_version="$(( ${PASSED_VERSION%%.*} + 1))${PASSED_VERSION#"${major}"}${VERSION_POSTPEND}" echo "Version is: ${vrchat_sdk_version}" echo "vrchat_sdk_version=$vrchat_sdk_version" >> $GITHUB_ENV From 466bd7fb6dff9ecdcc176434318bcb307de6e4b5 Mon Sep 17 00:00:00 2001 From: binn Date: Fri, 5 Dec 2025 17:21:50 +0000 Subject: [PATCH 19/25] Upgrade .NET SDK to spec 21.20.7-nightly.3 --- src/VRChat.API/Client/Configuration.cs | 4 ++-- src/VRChat.API/VRChat.API.csproj | 2 +- .../VRChat.API.Extensions.Hosting.csproj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/VRChat.API/Client/Configuration.cs b/src/VRChat.API/Client/Configuration.cs index 82a0131b..1cf31de1 100644 --- a/src/VRChat.API/Client/Configuration.cs +++ b/src/VRChat.API/Client/Configuration.cs @@ -33,7 +33,7 @@ public class Configuration : IReadableConfiguration /// Version of the package. /// /// Version of the package. - public const string Version = "2.20.7-nightly"; + public const string Version = "21.20.7-nightly.3"; /// /// Identifier for ISO 8601 DateTime Format @@ -540,7 +540,7 @@ public static string ToDebugReport() report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.20.7-nightly.3\n"; - report += " SDK Package Version: 2.20.7-nightly\n"; + report += " SDK Package Version: 21.20.7-nightly.3\n"; return report; } diff --git a/src/VRChat.API/VRChat.API.csproj b/src/VRChat.API/VRChat.API.csproj index 0372c482..9f4c7b10 100644 --- a/src/VRChat.API/VRChat.API.csproj +++ b/src/VRChat.API/VRChat.API.csproj @@ -12,7 +12,7 @@ VRChat API Library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API - 2.20.7-nightly + 21.20.7-nightly.3 bin\$(Configuration)\$(TargetFramework)\VRChat.API.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git diff --git a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj index f6535dea..a646f09e 100644 --- a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj +++ b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj @@ -12,7 +12,7 @@ Extensions for hosting and dependency injection for the VRChat API Library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API.Extensions.Hosting - 2.20.7-nightly + 21.20.7-nightly.3 bin\$(Configuration)\$(TargetFramework)\VRChat.API.Extensions.Hosting.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git From 8997d777965cdb04793848ef6b607bb0587679b4 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:23:58 -0600 Subject: [PATCH 20/25] remove quotes to fix versioning --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 68ab2f04..a2fd52cf 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -57,7 +57,7 @@ jobs: - name: Check version number run: | - vrchat_sdk_version="$(( ${PASSED_VERSION%%.*} + 1))${PASSED_VERSION#"${major}"}${VERSION_POSTPEND}" + vrchat_sdk_version=$(( ${PASSED_VERSION%%.*} + 1))${PASSED_VERSION#"${major}"}${VERSION_POSTPEND} echo "Version is: ${vrchat_sdk_version}" echo "vrchat_sdk_version=$vrchat_sdk_version" >> $GITHUB_ENV From c7784f6cc0f8274df1e56b92cfe6f03884a84135 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:26:43 -0600 Subject: [PATCH 21/25] thanks AI --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a2fd52cf..dac69c6a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -57,7 +57,7 @@ jobs: - name: Check version number run: | - vrchat_sdk_version=$(( ${PASSED_VERSION%%.*} + 1))${PASSED_VERSION#"${major}"}${VERSION_POSTPEND} + vrchat_sdk_version=$(( ${PASSED_VERSION%%.*} + 1))${PASSED_VERSION#*.}${VERSION_POSTPEND} echo "Version is: ${vrchat_sdk_version}" echo "vrchat_sdk_version=$vrchat_sdk_version" >> $GITHUB_ENV From cd0a6fbfedec762dd4eedf19d8851a23df544d88 Mon Sep 17 00:00:00 2001 From: binn Date: Fri, 5 Dec 2025 17:27:27 +0000 Subject: [PATCH 22/25] Upgrade .NET SDK to spec 220.7-nightly.3 --- src/VRChat.API/Client/Configuration.cs | 4 ++-- src/VRChat.API/VRChat.API.csproj | 2 +- .../VRChat.API.Extensions.Hosting.csproj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/VRChat.API/Client/Configuration.cs b/src/VRChat.API/Client/Configuration.cs index 1cf31de1..0f82e3eb 100644 --- a/src/VRChat.API/Client/Configuration.cs +++ b/src/VRChat.API/Client/Configuration.cs @@ -33,7 +33,7 @@ public class Configuration : IReadableConfiguration /// Version of the package. /// /// Version of the package. - public const string Version = "21.20.7-nightly.3"; + public const string Version = "220.7-nightly.3"; /// /// Identifier for ISO 8601 DateTime Format @@ -540,7 +540,7 @@ public static string ToDebugReport() report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.20.7-nightly.3\n"; - report += " SDK Package Version: 21.20.7-nightly.3\n"; + report += " SDK Package Version: 220.7-nightly.3\n"; return report; } diff --git a/src/VRChat.API/VRChat.API.csproj b/src/VRChat.API/VRChat.API.csproj index 9f4c7b10..86a51a69 100644 --- a/src/VRChat.API/VRChat.API.csproj +++ b/src/VRChat.API/VRChat.API.csproj @@ -12,7 +12,7 @@ VRChat API Library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API - 21.20.7-nightly.3 + 220.7-nightly.3 bin\$(Configuration)\$(TargetFramework)\VRChat.API.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git diff --git a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj index a646f09e..7fa20008 100644 --- a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj +++ b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj @@ -12,7 +12,7 @@ Extensions for hosting and dependency injection for the VRChat API Library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API.Extensions.Hosting - 21.20.7-nightly.3 + 220.7-nightly.3 bin\$(Configuration)\$(TargetFramework)\VRChat.API.Extensions.Hosting.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git From ccc89d9b1c7384864eacda9e8f988b7a3e795cae Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 11:27:29 -0600 Subject: [PATCH 23/25] fix one last time my friend --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index dac69c6a..a8753723 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -57,7 +57,7 @@ jobs: - name: Check version number run: | - vrchat_sdk_version=$(( ${PASSED_VERSION%%.*} + 1))${PASSED_VERSION#*.}${VERSION_POSTPEND} + vrchat_sdk_version=$(( ${PASSED_VERSION%%.*} + 1)).${PASSED_VERSION#*.}${VERSION_POSTPEND} echo "Version is: ${vrchat_sdk_version}" echo "vrchat_sdk_version=$vrchat_sdk_version" >> $GITHUB_ENV From 8c67db9086c6e35b5fc44e5e25e8e679e2328065 Mon Sep 17 00:00:00 2001 From: binn Date: Fri, 5 Dec 2025 17:28:17 +0000 Subject: [PATCH 24/25] Upgrade .NET SDK to spec 2.20.7-nightly.3 --- src/VRChat.API/Client/Configuration.cs | 4 ++-- src/VRChat.API/VRChat.API.csproj | 2 +- .../VRChat.API.Extensions.Hosting.csproj | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/VRChat.API/Client/Configuration.cs b/src/VRChat.API/Client/Configuration.cs index 0f82e3eb..6d2167c5 100644 --- a/src/VRChat.API/Client/Configuration.cs +++ b/src/VRChat.API/Client/Configuration.cs @@ -33,7 +33,7 @@ public class Configuration : IReadableConfiguration /// Version of the package. /// /// Version of the package. - public const string Version = "220.7-nightly.3"; + public const string Version = "2.20.7-nightly.3"; /// /// Identifier for ISO 8601 DateTime Format @@ -540,7 +540,7 @@ public static string ToDebugReport() report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 1.20.7-nightly.3\n"; - report += " SDK Package Version: 220.7-nightly.3\n"; + report += " SDK Package Version: 2.20.7-nightly.3\n"; return report; } diff --git a/src/VRChat.API/VRChat.API.csproj b/src/VRChat.API/VRChat.API.csproj index 86a51a69..a35f4d7f 100644 --- a/src/VRChat.API/VRChat.API.csproj +++ b/src/VRChat.API/VRChat.API.csproj @@ -12,7 +12,7 @@ VRChat API Library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API - 220.7-nightly.3 + 2.20.7-nightly.3 bin\$(Configuration)\$(TargetFramework)\VRChat.API.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git diff --git a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj index 7fa20008..3c58516b 100644 --- a/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj +++ b/wrapper/VRChat.API.Extensions.Hosting/VRChat.API.Extensions.Hosting.csproj @@ -12,7 +12,7 @@ Extensions for hosting and dependency injection for the VRChat API Library for .NET Copyright © 2021 Owners of GitHub organisation "vrchatapi" and individual contributors. VRChat.API.Extensions.Hosting - 220.7-nightly.3 + 2.20.7-nightly.3 bin\$(Configuration)\$(TargetFramework)\VRChat.API.Extensions.Hosting.xml MIT https://github.com/vrchatapi/vrchatapi-csharp.git From 242a9f600e0264b3423d4500362181cd92f568f4 Mon Sep 17 00:00:00 2001 From: Sarmad Wahab Date: Fri, 5 Dec 2025 17:06:13 -0600 Subject: [PATCH 25/25] CI auto version bump, yay --- .github/workflows/realtime-ci.yml | 73 +++++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 14 deletions(-) diff --git a/.github/workflows/realtime-ci.yml b/.github/workflows/realtime-ci.yml index eb1b588b..8beb0631 100644 --- a/.github/workflows/realtime-ci.yml +++ b/.github/workflows/realtime-ci.yml @@ -1,30 +1,75 @@ +name: Build and Publish VRChat Realtime SDK + on: + push: + branches: + - main + paths: + - 'wrapper/VRChat.API.Realtime/**' + - '.github/workflows/realtime-ci.yml' workflow_dispatch: -name: Build and Publish VRChat Realtime SDK - jobs: - generate: + build-and-publish: runs-on: ubuntu-latest name: Build and Publish VRChat Realtime SDK steps: - - name: Setup NuGet - uses: NuGet/setup-nuget@v1.1.1 + - name: Checkout current commit + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Fetch all history to compare versions - - uses: actions/setup-dotnet@v5 + - name: Setup .NET + uses: actions/setup-dotnet@v5 with: dotnet-version: '8.0.x' - - name: Publish to VRChat.API.Realtime to NuGet + - name: Setup NuGet + uses: NuGet/setup-nuget@v1.1.1 + + - name: Get current version from csproj + id: current_version + run: | + VERSION=$(grep -oP '(?<=)[^<]+' wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj) + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Current version: $VERSION" + + - name: Get previous version from NuGet + id: nuget_version + run: | + # Try to get the latest version from NuGet + NUGET_VERSION=$(curl -s "https://api.nuget.org/v3-flatcontainer/vrchat.api.realtime/index.json" | jq -r '.versions[-1]' 2>/dev/null || echo "0.0.0") + if [ "$NUGET_VERSION" = "null" ] || [ -z "$NUGET_VERSION" ]; then + NUGET_VERSION="0.0.0" + fi + echo "version=$NUGET_VERSION" >> $GITHUB_OUTPUT + echo "Latest NuGet version: $NUGET_VERSION" + + - name: Check if version changed + id: version_check + run: | + CURRENT="${{ steps.current_version.outputs.version }}" + NUGET="${{ steps.nuget_version.outputs.version }}" + + echo "Current version: $CURRENT" + echo "NuGet version: $NUGET" + + if [ "$CURRENT" != "$NUGET" ]; then + echo "Version changed from $NUGET to $CURRENT" + echo "changed=true" >> $GITHUB_OUTPUT + else + echo "Version unchanged ($CURRENT)" + echo "changed=false" >> $GITHUB_OUTPUT + fi + + - name: Build project + run: dotnet build wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj --configuration Release + + - name: Publish to NuGet + if: steps.version_check.outputs.changed == 'true' uses: pairbit/publish-nuget@v2.5.8 with: - # Filepath of the project to be packaged, relative to root of repository PROJECT_FILE_PATH: wrapper/VRChat.API.Realtime/VRChat.API.Realtime.csproj - # NuGet package id, used for version detection & defaults to project name PACKAGE_NAME: VRChat.API.Realtime - # API key to authenticate with NuGet server - NUGET_KEY: ${{secrets.NUGET_KEY}} - # NuGet server uri hosting the packages, defaults to https://api.nuget.org - # NUGET_SOURCE: https://api.nuget.org - # Flag to toggle pushing symbols along with nuget package to the server, disabled by default + NUGET_KEY: ${{ secrets.NUGET_KEY }} INCLUDE_SYMBOLS: true \ No newline at end of file