diff --git a/Core/Callbacks/BuildsCallbacks.cs b/Core/Callbacks/BuildsCallbacks.cs index 611ed95e..7a59aa65 100644 --- a/Core/Callbacks/BuildsCallbacks.cs +++ b/Core/Callbacks/BuildsCallbacks.cs @@ -1,5 +1,7 @@ -using Core.Models.Eft.Common; +using Core.Models.Eft.Builds; +using Core.Models.Eft.Common; using Core.Models.Eft.HttpResponse; +using Core.Models.Eft.PresetBuild; using Core.Models.Eft.Profile; namespace Core.Callbacks; @@ -15,6 +17,24 @@ public class BuildsCallbacks { throw new NotImplementedException(); } - - + + public NullResponseData CreateMagazineTemplate(string url, SetMagazineRequest info, string sessionID) + { + throw new NotImplementedException(); + } + + public NullResponseData SetWeapon(string url, PresetBuildActionRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public NullResponseData SetEquipment(string url, PresetBuildActionRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public NullResponseData DeleteBuild(string url, RemoveBuildRequestData info, string sessionID) + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/Core/Callbacks/BundleCallbacks.cs b/Core/Callbacks/BundleCallbacks.cs index e7a17424..2900670a 100644 --- a/Core/Callbacks/BundleCallbacks.cs +++ b/Core/Callbacks/BundleCallbacks.cs @@ -1,7 +1,16 @@ -namespace Core.Callbacks; +using Core.Models.Spt.Config; + +namespace Core.Callbacks; public class BundleCallbacks { + private HttpConfig _httpConfig; + + public BundleCallbacks() + { + + } + public object SendBundle(string sessionID, object req, object res, object body) { throw new NotImplementedException(); diff --git a/Core/Callbacks/ClientLogCallbacks.cs b/Core/Callbacks/ClientLogCallbacks.cs new file mode 100644 index 00000000..45294e54 --- /dev/null +++ b/Core/Callbacks/ClientLogCallbacks.cs @@ -0,0 +1,27 @@ +using Core.Models.Eft.HttpResponse; +using Core.Models.Spt.Logging; + +namespace Core.Callbacks; + +public class ClientLogCallbacks +{ + public ClientLogCallbacks() + { + + } + + public NullResponseData ClientLog(string url, ClientLogRequest info, string sessionID) + { + throw new NotImplementedException(); + } + + public string ReleaseNotes() + { + throw new NotImplementedException(); + } + + public string BsgLogging() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Core/Callbacks/CustomizationCallbacks.cs b/Core/Callbacks/CustomizationCallbacks.cs index 4856d34d..515f43c7 100644 --- a/Core/Callbacks/CustomizationCallbacks.cs +++ b/Core/Callbacks/CustomizationCallbacks.cs @@ -1,8 +1,19 @@ -namespace Core.Callbacks; +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Tables; +using Core.Models.Eft.Customization; +using Core.Models.Eft.HttpResponse; +using Core.Models.Eft.ItemEvent; + +namespace Core.Callbacks; public class CustomizationCallbacks { - public GetBodyResponseData GetSuits(string url, object info, string sessionID) + public CustomizationCallbacks() + { + + } + + public GetBodyResponseData GetSuits(string url, EmptyRequestData info, string sessionID) { throw new NotImplementedException(); } diff --git a/Core/Callbacks/DataCallbacks.cs b/Core/Callbacks/DataCallbacks.cs new file mode 100644 index 00000000..ec352da2 --- /dev/null +++ b/Core/Callbacks/DataCallbacks.cs @@ -0,0 +1,86 @@ +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Tables; +using Core.Models.Eft.Game; +using Core.Models.Eft.Hideout; +using Core.Models.Eft.HttpResponse; +using Core.Models.Spt.Server; + +namespace Core.Callbacks; + +public class DataCallbacks +{ + public DataCallbacks() + { + + } + + public GetBodyResponseData GetSettings(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData GetGlobals(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public string GetTemplateItems(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData GetTemplateHandbook(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData> GetTemplateSuits(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData> GetTemplateCharacter(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData GetHideoutSettings(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData> GetHideoutAreas(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData GetHideoutProduction(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData> GetLocalesLanguages(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData GetLocalesMenu(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public string GetLocalesGlobal(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public string GetQteList(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } + + public GetBodyResponseData GetItemPrices(string url, EmptyRequestData info, string sessionID) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Core/Callbacks/DialogCallbacks.cs b/Core/Callbacks/DialogCallbacks.cs index 89346a79..ea7efc7d 100644 --- a/Core/Callbacks/DialogCallbacks.cs +++ b/Core/Callbacks/DialogCallbacks.cs @@ -1,4 +1,9 @@ -namespace Core.Callbacks; +using Core.Models.Eft.Common; +using Core.Models.Eft.Dialog; +using Core.Models.Eft.HttpResponse; +using Core.Models.Eft.Profile; + +namespace Core.Callbacks; public class DialogCallbacks { @@ -7,7 +12,7 @@ public class DialogCallbacks throw new NotImplementedException(); } - public GetBodyResponseData> GetChatServerList(string url, GetChatServerListRequestData info, string sessionID) + public GetBodyResponseData> GetChatServerList(string url, GetChatServerListRequestData info, string sessionID) { throw new NotImplementedException(); } diff --git a/Core/Models/Config/HttpConfig.cs b/Core/Models/Config/HttpConfig.cs deleted file mode 100644 index b661f3b1..00000000 --- a/Core/Models/Config/HttpConfig.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Core.Models.Config; - -public class HttpConfig -{ - public int Port { get; set; } - public string Ip { get; set; } - public bool LogRequests { get; set; } -} \ No newline at end of file diff --git a/Core/Models/Eft/Builds/SetMagazineRequest.cs b/Core/Models/Eft/Builds/SetMagazineRequest.cs new file mode 100644 index 00000000..49f53fcc --- /dev/null +++ b/Core/Models/Eft/Builds/SetMagazineRequest.cs @@ -0,0 +1,25 @@ +using System.Text.Json.Serialization; +using Core.Models.Eft.Profile; + +namespace Core.Models.Eft.Builds; + +public class SetMagazineRequest +{ + [JsonPropertyName("Id")] + public string Id { get; set; } + + [JsonPropertyName("Name")] + public string Name { get; set; } + + [JsonPropertyName("Caliber")] + public string Caliber { get; set; } + + [JsonPropertyName("Items")] + public List Items { get; set; } + + [JsonPropertyName("TopCount")] + public int TopCount { get; set; } + + [JsonPropertyName("BottomCount")] + public int BottomCount { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Customization/BuyClothingRequestData.cs b/Core/Models/Eft/Customization/BuyClothingRequestData.cs new file mode 100644 index 00000000..3d22dcbc --- /dev/null +++ b/Core/Models/Eft/Customization/BuyClothingRequestData.cs @@ -0,0 +1,27 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.Customization; + +public class BuyClothingRequestData +{ + [JsonPropertyName("Action")] + public string Action { get; set; } = "CustomizationBuy"; + + [JsonPropertyName("offer")] + public string Offer { get; set; } + + [JsonPropertyName("items")] + public List Items { get; set; } +} + +public class PaymentItemForClothing +{ + [JsonPropertyName("del")] + public bool Del { get; set; } + + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("count")] + public int Count { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Customization/CustomizationSetRequest.cs b/Core/Models/Eft/Customization/CustomizationSetRequest.cs new file mode 100644 index 00000000..ea01a9f7 --- /dev/null +++ b/Core/Models/Eft/Customization/CustomizationSetRequest.cs @@ -0,0 +1,24 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.Customization; + +public class CustomizationSetRequest +{ + [JsonPropertyName("Action")] + public string Action { get; set; } = "CustomizationSet"; + + [JsonPropertyName("customizations")] + public List Customizations { get; set; } +} + +public class CustomizationSetOption +{ + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("type")] + public string Type { get; set; } + + [JsonPropertyName("source")] + public string Source { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Customization/GetSuitsResponse.cs b/Core/Models/Eft/Customization/GetSuitsResponse.cs new file mode 100644 index 00000000..9565c089 --- /dev/null +++ b/Core/Models/Eft/Customization/GetSuitsResponse.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.Customization; + +public class GetSuitsResponse +{ + [JsonPropertyName("_id")] + public string Id { get; set; } + + [JsonPropertyName("suites")] + public string[] Suites { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Customization/WearClothingRequestData.cs b/Core/Models/Eft/Customization/WearClothingRequestData.cs new file mode 100644 index 00000000..747d2994 --- /dev/null +++ b/Core/Models/Eft/Customization/WearClothingRequestData.cs @@ -0,0 +1,6 @@ +namespace Core.Models.Eft.Customization; + +public class WearClothingRequestData +{ + +} \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/ChatServer.cs b/Core/Models/Eft/Dialog/ChatServer.cs new file mode 100644 index 00000000..27b3bb67 --- /dev/null +++ b/Core/Models/Eft/Dialog/ChatServer.cs @@ -0,0 +1,43 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.Dialog; + +public class ChatServer +{ + [JsonPropertyName("_id")] + public string Id { get; set; } + + [JsonPropertyName("RegistrationId")] + public int RegistrationId { get; set; } + + [JsonPropertyName("VersionId")] + public string VersionId { get; set; } + + [JsonPropertyName("Ip")] + public string Ip { get; set; } + + [JsonPropertyName("Port")] + public int Port { get; set; } + + [JsonPropertyName("DateTime")] + public long DateTime { get; set; } + + [JsonPropertyName("Chats")] + public List Chats { get; set; } + + [JsonPropertyName("Regions")] + public List Regions { get; set; } + + /** Possibly removed */ + [JsonPropertyName("IsDeveloper")] + public bool? IsDeveloper { get; set; } +} + +public class Chat +{ + [JsonPropertyName("_id")] + public string Id { get; set; } + + [JsonPropertyName("Members")] + public int Members { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs new file mode 100644 index 00000000..86265d65 --- /dev/null +++ b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs @@ -0,0 +1,9 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.Dialog; + +public class GetChatServerListRequestData +{ + [JsonPropertyName("VersionId")] + public string VersionId { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetFriendListDataResponse.cs b/Core/Models/Eft/Dialog/GetFriendListDataResponse.cs new file mode 100644 index 00000000..8c26afa7 --- /dev/null +++ b/Core/Models/Eft/Dialog/GetFriendListDataResponse.cs @@ -0,0 +1,16 @@ +using System.Text.Json.Serialization; +using Core.Models.Eft.Profile; + +namespace Core.Models.Eft.Dialog; + +public class GetFriendListDataResponse +{ + [JsonPropertyName("Friends")] + public List Friends { get; set; } + + [JsonPropertyName("Ignore")] + public List Ignore { get; set; } + + [JsonPropertyName("InIgnoreList")] + public List InIgnoreList { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs new file mode 100644 index 00000000..90084b53 --- /dev/null +++ b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.Dialog; + +public class GetMailDialogListRequestData +{ + [JsonPropertyName("limit")] + public int Limit { get; set; } + + [JsonPropertyName("offset")] + public int Offset { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/Game/GetItemPricesResponse.cs b/Core/Models/Eft/Game/GetItemPricesResponse.cs new file mode 100644 index 00000000..00744a82 --- /dev/null +++ b/Core/Models/Eft/Game/GetItemPricesResponse.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.Game; + +public class GetItemPricesResponse +{ + [JsonPropertyName("supplyNextTime")] + public double SupplyNextTime { get; set; } + + [JsonPropertyName("prices")] + public Dictionary Prices { get; set; } + + [JsonPropertyName("currencyCourses")] + public Dictionary CurrencyCourses { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/HttpResponse/NullResponseData.cs b/Core/Models/Eft/HttpResponse/NullResponseData.cs new file mode 100644 index 00000000..9656a444 --- /dev/null +++ b/Core/Models/Eft/HttpResponse/NullResponseData.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.HttpResponse; + +public class NullResponseData +{ + [JsonPropertyName("err")] + public int Err { get; set; } + + [JsonPropertyName("errmsg")] + public object ErrMsg { get; set; } + + [JsonPropertyName("data")] + public object Data { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/ItemEvent/EmptyItemEventRouterResponse.cs b/Core/Models/Eft/ItemEvent/EmptyItemEventRouterResponse.cs new file mode 100644 index 00000000..52cc74ce --- /dev/null +++ b/Core/Models/Eft/ItemEvent/EmptyItemEventRouterResponse.cs @@ -0,0 +1,9 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.ItemEvent; + +public class EmptyItemEventRouterResponse : ItemEventRouterBase +{ + [JsonPropertyName("profileChanges")] + public string ProfileChanges { get; set; } = ""; +} \ No newline at end of file diff --git a/Core/Models/Eft/ItemEvent/ItemEventRouterBase.cs b/Core/Models/Eft/ItemEvent/ItemEventRouterBase.cs new file mode 100644 index 00000000..aeadcf82 --- /dev/null +++ b/Core/Models/Eft/ItemEvent/ItemEventRouterBase.cs @@ -0,0 +1,188 @@ +using Core.Models.Eft.Common.Tables; +using Core.Models.Eft.Ragfair; +using Core.Models.Enums; + +namespace Core.Models.Eft.ItemEvent; + +using System.Text.Json.Serialization; + +public class ItemEventRouterBase +{ + [JsonPropertyName("warnings")] + public List Warnings { get; set; } + + [JsonPropertyName("profileChanges")] + public object ProfileChanges { get; set; } // Note: using object to accommodate string or TProfileChanges +} + +public class TProfileChanges : Dictionary { } + +public class Warning +{ + [JsonPropertyName("index")] + public int Index { get; set; } + + [JsonPropertyName("errmsg")] + public string ErrorMessage { get; set; } + + [JsonPropertyName("code")] + public string Code { get; set; } + + [JsonPropertyName("data")] + public object Data { get; set; } +} + +public class ProfileChange +{ + [JsonPropertyName("_id")] + public string Id { get; set; } + + [JsonPropertyName("experience")] + public int Experience { get; set; } + + [JsonPropertyName("quests")] + public List Quests { get; set; } + + [JsonPropertyName("ragFairOffers")] + public List RagFairOffers { get; set; } + + [JsonPropertyName("weaponBuilds")] + public List WeaponBuilds { get; set; } + + [JsonPropertyName("equipmentBuilds")] + public List EquipmentBuilds { get; set; } + + [JsonPropertyName("items")] + public ItemChanges Items { get; set; } + + [JsonPropertyName("production")] + public Dictionary Production { get; set; } + + /** Hideout area improvement id */ + [JsonPropertyName("improvements")] + public Dictionary Improvements { get; set; } + + [JsonPropertyName("skills")] + public Skills Skills { get; set; } + + [JsonPropertyName("health")] + public Common.Health Health { get; set; } + + [JsonPropertyName("traderRelations")] + public Dictionary TraderRelations { get; set; } + + [JsonPropertyName("moneyTransferLimitData")] + public MoneyTransferLimits MoneyTransferLimitData { get; set; } + + [JsonPropertyName("repeatableQuests")] + public List RepeatableQuests { get; set; } + + [JsonPropertyName("recipeUnlocked")] + public Dictionary RecipeUnlocked { get; set; } + + [JsonPropertyName("changedHideoutStashes")] + public Dictionary ChangedHideoutStashes { get; set; } + + [JsonPropertyName("questsStatus")] + public List QuestsStatus { get; set; } +} + +public class HideoutStashItem +{ + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("tpl")] + public string Template { get; set; } +} + +public class WeaponBuildChange +{ + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("root")] + public string Root { get; set; } + + [JsonPropertyName("items")] + public List Items { get; set; } +} + +public class EquipmentBuildChange +{ + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("root")] + public string Root { get; set; } + + [JsonPropertyName("items")] + public List Items { get; set; } + + [JsonPropertyName("type")] + public string Type { get; set; } + + [JsonPropertyName("fastpanel")] + public List FastPanel { get; set; } + + [JsonPropertyName("buildType")] + public EquipmentBuildType BuildType { get; set; } +} + +public class ItemChanges +{ + [JsonPropertyName("new")] + public List NewItems { get; set; } + + [JsonPropertyName("change")] + public List ChangedItems { get; set; } + + [JsonPropertyName("del")] + public List DeletedItems { get; set; } // Only needs _id property +} + +/** Related to TraderInfo */ +public class TraderData +{ + [JsonPropertyName("salesSum")] + public double SalesSum { get; set; } + + [JsonPropertyName("standing")] + public double Standing { get; set; } + + [JsonPropertyName("loyalty")] + public double Loyalty { get; set; } + + [JsonPropertyName("unlocked")] + public bool Unlocked { get; set; } + + [JsonPropertyName("disabled")] + public bool Disabled { get; set; } +} + +public class Product +{ + [JsonPropertyName("_id")] + public string Id { get; set; } + + [JsonPropertyName("_tpl")] + public string Template { get; set; } + + [JsonPropertyName("parentId")] + public string ParentId { get; set; } + + [JsonPropertyName("slotId")] + public string SlotId { get; set; } + + [JsonPropertyName("location")] + public ItemLocation Location { get; set; } + + [JsonPropertyName("upd")] + public Upd Upd { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs b/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs new file mode 100644 index 00000000..d0d855e9 --- /dev/null +++ b/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs @@ -0,0 +1,54 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.ItemEvent; + +public class ItemEventRouterRequest +{ + [JsonPropertyName("data")] + public List Data { get; set; } + + [JsonPropertyName("tm")] + public int Time { get; set; } + + [JsonPropertyName("reload")] + public int Reload { get; set; } +} + +public class Daum +{ + [JsonPropertyName("Action")] + public string Action { get; set; } + + [JsonPropertyName("item")] + public string Item { get; set; } + + [JsonPropertyName("to")] + public To To { get; set; } +} + +public class To +{ + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("container")] + public string Container { get; set; } + + [JsonPropertyName("location")] + public Location Location { get; set; } +} + +public class Location +{ + [JsonPropertyName("x")] + public int X { get; set; } + + [JsonPropertyName("y")] + public int Y { get; set; } + + [JsonPropertyName("r")] + public string R { get; set; } + + [JsonPropertyName("isSearched")] + public bool IsSearched { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/ItemEvent/ItemEventRouterResponse.cs b/Core/Models/Eft/ItemEvent/ItemEventRouterResponse.cs new file mode 100644 index 00000000..15c9baa7 --- /dev/null +++ b/Core/Models/Eft/ItemEvent/ItemEventRouterResponse.cs @@ -0,0 +1,6 @@ +namespace Core.Models.Eft.ItemEvent; + +public class ItemEventRouterResponse : ItemEventRouterBase +{ + +} \ No newline at end of file diff --git a/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs b/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs new file mode 100644 index 00000000..cfdeae9e --- /dev/null +++ b/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs @@ -0,0 +1,23 @@ +using System.Text.Json.Serialization; +using Core.Models.Eft.Common.Tables; + +namespace Core.Models.Eft.PresetBuild; + +public class PresetBuildActionRequestData +{ + [JsonPropertyName("Action")] + public string Action { get; set; } + + [JsonPropertyName("Id")] + public string Id { get; set; } + + /** name of preset given by player */ + [JsonPropertyName("Name")] + public string Name { get; set; } + + [JsonPropertyName("Root")] + public string Root { get; set; } + + [JsonPropertyName("Items")] + public List Items { get; set; } +} \ No newline at end of file diff --git a/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs b/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs new file mode 100644 index 00000000..0ae98fac --- /dev/null +++ b/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs @@ -0,0 +1,9 @@ +using System.Text.Json.Serialization; + +namespace Core.Models.Eft.PresetBuild; + +public class RemoveBuildRequestData +{ + [JsonPropertyName("id")] + public string Id { get; set; } +} \ No newline at end of file