From 4ad9923b6c7cca70257c9d226b9769e4f6768c4d Mon Sep 17 00:00:00 2001 From: Brett Morrison Date: Mon, 26 May 2025 07:33:06 -0700 Subject: [PATCH 1/2] Updated Packages --- TrueVote.Comms/.config/dotnet-tools.json | 5 +++-- TrueVote.Comms/TrueVote.Comms.csproj | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/TrueVote.Comms/.config/dotnet-tools.json b/TrueVote.Comms/.config/dotnet-tools.json index 90d81ff..eca27f2 100644 --- a/TrueVote.Comms/.config/dotnet-tools.json +++ b/TrueVote.Comms/.config/dotnet-tools.json @@ -3,10 +3,11 @@ "isRoot": true, "tools": { "nswag.consolecore": { - "version": "13.20.0", + "version": "14.4.0", "commands": [ "nswag" - ] + ], + "rollForward": false } } } \ No newline at end of file diff --git a/TrueVote.Comms/TrueVote.Comms.csproj b/TrueVote.Comms/TrueVote.Comms.csproj index 92a227c..b251bde 100644 --- a/TrueVote.Comms/TrueVote.Comms.csproj +++ b/TrueVote.Comms/TrueVote.Comms.csproj @@ -20,8 +20,9 @@ - + + From 3cf3cbe5b5ae01311bdcac011d25783dfcbe22bd Mon Sep 17 00:00:00 2001 From: Brett Morrison Date: Mon, 26 May 2025 07:36:57 -0700 Subject: [PATCH 2/2] AD-161 Moved Telegram Bot functionality here from TrueVote.Bot. Removed ServiceBusReceiver class as all messages go through ProcessCommsMessage. --- README.md | 14 +- TrueVote.Comms/Bots/TelegramBot.cs | 405 ++ TrueVote.Comms/Program.cs | 4 + TrueVote.Comms/Services/CommsFunction.cs | 30 +- TrueVote.Comms/Services/ServiceBusReceiver.cs | 66 - TrueVote.Comms/TrueVote.Api.cs | 4884 ++++++++++++----- 6 files changed, 3898 insertions(+), 1505 deletions(-) create mode 100644 TrueVote.Comms/Bots/TelegramBot.cs delete mode 100644 TrueVote.Comms/Services/ServiceBusReceiver.cs diff --git a/README.md b/README.md index d7f7172..f7f19f4 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,15 @@ ## 🌈 Overview -TrueVote.Comms is an implementation of interacting with the TrueVote Voting Suite of Applications via Communication (Email, Notifications, etc.). It's deployed as an Azure Functions project. +TrueVote.Comms is an implementation of interacting with the TrueVote Voting Suite of Applications via Communication (Email, Notifications, Bots, etc.). It's deployed as an Azure Functions project. -The main technology stack platform is [.NET Core](https://dotnet.microsoft.com/) 8.0. +The main technology stack platform is [.NET Core](https://dotnet.microsoft.com/) 9.0. + +[Telegram](https://telegram.org/) is the first bot implemented. Additional Bot frameworks can be added. ## 🛠 Prerequisites -* Install Visual Studio 2022 (preview) or later, or Visual Studio Code. Ensure that `$ dotnet --version` is at least 8.0. +* Install Visual Studio 2022 (preview) or later, or Visual Studio Code. Ensure that `$ dotnet --version` is at least 9.0. ## ⌨️ Install, Build, and Run the Comms @@ -34,6 +36,8 @@ Get the `ServiceAccountNsec` by registering a user using the [TrueVote App](http "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "BaseApiUrl": "https://localhost:7253/api", + "TelegramBotKey": "", + "TelegramRuntimeChannel": "TrueVote_Api_Runtime_Channel_Dev", "ServiceBusConnectionString": "", "ServiceBusCommsQueueName": "comms-dev", "ServiceAccountNsec": "", @@ -62,9 +66,9 @@ To refresh the models, use `nswag`. Nswag is installed in this project as a `dotnet tool`. -Local: `$ dotnet nswag swagger2csclient /client-language:csharp /input:https://localhost:7253/swagger/v1/swagger.json /output:TrueVote.Api.cs /namespace:TrueVote.Api` +Local: `$ dotnet nswag openapi2csclient /input:https://localhost:7253/swagger/v1/swagger.json /output:TrueVote.Api.cs /namespace:TrueVote.Api` -Production: `$ dotnet nswag swagger2csclient /client-language:csharp /input:https://api.truevote.org/swagger/v1/swagger.json /output:TrueVote.Api.cs /namespace:TrueVote.Api` +Production: `$ dotnet nswag openapi2csclient /input:https://api.truevote.org/swagger/v1/swagger.json /output:TrueVote.Api.cs /namespace:TrueVote.Api` ## 🎁 Versioning diff --git a/TrueVote.Comms/Bots/TelegramBot.cs b/TrueVote.Comms/Bots/TelegramBot.cs new file mode 100644 index 0000000..ff1ba7b --- /dev/null +++ b/TrueVote.Comms/Bots/TelegramBot.cs @@ -0,0 +1,405 @@ +#pragma warning disable CS8601 // Possible null reference assignment. +#pragma warning disable CS8603 // Possible null reference return. +#pragma warning disable CS8604 // Possible null reference argument. +#pragma warning disable CS8602 // Dereference of a possibly null reference. +#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed +#pragma warning disable IDE0058 // Expression value is never used +#pragma warning disable CS0618 // Type or member is obsolete + +using Telegram.Bot; +using Telegram.Bot.Exceptions; +using Telegram.Bot.Types; +using Telegram.Bot.Types.Enums; +using System.Diagnostics.CodeAnalysis; +using Newtonsoft.Json; +using TrueVote.Api; +using Telegram.Bot.Polling; +using Newtonsoft.Json.Linq; +using System.Net; +using System.Text.Json; + +// TODO Localize this service, since it returns English messages to Telegram +// See local.settings.json for local settings and Azure Portal for production settings +namespace TrueVote.Comms.Bots +{ + [ExcludeFromCodeCoverage] // TODO Write tests. This requires mocking the Telegram API + public class TelegramBot + { + private static HttpClientHandler? httpClientHandler; + private static TelegramBotClient? botClient = null; // To connect to bot: https://t.me/TrueVoteAPI_bot + private static string TelegramRuntimeChannel = string.Empty; + private static string BaseApiUrl = string.Empty; + private static readonly string HelpText = "📖 TrueVote API Comms enables you execute some commands on the API. Simply use / in this chat to see a list of commands. To view broadcast messages, be sure and join the TrueVote API Runtime Channel: https://t.me/{0}"; + + public TelegramBot() + { + Init(); + } + + private static void LogInformation(string s) + { + // Would have preferred to use a _logger.LogInformation pattern here but had trouble getting Init() below + // to not detach the _logger variable after the first await call. So for now using Console.WriteLine(), which is crude, but works + Console.WriteLine(s); + } + + public async Task Init() + { + if (botClient != null) // In case the function is called again, if it's initialized, don't do it again + return; + + LogInformation("TelegramBot.Init()"); + + using var cts = new CancellationTokenSource(); + + // List of BotCommands + var commands = new List() { + new() { Command = "help", Description = "📖 View summary of what the bot can do" }, + new() { Command = "ballots", Description = "🖥 View the count of total number of ballots" }, + new() { Command = "elections", Description = "🖥 View the count of total number of elections" }, + new() { Command = "health", Description = "🧑‍⚕️ Check the API health" }, + new() { Command = "status", Description = "🖥 View the API status" }, + new() { Command = "version", Description = "🤖 View the API version" } + }; + + // Get the Bot settings + var botKey = Environment.GetEnvironmentVariable("TelegramBotKey"); + if (string.IsNullOrEmpty(botKey)) + { + LogInformation("Error retrieving Telegram BotKey"); + return; + } + + TelegramRuntimeChannel = Environment.GetEnvironmentVariable("TelegramRuntimeChannel"); + if (string.IsNullOrEmpty(TelegramRuntimeChannel)) + { + LogInformation("Error retrieving TelegramRuntimeChannel"); + return; + } + + BaseApiUrl = Environment.GetEnvironmentVariable("BaseApiUrl"); + if (string.IsNullOrEmpty(BaseApiUrl)) + { + LogInformation("Error retrieving BaseApiUrl"); + return; + } + + // Setup HttpClient requests to ignore Certificate errors + httpClientHandler = new HttpClientHandler + { + ClientCertificateOptions = ClientCertificateOption.Manual, + ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => true + }; + + try + { + botClient = new TelegramBotClient(botKey); + } + catch (Exception e) + { + LogInformation($"Error creating Telegram BotClient: {e.Message}"); + return; + } + + var testKey = await botClient.TestApi(); + if (!testKey) + { + LogInformation($"Error with Telegram Api Key - Failure to connect"); + return; + } + + // StartReceiving does not block the caller thread. Receiving is done on the ThreadPool. + var receiverOptions = new ReceiverOptions + { + AllowedUpdates = { } // receive all update types + }; + + try + { + // Inject the bot with these command options + var commandStatus = botClient.SetMyCommands(commands, null, null, cts.Token); + + botClient.StartReceiving(HandleUpdateAsync, HandleErrorAsync, receiverOptions, cancellationToken: cts.Token); + + var me = await botClient.GetMe(); + + LogInformation($"Start listening for @{me.Username}"); + + // Disabling notification doesn't seem to work. Too many of these messages. + //await SendChannelMessageAsync($"TrueVote API Comms Bot Started: @{me.Username}", true); + + // This keeps it running + new ManualResetEvent(false).WaitOne(); + + // Send cancellation request to stop bot + cts.Cancel(); + } + catch (Exception e) + { + LogInformation($"Error handling Telegram Bot Message: {e.Message}"); + return; + } + } + + private async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) + { + // Only process Message updates: https://core.telegram.org/bots/api#message + if (update.Type != UpdateType.Message) + return; + + // Only process text messages + if (update.Message!.Type != MessageType.Text) + return; + + var chatId = update.Message.Chat.Id; + + var messageText = update.Message.Text; + + LogInformation($"Type: {update.Type} Received: '{messageText}' message in bot {chatId}."); + + var messageResponse = string.Empty; + + var command = messageText.ToLower().Split(' ').First(); + + switch (command) + { + case "/help": + { + messageResponse = string.Format(HelpText, TelegramRuntimeChannel); + break; + } + + case "/elections": + { + var ret = await GetElectionsCountAsync(); + messageResponse = $"Total Elections: {ret}"; + break; + } + + case "/ballots": + { + var ret = await GetBallotsCountAsync(); + messageResponse = $"Total Ballots: {ret}"; + break; + } + + case "/health": + { + var ret = await GetHealthAsync(); + messageResponse = $"{ret}"; + break; + } + + case "/status": + { + var ret = await GetStatusAsync(); + messageResponse = $"{ret}"; + break; + } + + case "/version": + { + var ret = await GetVersionAsync(); + messageResponse = $"Version: {ret}"; + break; + } + + default: + { + break; + } + } + + if (messageResponse.Length > 0) + { + var _ = await SendMessageAsync(chatId: chatId, text: messageResponse, cancellationToken: cancellationToken); + LogInformation($"Sent Message: {messageResponse}"); + } + + // Post command to global group channel + await SendChannelMessageAsync($"Bot received command: {command} from user: @{update.Message.Chat.Username}"); + } + + private Task HandleErrorAsync(ITelegramBotClient botClient, Exception exception, CancellationToken cancellationToken) + { + var ErrorMessage = exception switch + { + ApiRequestException apiRequestException => $"Telegram API Error:\n[{apiRequestException.ErrorCode}]\n{apiRequestException.Message}", + _ => exception.ToString() + }; + + LogInformation($"HandleErrorAsync() Error: {ErrorMessage}"); + + return Task.CompletedTask; + } + + private static async Task SendMessageAsync(ChatId chatId, string text, CancellationToken cancellationToken, bool disableNotification = false) + { + try + { + return await botClient.SendMessage(chatId: chatId, text: text, parseMode: ParseMode.None, disableNotification: disableNotification, cancellationToken: cancellationToken); + } + catch (Exception e) + { + LogInformation($"Error sending Telegram Bot Message: {e.Message}"); + return null; + } + } + + public async virtual Task SendChannelMessageAsync(string text, bool disableNotification = false) + { + try + { + return await botClient.SendMessage(chatId: $"@{TelegramRuntimeChannel}", text: text, parseMode: ParseMode.None, disableNotification: disableNotification); + } + catch (Exception e) + { + LogInformation($"Error sending Telegram Channel Message: {e.Message}"); + return null; + } + } + + private static string BuildQueryString(object obj) + { + var json = JsonConvert.SerializeObject(obj); + var jsonObject = JObject.Parse(json); + return string.Join("&", jsonObject.Properties() + .Select(p => $"{Uri.EscapeDataString(p.Name)}={Uri.EscapeDataString(p.Value.ToString())}")); + } + + private static async Task SendGetRequestAsync(string endpoint, T requestObject) + { + var client = new HttpClient(httpClientHandler); + + var queryString = BuildQueryString(requestObject); + var fullUrl = $"{BaseApiUrl}/{endpoint}?{queryString}"; + var httpRequestMessage = new HttpRequestMessage + { + RequestUri = new Uri(fullUrl), + Method = HttpMethod.Get + }; + + return await client.SendAsync(httpRequestMessage); + } + + private static async Task GetElectionsCountAsync() + { + try + { + var findElectionObj = new FindElectionModel { Name = "All" }; + var ret = await SendGetRequestAsync("election/find", findElectionObj); + if (ret.StatusCode == HttpStatusCode.NotFound) + { + return "0"; + } + + var retList = await ret.Content.ReadAsAsync(); + + return retList.Elections.Count.ToString(); + } + catch (Exception e) + { + return $"Error: {e.Message}"; + } + } + + private static async Task GetBallotsCountAsync() + { + try + { + var countBallotsObj = new CountBallotModel { DateCreatedStart = new DateTime(2023, 01, 01), DateCreatedEnd = new DateTime(2033, 12, 31) }; + var ret = await SendGetRequestAsync("ballot/count", countBallotsObj); + + var retCount = await ret.Content.ReadAsAsync(); + + return retCount.BallotCount.ToString(); + } + catch (Exception e) + { + return $"Error: {e.Message}"; + } + } + + private static async Task GetHealthAsync() + { + try + { + var client = new HttpClient(httpClientHandler); + + var ret = await client.GetAsync($"{BaseApiUrl}/health"); + + var result = await ret.Content.ReadAsStringAsync(); + + var sresult = result.FormatJson(); + + return sresult; + } + catch (Exception e) + { + return $"Error: {e.Message}"; + } + } + + private static async Task GetStatusAsync() + { + try + { + var client = new HttpClient(httpClientHandler); + + var ret = await client.GetAsync($"{BaseApiUrl}/status"); + + var result = await ret.Content.ReadAsAsync(); + + // Convert it back to string + var sresult = JsonConvert.SerializeObject(result, Formatting.Indented); + + return sresult; + } + catch (Exception e) + { + return $"Error: {e.Message}"; + } + } + + // TODO Need to really get version from assembly info. Better than Git tag + private static async Task GetVersionAsync() + { + try + { + var client = new HttpClient(httpClientHandler); + + var ret = await client.GetAsync($"{BaseApiUrl}/status"); + + var result = await ret.Content.ReadAsAsync(); + + return result.BuildInfo.LastTag; + } + catch (Exception e) + { + return $"Error: {e.Message}"; + } + } + } + + public static class Extensions + { + public static string FormatJson(this string json) + { + var options = new JsonSerializerOptions() + { + WriteIndented = true + }; + + var jsonElement = System.Text.Json.JsonSerializer.Deserialize(json); + + return System.Text.Json.JsonSerializer.Serialize(jsonElement, options); + } + } +} +#pragma warning restore CS8601 // Possible null reference assignment. +#pragma warning restore CS8603 // Possible null reference return. +#pragma warning restore CS8604 // Possible null reference argument. +#pragma warning restore CS8602 // Dereference of a possibly null reference. +#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed +#pragma warning restore IDE0058 // Expression value is never used +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/TrueVote.Comms/Program.cs b/TrueVote.Comms/Program.cs index 7dbd538..5f2763f 100644 --- a/TrueVote.Comms/Program.cs +++ b/TrueVote.Comms/Program.cs @@ -1,5 +1,7 @@ using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; +using TrueVote.Comms.Bots; using TrueVote.Comms.Services; var host = new HostBuilder() @@ -14,6 +16,8 @@ { client.BaseAddress = new Uri(Environment.GetEnvironmentVariable("BaseApiUrl") ?? throw new ArgumentNullException("BaseApiUrl configuration is missing")); }); + var telegramBot = new TelegramBot(); + services.TryAddSingleton(telegramBot); }) .Build(); diff --git a/TrueVote.Comms/Services/CommsFunction.cs b/TrueVote.Comms/Services/CommsFunction.cs index 8942008..2ff9a5b 100644 --- a/TrueVote.Comms/Services/CommsFunction.cs +++ b/TrueVote.Comms/Services/CommsFunction.cs @@ -1,6 +1,8 @@ +using Azure.Messaging.ServiceBus; using Microsoft.Azure.Functions.Worker; using Microsoft.Extensions.Logging; using TrueVote.Api; +using TrueVote.Comms.Bots; namespace TrueVote.Comms.Services; @@ -8,18 +10,36 @@ public class CommsFunction { private readonly IMessageProcessor _messageProcessor; private readonly ILogger _logger; + private readonly TelegramBot _telegramBot; - public CommsFunction(IMessageProcessor messageProcessor, ILogger logger) + public CommsFunction(IMessageProcessor messageProcessor, ILogger logger, TelegramBot telegramBot) { _messageProcessor = messageProcessor; _logger = logger; + _telegramBot = telegramBot; } [Function("ProcessCommsMessage")] - public async Task Run([ServiceBusTrigger("%ServiceBusCommsQueueName%", Connection = "ServiceBusConnectionString")] ServiceBusCommsMessage message) + public async Task Run([ServiceBusTrigger("%ServiceBusCommsQueueName%", Connection = "ServiceBusConnectionString")] ServiceBusReceivedMessage message) { - _logger.LogInformation($"CommsFunction->Processing message for communication event: {message.Metadata["CommunicationEventId"]}"); - - await _messageProcessor.ProcessMessageAsync(message); + try + { + if (message.Subject == null) + { + var messageBody = message.Body.ToString(); + _logger.LogInformation($"Received message: {messageBody}"); + await _telegramBot.SendChannelMessageAsync(messageBody); + } + else + { + var commsMessage = message.Body.ToObjectFromJson(); + await _messageProcessor.ProcessMessageAsync(commsMessage!); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Error processing message"); + throw; + } } } diff --git a/TrueVote.Comms/Services/ServiceBusReceiver.cs b/TrueVote.Comms/Services/ServiceBusReceiver.cs deleted file mode 100644 index aa34d48..0000000 --- a/TrueVote.Comms/Services/ServiceBusReceiver.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Azure.Messaging.ServiceBus; -using Microsoft.Extensions.Logging; -using TrueVote.Api; - -namespace TrueVote.Comms.Services; - -public interface IAzureServiceBusReceiver -{ - Task StartListeningAsync(); - Task CloseAsync(); -} - -public class AzureServiceBusReceiver : IAzureServiceBusReceiver -{ - private readonly IMessageProcessor _messageProcessor; - private readonly ServiceBusClient _serviceBusClient; - private readonly ServiceBusProcessor _serviceBusProcessor; - private readonly ILogger _logger; - - public AzureServiceBusReceiver(IMessageProcessor messageProcessor, ILogger logger, string connectionString, string queueName) - { - _messageProcessor = messageProcessor; - _logger = logger; - _serviceBusClient = new ServiceBusClient(connectionString); - _serviceBusProcessor = _serviceBusClient.CreateProcessor(queueName, new ServiceBusProcessorOptions - { - MaxConcurrentCalls = 1 - }); - } - - public async Task StartListeningAsync() - { - _serviceBusProcessor.ProcessMessageAsync += async args => - { - try - { - var message = args.Message.Body.ToObjectFromJson(); - - await _messageProcessor.ProcessMessageAsync(message!); - - await args.CompleteMessageAsync(args.Message); - } - catch (Exception ex) - { - _logger.LogError(ex, "AzureServiceBusReceiver->Error processing message"); - throw; // Let Service Bus handle retry - } - }; - - _serviceBusProcessor.ProcessErrorAsync += ExceptionHandler; - await _serviceBusProcessor.StartProcessingAsync(); - } - - public async Task CloseAsync() - { - await _serviceBusProcessor.StopProcessingAsync(); - await _serviceBusProcessor.CloseAsync(); - await _serviceBusClient.DisposeAsync(); - } - - private Task ExceptionHandler(ProcessErrorEventArgs args) - { - _logger.LogError(args.Exception, "AzureServiceBusReceiver->Service Bus processing error"); - return Task.CompletedTask; - } -} diff --git a/TrueVote.Comms/TrueVote.Api.cs b/TrueVote.Comms/TrueVote.Api.cs index 1bba802..9acb2bd 100644 --- a/TrueVote.Comms/TrueVote.Api.cs +++ b/TrueVote.Comms/TrueVote.Api.cs @@ -1,6 +1,6 @@ //---------------------- // -// Generated using the NSwag toolchain v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // //---------------------- @@ -8,31 +8,43 @@ #pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword." #pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?' #pragma warning disable 612 // Disable "CS0612 '...' is obsolete" +#pragma warning disable 649 // Disable "CS0649 Field is never assigned to, and will always have its default value null" #pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ... #pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..." #pragma warning disable 8073 // Disable "CS8073 The result of the expression is always 'false' since a value of type 'T' is never equal to 'null' of type 'T?'" #pragma warning disable 3016 // Disable "CS3016 Arrays as attribute arguments is not CLS-compliant" +#pragma warning disable 8600 // Disable "CS8600 Converting null literal or possible null value to non-nullable type" +#pragma warning disable 8602 // Disable "CS8602 Dereference of a possibly null reference" #pragma warning disable 8603 // Disable "CS8603 Possible null reference return" #pragma warning disable 8604 // Disable "CS8604 Possible null reference argument for parameter" +#pragma warning disable 8625 // Disable "CS8625 Cannot convert null literal to non-nullable reference type" +#pragma warning disable 8765 // Disable "CS8765 Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes)." namespace TrueVote.Api { using System = global::System; - [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class Client + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BallotClient { - private string _baseUrl = "/api"; + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + private System.Net.Http.HttpClient _httpClient; - private System.Lazy _settings; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; - public Client(System.Net.Http.HttpClient httpClient) + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public BallotClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. { + BaseUrl = "https://localhost:7253"; _httpClient = httpClient; - _settings = new System.Lazy(CreateSerializerSettings, true); + Initialize(); } - private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() { var settings = new Newtonsoft.Json.JsonSerializerSettings(); UpdateJsonSerializerSettings(settings); @@ -42,31 +54,42 @@ private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() public string BaseUrl { get { return _baseUrl; } - set { _baseUrl = value; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } } - protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); - partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + partial void Initialize(); partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); - /// OK + /// + /// Election Model with vote selections + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task SubmitballotAsync(SubmitBallotModel body) + public virtual System.Threading.Tasks.Task SubmitBallotAsync(SubmitBallotModel bindSubmitBallotModel) { - return SubmitballotAsync(body, System.Threading.CancellationToken.None); + return SubmitBallotAsync(bindSubmitBallotModel, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Election Model with vote selections + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task SubmitballotAsync(SubmitBallotModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task SubmitBallotAsync(SubmitBallotModel bindSubmitBallotModel, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/ballot/submitballot"); + if (bindSubmitBallotModel == null) + throw new System.ArgumentNullException("bindSubmitBallotModel"); var client_ = _httpClient; var disposeClient_ = false; @@ -74,13 +97,18 @@ public virtual async System.Threading.Tasks.Task Subm { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(bindSubmitBallotModel, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "ballot/submitballot" + urlBuilder_.Append("ballot/submitballot"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -92,7 +120,9 @@ public virtual async System.Threading.Tasks.Task Subm var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -109,7 +139,7 @@ public virtual async System.Threading.Tasks.Task Subm { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -119,7 +149,7 @@ public virtual async System.Threading.Tasks.Task Subm { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -129,7 +159,7 @@ public virtual async System.Threading.Tasks.Task Subm { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -139,7 +169,7 @@ public virtual async System.Threading.Tasks.Task Subm { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -149,7 +179,7 @@ public virtual async System.Threading.Tasks.Task Subm { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -159,7 +189,7 @@ public virtual async System.Threading.Tasks.Task Subm { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -201,26 +231,22 @@ public virtual async System.Threading.Tasks.Task Subm } } - /// OK + /// + /// Returns collection of Ballots + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task FindAsync(FindBallotModel findBallot) + public virtual System.Threading.Tasks.Task BallotFindAsync(FindBallotModel findBallot) { - return FindAsync(findBallot, System.Threading.CancellationToken.None); + return BallotFindAsync(findBallot, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns collection of Ballots + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task FindAsync(FindBallotModel findBallot, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task BallotFindAsync(FindBallotModel findBallot, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/ballot/find?"); - if (findBallot != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("findBallot") + "=").Append(System.Uri.EscapeDataString(ConvertToString(findBallot, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -230,6 +256,17 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "ballot/find" + urlBuilder_.Append("ballot/find"); + urlBuilder_.Append('?'); + if (findBallot != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("findBallot")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(findBallot, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -241,7 +278,9 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -258,7 +297,7 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -268,7 +307,7 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -278,7 +317,7 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -288,7 +327,7 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -298,7 +337,7 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -308,7 +347,7 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -340,26 +379,22 @@ public virtual async System.Threading.Tasks.Task FindAsync(FindBallo } } - /// OK + /// + /// Returns count of Ballots + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task CountAsync(CountBallotModel countBallot) + public virtual System.Threading.Tasks.Task BallotCountAsync(CountBallotModel countBallot) { - return CountAsync(countBallot, System.Threading.CancellationToken.None); + return BallotCountAsync(countBallot, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns count of Ballots + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task CountAsync(CountBallotModel countBallot, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task BallotCountAsync(CountBallotModel countBallot, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/ballot/count?"); - if (countBallot != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("countBallot") + "=").Append(System.Uri.EscapeDataString(ConvertToString(countBallot, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -369,6 +404,17 @@ public virtual async System.Threading.Tasks.Task Count request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "ballot/count" + urlBuilder_.Append("ballot/count"); + urlBuilder_.Append('?'); + if (countBallot != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("countBallot")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(countBallot, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -380,7 +426,9 @@ public virtual async System.Threading.Tasks.Task Count var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -397,7 +445,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -407,7 +455,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -417,7 +465,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -427,7 +475,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -437,7 +485,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -447,7 +495,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -479,26 +527,22 @@ public virtual async System.Threading.Tasks.Task Count } } - /// OK + /// + /// Returns collection of Ballot Hashes + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task> FindhashAsync(FindBallotHashModel findBallotHash) + public virtual System.Threading.Tasks.Task> BallotHashFindAsync(FindBallotHashModel findBallotHash) { - return FindhashAsync(findBallotHash, System.Threading.CancellationToken.None); + return BallotHashFindAsync(findBallotHash, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns collection of Ballot Hashes + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task> FindhashAsync(FindBallotHashModel findBallotHash, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task> BallotHashFindAsync(FindBallotHashModel findBallotHash, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/ballot/findhash?"); - if (findBallotHash != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("findBallotHash") + "=").Append(System.Uri.EscapeDataString(ConvertToString(findBallotHash, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -508,6 +552,17 @@ public virtual async System.Threading.Tasks.Task Count request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "ballot/findhash" + urlBuilder_.Append("ballot/findhash"); + urlBuilder_.Append('?'); + if (findBallotHash != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("findBallotHash")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(findBallotHash, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -519,7 +574,9 @@ public virtual async System.Threading.Tasks.Task Count var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -536,7 +593,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -546,7 +603,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -556,7 +613,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -566,7 +623,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -576,7 +633,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -586,7 +643,7 @@ public virtual async System.Threading.Tasks.Task Count { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -618,20 +675,184 @@ public virtual async System.Threading.Tasks.Task Count } } - /// OK + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CandidateClient + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public CandidateClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Returns the added Candidate + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task CandidateAsync(BaseCandidateModel body) + public virtual System.Threading.Tasks.Task CreateCandidateAsync(BaseCandidateModel baseCandidate) { - return CandidateAsync(body, System.Threading.CancellationToken.None); + return CreateCandidateAsync(baseCandidate, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns the added Candidate + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task CandidateAsync(BaseCandidateModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task CreateCandidateAsync(BaseCandidateModel baseCandidate, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/candidate"); + if (baseCandidate == null) + throw new System.ArgumentNullException("baseCandidate"); var client_ = _httpClient; var disposeClient_ = false; @@ -639,13 +860,18 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(baseCandidate, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "candidate" + urlBuilder_.Append("candidate"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -657,7 +883,9 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -674,7 +902,7 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -684,7 +912,7 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -694,7 +922,7 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -704,7 +932,7 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -714,7 +942,7 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -724,7 +952,7 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -766,26 +994,22 @@ public virtual async System.Threading.Tasks.Task CandidateAsync( } } - /// OK + /// + /// Returns collection of Candidates + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task Find2Async(FindCandidateModel findCandidate) + public virtual System.Threading.Tasks.Task CandidateFindAsync(FindCandidateModel findCandidate) { - return Find2Async(findCandidate, System.Threading.CancellationToken.None); + return CandidateFindAsync(findCandidate, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns collection of Candidates + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task Find2Async(FindCandidateModel findCandidate, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task CandidateFindAsync(FindCandidateModel findCandidate, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/candidate/find?"); - if (findCandidate != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("findCandidate") + "=").Append(System.Uri.EscapeDataString(ConvertToString(findCandidate, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -795,6 +1019,17 @@ public virtual async System.Threading.Tasks.Task Find2Async( request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "candidate/find" + urlBuilder_.Append("candidate/find"); + urlBuilder_.Append('?'); + if (findCandidate != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("findCandidate")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(findCandidate, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -806,7 +1041,9 @@ public virtual async System.Threading.Tasks.Task Find2Async( var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -823,7 +1060,7 @@ public virtual async System.Threading.Tasks.Task Find2Async( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -833,7 +1070,7 @@ public virtual async System.Threading.Tasks.Task Find2Async( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -843,7 +1080,7 @@ public virtual async System.Threading.Tasks.Task Find2Async( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -853,7 +1090,7 @@ public virtual async System.Threading.Tasks.Task Find2Async( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -863,7 +1100,7 @@ public virtual async System.Threading.Tasks.Task Find2Async( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -873,7 +1110,7 @@ public virtual async System.Threading.Tasks.Task Find2Async( { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -905,54 +1142,225 @@ public virtual async System.Threading.Tasks.Task Find2Async( } } - /// OK - /// A server side error occurred. - public virtual System.Threading.Tasks.Task UpdatecommeventstatusAsync(CommunicationEventUpdateModel body) + protected struct ObjectResponseResult { - return UpdatecommeventstatusAsync(body, System.Threading.CancellationToken.None); + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } } - /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK - /// A server side error occurred. - public virtual async System.Threading.Tasks.Task UpdatecommeventstatusAsync(CommunicationEventUpdateModel body, System.Threading.CancellationToken cancellationToken) + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/comms/events/updatecommeventstatus"); + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } - var client_ = _httpClient; - var disposeClient_ = false; - try + if (ReadResponseAsString) { - using (var request_ = new System.Net.Http.HttpRequestMessage()) + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); - var content_ = new System.Net.Http.StringContent(json_); - content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); - request_.Content = content_; - request_.Method = new System.Net.Http.HttpMethod("PUT"); - request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); - - PrepareRequest(client_, request_, urlBuilder_); - - var url_ = urlBuilder_.ToString(); - request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } - PrepareRequest(client_, request_, url_); + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } - var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); - var disposeResponse_ = true; - try + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); - if (response_.Content != null && response_.Content.Headers != null) + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) { - foreach (var item_ in response_.Content.Headers) - headers_[item_.Key] = item_.Value; + return attribute.Value != null ? attribute.Value : name; } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CommsClient + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public CommsClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Updates a Comms Event Status + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task UpdateCommEventStatusAsync(CommunicationEventUpdateModel communicationEventUpdateModel) + { + return UpdateCommEventStatusAsync(communicationEventUpdateModel, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Updates a Comms Event Status + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task UpdateCommEventStatusAsync(CommunicationEventUpdateModel communicationEventUpdateModel, System.Threading.CancellationToken cancellationToken) + { + if (communicationEventUpdateModel == null) + throw new System.ArgumentNullException("communicationEventUpdateModel"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(communicationEventUpdateModel, JsonSerializerSettings); + var content_ = new System.Net.Http.StringContent(json_); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("PUT"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "comms/events/updatecommeventstatus" + urlBuilder_.Append("comms/events/updatecommeventstatus"); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); - ProcessResponse(client_, response_); - var status_ = (int)response_.StatusCode; if (status_ == 401) { @@ -961,7 +1369,7 @@ public virtual async System.Threading.Tasks.Task Update { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -971,7 +1379,7 @@ public virtual async System.Threading.Tasks.Task Update { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -981,7 +1389,7 @@ public virtual async System.Threading.Tasks.Task Update { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -991,7 +1399,7 @@ public virtual async System.Threading.Tasks.Task Update { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -1001,7 +1409,7 @@ public virtual async System.Threading.Tasks.Task Update { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -1011,7 +1419,7 @@ public virtual async System.Threading.Tasks.Task Update { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -1021,7 +1429,7 @@ public virtual async System.Threading.Tasks.Task Update { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -1053,20 +1461,184 @@ public virtual async System.Threading.Tasks.Task Update } } - /// OK + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ElectionClient + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public ElectionClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Returns the added Election + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task ElectionPOSTAsync(BaseElectionModel body) + public virtual System.Threading.Tasks.Task CreateElectionAsync(BaseElectionModel baseElection) { - return ElectionPOSTAsync(body, System.Threading.CancellationToken.None); + return CreateElectionAsync(baseElection, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns the added Election + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task ElectionPOSTAsync(BaseElectionModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task CreateElectionAsync(BaseElectionModel baseElection, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/election"); + if (baseElection == null) + throw new System.ArgumentNullException("baseElection"); var client_ = _httpClient; var disposeClient_ = false; @@ -1074,13 +1646,18 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(baseElection, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "election" + urlBuilder_.Append("election"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -1092,7 +1669,9 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -1109,7 +1688,7 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -1119,7 +1698,7 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -1129,7 +1708,7 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -1139,7 +1718,7 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -1149,7 +1728,7 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -1159,7 +1738,7 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -1169,7 +1748,7 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -1211,26 +1790,22 @@ public virtual async System.Threading.Tasks.Task ElectionPOSTAsyn } } - /// OK + /// + /// Returns an Election + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task ElectionGETAsync(string electionId) + public virtual System.Threading.Tasks.Task ElectionDetailsAsync(string electionId) { - return ElectionGETAsync(electionId, System.Threading.CancellationToken.None); + return ElectionDetailsAsync(electionId, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns an Election + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task ElectionGETAsync(string electionId, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task ElectionDetailsAsync(string electionId, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/election?"); - if (electionId != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("ElectionId") + "=").Append(System.Uri.EscapeDataString(ConvertToString(electionId, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -1240,6 +1815,17 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "election" + urlBuilder_.Append("election"); + urlBuilder_.Append('?'); + if (electionId != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("ElectionId")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(electionId, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -1251,7 +1837,9 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -1268,7 +1856,7 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -1278,7 +1866,7 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -1288,7 +1876,7 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -1298,7 +1886,7 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -1308,7 +1896,7 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -1318,7 +1906,7 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -1328,7 +1916,7 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -1360,26 +1948,22 @@ public virtual async System.Threading.Tasks.Task ElectionGETAsync } } - /// OK + /// + /// Returns collection of Elections + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task Find3Async(FindElectionModel findElection) + public virtual System.Threading.Tasks.Task ElectionFindAsync(FindElectionModel findElection) { - return Find3Async(findElection, System.Threading.CancellationToken.None); + return ElectionFindAsync(findElection, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns collection of Elections + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task Find3Async(FindElectionModel findElection, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task ElectionFindAsync(FindElectionModel findElection, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/election/find?"); - if (findElection != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("findElection") + "=").Append(System.Uri.EscapeDataString(ConvertToString(findElection, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -1389,6 +1973,17 @@ public virtual async System.Threading.Tasks.Task Find3Async(F request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "election/find" + urlBuilder_.Append("election/find"); + urlBuilder_.Append('?'); + if (findElection != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("findElection")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(findElection, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -1400,7 +1995,9 @@ public virtual async System.Threading.Tasks.Task Find3Async(F var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -1417,7 +2014,7 @@ public virtual async System.Threading.Tasks.Task Find3Async(F { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -1427,7 +2024,7 @@ public virtual async System.Threading.Tasks.Task Find3Async(F { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -1437,7 +2034,7 @@ public virtual async System.Threading.Tasks.Task Find3Async(F { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -1447,7 +2044,7 @@ public virtual async System.Threading.Tasks.Task Find3Async(F { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -1457,7 +2054,7 @@ public virtual async System.Threading.Tasks.Task Find3Async(F { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -1467,7 +2064,7 @@ public virtual async System.Threading.Tasks.Task Find3Async(F { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -1477,7 +2074,7 @@ public virtual async System.Threading.Tasks.Task Find3Async(F { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -1509,20 +2106,24 @@ public virtual async System.Threading.Tasks.Task Find3Async(F } } - /// OK + /// + /// Adds Races to an Election and returns the updated Election + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task AddracesAsync(AddRacesModel body) + public virtual System.Threading.Tasks.Task AddRacesAsync(AddRacesModel bindRaceElectionModel) { - return AddracesAsync(body, System.Threading.CancellationToken.None); + return AddRacesAsync(bindRaceElectionModel, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Adds Races to an Election and returns the updated Election + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task AddracesAsync(AddRacesModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task AddRacesAsync(AddRacesModel bindRaceElectionModel, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/election/addraces"); + if (bindRaceElectionModel == null) + throw new System.ArgumentNullException("bindRaceElectionModel"); var client_ = _httpClient; var disposeClient_ = false; @@ -1530,13 +2131,18 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(bindRaceElectionModel, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "election/addraces" + urlBuilder_.Append("election/addraces"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -1548,7 +2154,9 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -1565,7 +2173,7 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -1575,7 +2183,7 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -1585,7 +2193,7 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -1595,7 +2203,7 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -1605,7 +2213,7 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -1615,7 +2223,7 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -1625,7 +2233,7 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -1667,20 +2275,24 @@ public virtual async System.Threading.Tasks.Task AddracesAsync(Ad } } - /// OK + /// + /// Returns an AccessCodesResponse with a list of AccessCodes + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task CreateaccesscodesAsync(AccessCodesRequest body) + public virtual System.Threading.Tasks.Task CreateAccessCodesAsync(AccessCodesRequest accessCodesRequest) { - return CreateaccesscodesAsync(body, System.Threading.CancellationToken.None); + return CreateAccessCodesAsync(accessCodesRequest, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns an AccessCodesResponse with a list of AccessCodes + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task CreateaccesscodesAsync(AccessCodesRequest body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task CreateAccessCodesAsync(AccessCodesRequest accessCodesRequest, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/election/createaccesscodes"); + if (accessCodesRequest == null) + throw new System.ArgumentNullException("accessCodesRequest"); var client_ = _httpClient; var disposeClient_ = false; @@ -1688,13 +2300,18 @@ public virtual async System.Threading.Tasks.Task Createacce { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(accessCodesRequest, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "election/createaccesscodes" + urlBuilder_.Append("election/createaccesscodes"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -1706,7 +2323,9 @@ public virtual async System.Threading.Tasks.Task Createacce var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -1723,7 +2342,7 @@ public virtual async System.Threading.Tasks.Task Createacce { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -1733,7 +2352,7 @@ public virtual async System.Threading.Tasks.Task Createacce { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -1743,7 +2362,7 @@ public virtual async System.Threading.Tasks.Task Createacce { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -1753,7 +2372,7 @@ public virtual async System.Threading.Tasks.Task Createacce { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -1763,7 +2382,7 @@ public virtual async System.Threading.Tasks.Task Createacce { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -1773,7 +2392,7 @@ public virtual async System.Threading.Tasks.Task Createacce { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -1783,7 +2402,7 @@ public virtual async System.Threading.Tasks.Task Createacce { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -1825,26 +2444,22 @@ public virtual async System.Threading.Tasks.Task Createacce } } - /// OK + /// + /// Returns an Election for the AccessCode + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task CheckaccesscodeAsync(CheckCodeRequest checkCodeRequest) + public virtual System.Threading.Tasks.Task CheckAccessCodeAsync(CheckCodeRequest checkCodeRequest) { - return CheckaccesscodeAsync(checkCodeRequest, System.Threading.CancellationToken.None); + return CheckAccessCodeAsync(checkCodeRequest, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns an Election for the AccessCode + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task CheckaccesscodeAsync(CheckCodeRequest checkCodeRequest, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task CheckAccessCodeAsync(CheckCodeRequest checkCodeRequest, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/election/checkaccesscode?"); - if (checkCodeRequest != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("checkCodeRequest") + "=").Append(System.Uri.EscapeDataString(ConvertToString(checkCodeRequest, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -1854,6 +2469,17 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "election/checkaccesscode" + urlBuilder_.Append("election/checkaccesscode"); + urlBuilder_.Append('?'); + if (checkCodeRequest != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("checkCodeRequest")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(checkCodeRequest, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -1865,7 +2491,9 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -1882,7 +2510,7 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -1892,7 +2520,7 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -1902,7 +2530,7 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -1912,7 +2540,7 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -1922,7 +2550,7 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -1932,7 +2560,7 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -1942,7 +2570,7 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -1984,20 +2612,24 @@ public virtual async System.Threading.Tasks.Task CheckaccesscodeA } } - /// OK + /// + /// Sends a new voter access code for an election + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task VoterAccessCodeAsync(VoterElectionAccessCodeRequest body) + public virtual System.Threading.Tasks.Task SendNewVoterElectionAccessCodeAsync(VoterElectionAccessCodeRequest voterElectionAccessCodeRequest) { - return VoterAccessCodeAsync(body, System.Threading.CancellationToken.None); + return SendNewVoterElectionAccessCodeAsync(voterElectionAccessCodeRequest, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Sends a new voter access code for an election + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task VoterAccessCodeAsync(VoterElectionAccessCodeRequest body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task SendNewVoterElectionAccessCodeAsync(VoterElectionAccessCodeRequest voterElectionAccessCodeRequest, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/comms/voter-access-code"); + if (voterElectionAccessCodeRequest == null) + throw new System.ArgumentNullException("voterElectionAccessCodeRequest"); var client_ = _httpClient; var disposeClient_ = false; @@ -2005,13 +2637,18 @@ public virtual async System.Threading.Tasks.Task VoterA { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(voterElectionAccessCodeRequest, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "comms/voter-access-code" + urlBuilder_.Append("comms/voter-access-code"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -2023,7 +2660,9 @@ public virtual async System.Threading.Tasks.Task VoterA var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -2040,7 +2679,7 @@ public virtual async System.Threading.Tasks.Task VoterA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -2050,7 +2689,7 @@ public virtual async System.Threading.Tasks.Task VoterA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -2060,7 +2699,7 @@ public virtual async System.Threading.Tasks.Task VoterA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -2070,7 +2709,7 @@ public virtual async System.Threading.Tasks.Task VoterA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -2080,7 +2719,7 @@ public virtual async System.Threading.Tasks.Task VoterA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -2090,7 +2729,7 @@ public virtual async System.Threading.Tasks.Task VoterA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 422) @@ -2100,7 +2739,7 @@ public virtual async System.Threading.Tasks.Task VoterA { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unprocessable Content", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -2142,183 +2781,202 @@ public virtual async System.Threading.Tasks.Task VoterA } } - /// OK - /// A server side error occurred. - public virtual System.Threading.Tasks.Task Error500Async(Error500Flag error500Flag) - { - return Error500Async(error500Flag, System.Threading.CancellationToken.None); - } - - /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK - /// A server side error occurred. - public virtual async System.Threading.Tasks.Task Error500Async(Error500Flag error500Flag, System.Threading.CancellationToken cancellationToken) + protected struct ObjectResponseResult { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/error500?"); - if (error500Flag != null) + public ObjectResponseResult(T responseObject, string responseText) { - urlBuilder_.Append(System.Uri.EscapeDataString("error500Flag") + "=").Append(System.Uri.EscapeDataString(ConvertToString(error500Flag, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + this.Object = responseObject; + this.Text = responseText; } - urlBuilder_.Length--; - var client_ = _httpClient; - var disposeClient_ = false; - try - { - using (var request_ = new System.Net.Http.HttpRequestMessage()) - { - request_.Method = new System.Net.Http.HttpMethod("GET"); - request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + public T Object { get; } - PrepareRequest(client_, request_, urlBuilder_); + public string Text { get; } + } - var url_ = urlBuilder_.ToString(); - request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + public bool ReadResponseAsString { get; set; } - PrepareRequest(client_, request_, url_); + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } - var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); - var disposeResponse_ = true; - try + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); - if (response_.Content != null && response_.Content.Headers != null) - { - foreach (var item_ in response_.Content.Headers) - headers_[item_.Key] = item_.Value; - } + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } - ProcessResponse(client_, response_); + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } - var status_ = (int)response_.StatusCode; - if (status_ == 401) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); - } - else - if (status_ == 403) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); - } - else - if (status_ == 404) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); - } - else - if (status_ == 406) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); - } - else - if (status_ == 429) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); - } - else - if (status_ == 409) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); - } - else - if (status_ == 200) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - return objectResponse_.Object; - } - else - if (status_ == 500) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - throw new ApiException("Internal Server Error", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); - } - else + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) { - var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); - throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + return attribute.Value != null ? attribute.Value : name; } } - finally - { - if (disposeResponse_) - response_.Dispose(); - } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; } } - finally + else if (value is bool) { - if (disposeClient_) - client_.Dispose(); + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class Error500Client + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public Error500Client(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; } } - /// OK + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Tests Error Logging of a Server 500 + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task RaceAsync(BaseRaceModel body) + public virtual System.Threading.Tasks.Task ThrowError500Async(Error500Flag error500Flag) { - return RaceAsync(body, System.Threading.CancellationToken.None); + return ThrowError500Async(error500Flag, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Tests Error Logging of a Server 500 + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task ThrowError500Async(Error500Flag error500Flag, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/race"); - var client_ = _httpClient; var disposeClient_ = false; try { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); - var content_ = new System.Net.Http.StringContent(json_); - content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); - request_.Content = content_; - request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "error500" + urlBuilder_.Append("error500"); + urlBuilder_.Append('?'); + if (error500Flag != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("error500Flag")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(error500Flag, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -2330,7 +2988,9 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -2347,7 +3007,7 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -2357,7 +3017,7 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -2367,7 +3027,7 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -2377,7 +3037,7 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -2387,7 +3047,7 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -2397,12 +3057,12 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -2410,14 +3070,14 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo return objectResponse_.Object; } else - if (status_ == 201) + if (status_ == 500) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - return objectResponse_.Object; + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else { @@ -2439,34 +3099,203 @@ public virtual async System.Threading.Tasks.Task RaceAsync(BaseRaceMo } } - /// OK - /// A server side error occurred. - public virtual System.Threading.Tasks.Task AddcandidatesAsync(AddCandidatesModel body) + protected struct ObjectResponseResult { - return AddcandidatesAsync(body, System.Threading.CancellationToken.None); + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } } - /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK - /// A server side error occurred. - public virtual async System.Threading.Tasks.Task AddcandidatesAsync(AddCandidatesModel body, System.Threading.CancellationToken cancellationToken) + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/race/addcandidates"); + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } - var client_ = _httpClient; - var disposeClient_ = false; - try + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RaceClient + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public RaceClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Returns the added Race + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task CreateRaceAsync(BaseRaceModel baseRace) + { + return CreateRaceAsync(baseRace, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Returns the added Race + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task CreateRaceAsync(BaseRaceModel baseRace, System.Threading.CancellationToken cancellationToken) + { + if (baseRace == null) + throw new System.ArgumentNullException("baseRace"); + + var client_ = _httpClient; + var disposeClient_ = false; + try { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(baseRace, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "race" + urlBuilder_.Append("race"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -2478,7 +3307,9 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -2495,7 +3326,7 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -2505,7 +3336,7 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -2515,7 +3346,7 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -2525,7 +3356,7 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -2535,7 +3366,7 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -2545,7 +3376,7 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -2587,25 +3418,24 @@ public virtual async System.Threading.Tasks.Task AddcandidatesAsync(A } } - /// OK + /// + /// Adds Candidates to a Race and returns the updated Race + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task Find4Async(FindRaceModel findRace) + public virtual System.Threading.Tasks.Task AddCandidatesAsync(AddCandidatesModel addCandidatesModel) { - return Find4Async(findRace, System.Threading.CancellationToken.None); + return AddCandidatesAsync(addCandidatesModel, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Adds Candidates to a Race and returns the updated Race + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task Find4Async(FindRaceModel findRace, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task AddCandidatesAsync(AddCandidatesModel addCandidatesModel, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/race/find?"); - if (findRace != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("findRace") + "=").Append(System.Uri.EscapeDataString(ConvertToString(findRace, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; + if (addCandidatesModel == null) + throw new System.ArgumentNullException("addCandidatesModel"); var client_ = _httpClient; var disposeClient_ = false; @@ -2613,9 +3443,18 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - request_.Method = new System.Net.Http.HttpMethod("GET"); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(addCandidatesModel, JsonSerializerSettings); + var content_ = new System.Net.Http.StringContent(json_); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "race/addcandidates" + urlBuilder_.Append("race/addcandidates"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -2627,7 +3466,9 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -2644,7 +3485,7 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -2654,7 +3495,7 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -2664,7 +3505,7 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -2674,7 +3515,7 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -2684,7 +3525,7 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -2694,12 +3535,22 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 201) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -2726,21 +3577,22 @@ public virtual async System.Threading.Tasks.Task Find4Async(FindR } } - /// OK + /// + /// Returns collection of Races + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task StatusAsync() + public virtual System.Threading.Tasks.Task RaceFindAsync(FindRaceModel findRace) { - return StatusAsync(System.Threading.CancellationToken.None); + return RaceFindAsync(findRace, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns collection of Races + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task StatusAsync(System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task RaceFindAsync(FindRaceModel findRace, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/status"); - var client_ = _httpClient; var disposeClient_ = false; try @@ -2750,6 +3602,17 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "race/find" + urlBuilder_.Append("race/find"); + urlBuilder_.Append('?'); + if (findRace != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("findRace")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(findRace, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -2761,7 +3624,9 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -2778,7 +3643,7 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -2788,7 +3653,7 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -2798,7 +3663,7 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -2808,7 +3673,7 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -2818,7 +3683,7 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -2828,12 +3693,12 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -2860,49 +3725,217 @@ public virtual async System.Threading.Tasks.Task StatusAsync(System } } - /// OK - /// A server side error occurred. - public virtual System.Threading.Tasks.Task PingAsync() + protected struct ObjectResponseResult { - return PingAsync(System.Threading.CancellationToken.None); + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } } - /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK - /// A server side error occurred. - public virtual async System.Threading.Tasks.Task PingAsync(System.Threading.CancellationToken cancellationToken) + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/ping"); + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } - var client_ = _httpClient; - var disposeClient_ = false; - try + if (ReadResponseAsString) { - using (var request_ = new System.Net.Http.HttpRequestMessage()) + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try { - request_.Method = new System.Net.Http.HttpMethod("GET"); - request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); - - PrepareRequest(client_, request_, urlBuilder_); - - var url_ = urlBuilder_.ToString(); - request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } - PrepareRequest(client_, request_, url_); + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } - var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); - var disposeResponse_ = true; - try + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); - if (response_.Content != null && response_.Content.Headers != null) + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) { - foreach (var item_ in response_.Content.Headers) - headers_[item_.Key] = item_.Value; + return attribute.Value != null ? attribute.Value : name; } + } - ProcessResponse(client_, response_); + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class StatusClient + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public StatusClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Returns Status of Api + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetStatusAsync() + { + return GetStatusAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Returns Status of Api + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetStatusAsync(System.Threading.CancellationToken cancellationToken) + { + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "status" + urlBuilder_.Append("status"); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); var status_ = (int)response_.StatusCode; if (status_ == 401) @@ -2912,7 +3945,7 @@ public virtual async System.Threading.Tasks.Task PingAsync(System. { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -2922,7 +3955,7 @@ public virtual async System.Threading.Tasks.Task PingAsync(System. { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -2932,7 +3965,7 @@ public virtual async System.Threading.Tasks.Task PingAsync(System. { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -2942,7 +3975,7 @@ public virtual async System.Threading.Tasks.Task PingAsync(System. { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -2952,7 +3985,7 @@ public virtual async System.Threading.Tasks.Task PingAsync(System. { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -2962,12 +3995,12 @@ public virtual async System.Threading.Tasks.Task PingAsync(System. { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -2994,21 +4027,22 @@ public virtual async System.Threading.Tasks.Task PingAsync(System. } } - /// OK + /// + /// Returns simple Response from Api + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task AddAsync() + public virtual System.Threading.Tasks.Task GetPingAsync() { - return AddAsync(System.Threading.CancellationToken.None); + return GetPingAsync(System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns simple Response from Api + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task AddAsync(System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task GetPingAsync(System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/add"); - var client_ = _httpClient; var disposeClient_ = false; try @@ -3018,6 +4052,11 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "ping" + urlBuilder_.Append("ping"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -3029,7 +4068,9 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -3046,7 +4087,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -3056,7 +4097,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -3066,7 +4107,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -3076,7 +4117,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -3086,7 +4127,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -3096,7 +4137,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) @@ -3128,26 +4169,22 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T } } - /// OK + /// + /// Returns simple addition + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task> FindAllAsync(FindTimestampModel findTimestamp) + public virtual System.Threading.Tasks.Task GetAddAsync() { - return FindAllAsync(findTimestamp, System.Threading.CancellationToken.None); + return GetAddAsync(System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns simple addition + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task> FindAllAsync(FindTimestampModel findTimestamp, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task GetAddAsync(System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/timestamp/find?"); - if (findTimestamp != null) - { - urlBuilder_.Append(System.Uri.EscapeDataString("findTimestamp") + "=").Append(System.Uri.EscapeDataString(ConvertToString(findTimestamp, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); - } - urlBuilder_.Length--; - var client_ = _httpClient; var disposeClient_ = false; try @@ -3157,6 +4194,11 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "add" + urlBuilder_.Append("add"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -3168,7 +4210,9 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -3185,7 +4229,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -3195,7 +4239,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -3205,7 +4249,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -3215,7 +4259,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -3225,7 +4269,7 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -3235,12 +4279,12 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -3267,34 +4311,202 @@ public virtual async System.Threading.Tasks.Task AddAsync(System.T } } - /// OK + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class TimestampClient + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public TimestampClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Returns List of Timestamps by Date + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task UserAsync(BaseUserModel body) + public virtual System.Threading.Tasks.Task> TimestampFindAsync(FindTimestampModel findTimestamp) { - return UserAsync(body, System.Threading.CancellationToken.None); + return TimestampFindAsync(findTimestamp, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns List of Timestamps by Date + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task UserAsync(BaseUserModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task> TimestampFindAsync(FindTimestampModel findTimestamp, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/user"); - var client_ = _httpClient; var disposeClient_ = false; try { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); - var content_ = new System.Net.Http.StringContent(json_); - content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); - request_.Content = content_; - request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "timestamp/find" + urlBuilder_.Append("timestamp/find"); + urlBuilder_.Append('?'); + if (findTimestamp != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("findTimestamp")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(findTimestamp, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -3306,7 +4518,9 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -3323,7 +4537,7 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -3333,7 +4547,7 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -3343,7 +4557,7 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -3353,7 +4567,7 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -3363,7 +4577,7 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -3373,22 +4587,12 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); - if (objectResponse_.Object == null) - { - throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); - } - return objectResponse_.Object; - } - else - if (status_ == 201) - { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -3415,35 +4619,203 @@ public virtual async System.Threading.Tasks.Task UserAsync(BaseUserMo } } - /// OK - /// A server side error occurred. - public virtual System.Threading.Tasks.Task Find5Async(FindUserModel findUser) + protected struct ObjectResponseResult { - return Find5Async(findUser, System.Threading.CancellationToken.None); + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } } - /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK - /// A server side error occurred. - public virtual async System.Threading.Tasks.Task Find5Async(FindUserModel findUser, System.Threading.CancellationToken cancellationToken) + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/user/find?"); - if (findUser != null) + if (response == null || response.Content == null) { - urlBuilder_.Append(System.Uri.EscapeDataString("findUser") + "=").Append(System.Uri.EscapeDataString(ConvertToString(findUser, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + return new ObjectResponseResult(default(T), string.Empty); } - urlBuilder_.Length--; - var client_ = _httpClient; - var disposeClient_ = false; - try + if (ReadResponseAsString) { - using (var request_ = new System.Net.Http.HttpRequestMessage()) + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try { - request_.Method = new System.Net.Http.HttpMethod("GET"); + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UserClient + { + #pragma warning disable 8618 + private string _baseUrl; + #pragma warning restore 8618 + + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + private Newtonsoft.Json.JsonSerializerSettings _instanceSettings; + + #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public UserClient(System.Net.Http.HttpClient httpClient) + #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + { + BaseUrl = "https://localhost:7253"; + _httpClient = httpClient; + Initialize(); + } + + private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + public string BaseUrl + { + get { return _baseUrl; } + set + { + _baseUrl = value; + if (!string.IsNullOrEmpty(_baseUrl) && !_baseUrl.EndsWith("/")) + _baseUrl += '/'; + } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void Initialize(); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Creates a new User and returns the added User + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task CreateUserAsync(BaseUserModel baseUser) + { + return CreateUserAsync(baseUser, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Creates a new User and returns the added User + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task CreateUserAsync(BaseUserModel baseUser, System.Threading.CancellationToken cancellationToken) + { + if (baseUser == null) + throw new System.ArgumentNullException("baseUser"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(baseUser, JsonSerializerSettings); + var content_ = new System.Net.Http.StringContent(json_); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "user" + urlBuilder_.Append("user"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -3455,7 +4827,9 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -3472,7 +4846,7 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -3482,7 +4856,7 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -3492,7 +4866,7 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -3502,7 +4876,7 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -3512,7 +4886,7 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -3522,12 +4896,22 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 201) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -3554,34 +4938,42 @@ public virtual async System.Threading.Tasks.Task Find5Async(FindU } } - /// OK + /// + /// Returns collection of Users + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task SigninAsync(SignInEventModel body) + public virtual System.Threading.Tasks.Task UserFindAsync(FindUserModel findUser) { - return SigninAsync(body, System.Threading.CancellationToken.None); + return UserFindAsync(findUser, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Returns collection of Users + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task SigninAsync(SignInEventModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task UserFindAsync(FindUserModel findUser, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/user/signin"); - var client_ = _httpClient; var disposeClient_ = false; try { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); - var content_ = new System.Net.Http.StringContent(json_); - content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); - request_.Content = content_; - request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Method = new System.Net.Http.HttpMethod("GET"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "user/find" + urlBuilder_.Append("user/find"); + urlBuilder_.Append('?'); + if (findUser != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("findUser")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(findUser, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + } + urlBuilder_.Length--; + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -3593,7 +4985,9 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -3610,7 +5004,7 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -3620,7 +5014,7 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -3630,7 +5024,7 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -3640,7 +5034,7 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -3650,7 +5044,7 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -3660,12 +5054,12 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -3692,20 +5086,24 @@ public virtual async System.Threading.Tasks.Task SigninAsync(Sig } } - /// OK + /// + /// Signs In a User and returns a Token + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task SaveuserAsync(UserModel body) + public virtual System.Threading.Tasks.Task SignInAsync(SignInEventModel signInEventModel) { - return SaveuserAsync(body, System.Threading.CancellationToken.None); + return SignInAsync(signInEventModel, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Signs In a User and returns a Token + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task SaveuserAsync(UserModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task SignInAsync(SignInEventModel signInEventModel, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/user/saveuser"); + if (signInEventModel == null) + throw new System.ArgumentNullException("signInEventModel"); var client_ = _httpClient; var disposeClient_ = false; @@ -3713,13 +5111,18 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(signInEventModel, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; - request_.Method = new System.Net.Http.HttpMethod("PUT"); + request_.Method = new System.Net.Http.HttpMethod("POST"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "user/signin" + urlBuilder_.Append("user/signin"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -3731,7 +5134,9 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -3748,7 +5153,7 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -3758,7 +5163,7 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -3768,7 +5173,7 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -3778,7 +5183,7 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -3788,7 +5193,7 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -3798,12 +5203,12 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -3830,20 +5235,24 @@ public virtual async System.Threading.Tasks.Task SaveuserAsync(UserMo } } - /// OK + /// + /// Saves an existing User preferences and returns the same updated User + /// /// A server side error occurred. - public virtual System.Threading.Tasks.Task SavefeedbackAsync(FeedbackModel body) + public virtual System.Threading.Tasks.Task SaveUserAsync(UserModel userModel) { - return SavefeedbackAsync(body, System.Threading.CancellationToken.None); + return SaveUserAsync(userModel, System.Threading.CancellationToken.None); } /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. - /// OK + /// + /// Saves an existing User preferences and returns the same updated User + /// /// A server side error occurred. - public virtual async System.Threading.Tasks.Task SavefeedbackAsync(FeedbackModel body, System.Threading.CancellationToken cancellationToken) + public virtual async System.Threading.Tasks.Task SaveUserAsync(UserModel userModel, System.Threading.CancellationToken cancellationToken) { - var urlBuilder_ = new System.Text.StringBuilder(); - urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/user/savefeedback"); + if (userModel == null) + throw new System.ArgumentNullException("userModel"); var client_ = _httpClient; var disposeClient_ = false; @@ -3851,13 +5260,18 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync { using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value); + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(userModel, JsonSerializerSettings); var content_ = new System.Net.Http.StringContent(json_); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; - request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Method = new System.Net.Http.HttpMethod("PUT"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "user/saveuser" + urlBuilder_.Append("user/saveuser"); + PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); @@ -3869,7 +5283,9 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync var disposeResponse_ = true; try { - var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) @@ -3886,7 +5302,7 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Unauthorized", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 403) @@ -3896,7 +5312,7 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Forbidden", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 404) @@ -3906,7 +5322,7 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Found", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 406) @@ -3916,7 +5332,7 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Not Acceptable", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 429) @@ -3926,7 +5342,7 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Too Many Requests", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 409) @@ -3936,12 +5352,12 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); } - throw new ApiException("Conflict", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); } else if (status_ == 200) { - var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); if (objectResponse_.Object == null) { throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); @@ -3968,89 +5384,238 @@ public virtual async System.Threading.Tasks.Task SavefeedbackAsync } } - protected struct ObjectResponseResult + /// + /// Saves feedback for a user and returns a response + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task SaveFeedbackAsync(FeedbackModel feedback) { - public ObjectResponseResult(T responseObject, string responseText) - { - this.Object = responseObject; - this.Text = responseText; - } - - public T Object { get; } - - public string Text { get; } + return SaveFeedbackAsync(feedback, System.Threading.CancellationToken.None); } - public bool ReadResponseAsString { get; set; } - - protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Saves feedback for a user and returns a response + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task SaveFeedbackAsync(FeedbackModel feedback, System.Threading.CancellationToken cancellationToken) { - if (response == null || response.Content == null) - { - return new ObjectResponseResult(default(T), string.Empty); - } + if (feedback == null) + throw new System.ArgumentNullException("feedback"); - if (ReadResponseAsString) - { - var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); - try - { - var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); - return new ObjectResponseResult(typedBody, responseText); - } - catch (Newtonsoft.Json.JsonException exception) - { - var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; - throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); - } - } - else + var client_ = _httpClient; + var disposeClient_ = false; + try { - try - { - using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) - using (var streamReader = new System.IO.StreamReader(responseStream)) - using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) - { - var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); - var typedBody = serializer.Deserialize(jsonTextReader); - return new ObjectResponseResult(typedBody, string.Empty); - } - } - catch (Newtonsoft.Json.JsonException exception) + using (var request_ = new System.Net.Http.HttpRequestMessage()) { - var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; - throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); - } - } - } + var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(feedback, JsonSerializerSettings); + var content_ = new System.Net.Http.StringContent(json_); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); - private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) - { - if (value == null) - { - return ""; - } + var urlBuilder_ = new System.Text.StringBuilder(); + if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl); + // Operation Path: "user/savefeedback" + urlBuilder_.Append("user/savefeedback"); - if (value is System.Enum) - { - var name = System.Enum.GetName(value.GetType(), value); - if (name != null) - { - var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); - if (field != null) + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try { - var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) - as System.Runtime.Serialization.EnumMemberAttribute; - if (attribute != null) + var headers_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.Value; + if (response_.Content != null && response_.Content.Headers != null) { - return attribute.Value != null ? attribute.Value : name; + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; } - } - var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); - return converted == null ? string.Empty : converted; - } + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 401) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 403) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 404) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 406) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 429) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 409) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } } else if (value is bool) { @@ -4060,10 +5625,19 @@ private string ConvertToString(object value, System.Globalization.CultureInfo cu { return System.Convert.ToBase64String((byte[]) value); } + else if (value is string[]) + { + return string.Join(",", (string[])value); + } else if (value.GetType().IsArray) { - var array = System.Linq.Enumerable.OfType((System.Array) value); - return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); } var result = System.Convert.ToString(value, cultureInfo); @@ -4071,34 +5645,60 @@ private string ConvertToString(object value, System.Globalization.CultureInfo cu } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AccessCodeModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SecureString { - [Newtonsoft.Json.JsonProperty("RequestId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Value + /// + [Newtonsoft.Json.JsonProperty("Value", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RequestId { get; set; } + public string Value { get; set; } - [Newtonsoft.Json.JsonProperty("RequestDescription", Required = Newtonsoft.Json.Required.Always)] + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SubmitBallotModelResponse + { + /// + /// Ballot Id + /// + [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RequestDescription { get; set; } + public string BallotId { get; set; } + /// + /// Election Id + /// [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("RequestedByUserId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Message + /// + [Newtonsoft.Json.JsonProperty("Message", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RequestedByUserId { get; set; } + [System.ComponentModel.DataAnnotations.StringLength(32768, MinimumLength = 1)] + public string Message { get; set; } - [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreated { get; set; } + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SubmitBallotModel + { + /// + /// Election + /// + [Newtonsoft.Json.JsonProperty("Election", Required = Newtonsoft.Json.Required.Always)] + public ElectionModel Election { get; set; } + /// + /// Access Code + /// [Newtonsoft.Json.JsonProperty("AccessCode", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(16, MinimumLength = 1)] @@ -4106,925 +5706,1246 @@ public partial class AccessCodeModel } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AccessCodesRequest + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ElectionModel : RootElectionBaseModel { + /// + /// Election Id + /// [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("RequestDescription", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RequestDescription { get; set; } - - [Newtonsoft.Json.JsonProperty("NumberOfAccessCodes", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int NumberOfAccessCodes { get; set; } - - } - - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AccessCodesResponse - { - [Newtonsoft.Json.JsonProperty("RequestId", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RequestId { get; set; } + /// + /// Parent Election Id + /// + [Newtonsoft.Json.JsonProperty("ParentElectionId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string ParentElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] + /// + /// DateCreated + /// + [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string ElectionId { get; set; } + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreated { get; set; } - [Newtonsoft.Json.JsonProperty("AccessCodes", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of Races + /// + [Newtonsoft.Json.JsonProperty("Races", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection AccessCodes { get; set; } = new System.Collections.ObjectModel.Collection(); + public System.Collections.Generic.ICollection Races { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AddCandidatesModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RaceModel : RootRaceBaseModel { + /// + /// Race Id + /// [Newtonsoft.Json.JsonProperty("RaceId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string RaceId { get; set; } - [Newtonsoft.Json.JsonProperty("CandidateIds", Required = Newtonsoft.Json.Required.Always)] + /// + /// Max Number of Choices + /// + [Newtonsoft.Json.JsonProperty("MaxNumberOfChoices", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int? MaxNumberOfChoices { get; set; } + + /// + /// Min Number of Choices + /// + [Newtonsoft.Json.JsonProperty("MinNumberOfChoices", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int? MinNumberOfChoices { get; set; } + + /// + /// List of Candidates + /// + [Newtonsoft.Json.JsonProperty("Candidates", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection CandidateIds { get; set; } = new System.Collections.ObjectModel.Collection(); + public System.Collections.Generic.ICollection Candidates { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AddRacesModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CandidateModel : RootCandidateBaseModel { - [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Candidate Id + /// + [Newtonsoft.Json.JsonProperty("CandidateId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string ElectionId { get; set; } - - [Newtonsoft.Json.JsonProperty("RaceIds", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection RaceIds { get; set; } = new System.Collections.ObjectModel.Collection(); + public string CandidateId { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BallotHashModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public abstract partial class RootCandidateBaseModel { - [Newtonsoft.Json.JsonProperty("BallotHashId", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string BallotHashId { get; set; } - - [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Name + /// + [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string BallotId { get; set; } + public string Name { get; set; } - [Newtonsoft.Json.JsonProperty("ServerBallotHash", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - public byte[] ServerBallotHash { get; set; } + /// + /// Party Affiliation + /// + [Newtonsoft.Json.JsonProperty("PartyAffiliation", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string PartyAffiliation { get; set; } - [Newtonsoft.Json.JsonProperty("ServerBallotHashS", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string ServerBallotHashS { get; set; } + /// + /// CandidateImageUrl + /// + [Newtonsoft.Json.JsonProperty("CandidateImageUrl", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string CandidateImageUrl { get; set; } + /// + /// DateCreated + /// [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset DateCreated { get; set; } - [Newtonsoft.Json.JsonProperty("DateUpdated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateUpdated { get; set; } + /// + /// Selected + /// + [Newtonsoft.Json.JsonProperty("Selected", Required = Newtonsoft.Json.Required.Always)] + public bool Selected { get; set; } - [Newtonsoft.Json.JsonProperty("TimestampId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string TimestampId { get; set; } + /// + /// SelectedMetadata + /// + [Newtonsoft.Json.JsonProperty("SelectedMetadata", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string SelectedMetadata { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BallotIdInfo + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public abstract partial class RootRaceBaseModel { - [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Name + /// + [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string BallotId { get; set; } - - [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - public System.DateTimeOffset DateCreated { get; set; } - - } - - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BallotList - { - [Newtonsoft.Json.JsonProperty("Ballots", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.MaxLength(2048)] - public System.Collections.Generic.ICollection Ballots { get; set; } = new System.Collections.ObjectModel.Collection(); - - [Newtonsoft.Json.JsonProperty("BallotHashes", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.MaxLength(2048)] - public System.Collections.Generic.ICollection BallotHashes { get; set; } = new System.Collections.ObjectModel.Collection(); - - } + public string Name { get; set; } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BallotModel - { - [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string BallotId { get; set; } + /// + /// Race Type + /// + [Newtonsoft.Json.JsonProperty("RaceType", Required = Newtonsoft.Json.Required.Always)] + public RaceTypes RaceType { get; set; } - [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Race Type Name + /// + [Newtonsoft.Json.JsonProperty("RaceTypeName", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string ElectionId { get; set; } - - [Newtonsoft.Json.JsonProperty("Election", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public ElectionModel Election { get; set; } = new ElectionModel(); + public string RaceTypeName { get; set; } + /// + /// DateCreated + /// [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset DateCreated { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BaseCandidateModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public enum RaceTypes { - [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Name { get; set; } - [Newtonsoft.Json.JsonProperty("PartyAffiliation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string PartyAffiliation { get; set; } + ChooseOne = 0, - [Newtonsoft.Json.JsonProperty("CandidateImageUrl", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(1024)] - public string CandidateImageUrl { get; set; } + ChooseMany = 1, - [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreated { get; set; } - - [Newtonsoft.Json.JsonProperty("Selected", Required = Newtonsoft.Json.Required.Always)] - public bool Selected { get; set; } - - [Newtonsoft.Json.JsonProperty("SelectedMetadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(1024)] - public string SelectedMetadata { get; set; } + RankedChoice = 2, } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BaseElectionModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public abstract partial class RootElectionBaseModel { + /// + /// Name + /// [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string Name { get; set; } + /// + /// Description + /// [Newtonsoft.Json.JsonProperty("Description", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(32768, MinimumLength = 1)] public string Description { get; set; } + /// + /// HeaderImageUrl + /// [Newtonsoft.Json.JsonProperty("HeaderImageUrl", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(1024, MinimumLength = 1)] public string HeaderImageUrl { get; set; } + /// + /// StartDate + /// [Newtonsoft.Json.JsonProperty("StartDate", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset StartDate { get; set; } + /// + /// EndDate + /// [Newtonsoft.Json.JsonProperty("EndDate", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset EndDate { get; set; } - [Newtonsoft.Json.JsonProperty("Races", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection Races { get; set; } = new System.Collections.ObjectModel.Collection(); + /// + /// Unlisted + /// + [Newtonsoft.Json.JsonProperty("Unlisted", Required = Newtonsoft.Json.Required.Always)] + public bool Unlisted { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BaseRaceModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BallotList { - [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Name { get; set; } - - [Newtonsoft.Json.JsonProperty("RaceType", Required = Newtonsoft.Json.Required.Always)] - public RaceTypes RaceType { get; set; } - - [Newtonsoft.Json.JsonProperty("RaceTypeName", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of Ballots + /// + [Newtonsoft.Json.JsonProperty("Ballots", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RaceTypeName { get; set; } - - [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreated { get; set; } - - [Newtonsoft.Json.JsonProperty("MaxNumberOfChoices", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int MaxNumberOfChoices { get; set; } - - [Newtonsoft.Json.JsonProperty("MinNumberOfChoices", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int MinNumberOfChoices { get; set; } + [System.ComponentModel.DataAnnotations.MaxLength(2048)] + public System.Collections.Generic.ICollection Ballots { get; set; } = new System.Collections.ObjectModel.Collection(); - [Newtonsoft.Json.JsonProperty("BaseCandidates", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of Ballot Hashes + /// + [Newtonsoft.Json.JsonProperty("BallotHashes", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection BaseCandidates { get; set; } = new System.Collections.ObjectModel.Collection(); + [System.ComponentModel.DataAnnotations.MaxLength(2048)] + public System.Collections.Generic.ICollection BallotHashes { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BaseUserModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BallotModel { - [Newtonsoft.Json.JsonProperty("FullName", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string FullName { get; set; } - - [Newtonsoft.Json.JsonProperty("Email", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - [System.ComponentModel.DataAnnotations.RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")] - public string Email { get; set; } - - [Newtonsoft.Json.JsonProperty("NostrPubKey", Required = Newtonsoft.Json.Required.Always)] + /// + /// Ballot Id + /// + [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string NostrPubKey { get; set; } - - } - - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class BuildInfo - { - [Newtonsoft.Json.JsonProperty("Branch", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string Branch { get; set; } + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string BallotId { get; set; } - [Newtonsoft.Json.JsonProperty("BuildTime", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string BuildTime { get; set; } + /// + /// Election Id + /// + [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("LastTag", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string LastTag { get; set; } + /// + /// Election for the Ballot + /// + [Newtonsoft.Json.JsonProperty("Election", Required = Newtonsoft.Json.Required.Always)] + public ElectionModel Election { get; set; } - [Newtonsoft.Json.JsonProperty("Commit", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string Commit { get; set; } + /// + /// DateCreated + /// + [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreated { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class CandidateModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BallotHashModel { - [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] + /// + /// Ballot Hash Id + /// + [Newtonsoft.Json.JsonProperty("BallotHashId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Name { get; set; } + public string BallotHashId { get; set; } - [Newtonsoft.Json.JsonProperty("PartyAffiliation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string PartyAffiliation { get; set; } + /// + /// Ballot Id + /// + [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string BallotId { get; set; } - [Newtonsoft.Json.JsonProperty("CandidateImageUrl", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(1024)] - public string CandidateImageUrl { get; set; } + /// + /// Server Ballot Hash + /// + [Newtonsoft.Json.JsonProperty("ServerBallotHash", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public byte[] ServerBallotHash { get; set; } + + /// + /// Server Ballot Hash String + /// + [Newtonsoft.Json.JsonProperty("ServerBallotHashS", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string ServerBallotHashS { get; set; } + /// + /// DateCreated + /// [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset DateCreated { get; set; } - [Newtonsoft.Json.JsonProperty("Selected", Required = Newtonsoft.Json.Required.Always)] - public bool Selected { get; set; } + /// + /// DateUpdated + /// + [Newtonsoft.Json.JsonProperty("DateUpdated", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateUpdated { get; set; } - [Newtonsoft.Json.JsonProperty("SelectedMetadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(1024)] - public string SelectedMetadata { get; set; } + /// + /// Timestamp Id + /// + [Newtonsoft.Json.JsonProperty("TimestampId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string TimestampId { get; set; } - [Newtonsoft.Json.JsonProperty("CandidateId", Required = Newtonsoft.Json.Required.Always)] + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FindBallotModel + { + /// + /// Ballot Id + /// + [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string CandidateId { get; set; } + public string BallotId { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class CandidateModelList + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CountBallotModelResponse { - [Newtonsoft.Json.JsonProperty("Candidates", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.MaxLength(2048)] - public System.Collections.Generic.ICollection Candidates { get; set; } = new System.Collections.ObjectModel.Collection(); + /// + /// Number of Ballots + /// + [Newtonsoft.Json.JsonProperty("BallotCount", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0L, 9223372036854775807L)] + public long BallotCount { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class CandidateResult + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CountBallotModel { - [Newtonsoft.Json.JsonProperty("CandidateId", Required = Newtonsoft.Json.Required.Always)] + /// + /// DateCreatedStart + /// + [Newtonsoft.Json.JsonProperty("DateCreatedStart", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string CandidateId { get; set; } + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreatedStart { get; set; } - [Newtonsoft.Json.JsonProperty("CandidateName", Required = Newtonsoft.Json.Required.Always)] + /// + /// DateCreatedEnd + /// + [Newtonsoft.Json.JsonProperty("DateCreatedEnd", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string CandidateName { get; set; } - - [Newtonsoft.Json.JsonProperty("TotalVotes", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int TotalVotes { get; set; } + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreatedEnd { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class CheckCodeRequest + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FindBallotHashModel { - [Newtonsoft.Json.JsonProperty("AccessCode", Required = Newtonsoft.Json.Required.Always)] + /// + /// Ballot Id + /// + [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string AccessCode { get; set; } + public string BallotId { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class CommunicationEventModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BaseCandidateModel : RootCandidateBaseModel { - [Newtonsoft.Json.JsonProperty("Type", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(50, MinimumLength = 1)] - public string Type { get; set; } - [Newtonsoft.Json.JsonProperty("CommunicationMethod", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.IDictionary CommunicationMethod { get; set; } = new System.Collections.Generic.Dictionary(); + } - [Newtonsoft.Json.JsonProperty("RelatedEntities", Required = Newtonsoft.Json.Required.Always)] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CandidateModelList + { + /// + /// List of Candidates + /// + [Newtonsoft.Json.JsonProperty("Candidates", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.IDictionary RelatedEntities { get; set; } = new System.Collections.Generic.Dictionary(); + [System.ComponentModel.DataAnnotations.MaxLength(2048)] + public System.Collections.Generic.ICollection Candidates { get; set; } = new System.Collections.ObjectModel.Collection(); - [Newtonsoft.Json.JsonProperty("Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public System.Collections.Generic.IDictionary Metadata { get; set; } + } - [Newtonsoft.Json.JsonProperty("communicationMethodJson", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public string CommunicationMethodJson { get; set; } + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FindCandidateModel + { + /// + /// Name + /// + [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string Name { get; set; } - [Newtonsoft.Json.JsonProperty("relatedEntitiesJson", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public string RelatedEntitiesJson { get; set; } + /// + /// Party Affiliation + /// + [Newtonsoft.Json.JsonProperty("PartyAffiliation", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string PartyAffiliation { get; set; } - [Newtonsoft.Json.JsonProperty("metadataJson", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public string MetadataJson { get; set; } + } + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CommunicationEventModel : RootCommunicationEventBaseModel + { + /// + /// Communication Event Id + /// [Newtonsoft.Json.JsonProperty("CommunicationEventId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string CommunicationEventId { get; set; } + /// + /// Status of the communication + /// [Newtonsoft.Json.JsonProperty("Status", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(50, MinimumLength = 1)] public string Status { get; set; } + /// + /// DateCreated + /// [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset DateCreated { get; set; } + /// + /// DateUpdated + /// [Newtonsoft.Json.JsonProperty("DateUpdated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset DateUpdated { get; set; } + /// + /// DateProcessed + /// [Newtonsoft.Json.JsonProperty("DateProcessed", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public System.DateTimeOffset? DateProcessed { get; set; } + /// + /// Error message if failed + /// [Newtonsoft.Json.JsonProperty("ErrorMessage", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] [System.ComponentModel.DataAnnotations.StringLength(4096)] public string ErrorMessage { get; set; } + /// + /// Time To Live in seconds (null = forever) + /// [Newtonsoft.Json.JsonProperty("TimeToLive", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public int? TimeToLive { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public abstract partial class RootCommunicationEventBaseModel + { + /// + /// Type of communication (Email, SMS, Push) + /// + [Newtonsoft.Json.JsonProperty("Type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(50, MinimumLength = 1)] + public string Type { get; set; } + + /// + /// Communication method and address/id (e.g., Email: user@domain.com, MobileDeviceId: abc123) + /// + [Newtonsoft.Json.JsonProperty("CommunicationMethod", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.IDictionary CommunicationMethod { get; set; } = new System.Collections.Generic.Dictionary(); + + /// + /// Dictionary of related entity IDs and their types + /// + [Newtonsoft.Json.JsonProperty("RelatedEntities", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.IDictionary RelatedEntities { get; set; } = new System.Collections.Generic.Dictionary(); + + /// + /// Additional metadata for the communication event + /// + [Newtonsoft.Json.JsonProperty("Metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.IDictionary Metadata { get; set; } + + [Newtonsoft.Json.JsonProperty("CommunicationMethodJson", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string CommunicationMethodJson { get; set; } + + [Newtonsoft.Json.JsonProperty("RelatedEntitiesJson", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string RelatedEntitiesJson { get; set; } + + [Newtonsoft.Json.JsonProperty("MetadataJson", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string MetadataJson { get; set; } + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] public partial class CommunicationEventUpdateModel { + /// + /// Communication Event Id + /// [Newtonsoft.Json.JsonProperty("CommunicationEventId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string CommunicationEventId { get; set; } + /// + /// Status of the communication + /// [Newtonsoft.Json.JsonProperty("Status", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(50, MinimumLength = 1)] public string Status { get; set; } + /// + /// DateUpdated + /// [Newtonsoft.Json.JsonProperty("DateUpdated", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public System.DateTimeOffset DateUpdated { get; set; } + /// + /// DateProcessed + /// [Newtonsoft.Json.JsonProperty("DateProcessed", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] public System.DateTimeOffset DateProcessed { get; set; } + /// + /// Error message if failed + /// [Newtonsoft.Json.JsonProperty("ErrorMessage", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] [System.ComponentModel.DataAnnotations.StringLength(4096)] public string ErrorMessage { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class CountBallotModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BaseElectionModel : RootElectionBaseModel { - [Newtonsoft.Json.JsonProperty("DateCreatedStart", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreatedStart { get; set; } + /// + /// List of BaseRaces + /// + [Newtonsoft.Json.JsonProperty("BaseRaces", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection BaseRaces { get; set; } = new System.Collections.ObjectModel.Collection(); - [Newtonsoft.Json.JsonProperty("DateCreatedEnd", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreatedEnd { get; set; } + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BaseRaceModel : RootRaceBaseModel + { + /// + /// Max Number of Choices + /// + [Newtonsoft.Json.JsonProperty("MaxNumberOfChoices", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int MaxNumberOfChoices { get; set; } + + /// + /// Min Number of Choices + /// + [Newtonsoft.Json.JsonProperty("MinNumberOfChoices", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int MinNumberOfChoices { get; set; } + + /// + /// List of BaseCandidates + /// + [Newtonsoft.Json.JsonProperty("BaseCandidates", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection BaseCandidates { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class CountBallotModelResponse + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ElectionModelList { - [Newtonsoft.Json.JsonProperty("BallotCount", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0D, double.MaxValue)] - public long BallotCount { get; set; } + /// + /// List of Elections + /// + [Newtonsoft.Json.JsonProperty("Elections", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MaxLength(2048)] + public System.Collections.Generic.ICollection Elections { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class ElectionModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FindElectionModel { + /// + /// Name + /// [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string Name { get; set; } - [Newtonsoft.Json.JsonProperty("Description", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(32768, MinimumLength = 1)] - public string Description { get; set; } - - [Newtonsoft.Json.JsonProperty("HeaderImageUrl", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(1024, MinimumLength = 1)] - public string HeaderImageUrl { get; set; } - - [Newtonsoft.Json.JsonProperty("StartDate", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset StartDate { get; set; } - - [Newtonsoft.Json.JsonProperty("EndDate", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset EndDate { get; set; } + } + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AddRacesModel + { + /// + /// Election Id + /// [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("ParentElectionId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string ParentElectionId { get; set; } - - [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreated { get; set; } - - [Newtonsoft.Json.JsonProperty("Races", Required = Newtonsoft.Json.Required.Always)] + /// + /// Race Ids + /// + [Newtonsoft.Json.JsonProperty("RaceIds", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection Races { get; set; } = new System.Collections.ObjectModel.Collection(); + public System.Collections.Generic.ICollection RaceIds { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class ElectionModelList + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AccessCodesResponse { - [Newtonsoft.Json.JsonProperty("Elections", Required = Newtonsoft.Json.Required.Always)] + /// + /// Request Id + /// + [Newtonsoft.Json.JsonProperty("RequestId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.MaxLength(2048)] - public System.Collections.Generic.ICollection Elections { get; set; } = new System.Collections.ObjectModel.Collection(); - - } + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string RequestId { get; set; } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class ElectionResults - { + /// + /// Election Id + /// [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("TotalBallots", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int TotalBallots { get; set; } - - [Newtonsoft.Json.JsonProperty("TotalBallotsHashed", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int TotalBallotsHashed { get; set; } - - [Newtonsoft.Json.JsonProperty("Races", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection Races { get; set; } = new System.Collections.ObjectModel.Collection(); - - [Newtonsoft.Json.JsonProperty("BallotIds", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of Access Codes + /// + [Newtonsoft.Json.JsonProperty("AccessCodes", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public PaginatedBallotIds BallotIds { get; set; } = new PaginatedBallotIds(); + public System.Collections.Generic.ICollection AccessCodes { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class Error500Flag + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AccessCodeModel { - [Newtonsoft.Json.JsonProperty("Error", Required = Newtonsoft.Json.Required.Always)] - public bool Error { get; set; } + /// + /// Request Id + /// + [Newtonsoft.Json.JsonProperty("RequestId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string RequestId { get; set; } - } + /// + /// Request Description + /// + [Newtonsoft.Json.JsonProperty("RequestDescription", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string RequestDescription { get; set; } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FeedbackModel - { - [Newtonsoft.Json.JsonProperty("FeedbackId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Election Id + /// + [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string FeedbackId { get; set; } + public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("UserId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Requested By User Id + /// + [Newtonsoft.Json.JsonProperty("RequestedByUserId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string UserId { get; set; } + public string RequestedByUserId { get; set; } + /// + /// DateCreated + /// [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset DateCreated { get; set; } - [Newtonsoft.Json.JsonProperty("Feedback", Required = Newtonsoft.Json.Required.Always)] + /// + /// Access Code + /// + [Newtonsoft.Json.JsonProperty("AccessCode", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Feedback { get; set; } + [System.ComponentModel.DataAnnotations.StringLength(16, MinimumLength = 1)] + public string AccessCode { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FindBallotHashModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AccessCodesRequest { - [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Election Id + /// + [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string BallotId { get; set; } + public string ElectionId { get; set; } + + /// + /// Request Description + /// + [Newtonsoft.Json.JsonProperty("RequestDescription", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string RequestDescription { get; set; } + + /// + /// Number of Access Codes + /// + [Newtonsoft.Json.JsonProperty("NumberOfAccessCodes", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int NumberOfAccessCodes { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FindBallotModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CheckCodeRequest { - [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] + /// + /// AccessCode + /// + [Newtonsoft.Json.JsonProperty("AccessCode", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string BallotId { get; set; } + public string AccessCode { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FindCandidateModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class VoterElectionAccessCodeRequest { - [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] + /// + /// Election ID + /// + [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Name { get; set; } + public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("PartyAffiliation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string PartyAffiliation { get; set; } + /// + /// Voter email address + /// + [Newtonsoft.Json.JsonProperty("VoterEmail", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(256, MinimumLength = 1)] + public string VoterEmail { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FindElectionModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class Error500Flag { - [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Name { get; set; } + /// + /// Error + /// + [Newtonsoft.Json.JsonProperty("Error", Required = Newtonsoft.Json.Required.Always)] + public bool Error { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FindRaceModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AddCandidatesModel { - [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] + /// + /// Race Id + /// + [Newtonsoft.Json.JsonProperty("RaceId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Name { get; set; } + public string RaceId { get; set; } + + /// + /// Candidate Ids + /// + [Newtonsoft.Json.JsonProperty("CandidateIds", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection CandidateIds { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FindTimestampModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RaceModelList { - [Newtonsoft.Json.JsonProperty("DateCreatedStart", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreatedStart { get; set; } - - [Newtonsoft.Json.JsonProperty("DateCreatedEnd", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreatedEnd { get; set; } + /// + /// List of Races + /// + [Newtonsoft.Json.JsonProperty("Races", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MaxLength(2048)] + public System.Collections.Generic.ICollection Races { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class FindUserModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FindRaceModel { - [Newtonsoft.Json.JsonProperty("FullName", Required = Newtonsoft.Json.Required.Always)] + /// + /// Name + /// + [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string FullName { get; set; } - - [Newtonsoft.Json.JsonProperty("Email", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - [System.ComponentModel.DataAnnotations.RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")] - public string Email { get; set; } + public string Name { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public enum NostrKind + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class StatusModel { + /// + /// Current Time + /// + [Newtonsoft.Json.JsonProperty("CurrentTime", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string CurrentTime { get; set; } - _0 = 0, - - _1 = 1, - - _2 = 2, - - _3 = 3, - - _4 = 4, - - _5 = 5, - - _6 = 6, - - _7 = 7, - - _8 = 8, - - _16 = 16, - - _40 = 40, - - _41 = 41, - - _42 = 42, - - _43 = 43, - - _44 = 44, - - _1063 = 1063, - - _1311 = 1311, - - _1984 = 1984, - - _1985 = 1985, - - _9734 = 9734, + /// + /// Stopwatch time to run this method + /// + [Newtonsoft.Json.JsonProperty("ExecutionTime", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0L, 9223372036854775807L)] + public long ExecutionTime { get; set; } - _9735 = 9735, + /// + /// Stopwatch time to run this method (message) + /// + [Newtonsoft.Json.JsonProperty("ExecutionTimeMsg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string ExecutionTimeMsg { get; set; } - _10000 = 10000, + /// + /// True if method responds. Likely never false + /// + [Newtonsoft.Json.JsonProperty("Responds", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool Responds { get; set; } - _10001 = 10001, + /// + /// True if method responds. Likely never false (message) + /// + [Newtonsoft.Json.JsonProperty("RespondsMsg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string RespondsMsg { get; set; } - _10002 = 10002, + /// + /// Build information model + /// + [Newtonsoft.Json.JsonProperty("BuildInfo", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public BuildInfo BuildInfo { get; set; } - _13194 = 13194, + /// + /// Timestamp this Build information data model was populated + /// + [Newtonsoft.Json.JsonProperty("BuildInfoReadTime", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string BuildInfoReadTime { get; set; } - _22242 = 22242, + } - _23194 = 23194, + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BuildInfo + { + /// + /// Git branch of instance + /// + [Newtonsoft.Json.JsonProperty("Branch", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string Branch { get; set; } - _23195 = 23195, + /// + /// Timestamp build was created + /// + [Newtonsoft.Json.JsonProperty("BuildTime", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string BuildTime { get; set; } - _24133 = 24133, + /// + /// Git tag of instance + /// + [Newtonsoft.Json.JsonProperty("LastTag", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string LastTag { get; set; } - _27235 = 27235, + /// + /// Git commit hash of instance + /// + [Newtonsoft.Json.JsonProperty("Commit", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string Commit { get; set; } - _30000 = 30000, + } - _30001 = 30001, + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class TimestampModel + { + /// + /// Timestamp Id + /// + [Newtonsoft.Json.JsonProperty("TimestampId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string TimestampId { get; set; } - _30008 = 30008, + /// + /// MerkleRoot + /// + [Newtonsoft.Json.JsonProperty("MerkleRoot", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public byte[] MerkleRoot { get; set; } - _30009 = 30009, + /// + /// MerkleRootHash + /// + [Newtonsoft.Json.JsonProperty("MerkleRootHash", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public byte[] MerkleRootHash { get; set; } - _30023 = 30023, + /// + /// TimestampHash + /// + [Newtonsoft.Json.JsonProperty("TimestampHash", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public byte[] TimestampHash { get; set; } - _30024 = 30024, + /// + /// TimestampHash String + /// + [Newtonsoft.Json.JsonProperty("TimestampHashS", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string TimestampHashS { get; set; } - _30078 = 30078, + [Newtonsoft.Json.JsonProperty("TimestampAt", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.DateTimeOffset TimestampAt { get; set; } - _30311 = 30311, + /// + /// CalendarServerUrl + /// + [Newtonsoft.Json.JsonProperty("CalendarServerUrl", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public System.Uri CalendarServerUrl { get; set; } - _30402 = 30402, + /// + /// DateCreated + /// + [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreated { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class PaginatedBallotIds + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FindTimestampModel { - [Newtonsoft.Json.JsonProperty("Items", Required = Newtonsoft.Json.Required.Always)] + /// + /// DateCreatedStart + /// + [Newtonsoft.Json.JsonProperty("DateCreatedStart", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection Items { get; set; } = new System.Collections.ObjectModel.Collection(); - - [Newtonsoft.Json.JsonProperty("TotalCount", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int TotalCount { get; set; } - - [Newtonsoft.Json.JsonProperty("Offset", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int Offset { get; set; } + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreatedStart { get; set; } - [Newtonsoft.Json.JsonProperty("Limit", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Range(1, 2147483647)] - public int Limit { get; set; } + /// + /// DateCreatedEnd + /// + [Newtonsoft.Json.JsonProperty("DateCreatedEnd", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreatedEnd { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class RaceModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UserModel { - [Newtonsoft.Json.JsonProperty("Name", Required = Newtonsoft.Json.Required.Always)] + /// + /// User Id + /// + [Newtonsoft.Json.JsonProperty("UserId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Name { get; set; } + public string UserId { get; set; } - [Newtonsoft.Json.JsonProperty("RaceType", Required = Newtonsoft.Json.Required.Always)] - public RaceTypes RaceType { get; set; } + /// + /// Nostr PubKey + /// + [Newtonsoft.Json.JsonProperty("NostrPubKey", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string NostrPubKey { get; set; } - [Newtonsoft.Json.JsonProperty("RaceTypeName", Required = Newtonsoft.Json.Required.Always)] + /// + /// Full Name + /// + [Newtonsoft.Json.JsonProperty("FullName", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RaceTypeName { get; set; } + public string FullName { get; set; } + /// + /// Email Address + /// + [Newtonsoft.Json.JsonProperty("Email", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + [System.ComponentModel.DataAnnotations.RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")] + public string Email { get; set; } + + /// + /// DateCreated + /// [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] public System.DateTimeOffset DateCreated { get; set; } - [Newtonsoft.Json.JsonProperty("RaceId", Required = Newtonsoft.Json.Required.Always)] + /// + /// DateUpdated + /// + [Newtonsoft.Json.JsonProperty("DateUpdated", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RaceId { get; set; } - - [Newtonsoft.Json.JsonProperty("MaxNumberOfChoices", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int? MaxNumberOfChoices { get; set; } - - [Newtonsoft.Json.JsonProperty("MinNumberOfChoices", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] - public int? MinNumberOfChoices { get; set; } + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateUpdated { get; set; } - [Newtonsoft.Json.JsonProperty("Candidates", Required = Newtonsoft.Json.Required.Always)] + /// + /// UserPreferences + /// + [Newtonsoft.Json.JsonProperty("UserPreferences", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection Candidates { get; set; } = new System.Collections.ObjectModel.Collection(); + public UserPreferencesModel UserPreferences { get; set; } = new UserPreferencesModel(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class RaceModelList + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UserPreferencesModel { - [Newtonsoft.Json.JsonProperty("Races", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.MaxLength(2048)] - public System.Collections.Generic.ICollection Races { get; set; } = new System.Collections.ObjectModel.Collection(); + /// + /// Notification: New Elections + /// + [Newtonsoft.Json.JsonProperty("NotificationNewElections", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool NotificationNewElections { get; set; } + + /// + /// Notification: Election Start + /// + [Newtonsoft.Json.JsonProperty("NotificationElectionStart", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool NotificationElectionStart { get; set; } + + /// + /// Notification: Election End + /// + [Newtonsoft.Json.JsonProperty("NotificationElectionEnd", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool NotificationElectionEnd { get; set; } + + /// + /// Notification: New TrueVote Features + /// + [Newtonsoft.Json.JsonProperty("NotificationNewTrueVoteFeatures", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool NotificationNewTrueVoteFeatures { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class RaceResult + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BaseUserModel { - [Newtonsoft.Json.JsonProperty("RaceId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Full Name + /// + [Newtonsoft.Json.JsonProperty("FullName", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RaceId { get; set; } + public string FullName { get; set; } - [Newtonsoft.Json.JsonProperty("RaceName", Required = Newtonsoft.Json.Required.Always)] + /// + /// Email Address + /// + [Newtonsoft.Json.JsonProperty("Email", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string RaceName { get; set; } + [System.ComponentModel.DataAnnotations.RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")] + public string Email { get; set; } - [Newtonsoft.Json.JsonProperty("CandidateResults", Required = Newtonsoft.Json.Required.Always)] + /// + /// Nostr Public Key + /// + [Newtonsoft.Json.JsonProperty("NostrPubKey", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.ICollection CandidateResults { get; set; } = new System.Collections.ObjectModel.Collection(); + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string NostrPubKey { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public enum RaceTypes + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UserModelList { - - _0 = 0, - - _1 = 1, - - _2 = 2, + /// + /// List of Users + /// + [Newtonsoft.Json.JsonProperty("Users", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MaxLength(2048)] + public System.Collections.Generic.ICollection Users { get; set; } = new System.Collections.ObjectModel.Collection(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class SecureString + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FindUserModel { - [Newtonsoft.Json.JsonProperty("Value", Required = Newtonsoft.Json.Required.Always)] + /// + /// Full Name + /// + [Newtonsoft.Json.JsonProperty("FullName", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Value { get; set; } + public string FullName { get; set; } + + /// + /// Email Address + /// + [Newtonsoft.Json.JsonProperty("Email", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + [System.ComponentModel.DataAnnotations.RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")] + public string Email { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class ServiceBusCommsMessage + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SignInResponse { - [Newtonsoft.Json.JsonProperty("Metadata", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.IDictionary Metadata { get; set; } = new System.Collections.Generic.Dictionary(); - - [Newtonsoft.Json.JsonProperty("CommunicationMethod", Required = Newtonsoft.Json.Required.Always)] + /// + /// User + /// + [Newtonsoft.Json.JsonProperty("User", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.IDictionary CommunicationMethod { get; set; } = new System.Collections.Generic.Dictionary(); + public UserModel User { get; set; } = new UserModel(); - [Newtonsoft.Json.JsonProperty("RelatedEntities", Required = Newtonsoft.Json.Required.Always)] + /// + /// Token + /// + [Newtonsoft.Json.JsonProperty("Token", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public System.Collections.Generic.IDictionary RelatedEntities { get; set; } = new System.Collections.Generic.Dictionary(); - - [Newtonsoft.Json.JsonProperty("MessageData", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public System.Collections.Generic.IDictionary MessageData { get; set; } + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string Token { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] public partial class SignInEventModel { + /// + /// Kind + /// [Newtonsoft.Json.JsonProperty("Kind", Required = Newtonsoft.Json.Required.Always)] public NostrKind Kind { get; set; } + /// + /// PubKey + /// [Newtonsoft.Json.JsonProperty("PubKey", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string PubKey { get; set; } + /// + /// CreatedAt + /// [Newtonsoft.Json.JsonProperty("CreatedAt", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.Required] public System.DateTimeOffset CreatedAt { get; set; } + /// + /// Signature + /// [Newtonsoft.Json.JsonProperty("Signature", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] public string Signature { get; set; } + /// + /// Content + /// [Newtonsoft.Json.JsonProperty("Content", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] @@ -5032,208 +6953,310 @@ public partial class SignInEventModel } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class SignInResponse + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public enum NostrKind { - [Newtonsoft.Json.JsonProperty("User", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public UserModel User { get; set; } = new UserModel(); - [Newtonsoft.Json.JsonProperty("Token", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string Token { get; set; } + Metadata = 0, - } + ShortTextNote = 1, - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class StatusModel - { - [Newtonsoft.Json.JsonProperty("CurrentTime", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string CurrentTime { get; set; } + RecommendRelay = 2, - [Newtonsoft.Json.JsonProperty("ExecutionTime", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.Range(0D, double.MaxValue)] - public long ExecutionTime { get; set; } + Contacts = 3, - [Newtonsoft.Json.JsonProperty("ExecutionTimeMsg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string ExecutionTimeMsg { get; set; } + EncryptedDm = 4, - [Newtonsoft.Json.JsonProperty("Responds", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public bool Responds { get; set; } + EventDeletion = 5, - [Newtonsoft.Json.JsonProperty("RespondsMsg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string RespondsMsg { get; set; } + Reserved = 6, - [Newtonsoft.Json.JsonProperty("BuildInfo", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public BuildInfo BuildInfo { get; set; } + Reaction = 7, - [Newtonsoft.Json.JsonProperty("BuildInfoReadTime", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - [System.ComponentModel.DataAnnotations.StringLength(2048)] - public string BuildInfoReadTime { get; set; } + BadgeAward = 8, - } + GenericRepost = 16, - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class SubmitBallotModel - { - [Newtonsoft.Json.JsonProperty("Election", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - public ElectionModel Election { get; set; } = new ElectionModel(); + ChannelCreation = 40, - [Newtonsoft.Json.JsonProperty("AccessCode", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(16, MinimumLength = 1)] - public string AccessCode { get; set; } + ChannelMetadata = 41, + + ChannelMessage = 42, + + ChannelHideMessage = 43, + + ChanelMuteUser = 44, + + FileMetadata = 1063, + + LiveChatMessage = 1311, + + Reporting = 1984, + + Label = 1985, + + ZapRequest = 9734, + + Zap = 9735, + + MuteList = 10000, + + PinList = 10001, + + RelayListMetadata = 10002, + + WalletInfo = 13194, + + ClientAuthentication = 22242, + + WalletRequest = 23194, + + WalletResponse = 23195, + + NostrConnect = 24133, + + HttpAuth = 27235, + + CategorizedPeopleList = 30000, + + CategorizedBookmarkList = 30001, + + ProfileBadges = 30008, + + BadgeDefinition = 30009, + + LongFormContent = 30023, + + DraftLongFormContent = 30024, + + ApplicationSpecificData = 30078, + + LiveEvent = 30311, + + ClassifiedListing = 30402, } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class SubmitBallotModelResponse + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FeedbackModel { - [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Feedback Id + /// + [Newtonsoft.Json.JsonProperty("FeedbackId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string BallotId { get; set; } + public string FeedbackId { get; set; } - [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] + /// + /// User Id + /// + [Newtonsoft.Json.JsonProperty("UserId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string ElectionId { get; set; } + public string UserId { get; set; } - [Newtonsoft.Json.JsonProperty("Message", Required = Newtonsoft.Json.Required.Always)] + /// + /// DateCreated + /// + [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(32768, MinimumLength = 1)] - public string Message { get; set; } + [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] + public System.DateTimeOffset DateCreated { get; set; } + + /// + /// Feedback + /// + [Newtonsoft.Json.JsonProperty("Feedback", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string Feedback { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class TimestampModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ElectionResults { - [Newtonsoft.Json.JsonProperty("TimestampId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Election Id + /// + [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string TimestampId { get; set; } - - [Newtonsoft.Json.JsonProperty("MerkleRoot", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - public byte[] MerkleRoot { get; set; } + public string ElectionId { get; set; } - [Newtonsoft.Json.JsonProperty("MerkleRootHash", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - public byte[] MerkleRootHash { get; set; } + /// + /// Total number of ballots cast + /// + [Newtonsoft.Json.JsonProperty("TotalBallots", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int TotalBallots { get; set; } - [Newtonsoft.Json.JsonProperty("TimestampHash", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - public byte[] TimestampHash { get; set; } + /// + /// Total number of ballots hashed + /// + [Newtonsoft.Json.JsonProperty("TotalBallotsHashed", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int TotalBallotsHashed { get; set; } - [Newtonsoft.Json.JsonProperty("TimestampHashS", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of Race Results + /// + [Newtonsoft.Json.JsonProperty("Races", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string TimestampHashS { get; set; } - - [Newtonsoft.Json.JsonProperty("timestampAt", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public System.DateTimeOffset TimestampAt { get; set; } + public System.Collections.Generic.ICollection Races { get; set; } = new System.Collections.ObjectModel.Collection(); - [Newtonsoft.Json.JsonProperty("CalendarServerUrl", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of ballot IDs and ballot dates for the current page + /// + [Newtonsoft.Json.JsonProperty("PaginatedBallotIds", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public System.Uri CalendarServerUrl { get; set; } - - [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreated { get; set; } + public PaginatedBallotIds PaginatedBallotIds { get; set; } = new PaginatedBallotIds(); } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class UserModel + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RaceResult { - [Newtonsoft.Json.JsonProperty("UserId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Race Id + /// + [Newtonsoft.Json.JsonProperty("RaceId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string UserId { get; set; } + public string RaceId { get; set; } - [Newtonsoft.Json.JsonProperty("NostrPubKey", Required = Newtonsoft.Json.Required.Always)] + /// + /// Race Name + /// + [Newtonsoft.Json.JsonProperty("RaceName", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string NostrPubKey { get; set; } + public string RaceName { get; set; } - [Newtonsoft.Json.JsonProperty("FullName", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of Candidate Results + /// + [Newtonsoft.Json.JsonProperty("CandidateResults", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string FullName { get; set; } + public System.Collections.Generic.ICollection CandidateResults { get; set; } = new System.Collections.ObjectModel.Collection(); - [Newtonsoft.Json.JsonProperty("Email", Required = Newtonsoft.Json.Required.Always)] + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CandidateResult + { + /// + /// Candidate Id + /// + [Newtonsoft.Json.JsonProperty("CandidateId", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - [System.ComponentModel.DataAnnotations.RegularExpression(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$")] - public string Email { get; set; } - - [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateCreated { get; set; } - - [Newtonsoft.Json.JsonProperty("DateUpdated", Required = Newtonsoft.Json.Required.Always)] - [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] - public System.DateTimeOffset DateUpdated { get; set; } + public string CandidateId { get; set; } - [Newtonsoft.Json.JsonProperty("UserPreferences", Required = Newtonsoft.Json.Required.Always)] + /// + /// Candidate Name + /// + [Newtonsoft.Json.JsonProperty("CandidateName", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - public UserPreferencesModel UserPreferences { get; set; } = new UserPreferencesModel(); + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string CandidateName { get; set; } + + /// + /// Total votes received by the candidate + /// + [Newtonsoft.Json.JsonProperty("TotalVotes", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int TotalVotes { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class UserModelList + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class PaginatedBallotIds { - [Newtonsoft.Json.JsonProperty("Users", Required = Newtonsoft.Json.Required.Always)] + /// + /// List of ballot IDs and ballot dates for the current page + /// + [Newtonsoft.Json.JsonProperty("Items", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.MaxLength(2048)] - public System.Collections.Generic.ICollection Users { get; set; } = new System.Collections.ObjectModel.Collection(); + public System.Collections.Generic.ICollection Items { get; set; } = new System.Collections.ObjectModel.Collection(); - } + /// + /// Total number of ballot IDs across all pages + /// + [Newtonsoft.Json.JsonProperty("TotalCount", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int TotalCount { get; set; } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class UserPreferencesModel - { - [Newtonsoft.Json.JsonProperty("NotificationNewElections", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public bool NotificationNewElections { get; set; } + /// + /// Number of items to skip (starting position) + /// + [Newtonsoft.Json.JsonProperty("Offset", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0, 2147483647)] + public int Offset { get; set; } - [Newtonsoft.Json.JsonProperty("NotificationElectionStart", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public bool NotificationElectionStart { get; set; } + /// + /// Maximum number of items to return per page + /// + [Newtonsoft.Json.JsonProperty("Limit", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(1, 2147483647)] + public int Limit { get; set; } - [Newtonsoft.Json.JsonProperty("NotificationElectionEnd", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public bool NotificationElectionEnd { get; set; } + } - [Newtonsoft.Json.JsonProperty("NotificationNewTrueVoteFeatures", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public bool NotificationNewTrueVoteFeatures { get; set; } + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BallotIdInfo + { + /// + /// Ballot Id + /// + [Newtonsoft.Json.JsonProperty("BallotId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] + public string BallotId { get; set; } + + /// + /// Date the ballot was created + /// + [Newtonsoft.Json.JsonProperty("DateCreated", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.DateTimeOffset DateCreated { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class VoterElectionAccessCodeRequest + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ServiceBusCommsMessage { - [Newtonsoft.Json.JsonProperty("ElectionId", Required = Newtonsoft.Json.Required.Always)] + /// + /// Required message metadata (Type, CommunicationEventId, etc) + /// + [Newtonsoft.Json.JsonProperty("Metadata", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(2048, MinimumLength = 1)] - public string ElectionId { get; set; } + public System.Collections.Generic.IDictionary Metadata { get; set; } = new System.Collections.Generic.Dictionary(); - [Newtonsoft.Json.JsonProperty("VoterEmail", Required = Newtonsoft.Json.Required.Always)] + /// + /// Communication method and destination (Email, SMS, etc) + /// + [Newtonsoft.Json.JsonProperty("CommunicationMethod", Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] - [System.ComponentModel.DataAnnotations.StringLength(256, MinimumLength = 1)] - public string VoterEmail { get; set; } + public System.Collections.Generic.IDictionary CommunicationMethod { get; set; } = new System.Collections.Generic.Dictionary(); + + /// + /// Related entity IDs (ElectionId, BallotId, etc) + /// + [Newtonsoft.Json.JsonProperty("RelatedEntities", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.IDictionary RelatedEntities { get; set; } = new System.Collections.Generic.Dictionary(); + + /// + /// Type-specific message payload data + /// + [Newtonsoft.Json.JsonProperty("MessageData", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.IDictionary MessageData { get; set; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] internal class DateFormatConverter : Newtonsoft.Json.Converters.IsoDateTimeConverter { public DateFormatConverter() @@ -5244,7 +7267,7 @@ public DateFormatConverter() - [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ApiException : System.Exception { public int StatusCode { get; private set; } @@ -5267,7 +7290,7 @@ public override string ToString() } } - [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ApiException : ApiException { public TResult Result { get; private set; } @@ -5289,5 +7312,8 @@ public ApiException(string message, int statusCode, string response, System.Coll #pragma warning restore 1591 #pragma warning restore 8073 #pragma warning restore 3016 +#pragma warning restore 8600 +#pragma warning restore 8602 #pragma warning restore 8603 -#pragma warning restore 8604 \ No newline at end of file +#pragma warning restore 8604 +#pragma warning restore 8625 \ No newline at end of file