diff --git a/Client/ApiResultExtensions.cs b/Client/ApiResultExtensions.cs new file mode 100644 index 0000000..adf3873 --- /dev/null +++ b/Client/ApiResultExtensions.cs @@ -0,0 +1,27 @@ +using System.Net; +using IdokladSdk.Response; + +namespace Idoklad.Client; + +/// +/// Helpers that unwrap the SDK's envelope, returning the payload +/// on success and translating failures into . +/// +public static class ApiResultExtensions +{ + public static TData Unwrap(this ApiResult result) + { + if (result is null) + { + throw new IdokladApiException(HttpStatusCode.BadGateway, default, "Empty response from iDoklad API."); + } + + if (!result.IsSuccess) + { + var status = result.StatusCode == 0 ? HttpStatusCode.BadGateway : result.StatusCode; + throw new IdokladApiException(status, result.ErrorCode, result.Message); + } + + return result.Data; + } +} diff --git a/Client/DokladApiFactory.cs b/Client/DokladApiFactory.cs new file mode 100644 index 0000000..8927f01 --- /dev/null +++ b/Client/DokladApiFactory.cs @@ -0,0 +1,42 @@ +using IdokladSdk; +using IdokladSdk.Builders; +using Idoklad.Configuration; +using Idoklad.Credentials; + +namespace Idoklad.Client; + +/// +/// Builds instances from resolved per-request credentials, using the +/// official iDoklad .NET SDK (IdokladSdk) and an -managed +/// . This is the iDoklad analogue of microsoft-365-service's graph_client. +/// +public sealed class DokladApiFactory +{ + public const string HttpClientName = "IdokladApi"; + + private readonly IHttpClientFactory _httpClientFactory; + private readonly IdokladSettings _settings; + + public DokladApiFactory(IHttpClientFactory httpClientFactory, IdokladSettings settings) + { + _httpClientFactory = httpClientFactory; + _settings = settings; + } + + public DokladApi Create(IdokladCredentials credentials) + { + var httpClient = _httpClientFactory.CreateClient(HttpClientName); + + var builder = new DokladApiBuilder(_settings.AppName, _settings.AppVersion) + .AddClientCredentialsAuthentication(credentials.ClientId, credentials.ClientSecret, credentials.ApplicationId) + .AddHttpClient(httpClient) + .AddApiContextOptions(options => options.Language = credentials.Language); + + if (_settings.HasCustomUrls) + { + builder = builder.AddCustomApiUrls(_settings.ApiUrl, _settings.IdentityServerUrl); + } + + return builder.Build(); + } +} diff --git a/Client/IdokladApiAccessor.cs b/Client/IdokladApiAccessor.cs new file mode 100644 index 0000000..21969df --- /dev/null +++ b/Client/IdokladApiAccessor.cs @@ -0,0 +1,23 @@ +using IdokladSdk; +using Idoklad.Credentials; + +namespace Idoklad.Client; + +/// +/// Scoped accessor that resolves the credentials for the current request and lazily builds a +/// single shared by all services handling that request. +/// +public sealed class IdokladApiAccessor +{ + private readonly RequestCredentialsProvider _credentialsProvider; + private readonly DokladApiFactory _factory; + private DokladApi? _api; + + public IdokladApiAccessor(RequestCredentialsProvider credentialsProvider, DokladApiFactory factory) + { + _credentialsProvider = credentialsProvider; + _factory = factory; + } + + public DokladApi Api => _api ??= _factory.Create(_credentialsProvider.Resolve()); +} diff --git a/Client/IdokladApiException.cs b/Client/IdokladApiException.cs new file mode 100644 index 0000000..680380b --- /dev/null +++ b/Client/IdokladApiException.cs @@ -0,0 +1,21 @@ +using System.Net; +using IdokladSdk.Enums; + +namespace Idoklad.Client; + +/// +/// Raised when an upstream iDoklad API call does not succeed. Carries the upstream HTTP status +/// code, message and iDoklad error code so the failure can be surfaced to the caller. +/// +public sealed class IdokladApiException : Exception +{ + public HttpStatusCode StatusCode { get; } + public DokladErrorCode ErrorCode { get; } + + public IdokladApiException(HttpStatusCode statusCode, DokladErrorCode errorCode, string? message) + : base(string.IsNullOrWhiteSpace(message) ? "iDoklad API request failed." : message) + { + StatusCode = statusCode; + ErrorCode = errorCode; + } +} diff --git a/Configuration/IdokladSettings.cs b/Configuration/IdokladSettings.cs new file mode 100644 index 0000000..eae7d25 --- /dev/null +++ b/Configuration/IdokladSettings.cs @@ -0,0 +1,59 @@ +using IdokladSdk.Enums; + +namespace Idoklad.Configuration; + +/// +/// Service configuration resolved from environment variables. +/// +/// Mirrors the structure used by the sibling microsoft-365-service (config.py): non-secret +/// configuration and credential defaults live in environment variables. Per-request callers +/// can override the credential values through request headers (see +/// ). +/// +public sealed class IdokladSettings +{ + public string AppName { get; init; } = GetEnv("APP_NAME", "iDoklad Service"); + public string AppVersion { get; init; } = GetEnv("APP_VERSION", "1.0.0"); + public string RootPath { get; init; } = GetEnv("ROOT_PATH", string.Empty); + + /// Default iDoklad OAuth2 client id (client credentials flow). + public string ClientId { get; init; } = GetEnv("IDOKLAD_CLIENT_ID", string.Empty); + + /// Default iDoklad OAuth2 client secret (client credentials flow). + public string ClientSecret { get; init; } = GetEnv("IDOKLAD_CLIENT_SECRET", string.Empty); + + /// Default iDoklad application id from the developer portal (required by client credentials flow). + public string ApplicationId { get; init; } = GetEnv("IDOKLAD_APPLICATION_ID", string.Empty); + + /// Optional custom iDoklad API base url (defaults to the SDK production url when empty). + public string ApiUrl { get; init; } = GetEnv("IDOKLAD_API_URL", string.Empty); + + /// Optional custom Identity Server token url (defaults to the SDK production url when empty). + public string IdentityServerUrl { get; init; } = GetEnv("IDOKLAD_IDENTITY_URL", string.Empty); + + /// Default response language for the iDoklad API (Cz, Sk, En). Defaults to Cz. + public Language Language { get; init; } = ParseLanguage(GetEnv("IDOKLAD_LANGUAGE", "Cz")); + + public int RequestTimeoutSeconds { get; init; } = ParseInt(GetEnv("IDOKLAD_REQUEST_TIMEOUT_SECONDS", "100"), 100); + + /// True when both custom urls are configured (e.g. for a sandbox environment). + public bool HasCustomUrls => !string.IsNullOrWhiteSpace(ApiUrl) && !string.IsNullOrWhiteSpace(IdentityServerUrl); + + /// True when the default credential triplet is fully configured via environment variables. + public bool HasDefaultCredentials => + !string.IsNullOrWhiteSpace(ClientId) + && !string.IsNullOrWhiteSpace(ClientSecret) + && !string.IsNullOrWhiteSpace(ApplicationId); + + private static string GetEnv(string name, string fallback) + { + var value = Environment.GetEnvironmentVariable(name); + return string.IsNullOrWhiteSpace(value) ? fallback : value; + } + + private static int ParseInt(string value, int fallback) => + int.TryParse(value, out var parsed) && parsed > 0 ? parsed : fallback; + + private static Language ParseLanguage(string value) => + Enum.TryParse(value, ignoreCase: true, out var parsed) ? parsed : Language.Cz; +} diff --git a/Controllers/AccountController.cs b/Controllers/AccountController.cs new file mode 100644 index 0000000..71518da --- /dev/null +++ b/Controllers/AccountController.cs @@ -0,0 +1,29 @@ +using Microsoft.AspNetCore.Mvc; +using Idoklad.Services; + +namespace Idoklad.Controllers; + +/// +/// Account agenda: the current agenda (company) and current user. Requires iDoklad credentials +/// (headers or environment defaults). +/// +[ApiController] +[Route("account")] +[Produces("application/json")] +[Tags("Account")] +public sealed class AccountController : ControllerBase +{ + private readonly AccountService _service; + + public AccountController(AccountService service) => _service = service; + + /// Get information about the current agenda (company). + [HttpGet("agenda")] + public async Task Agenda(CancellationToken ct) + => Ok(await _service.CurrentAgendaAsync(ct)); + + /// Get information about the current user. + [HttpGet("user")] + public async Task CurrentUser(CancellationToken ct) + => Ok(await _service.CurrentUserAsync(ct)); +} diff --git a/Controllers/ContactsController.cs b/Controllers/ContactsController.cs new file mode 100644 index 0000000..8c480cf --- /dev/null +++ b/Controllers/ContactsController.cs @@ -0,0 +1,53 @@ +using IdokladSdk.Models.Contact; +using Microsoft.AspNetCore.Mvc; +using Idoklad.Services; + +namespace Idoklad.Controllers; + +/// +/// Contacts (customers/suppliers) agenda. +/// +/// All endpoints require iDoklad credentials. Provide them as request headers +/// (X-ClientId, X-ClientSecret, X-ApplicationId) or rely on the service +/// environment defaults. See the Swagger description for details. +/// +[ApiController] +[Route("contacts")] +[Produces("application/json")] +[Tags("Contacts")] +public sealed class ContactsController : ControllerBase +{ + private readonly ContactsService _service; + + public ContactsController(ContactsService service) => _service = service; + + /// List contacts (paged). + [HttpGet] + public async Task List([FromQuery] int page = 1, [FromQuery] int pageSize = 20, CancellationToken ct = default) + => Ok(await _service.ListAsync(page, pageSize, ct)); + + /// Get a contact detail by id. + [HttpGet("{id:int}")] + public async Task Detail(int id, CancellationToken ct) + => Ok(await _service.DetailAsync(id, ct)); + + /// Get a pre-filled default contact model for creating a new contact. + [HttpGet("default")] + public async Task Default(CancellationToken ct) + => Ok(await _service.DefaultAsync(ct)); + + /// Create a new contact. + [HttpPost] + public async Task Create([FromBody] ContactPostModel model, CancellationToken ct) + => Ok(await _service.CreateAsync(model, ct)); + + /// Update an existing contact (the model id identifies the contact). + [HttpPatch] + public async Task Update([FromBody] ContactPatchModel model, CancellationToken ct) + => Ok(await _service.UpdateAsync(model, ct)); + + /// Delete a contact by id. + [HttpDelete("{id:int}")] + public async Task Delete(int id, CancellationToken ct) + => Ok(await _service.DeleteAsync(id, ct)); +} diff --git a/Controllers/IssuedInvoicesController.cs b/Controllers/IssuedInvoicesController.cs new file mode 100644 index 0000000..61d7d9c --- /dev/null +++ b/Controllers/IssuedInvoicesController.cs @@ -0,0 +1,55 @@ +using IdokladSdk.Models.IssuedInvoice; +using Microsoft.AspNetCore.Mvc; +using Idoklad.Services; + +namespace Idoklad.Controllers; + +/// +/// Issued (outgoing) invoices agenda. Requires iDoklad credentials (headers or environment +/// defaults). +/// +[ApiController] +[Route("issued-invoices")] +[Produces("application/json")] +[Tags("IssuedInvoices")] +public sealed class IssuedInvoicesController : ControllerBase +{ + private readonly IssuedInvoicesService _service; + + public IssuedInvoicesController(IssuedInvoicesService service) => _service = service; + + /// List issued invoices (paged). + [HttpGet] + public async Task List([FromQuery] int page = 1, [FromQuery] int pageSize = 20, CancellationToken ct = default) + => Ok(await _service.ListAsync(page, pageSize, ct)); + + /// Get an issued invoice detail by id. + [HttpGet("{id:int}")] + public async Task Detail(int id, CancellationToken ct) + => Ok(await _service.DetailAsync(id, ct)); + + /// Get a pre-filled default model for creating a new issued invoice. + [HttpGet("default")] + public async Task Default(CancellationToken ct) + => Ok(await _service.DefaultAsync(ct)); + + /// Create a new issued invoice. + [HttpPost] + public async Task Create([FromBody] IssuedInvoicePostModel model, CancellationToken ct) + => Ok(await _service.CreateAsync(model, ct)); + + /// Update an existing issued invoice (the model id identifies the invoice). + [HttpPatch] + public async Task Update([FromBody] IssuedInvoicePatchModel model, CancellationToken ct) + => Ok(await _service.UpdateAsync(model, ct)); + + /// Create a copy (draft) of an existing issued invoice. + [HttpPost("{id:int}/copy")] + public async Task Copy(int id, CancellationToken ct) + => Ok(await _service.CopyAsync(id, ct)); + + /// Delete an issued invoice by id. + [HttpDelete("{id:int}")] + public async Task Delete(int id, CancellationToken ct) + => Ok(await _service.DeleteAsync(id, ct)); +} diff --git a/Controllers/MetaController.cs b/Controllers/MetaController.cs new file mode 100644 index 0000000..fdab4e9 --- /dev/null +++ b/Controllers/MetaController.cs @@ -0,0 +1,45 @@ +using Microsoft.AspNetCore.Mvc; +using Idoklad.Configuration; + +namespace Idoklad.Controllers; + +/// Service metadata endpoints. These do not require iDoklad credentials. +[ApiController] +[Produces("application/json")] +[Tags("Meta")] +public sealed class MetaController : ControllerBase +{ + private readonly IdokladSettings _settings; + + public MetaController(IdokladSettings settings) => _settings = settings; + + /// Liveness probe. + [HttpGet("/health")] + public IActionResult Health() => Ok(new { status = "ok" }); + + /// Service name, version and language. + [HttpGet("/version")] + public IActionResult Version() => Ok(new + { + app = _settings.AppName, + version = _settings.AppVersion, + language = "dotnet", + sdk = "IdokladSdk 5.3.0", + root_path = _settings.RootPath, + }); + + /// + /// Reports whether the service has default iDoklad credentials configured through + /// environment variables. Per-request callers can always override them with headers. + /// + [HttpGet("/status")] + public IActionResult Status() => Ok(new + { + default_credentials_configured = _settings.HasDefaultCredentials, + client_id = !string.IsNullOrWhiteSpace(_settings.ClientId), + client_secret = !string.IsNullOrWhiteSpace(_settings.ClientSecret), + application_id = !string.IsNullOrWhiteSpace(_settings.ApplicationId), + custom_urls = _settings.HasCustomUrls, + idoklad_language = _settings.Language.ToString(), + }); +} diff --git a/Controllers/ReceivedInvoicesController.cs b/Controllers/ReceivedInvoicesController.cs new file mode 100644 index 0000000..d016d33 --- /dev/null +++ b/Controllers/ReceivedInvoicesController.cs @@ -0,0 +1,50 @@ +using IdokladSdk.Models.ReceivedInvoice; +using Microsoft.AspNetCore.Mvc; +using Idoklad.Services; + +namespace Idoklad.Controllers; + +/// +/// Received (incoming) invoices agenda. Requires iDoklad credentials (headers or environment +/// defaults). +/// +[ApiController] +[Route("received-invoices")] +[Produces("application/json")] +[Tags("ReceivedInvoices")] +public sealed class ReceivedInvoicesController : ControllerBase +{ + private readonly ReceivedInvoicesService _service; + + public ReceivedInvoicesController(ReceivedInvoicesService service) => _service = service; + + /// List received invoices (paged). + [HttpGet] + public async Task List([FromQuery] int page = 1, [FromQuery] int pageSize = 20, CancellationToken ct = default) + => Ok(await _service.ListAsync(page, pageSize, ct)); + + /// Get a received invoice detail by id. + [HttpGet("{id:int}")] + public async Task Detail(int id, CancellationToken ct) + => Ok(await _service.DetailAsync(id, ct)); + + /// Get a pre-filled default model for creating a new received invoice. + [HttpGet("default")] + public async Task Default(CancellationToken ct) + => Ok(await _service.DefaultAsync(ct)); + + /// Create a new received invoice. + [HttpPost] + public async Task Create([FromBody] ReceivedInvoicePostModel model, CancellationToken ct) + => Ok(await _service.CreateAsync(model, ct)); + + /// Update an existing received invoice (the model id identifies the invoice). + [HttpPatch] + public async Task Update([FromBody] ReceivedInvoicePatchModel model, CancellationToken ct) + => Ok(await _service.UpdateAsync(model, ct)); + + /// Delete a received invoice by id. + [HttpDelete("{id:int}")] + public async Task Delete(int id, CancellationToken ct) + => Ok(await _service.DeleteAsync(id, ct)); +} diff --git a/Controllers/RegistersController.cs b/Controllers/RegistersController.cs new file mode 100644 index 0000000..f71af48 --- /dev/null +++ b/Controllers/RegistersController.cs @@ -0,0 +1,66 @@ +using IdokladSdk.Models.BankAccount; +using Microsoft.AspNetCore.Mvc; +using Idoklad.Services; + +namespace Idoklad.Controllers; + +/// +/// Supporting registers: bank accounts, VAT rates and numeric sequences. Requires iDoklad +/// credentials (headers or environment defaults). +/// +[ApiController] +[Route("registers")] +[Produces("application/json")] +[Tags("Registers")] +public sealed class RegistersController : ControllerBase +{ + private readonly RegistersService _service; + + public RegistersController(RegistersService service) => _service = service; + + // ---- Bank accounts ---- + + /// List bank accounts (paged). + [HttpGet("bank-accounts")] + public async Task ListBankAccounts([FromQuery] int page = 1, [FromQuery] int pageSize = 20, CancellationToken ct = default) + => Ok(await _service.ListBankAccountsAsync(page, pageSize, ct)); + + /// Get a bank account detail by id. + [HttpGet("bank-accounts/{id:int}")] + public async Task BankAccountDetail(int id, CancellationToken ct) + => Ok(await _service.BankAccountDetailAsync(id, ct)); + + /// Create a new bank account. + [HttpPost("bank-accounts")] + public async Task CreateBankAccount([FromBody] BankAccountPostModel model, CancellationToken ct) + => Ok(await _service.CreateBankAccountAsync(model, ct)); + + /// Update an existing bank account (the model id identifies the account). + [HttpPatch("bank-accounts")] + public async Task UpdateBankAccount([FromBody] BankAccountPatchModel model, CancellationToken ct) + => Ok(await _service.UpdateBankAccountAsync(model, ct)); + + /// Delete a bank account by id. + [HttpDelete("bank-accounts/{id:int}")] + public async Task DeleteBankAccount(int id, CancellationToken ct) + => Ok(await _service.DeleteBankAccountAsync(id, ct)); + + // ---- VAT rates (read-only) ---- + + /// List VAT rates (paged). + [HttpGet("vat-rates")] + public async Task ListVatRates([FromQuery] int page = 1, [FromQuery] int pageSize = 20, CancellationToken ct = default) + => Ok(await _service.ListVatRatesAsync(page, pageSize, ct)); + + /// Get a VAT rate detail by id. + [HttpGet("vat-rates/{id:int}")] + public async Task VatRateDetail(int id, CancellationToken ct) + => Ok(await _service.VatRateDetailAsync(id, ct)); + + // ---- Numeric sequences (read-only) ---- + + /// List numeric (document) sequences (paged). + [HttpGet("numeric-sequences")] + public async Task ListNumericSequences([FromQuery] int page = 1, [FromQuery] int pageSize = 20, CancellationToken ct = default) + => Ok(await _service.ListNumericSequencesAsync(page, pageSize, ct)); +} diff --git a/Credentials/CredentialConstants.cs b/Credentials/CredentialConstants.cs new file mode 100644 index 0000000..f3cbecd --- /dev/null +++ b/Credentials/CredentialConstants.cs @@ -0,0 +1,18 @@ +namespace Idoklad.Credentials; + +/// +/// Names of the HTTP headers that carry per-request iDoklad credentials. +/// +/// Secrets are never accepted in the query string or request body: they are required in +/// request headers (and documented as such in Swagger). Each header carries the credential +/// value directly and must therefore only be sent over TLS. +/// +public static class CredentialConstants +{ + public const string ClientIdHeader = "X-ClientId"; + public const string ClientSecretHeader = "X-ClientSecret"; + public const string ApplicationIdHeader = "X-ApplicationId"; + + /// Header carrying the response language override (Cz, Sk, En). + public const string LanguageHeader = "X-Idoklad-Language"; +} diff --git a/Credentials/IdokladCredentials.cs b/Credentials/IdokladCredentials.cs new file mode 100644 index 0000000..eb4ad07 --- /dev/null +++ b/Credentials/IdokladCredentials.cs @@ -0,0 +1,15 @@ +using IdokladSdk.Enums; + +namespace Idoklad.Credentials; + +/// +/// Fully resolved set of credentials and request options used to build a DokladApi +/// instance for a single request. +/// +public sealed record IdokladCredentials +{ + public required string ClientId { get; init; } + public required string ClientSecret { get; init; } + public required string ApplicationId { get; init; } + public required Language Language { get; init; } +} diff --git a/Credentials/MissingCredentialsException.cs b/Credentials/MissingCredentialsException.cs new file mode 100644 index 0000000..ef70090 --- /dev/null +++ b/Credentials/MissingCredentialsException.cs @@ -0,0 +1,16 @@ +namespace Idoklad.Credentials; + +/// +/// Raised when the request does not provide a complete set of iDoklad credentials, +/// neither through request headers nor through the service environment defaults. +/// +public sealed class MissingCredentialsException : Exception +{ + public IReadOnlyList MissingHeaders { get; } + + public MissingCredentialsException(IReadOnlyList missingHeaders) + : base("Incomplete iDoklad credentials. Provide the missing values as request headers or configure the service defaults.") + { + MissingHeaders = missingHeaders; + } +} diff --git a/Credentials/RequestCredentialsProvider.cs b/Credentials/RequestCredentialsProvider.cs new file mode 100644 index 0000000..f56936c --- /dev/null +++ b/Credentials/RequestCredentialsProvider.cs @@ -0,0 +1,73 @@ +using IdokladSdk.Enums; +using Idoklad.Configuration; + +namespace Idoklad.Credentials; + +/// +/// Resolves the iDoklad credentials for the current request. +/// +/// Mirrors get_request_settings from the sibling microsoft-365-service: each credential +/// value is taken from its request header when present and otherwise falls back to the +/// environment-configured default. Secrets are only ever read from headers (never query/body). +/// If, after applying the fallbacks, any required value is still missing, the request is rejected. +/// +public sealed class RequestCredentialsProvider +{ + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IdokladSettings _settings; + + public RequestCredentialsProvider(IHttpContextAccessor httpContextAccessor, IdokladSettings settings) + { + _httpContextAccessor = httpContextAccessor; + _settings = settings; + } + + public IdokladCredentials Resolve() + { + var headers = _httpContextAccessor.HttpContext?.Request.Headers; + + var clientId = HeaderOrDefault(headers, CredentialConstants.ClientIdHeader, _settings.ClientId); + var clientSecret = HeaderOrDefault(headers, CredentialConstants.ClientSecretHeader, _settings.ClientSecret); + var applicationId = HeaderOrDefault(headers, CredentialConstants.ApplicationIdHeader, _settings.ApplicationId); + + var missing = new List(); + if (string.IsNullOrWhiteSpace(clientId)) missing.Add(CredentialConstants.ClientIdHeader); + if (string.IsNullOrWhiteSpace(clientSecret)) missing.Add(CredentialConstants.ClientSecretHeader); + if (string.IsNullOrWhiteSpace(applicationId)) missing.Add(CredentialConstants.ApplicationIdHeader); + if (missing.Count > 0) + { + throw new MissingCredentialsException(missing); + } + + return new IdokladCredentials + { + ClientId = clientId!, + ClientSecret = clientSecret!, + ApplicationId = applicationId!, + Language = ResolveLanguage(headers), + }; + } + + private Language ResolveLanguage(IHeaderDictionary? headers) + { + var raw = headers is not null && headers.TryGetValue(CredentialConstants.LanguageHeader, out var value) + ? value.ToString() + : null; + + return Enum.TryParse(raw, ignoreCase: true, out var parsed) ? parsed : _settings.Language; + } + + private static string? HeaderOrDefault(IHeaderDictionary? headers, string name, string fallback) + { + if (headers is not null && headers.TryGetValue(name, out var value)) + { + var headerValue = value.ToString(); + if (!string.IsNullOrWhiteSpace(headerValue)) + { + return headerValue; + } + } + + return string.IsNullOrWhiteSpace(fallback) ? null : fallback; + } +} diff --git a/Idoklad.csproj b/Idoklad.csproj index 24ec0e8..24fbfc1 100644 --- a/Idoklad.csproj +++ b/Idoklad.csproj @@ -3,5 +3,14 @@ net8.0 enable enable + Idoklad + true + $(NoWarn);1591 + + + + + + diff --git a/Infrastructure/CredentialHeadersOperationFilter.cs b/Infrastructure/CredentialHeadersOperationFilter.cs new file mode 100644 index 0000000..5b361c6 --- /dev/null +++ b/Infrastructure/CredentialHeadersOperationFilter.cs @@ -0,0 +1,54 @@ +using Microsoft.OpenApi.Any; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; +using Idoklad.Controllers; +using Idoklad.Credentials; + +namespace Idoklad.Infrastructure; + +/// +/// Documents the per-request credential headers in Swagger for every operation that talks to +/// iDoklad. The headers are marked optional because the service can fall back to environment +/// defaults, but the description makes the requirement and secret handling explicit. +/// +public sealed class CredentialHeadersOperationFilter : IOperationFilter +{ + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + // Metadata endpoints (health/version/status) do not talk to iDoklad and need no credentials. + if (context.MethodInfo.DeclaringType == typeof(MetaController)) + { + return; + } + + operation.Parameters ??= new List(); + + AddHeader(operation, CredentialConstants.ClientIdHeader, + "iDoklad OAuth2 ClientId (client credentials flow). Overrides the IDOKLAD_CLIENT_ID environment default. Required if no environment default is configured."); + + AddHeader(operation, CredentialConstants.ClientSecretHeader, + "iDoklad OAuth2 ClientSecret (SENSITIVE). Must be sent in this header over TLS only — never in the URL or body. Overrides the IDOKLAD_CLIENT_SECRET environment default. Required if no environment default is configured."); + + AddHeader(operation, CredentialConstants.ApplicationIdHeader, + "iDoklad ApplicationId from the developer portal. Overrides the IDOKLAD_APPLICATION_ID environment default. Required by the client credentials flow if no environment default is configured."); + + AddHeader(operation, CredentialConstants.LanguageHeader, + "Optional response language override for the iDoklad API: Cz, Sk or En.", example: "Cz"); + } + + private static void AddHeader(OpenApiOperation operation, string name, string description, string? example = null) + { + operation.Parameters.Add(new OpenApiParameter + { + Name = name, + In = ParameterLocation.Header, + Required = false, + Description = description, + Schema = new OpenApiSchema + { + Type = "string", + Example = example is null ? null : new OpenApiString(example), + }, + }); + } +} diff --git a/Infrastructure/ExceptionHandlingMiddleware.cs b/Infrastructure/ExceptionHandlingMiddleware.cs new file mode 100644 index 0000000..b10d278 --- /dev/null +++ b/Infrastructure/ExceptionHandlingMiddleware.cs @@ -0,0 +1,109 @@ +using System.Net; +using IdokladSdk.Exceptions; +using Microsoft.AspNetCore.Mvc; +using Idoklad.Client; +using Idoklad.Credentials; + +namespace Idoklad.Infrastructure; + +/// +/// Translates domain exceptions into JSON responses: +/// missing credentials become 401, and upstream iDoklad failures surface the upstream status. +/// +public sealed class ExceptionHandlingMiddleware +{ + private readonly RequestDelegate _next; + private readonly ILogger _logger; + + public ExceptionHandlingMiddleware(RequestDelegate next, ILogger logger) + { + _next = next; + _logger = logger; + } + + public async Task InvokeAsync(HttpContext context) + { + try + { + await _next(context); + } + catch (MissingCredentialsException ex) + { + await WriteProblem(context, HttpStatusCode.Unauthorized, ex.Message, new Dictionary + { + ["missingHeaders"] = ex.MissingHeaders, + }); + } + catch (IdokladApiException ex) + { + // Never log decoded credentials; only the upstream status and message. + _logger.LogWarning("iDoklad API call failed: {Status} {ErrorCode} {Message}", ex.StatusCode, ex.ErrorCode, ex.Message); + await WriteProblem(context, ex.StatusCode, ex.Message, new Dictionary + { + ["idokladErrorCode"] = ex.ErrorCode.ToString(), + }); + } + catch (IdokladAuthenticationException ex) + { + // OAuth2 token acquisition failed (bad client id/secret/application id). + _logger.LogWarning("iDoklad authentication failed: {Error}", ex.AuthenticationError?.Error ?? ex.Message); + await WriteProblem(context, HttpStatusCode.Unauthorized, ex.AuthenticationError?.ErrorDescription ?? ex.Message, new Dictionary + { + ["idokladError"] = ex.AuthenticationError?.Error, + }); + } + catch (IdokladBaseException ex) + { + // Other SDK-level failures (malformed responses, batch errors, etc.). + _logger.LogWarning("iDoklad SDK error: {Message}", ex.Message); + await WriteProblem(context, HttpStatusCode.BadGateway, ex.Message, null); + } + catch (HttpRequestException ex) + { + // The iDoklad API / identity server is unreachable. + _logger.LogWarning(ex, "iDoklad API unreachable."); + await WriteProblem(context, HttpStatusCode.BadGateway, "iDoklad API is unreachable.", null); + } + catch (ArgumentException ex) + { + // Thrown by the SDK when required credential fields are blank/invalid. + await WriteProblem(context, HttpStatusCode.BadRequest, ex.Message, null); + } + } + + private static async Task WriteProblem(HttpContext context, HttpStatusCode status, string detail, IDictionary? extensions) + { + if (context.Response.HasStarted) + { + return; + } + + var problem = new ProblemDetails + { + Status = (int)status, + Title = ReasonPhrase(status), + Detail = detail, + }; + + if (extensions is not null) + { + foreach (var (key, value) in extensions) + { + problem.Extensions[key] = value; + } + } + + context.Response.Clear(); + context.Response.StatusCode = (int)status; + context.Response.ContentType = "application/problem+json"; + await context.Response.WriteAsJsonAsync(problem); + } + + private static string ReasonPhrase(HttpStatusCode status) => status switch + { + HttpStatusCode.Unauthorized => "Unauthorized", + HttpStatusCode.BadRequest => "Bad Request", + HttpStatusCode.BadGateway => "Upstream iDoklad API error", + _ => status.ToString(), + }; +} diff --git a/Program.cs b/Program.cs index f2944f3..415a109 100644 --- a/Program.cs +++ b/Program.cs @@ -1,22 +1,89 @@ +using Microsoft.OpenApi.Models; +using Newtonsoft.Json; +using Idoklad.Client; +using Idoklad.Configuration; +using Idoklad.Credentials; +using Idoklad.Infrastructure; +using Idoklad.Services; + var builder = WebApplication.CreateBuilder(args); + +// Configuration resolved from environment variables (single shared instance). +var settings = new IdokladSettings(); +builder.Services.AddSingleton(settings); + +// HttpClient for the iDoklad SDK, managed by IHttpClientFactory (recommended SDK usage). +builder.Services.AddHttpClient(DokladApiFactory.HttpClientName, client => +{ + client.Timeout = TimeSpan.FromSeconds(settings.RequestTimeoutSeconds); +}); + +builder.Services.AddHttpContextAccessor(); + +// Credential resolution + SDK client wiring. +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +// Agenda services. +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + +// Use Newtonsoft.Json so request/response binding matches the iDoklad SDK model attributes. +builder.Services + .AddControllers() + .AddNewtonsoftJson(options => + { + options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; + }); + +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(options => +{ + options.SwaggerDoc("v1", new OpenApiInfo + { + Title = settings.AppName, + Version = settings.AppVersion, + Description = + "REST integration with iDoklad built on the official IdokladSdk (.NET) 5.3.0, " + + "using the OAuth2 client credentials flow.\n\n" + + "**Credentials.** Every agenda endpoint needs an iDoklad ClientId, ClientSecret and ApplicationId. " + + "Sensitive values are required in request headers and are never accepted in the query string or body:\n\n" + + "- `X-ClientId` — iDoklad OAuth2 ClientId\n" + + "- `X-ClientSecret` — iDoklad OAuth2 ClientSecret (sensitive; TLS only)\n" + + "- `X-ApplicationId` — iDoklad ApplicationId from the developer portal\n" + + "- `X-Idoklad-Language` — optional response language (Cz, Sk, En)\n\n" + + "If a header is omitted, the matching environment default " + + "(`IDOKLAD_CLIENT_ID`, `IDOKLAD_CLIENT_SECRET`, `IDOKLAD_APPLICATION_ID`) is used. " + + "If neither a header nor a default is available, the request is rejected with 401.", + }); + options.OperationFilter(); + + var xmlPath = Path.Combine(AppContext.BaseDirectory, $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml"); + if (File.Exists(xmlPath)) + { + options.IncludeXmlComments(xmlPath, includeControllerXmlComments: true); + } +}); + var app = builder.Build(); -var rootPath = Environment.GetEnvironmentVariable("ROOT_PATH"); -if (!string.IsNullOrWhiteSpace(rootPath)) +if (!string.IsNullOrWhiteSpace(settings.RootPath)) { - app.UsePathBase(rootPath); + app.UsePathBase(settings.RootPath); } -app.MapGet("/", () => Results.Json(new -{ - name = "iDoklad", - service = "idoklad", - status = "ok" -})); +app.UseMiddleware(); -app.MapGet("/health", () => Results.Json(new +app.UseSwagger(); +app.UseSwaggerUI(options => { - status = "ok" -})); + options.SwaggerEndpoint("v1/swagger.json", $"{settings.AppName} v1"); +}); + +app.MapControllers(); app.Run(); diff --git a/README.md b/README.md index 2e7dda2..f412079 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,131 @@ # iDoklad -.NET API služba vytvořená přes CSBot Services Portal. +.NET 8 API služba pro server-to-server komunikaci s [iDoklad](https://www.idoklad.cz/) postavená nad +oficiálním **IdokladSdk** (.NET) verze **5.3.0** s OAuth2 *client credentials* flow. -## Endpointy +Struktura projektu odpovídá sousední službě microsoft-365-service: konfigurace z prostředí, +přihlašovací údaje z hlaviček s fallbackem na proměnné prostředí, tenká service vrstva nad SDK, +controllery a samostatná dokumentace ve Swaggeru. -- GET / -- GET /health +## Konfigurace (proměnné prostředí) + +Aplikace, ClientId, ClientSecret a ApplicationId získáte ve vývojářském portálu iDoklad. Tyto +hodnoty lze nastavit jako výchozí přes proměnné prostředí, nebo je předávat per-request v hlavičkách +(viz níže). + +```env +# Výchozí přihlašovací údaje iDoklad (client credentials flow) +IDOKLAD_CLIENT_ID= +IDOKLAD_CLIENT_SECRET= +IDOKLAD_APPLICATION_ID= + +# Volitelné +IDOKLAD_LANGUAGE=Cz # Cz | Sk | En (jazyk odpovědí iDoklad API) +IDOKLAD_REQUEST_TIMEOUT_SECONDS=100 +IDOKLAD_API_URL= # vlastní URL API (jen pokud je nastavena i identity URL) +IDOKLAD_IDENTITY_URL= # vlastní URL token endpointu Identity Serveru + +# Obecné (sdílené napříč službami portálu) +APP_NAME=iDoklad Service +APP_VERSION=1.0.0 +ROOT_PATH= # base path při běhu za reverzní proxy +``` + +> `IDOKLAD_API_URL` a `IDOKLAD_IDENTITY_URL` se použijí pouze pokud jsou nastavené **obě**; jinak +> SDK použije produkční URL iDokladu. + +## Přihlašovací údaje v request hlavičkách + +Citlivé proměnné (zejména **secret**) se **nepředávají v query stringu ani v těle** požadavku – +**vyžadují se v HTTP hlavičkách**. To je zohledněno i ve Swaggeru: u každého agendového endpointu +jsou hlavičky vtypu `X-...` zdokumentované jako parametry. + +| Hlavička | Význam | Fallback (env) | +| --- | --- | --- | +| `X-ClientId` | iDoklad OAuth2 ClientId | `IDOKLAD_CLIENT_ID` | +| `X-ClientSecret` | iDoklad OAuth2 ClientSecret (**citlivé – jen přes TLS**) | `IDOKLAD_CLIENT_SECRET` | +| `X-ApplicationId` | iDoklad ApplicationId z vývojářského portálu | `IDOKLAD_APPLICATION_ID` | +| `X-Idoklad-Language` | volitelný jazyk odpovědí (`Cz`/`Sk`/`En`) | `IDOKLAD_LANGUAGE` | + +Každá hodnota se nejprve čte z hlavičky a teprve pokud chybí, použije se výchozí proměnná prostředí. +Pokud po aplikaci fallbacku některý z údajů `ClientId`/`ClientSecret`/`ApplicationId` chybí, vrátí +služba `401` se seznamem chybějících hlaviček. Dekódované secrety se nikdy nelogují. + +Příklad požadavku: + +```http +GET /issued-invoices?page=1&pageSize=20 +X-ClientId: +X-ClientSecret: +X-ApplicationId: +``` + +## API + +```http +GET /health +GET /version +GET /status + +# Account +GET /account/agenda +GET /account/user + +# Contacts +GET /contacts?page=1&pageSize=20 +GET /contacts/default +GET /contacts/{id} +POST /contacts +PATCH /contacts +DELETE /contacts/{id} + +# Issued invoices (vydané faktury) +GET /issued-invoices?page=1&pageSize=20 +GET /issued-invoices/default +GET /issued-invoices/{id} +POST /issued-invoices +PATCH /issued-invoices +POST /issued-invoices/{id}/copy +DELETE /issued-invoices/{id} + +# Received invoices (přijaté faktury) +GET /received-invoices?page=1&pageSize=20 +GET /received-invoices/default +GET /received-invoices/{id} +POST /received-invoices +PATCH /received-invoices +DELETE /received-invoices/{id} + +# Registry +GET /registers/bank-accounts?page=1&pageSize=20 +GET /registers/bank-accounts/{id} +POST /registers/bank-accounts +PATCH /registers/bank-accounts +DELETE /registers/bank-accounts/{id} +GET /registers/vat-rates?page=1&pageSize=20 +GET /registers/vat-rates/{id} +GET /registers/numeric-sequences?page=1&pageSize=20 +``` + +Request/response těla odpovídají modelům iDoklad SDK (`*PostModel`, `*PatchModel`, `*GetModel`). +Serializace používá Newtonsoft.Json, aby se chování shodovalo s atributy modelů v SDK. Chyby z +iDoklad API se propagují jako `application/problem+json` s odpovídajícím HTTP statusem. + +## Lokální spuštění + +```bash +dotnet run +``` + +Swagger UI je na `/swagger`, OpenAPI dokument na `/swagger/v1/swagger.json`. + +## Architektura + +| Vrstva | Soubor(y) | Odpovídá v microsoft-365-service | +| --- | --- | --- | +| Konfigurace | `Configuration/IdokladSettings.cs` | `config.py` | +| Přihlašovací údaje z hlaviček | `Credentials/` | `credentials.py` | +| Klient SDK | `Client/DokladApiFactory.cs`, `Client/IdokladApiAccessor.cs` | `graph_client.py` | +| Service vrstva | `Services/*.cs` | `services.py` | +| Controllery | `Controllers/*.cs` | `routes.py` | +| Mapování chyb + Swagger | `Infrastructure/*.cs` | – | diff --git a/Services/AccountService.cs b/Services/AccountService.cs new file mode 100644 index 0000000..3ff9ef7 --- /dev/null +++ b/Services/AccountService.cs @@ -0,0 +1,18 @@ +using IdokladSdk.Models.Account; +using Idoklad.Client; + +namespace Idoklad.Services; + +/// Account agenda: information about the current agenda and the current user. +public sealed class AccountService +{ + private readonly IdokladApiAccessor _accessor; + + public AccountService(IdokladApiAccessor accessor) => _accessor = accessor; + + public async Task CurrentAgendaAsync(CancellationToken ct) + => (await _accessor.Api.AccountClient.Agendas.Current().GetAsync(ct)).Unwrap(); + + public async Task CurrentUserAsync(CancellationToken ct) + => (await _accessor.Api.AccountClient.Users.Current().GetAsync(ct)).Unwrap(); +} diff --git a/Services/ContactsService.cs b/Services/ContactsService.cs new file mode 100644 index 0000000..88c35bf --- /dev/null +++ b/Services/ContactsService.cs @@ -0,0 +1,31 @@ +using IdokladSdk.Models.Contact; +using IdokladSdk.Response; +using Idoklad.Client; + +namespace Idoklad.Services; + +/// Contacts (customers/suppliers) agenda. +public sealed class ContactsService +{ + private readonly IdokladApiAccessor _accessor; + + public ContactsService(IdokladApiAccessor accessor) => _accessor = accessor; + + public async Task> ListAsync(int page, int pageSize, CancellationToken ct) + => (await _accessor.Api.ContactClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap(); + + public async Task DetailAsync(int id, CancellationToken ct) + => (await _accessor.Api.ContactClient.Detail(id).GetAsync(ct)).Unwrap(); + + public async Task DefaultAsync(CancellationToken ct) + => (await _accessor.Api.ContactClient.DefaultAsync(ct)).Unwrap(); + + public async Task CreateAsync(ContactPostModel model, CancellationToken ct) + => (await _accessor.Api.ContactClient.PostAsync(model, ct)).Unwrap(); + + public async Task UpdateAsync(ContactPatchModel model, CancellationToken ct) + => (await _accessor.Api.ContactClient.UpdateAsync(model, ct)).Unwrap(); + + public async Task DeleteAsync(int id, CancellationToken ct) + => (await _accessor.Api.ContactClient.DeleteAsync(id, ct)).Unwrap(); +} diff --git a/Services/IssuedInvoicesService.cs b/Services/IssuedInvoicesService.cs new file mode 100644 index 0000000..939f92e --- /dev/null +++ b/Services/IssuedInvoicesService.cs @@ -0,0 +1,34 @@ +using IdokladSdk.Models.IssuedInvoice; +using IdokladSdk.Response; +using Idoklad.Client; + +namespace Idoklad.Services; + +/// Issued (outgoing) invoices agenda. +public sealed class IssuedInvoicesService +{ + private readonly IdokladApiAccessor _accessor; + + public IssuedInvoicesService(IdokladApiAccessor accessor) => _accessor = accessor; + + public async Task> ListAsync(int page, int pageSize, CancellationToken ct) + => (await _accessor.Api.IssuedInvoiceClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap(); + + public async Task DetailAsync(int id, CancellationToken ct) + => (await _accessor.Api.IssuedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap(); + + public async Task DefaultAsync(CancellationToken ct) + => (await _accessor.Api.IssuedInvoiceClient.DefaultAsync(ct)).Unwrap(); + + public async Task CreateAsync(IssuedInvoicePostModel model, CancellationToken ct) + => (await _accessor.Api.IssuedInvoiceClient.PostAsync(model, ct)).Unwrap(); + + public async Task UpdateAsync(IssuedInvoicePatchModel model, CancellationToken ct) + => (await _accessor.Api.IssuedInvoiceClient.UpdateAsync(model, ct)).Unwrap(); + + public async Task CopyAsync(int id, CancellationToken ct) + => (await _accessor.Api.IssuedInvoiceClient.CopyAsync(id, ct)).Unwrap(); + + public async Task DeleteAsync(int id, CancellationToken ct) + => (await _accessor.Api.IssuedInvoiceClient.DeleteAsync(id, ct)).Unwrap(); +} diff --git a/Services/ReceivedInvoicesService.cs b/Services/ReceivedInvoicesService.cs new file mode 100644 index 0000000..bfd8cc5 --- /dev/null +++ b/Services/ReceivedInvoicesService.cs @@ -0,0 +1,31 @@ +using IdokladSdk.Models.ReceivedInvoice; +using IdokladSdk.Response; +using Idoklad.Client; + +namespace Idoklad.Services; + +/// Received (incoming) invoices agenda. +public sealed class ReceivedInvoicesService +{ + private readonly IdokladApiAccessor _accessor; + + public ReceivedInvoicesService(IdokladApiAccessor accessor) => _accessor = accessor; + + public async Task> ListAsync(int page, int pageSize, CancellationToken ct) + => (await _accessor.Api.ReceivedInvoiceClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap(); + + public async Task DetailAsync(int id, CancellationToken ct) + => (await _accessor.Api.ReceivedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap(); + + public async Task DefaultAsync(CancellationToken ct) + => (await _accessor.Api.ReceivedInvoiceClient.DefaultAsync(ct)).Unwrap(); + + public async Task CreateAsync(ReceivedInvoicePostModel model, CancellationToken ct) + => (await _accessor.Api.ReceivedInvoiceClient.PostAsync(model, ct)).Unwrap(); + + public async Task UpdateAsync(ReceivedInvoicePatchModel model, CancellationToken ct) + => (await _accessor.Api.ReceivedInvoiceClient.UpdateAsync(model, ct)).Unwrap(); + + public async Task DeleteAsync(int id, CancellationToken ct) + => (await _accessor.Api.ReceivedInvoiceClient.DeleteAsync(id, ct)).Unwrap(); +} diff --git a/Services/RegistersService.cs b/Services/RegistersService.cs new file mode 100644 index 0000000..6eb9ca4 --- /dev/null +++ b/Services/RegistersService.cs @@ -0,0 +1,44 @@ +using IdokladSdk.Models.BankAccount; +using IdokladSdk.Models.NumericSequence; +using IdokladSdk.Models.ReadOnly.VatRate; +using IdokladSdk.Response; +using Idoklad.Client; + +namespace Idoklad.Services; + +/// +/// Supporting registers: bank accounts, VAT rates and numeric (document) sequences. +/// +public sealed class RegistersService +{ + private readonly IdokladApiAccessor _accessor; + + public RegistersService(IdokladApiAccessor accessor) => _accessor = accessor; + + // Bank accounts + public async Task> ListBankAccountsAsync(int page, int pageSize, CancellationToken ct) + => (await _accessor.Api.BankAccountClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap(); + + public async Task BankAccountDetailAsync(int id, CancellationToken ct) + => (await _accessor.Api.BankAccountClient.Detail(id).GetAsync(ct)).Unwrap(); + + public async Task CreateBankAccountAsync(BankAccountPostModel model, CancellationToken ct) + => (await _accessor.Api.BankAccountClient.PostAsync(model, ct)).Unwrap(); + + public async Task UpdateBankAccountAsync(BankAccountPatchModel model, CancellationToken ct) + => (await _accessor.Api.BankAccountClient.UpdateAsync(model, ct)).Unwrap(); + + public async Task DeleteBankAccountAsync(int id, CancellationToken ct) + => (await _accessor.Api.BankAccountClient.DeleteAsync(id, ct)).Unwrap(); + + // VAT rates (read-only) + public async Task> ListVatRatesAsync(int page, int pageSize, CancellationToken ct) + => (await _accessor.Api.VatRateClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap(); + + public async Task VatRateDetailAsync(int id, CancellationToken ct) + => (await _accessor.Api.VatRateClient.Detail(id).GetAsync(ct)).Unwrap(); + + // Numeric sequences (read-only list) + public async Task> ListNumericSequencesAsync(int page, int pageSize, CancellationToken ct) + => (await _accessor.Api.NumericSequenceClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap(); +} diff --git a/bin/Release/net8.0/IbanNet.dll b/bin/Release/net8.0/IbanNet.dll new file mode 100644 index 0000000..17db49a Binary files /dev/null and b/bin/Release/net8.0/IbanNet.dll differ diff --git a/bin/Release/net8.0/Idoklad.deps.json b/bin/Release/net8.0/Idoklad.deps.json new file mode 100644 index 0000000..c68bab3 --- /dev/null +++ b/bin/Release/net8.0/Idoklad.deps.json @@ -0,0 +1,313 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "Idoklad/1.0.0": { + "dependencies": { + "IdokladSdk": "5.3.0", + "Microsoft.AspNetCore.Mvc.NewtonsoftJson": "8.0.11", + "Swashbuckle.AspNetCore": "6.9.0" + }, + "runtime": { + "Idoklad.dll": {} + } + }, + "IbanNet/5.16.1": { + "runtime": { + "lib/net8.0/IbanNet.dll": { + "assemblyVersion": "5.16.1.0", + "fileVersion": "5.16.1.0" + } + }, + "resources": { + "lib/net8.0/ca/IbanNet.resources.dll": { + "locale": "ca" + }, + "lib/net8.0/de/IbanNet.resources.dll": { + "locale": "de" + }, + "lib/net8.0/nl/IbanNet.resources.dll": { + "locale": "nl" + } + } + }, + "IdokladSdk/5.3.0": { + "dependencies": { + "IbanNet": "5.16.1", + "Newtonsoft.Json": "13.0.3", + "System.IdentityModel.Tokens.Jwt": "7.6.0" + }, + "runtime": { + "lib/netstandard2.0/IdokladSdk.dll": { + "assemblyVersion": "5.3.0.0", + "fileVersion": "5.3.0.0" + } + } + }, + "Microsoft.AspNetCore.JsonPatch/8.0.11": { + "dependencies": { + "Newtonsoft.Json": "13.0.3" + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll": { + "assemblyVersion": "8.0.11.0", + "fileVersion": "8.0.1124.52116" + } + } + }, + "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.11": { + "dependencies": { + "Microsoft.AspNetCore.JsonPatch": "8.0.11", + "Newtonsoft.Json": "13.0.3", + "Newtonsoft.Json.Bson": "1.0.2" + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": { + "assemblyVersion": "8.0.11.0", + "fileVersion": "8.0.1124.52116" + } + } + }, + "Microsoft.IdentityModel.Abstractions/7.6.0": { + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "assemblyVersion": "7.6.0.0", + "fileVersion": "7.6.0.50527" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/7.6.0": { + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.6.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "assemblyVersion": "7.6.0.0", + "fileVersion": "7.6.0.50527" + } + } + }, + "Microsoft.IdentityModel.Logging/7.6.0": { + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "7.6.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "assemblyVersion": "7.6.0.0", + "fileVersion": "7.6.0.50527" + } + } + }, + "Microsoft.IdentityModel.Tokens/7.6.0": { + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.6.0" + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "assemblyVersion": "7.6.0.0", + "fileVersion": "7.6.0.50527" + } + } + }, + "Microsoft.OpenApi/1.6.14": { + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "assemblyVersion": "1.6.14.0", + "fileVersion": "1.6.14.0" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.3.27908" + } + } + }, + "Newtonsoft.Json.Bson/1.0.2": { + "dependencies": { + "Newtonsoft.Json": "13.0.3" + }, + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.0.2.22727" + } + } + }, + "Swashbuckle.AspNetCore/6.9.0": { + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.9.0", + "Swashbuckle.AspNetCore.SwaggerGen": "6.9.0", + "Swashbuckle.AspNetCore.SwaggerUI": "6.9.0" + } + }, + "Swashbuckle.AspNetCore.Swagger/6.9.0": { + "dependencies": { + "Microsoft.OpenApi": "1.6.14" + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "assemblyVersion": "6.9.0.0", + "fileVersion": "6.9.0.799" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.9.0": { + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.9.0" + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "assemblyVersion": "6.9.0.0", + "fileVersion": "6.9.0.799" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.9.0": { + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "assemblyVersion": "6.9.0.0", + "fileVersion": "6.9.0.799" + } + } + }, + "System.IdentityModel.Tokens.Jwt/7.6.0": { + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "7.6.0", + "Microsoft.IdentityModel.Tokens": "7.6.0" + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "assemblyVersion": "7.6.0.0", + "fileVersion": "7.6.0.50527" + } + } + } + } + }, + "libraries": { + "Idoklad/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "IbanNet/5.16.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-07IXXs6sKXL1edCNju4u0fJJSB/4WAUHjkkLIcSUD9u3yRqqKy7jwMWxyaOviheXV0NoagnXSmaKcpu3R5JNLw==", + "path": "ibannet/5.16.1", + "hashPath": "ibannet.5.16.1.nupkg.sha512" + }, + "IdokladSdk/5.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oJZC8K2YzvnNHQ2vwKAfvfkwk+WCPbeELdyuS8A8sX2y/KEo5KBl9S5PJfCAYpH/1y+0hyspiY1KoJToUxj0eQ==", + "path": "idokladsdk/5.3.0", + "hashPath": "idokladsdk.5.3.0.nupkg.sha512" + }, + "Microsoft.AspNetCore.JsonPatch/8.0.11": { + "type": "package", + "serviceable": true, + "sha512": "sha512-l1tFnQm2LtFE3M9YRM/bdwtxxCV50Y5jnN0LjliQH1sqvWsN46++Uu3QCJL9IdOweFvXSf3Shi7DI/Vc1jkdKA==", + "path": "microsoft.aspnetcore.jsonpatch/8.0.11", + "hashPath": "microsoft.aspnetcore.jsonpatch.8.0.11.nupkg.sha512" + }, + "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.11": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XcfFd8e0g2M0mcAKVNgoHJtWYJfKrPntHhgqiZ1Ci37i3AEJbM0GHIa715i0UPSksiKmDxsJWXnM3rg8keF/Zg==", + "path": "microsoft.aspnetcore.mvc.newtonsoftjson/8.0.11", + "hashPath": "microsoft.aspnetcore.mvc.newtonsoftjson.8.0.11.nupkg.sha512" + }, + "Microsoft.IdentityModel.Abstractions/7.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-q4MZ8d0LlWKWtQfxNl9ZRZVOQ7IPEAR6CF4rFKITfuqEUOhqrbwHbqBanReI37155IKb8V/tPJqpPa3KXm9wQQ==", + "path": "microsoft.identitymodel.abstractions/7.6.0", + "hashPath": "microsoft.identitymodel.abstractions.7.6.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.JsonWebTokens/7.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lsleZbCuh3wZ3RfKd8WJ7E52nIeQQzJsDrgHN+B3Zhzd32UTQ1V3Vjn1N9PssnSulAoEMF0aAiue7ucX+TPoQA==", + "path": "microsoft.identitymodel.jsonwebtokens/7.6.0", + "hashPath": "microsoft.identitymodel.jsonwebtokens.7.6.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Logging/7.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7AVJhNY4y/i96XGfaXovX8aAyYWz6HHtPEPHPpbg5JCchwVaoO08VmmpHe0L2gVagW/iHG0w4a4Xg9gxLXQ/8A==", + "path": "microsoft.identitymodel.logging/7.6.0", + "hashPath": "microsoft.identitymodel.logging.7.6.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Tokens/7.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-xvEil42RUe4Si/TuLDvglNXpklgCWMSecPduczXPS2BAypjheUehPqKLwIy8vSdzB4K2zza3yLgmODBt+J6ZxQ==", + "path": "microsoft.identitymodel.tokens/7.6.0", + "hashPath": "microsoft.identitymodel.tokens.7.6.0.nupkg.sha512" + }, + "Microsoft.OpenApi/1.6.14": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", + "path": "microsoft.openapi/1.6.14", + "hashPath": "microsoft.openapi.1.6.14.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "path": "newtonsoft.json/13.0.3", + "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512" + }, + "Newtonsoft.Json.Bson/1.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-QYFyxhaABwmq3p/21VrZNYvCg3DaEoN/wUuw5nmfAf0X3HLjgupwhkEWdgfb9nvGAUIv3osmZoD3kKl4jxEmYQ==", + "path": "newtonsoft.json.bson/1.0.2", + "hashPath": "newtonsoft.json.bson.1.0.2.nupkg.sha512" + }, + "Swashbuckle.AspNetCore/6.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lvI+XHF21tkwXd2nDCLGJsdhdUYsY3Ax2fWUlvw81Oa6EedtnIAf5tThy8ZnPcz/9/TwsLgjgtX9ifOCIjbEPA==", + "path": "swashbuckle.aspnetcore/6.9.0", + "hashPath": "swashbuckle.aspnetcore.6.9.0.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.Swagger/6.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P316kpxx5DnDvJwNWW8iTAXkh9DVenAxFGe9v4OUS0gil+vitH7F1feXhCtVeHN/616EFNTMh4pV2lcr9kkw/w==", + "path": "swashbuckle.aspnetcore.swagger/6.9.0", + "hashPath": "swashbuckle.aspnetcore.swagger.6.9.0.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FjeMR3fBzwVc5plfYjoHw9ptf8SOWMupvO9X35J5EgzT3L9dRqSxa+cBKzL8PwCyemY0xNrggQSB5+MFWx1axg==", + "path": "swashbuckle.aspnetcore.swaggergen/6.9.0", + "hashPath": "swashbuckle.aspnetcore.swaggergen.6.9.0.nupkg.sha512" + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0OxlWBFLl2gUESZX/K7QCTz9KctKy0VxHTvLIBcyWGD4z/fv5MCMW02qzYGcReLJr4yBnNDRzApKtLh6oBpe9A==", + "path": "swashbuckle.aspnetcore.swaggerui/6.9.0", + "hashPath": "swashbuckle.aspnetcore.swaggerui.6.9.0.nupkg.sha512" + }, + "System.IdentityModel.Tokens.Jwt/7.6.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LIuEbv/kFpuw00yI/mPu+T9NAVdH/u7Y5ChCGzYQQeCg9Pft2C7HFWuO/P+Z7c2RcySNjVk1FmuAheKjYIbOkw==", + "path": "system.identitymodel.tokens.jwt/7.6.0", + "hashPath": "system.identitymodel.tokens.jwt.7.6.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/bin/Release/net8.0/Idoklad.dll b/bin/Release/net8.0/Idoklad.dll new file mode 100644 index 0000000..2ad363a Binary files /dev/null and b/bin/Release/net8.0/Idoklad.dll differ diff --git a/bin/Release/net8.0/Idoklad.exe b/bin/Release/net8.0/Idoklad.exe new file mode 100644 index 0000000..f631b37 Binary files /dev/null and b/bin/Release/net8.0/Idoklad.exe differ diff --git a/bin/Release/net8.0/Idoklad.pdb b/bin/Release/net8.0/Idoklad.pdb new file mode 100644 index 0000000..0ec1107 Binary files /dev/null and b/bin/Release/net8.0/Idoklad.pdb differ diff --git a/bin/Release/net8.0/Idoklad.runtimeconfig.json b/bin/Release/net8.0/Idoklad.runtimeconfig.json new file mode 100644 index 0000000..6a48a7e --- /dev/null +++ b/bin/Release/net8.0/Idoklad.runtimeconfig.json @@ -0,0 +1,20 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + { + "name": "Microsoft.AspNetCore.App", + "version": "8.0.0" + } + ], + "configProperties": { + "System.GC.Server": true, + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/bin/Release/net8.0/Idoklad.staticwebassets.endpoints.json b/bin/Release/net8.0/Idoklad.staticwebassets.endpoints.json new file mode 100644 index 0000000..5576e88 --- /dev/null +++ b/bin/Release/net8.0/Idoklad.staticwebassets.endpoints.json @@ -0,0 +1 @@ +{"Version":1,"ManifestType":"Build","Endpoints":[]} \ No newline at end of file diff --git a/bin/Release/net8.0/Idoklad.xml b/bin/Release/net8.0/Idoklad.xml new file mode 100644 index 0000000..c0590ea --- /dev/null +++ b/bin/Release/net8.0/Idoklad.xml @@ -0,0 +1,266 @@ + + + + Idoklad + + + + + Helpers that unwrap the SDK's envelope, returning the payload + on success and translating failures into . + + + + + Builds instances from resolved per-request credentials, using the + official iDoklad .NET SDK (IdokladSdk) and an -managed + . This is the iDoklad analogue of microsoft-365-service's graph_client. + + + + + Scoped accessor that resolves the credentials for the current request and lazily builds a + single shared by all services handling that request. + + + + + Raised when an upstream iDoklad API call does not succeed. Carries the upstream HTTP status + code, message and iDoklad error code so the failure can be surfaced to the caller. + + + + + Service configuration resolved from environment variables. + + Mirrors the structure used by the sibling microsoft-365-service (config.py): non-secret + configuration and credential defaults live in environment variables. Per-request callers + can override the credential values through request headers (see + ). + + + + Default iDoklad OAuth2 client id (client credentials flow). + + + Default iDoklad OAuth2 client secret (client credentials flow). + + + Default iDoklad application id from the developer portal (required by client credentials flow). + + + Optional custom iDoklad API base url (defaults to the SDK production url when empty). + + + Optional custom Identity Server token url (defaults to the SDK production url when empty). + + + Default response language for the iDoklad API (Cz, Sk, En). Defaults to Cz. + + + True when both custom urls are configured (e.g. for a sandbox environment). + + + True when the default credential triplet is fully configured via environment variables. + + + + Account agenda: the current agenda (company) and current user. Requires iDoklad credentials + (headers or environment defaults). + + + + Get information about the current agenda (company). + + + Get information about the current user. + + + + Contacts (customers/suppliers) agenda. + + All endpoints require iDoklad credentials. Provide them as request headers + (X-ClientId, X-ClientSecret, X-ApplicationId) or rely on the service + environment defaults. See the Swagger description for details. + + + + List contacts (paged). + + + Get a contact detail by id. + + + Get a pre-filled default contact model for creating a new contact. + + + Create a new contact. + + + Update an existing contact (the model id identifies the contact). + + + Delete a contact by id. + + + + Issued (outgoing) invoices agenda. Requires iDoklad credentials (headers or environment + defaults). + + + + List issued invoices (paged). + + + Get an issued invoice detail by id. + + + Get a pre-filled default model for creating a new issued invoice. + + + Create a new issued invoice. + + + Update an existing issued invoice (the model id identifies the invoice). + + + Create a copy (draft) of an existing issued invoice. + + + Delete an issued invoice by id. + + + Service metadata endpoints. These do not require iDoklad credentials. + + + Liveness probe. + + + Service name, version and language. + + + + Reports whether the service has default iDoklad credentials configured through + environment variables. Per-request callers can always override them with headers. + + + + + Received (incoming) invoices agenda. Requires iDoklad credentials (headers or environment + defaults). + + + + List received invoices (paged). + + + Get a received invoice detail by id. + + + Get a pre-filled default model for creating a new received invoice. + + + Create a new received invoice. + + + Update an existing received invoice (the model id identifies the invoice). + + + Delete a received invoice by id. + + + + Supporting registers: bank accounts, VAT rates and numeric sequences. Requires iDoklad + credentials (headers or environment defaults). + + + + List bank accounts (paged). + + + Get a bank account detail by id. + + + Create a new bank account. + + + Update an existing bank account (the model id identifies the account). + + + Delete a bank account by id. + + + List VAT rates (paged). + + + Get a VAT rate detail by id. + + + List numeric (document) sequences (paged). + + + + Names of the HTTP headers that carry per-request iDoklad credentials. + + Secrets are never accepted in the query string or request body: they are required in + request headers (and documented as such in Swagger). Each header carries the credential + value directly and must therefore only be sent over TLS. + + + + Header carrying the response language override (Cz, Sk, En). + + + + Fully resolved set of credentials and request options used to build a DokladApi + instance for a single request. + + + + + Raised when the request does not provide a complete set of iDoklad credentials, + neither through request headers nor through the service environment defaults. + + + + + Resolves the iDoklad credentials for the current request. + + Mirrors get_request_settings from the sibling microsoft-365-service: each credential + value is taken from its request header when present and otherwise falls back to the + environment-configured default. Secrets are only ever read from headers (never query/body). + If, after applying the fallbacks, any required value is still missing, the request is rejected. + + + + + Documents the per-request credential headers in Swagger for every operation that talks to + iDoklad. The headers are marked optional because the service can fall back to environment + defaults, but the description makes the requirement and secret handling explicit. + + + + + Translates domain exceptions into JSON responses: + missing credentials become 401, and upstream iDoklad failures surface the upstream status. + + + + Account agenda: information about the current agenda and the current user. + + + Contacts (customers/suppliers) agenda. + + + Issued (outgoing) invoices agenda. + + + Received (incoming) invoices agenda. + + + + Supporting registers: bank accounts, VAT rates and numeric (document) sequences. + + + + diff --git a/bin/Release/net8.0/IdokladSdk.dll b/bin/Release/net8.0/IdokladSdk.dll new file mode 100644 index 0000000..6eb1fa6 Binary files /dev/null and b/bin/Release/net8.0/IdokladSdk.dll differ diff --git a/bin/Release/net8.0/Microsoft.AspNetCore.JsonPatch.dll b/bin/Release/net8.0/Microsoft.AspNetCore.JsonPatch.dll new file mode 100644 index 0000000..ad1e8cd Binary files /dev/null and b/bin/Release/net8.0/Microsoft.AspNetCore.JsonPatch.dll differ diff --git a/bin/Release/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll b/bin/Release/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll new file mode 100644 index 0000000..aa18795 Binary files /dev/null and b/bin/Release/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll differ diff --git a/bin/Release/net8.0/Microsoft.IdentityModel.Abstractions.dll b/bin/Release/net8.0/Microsoft.IdentityModel.Abstractions.dll new file mode 100644 index 0000000..189271c Binary files /dev/null and b/bin/Release/net8.0/Microsoft.IdentityModel.Abstractions.dll differ diff --git a/bin/Release/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll b/bin/Release/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll new file mode 100644 index 0000000..1e4e08a Binary files /dev/null and b/bin/Release/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll differ diff --git a/bin/Release/net8.0/Microsoft.IdentityModel.Logging.dll b/bin/Release/net8.0/Microsoft.IdentityModel.Logging.dll new file mode 100644 index 0000000..6e7e8d0 Binary files /dev/null and b/bin/Release/net8.0/Microsoft.IdentityModel.Logging.dll differ diff --git a/bin/Release/net8.0/Microsoft.IdentityModel.Tokens.dll b/bin/Release/net8.0/Microsoft.IdentityModel.Tokens.dll new file mode 100644 index 0000000..95b905b Binary files /dev/null and b/bin/Release/net8.0/Microsoft.IdentityModel.Tokens.dll differ diff --git a/bin/Release/net8.0/Microsoft.OpenApi.dll b/bin/Release/net8.0/Microsoft.OpenApi.dll new file mode 100644 index 0000000..aac9a6d Binary files /dev/null and b/bin/Release/net8.0/Microsoft.OpenApi.dll differ diff --git a/bin/Release/net8.0/Newtonsoft.Json.Bson.dll b/bin/Release/net8.0/Newtonsoft.Json.Bson.dll new file mode 100644 index 0000000..e9b1dd2 Binary files /dev/null and b/bin/Release/net8.0/Newtonsoft.Json.Bson.dll differ diff --git a/bin/Release/net8.0/Newtonsoft.Json.dll b/bin/Release/net8.0/Newtonsoft.Json.dll new file mode 100644 index 0000000..d035c38 Binary files /dev/null and b/bin/Release/net8.0/Newtonsoft.Json.dll differ diff --git a/bin/Release/net8.0/Swashbuckle.AspNetCore.Swagger.dll b/bin/Release/net8.0/Swashbuckle.AspNetCore.Swagger.dll new file mode 100644 index 0000000..b473263 Binary files /dev/null and b/bin/Release/net8.0/Swashbuckle.AspNetCore.Swagger.dll differ diff --git a/bin/Release/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll b/bin/Release/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll new file mode 100644 index 0000000..288a90f Binary files /dev/null and b/bin/Release/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll differ diff --git a/bin/Release/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll b/bin/Release/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll new file mode 100644 index 0000000..71e6db4 Binary files /dev/null and b/bin/Release/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll differ diff --git a/bin/Release/net8.0/System.IdentityModel.Tokens.Jwt.dll b/bin/Release/net8.0/System.IdentityModel.Tokens.Jwt.dll new file mode 100644 index 0000000..1803ab1 Binary files /dev/null and b/bin/Release/net8.0/System.IdentityModel.Tokens.Jwt.dll differ diff --git a/bin/Release/net8.0/appsettings.json b/bin/Release/net8.0/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/bin/Release/net8.0/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/bin/Release/net8.0/ca/IbanNet.resources.dll b/bin/Release/net8.0/ca/IbanNet.resources.dll new file mode 100644 index 0000000..9560fc6 Binary files /dev/null and b/bin/Release/net8.0/ca/IbanNet.resources.dll differ diff --git a/bin/Release/net8.0/de/IbanNet.resources.dll b/bin/Release/net8.0/de/IbanNet.resources.dll new file mode 100644 index 0000000..284a599 Binary files /dev/null and b/bin/Release/net8.0/de/IbanNet.resources.dll differ diff --git a/bin/Release/net8.0/nl/IbanNet.resources.dll b/bin/Release/net8.0/nl/IbanNet.resources.dll new file mode 100644 index 0000000..5721e78 Binary files /dev/null and b/bin/Release/net8.0/nl/IbanNet.resources.dll differ diff --git a/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/obj/Debug/net8.0/Idoklad.AssemblyInfo.cs b/obj/Debug/net8.0/Idoklad.AssemblyInfo.cs new file mode 100644 index 0000000..204e691 --- /dev/null +++ b/obj/Debug/net8.0/Idoklad.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Idoklad")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bbec747bb707894338c78c901bf8175f40773f12")] +[assembly: System.Reflection.AssemblyProductAttribute("Idoklad")] +[assembly: System.Reflection.AssemblyTitleAttribute("Idoklad")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/obj/Debug/net8.0/Idoklad.AssemblyInfoInputs.cache b/obj/Debug/net8.0/Idoklad.AssemblyInfoInputs.cache new file mode 100644 index 0000000..701d671 --- /dev/null +++ b/obj/Debug/net8.0/Idoklad.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +4d956995fcb6242da55b1ce331ee5915e0498e0501326f960a23ce2e1059f1e7 diff --git a/obj/Debug/net8.0/Idoklad.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net8.0/Idoklad.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..7b95412 --- /dev/null +++ b/obj/Debug/net8.0/Idoklad.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,23 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = true +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Idoklad +build_property.RootNamespace = Idoklad +build_property.ProjectDir = D:\GitHubRepository\Hracicky\x\idoklad\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.RazorLangVersion = 8.0 +build_property.SupportLocalizedComponentNames = +build_property.GenerateRazorMetadataSourceChecksumAttributes = +build_property.MSBuildProjectDirectory = D:\GitHubRepository\Hracicky\x\idoklad +build_property._RazorSourceGeneratorDebug = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/obj/Debug/net8.0/Idoklad.GlobalUsings.g.cs b/obj/Debug/net8.0/Idoklad.GlobalUsings.g.cs new file mode 100644 index 0000000..5e6145d --- /dev/null +++ b/obj/Debug/net8.0/Idoklad.GlobalUsings.g.cs @@ -0,0 +1,17 @@ +// +global using Microsoft.AspNetCore.Builder; +global using Microsoft.AspNetCore.Hosting; +global using Microsoft.AspNetCore.Http; +global using Microsoft.AspNetCore.Routing; +global using Microsoft.Extensions.Configuration; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Hosting; +global using Microsoft.Extensions.Logging; +global using System; +global using System.Collections.Generic; +global using System.IO; +global using System.Linq; +global using System.Net.Http; +global using System.Net.Http.Json; +global using System.Threading; +global using System.Threading.Tasks; diff --git a/obj/Debug/net8.0/Idoklad.assets.cache b/obj/Debug/net8.0/Idoklad.assets.cache new file mode 100644 index 0000000..cf0221b Binary files /dev/null and b/obj/Debug/net8.0/Idoklad.assets.cache differ diff --git a/obj/Debug/net8.0/Idoklad.csproj.AssemblyReference.cache b/obj/Debug/net8.0/Idoklad.csproj.AssemblyReference.cache new file mode 100644 index 0000000..d57ab6d Binary files /dev/null and b/obj/Debug/net8.0/Idoklad.csproj.AssemblyReference.cache differ diff --git a/obj/Idoklad.csproj.nuget.dgspec.json b/obj/Idoklad.csproj.nuget.dgspec.json new file mode 100644 index 0000000..eb55cac --- /dev/null +++ b/obj/Idoklad.csproj.nuget.dgspec.json @@ -0,0 +1,92 @@ +{ + "format": 1, + "restore": { + "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\Idoklad.csproj": {} + }, + "projects": { + "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\Idoklad.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\Idoklad.csproj", + "projectName": "Idoklad", + "projectPath": "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\Idoklad.csproj", + "packagesPath": "C:\\Users\\GamingPC\\.nuget\\packages\\", + "outputPath": "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\GamingPC\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\CustomNuGetPackages": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.200" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "IdokladSdk": { + "target": "Package", + "version": "[5.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.NewtonsoftJson": { + "target": "Package", + "version": "[8.0.11, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[6.9.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.204/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/obj/Idoklad.csproj.nuget.g.props b/obj/Idoklad.csproj.nuget.g.props new file mode 100644 index 0000000..e76774a --- /dev/null +++ b/obj/Idoklad.csproj.nuget.g.props @@ -0,0 +1,23 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\GamingPC\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 7.0.0 + + + + + + + + + + + C:\Users\GamingPC\.nuget\packages\microsoft.extensions.apidescription.server\6.0.5 + + \ No newline at end of file diff --git a/obj/Idoklad.csproj.nuget.g.targets b/obj/Idoklad.csproj.nuget.g.targets new file mode 100644 index 0000000..eea8d76 --- /dev/null +++ b/obj/Idoklad.csproj.nuget.g.targets @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/obj/Release/net8.0/Idoklad.AssemblyInfo.cs b/obj/Release/net8.0/Idoklad.AssemblyInfo.cs new file mode 100644 index 0000000..6428b7c --- /dev/null +++ b/obj/Release/net8.0/Idoklad.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Idoklad")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bbec747bb707894338c78c901bf8175f40773f12")] +[assembly: System.Reflection.AssemblyProductAttribute("Idoklad")] +[assembly: System.Reflection.AssemblyTitleAttribute("Idoklad")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/obj/Release/net8.0/Idoklad.AssemblyInfoInputs.cache b/obj/Release/net8.0/Idoklad.AssemblyInfoInputs.cache new file mode 100644 index 0000000..2004b3e --- /dev/null +++ b/obj/Release/net8.0/Idoklad.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +9330b1b41c96efd56de1c2646a1495cef68227a0fe6aa8897950cb2005c1774e diff --git a/obj/Release/net8.0/Idoklad.GeneratedMSBuildEditorConfig.editorconfig b/obj/Release/net8.0/Idoklad.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..7b95412 --- /dev/null +++ b/obj/Release/net8.0/Idoklad.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,23 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = true +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Idoklad +build_property.RootNamespace = Idoklad +build_property.ProjectDir = D:\GitHubRepository\Hracicky\x\idoklad\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.RazorLangVersion = 8.0 +build_property.SupportLocalizedComponentNames = +build_property.GenerateRazorMetadataSourceChecksumAttributes = +build_property.MSBuildProjectDirectory = D:\GitHubRepository\Hracicky\x\idoklad +build_property._RazorSourceGeneratorDebug = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/obj/Release/net8.0/Idoklad.GlobalUsings.g.cs b/obj/Release/net8.0/Idoklad.GlobalUsings.g.cs new file mode 100644 index 0000000..5e6145d --- /dev/null +++ b/obj/Release/net8.0/Idoklad.GlobalUsings.g.cs @@ -0,0 +1,17 @@ +// +global using Microsoft.AspNetCore.Builder; +global using Microsoft.AspNetCore.Hosting; +global using Microsoft.AspNetCore.Http; +global using Microsoft.AspNetCore.Routing; +global using Microsoft.Extensions.Configuration; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Hosting; +global using Microsoft.Extensions.Logging; +global using System; +global using System.Collections.Generic; +global using System.IO; +global using System.Linq; +global using System.Net.Http; +global using System.Net.Http.Json; +global using System.Threading; +global using System.Threading.Tasks; diff --git a/obj/Release/net8.0/Idoklad.MvcApplicationPartsAssemblyInfo.cache b/obj/Release/net8.0/Idoklad.MvcApplicationPartsAssemblyInfo.cache new file mode 100644 index 0000000..e69de29 diff --git a/obj/Release/net8.0/Idoklad.MvcApplicationPartsAssemblyInfo.cs b/obj/Release/net8.0/Idoklad.MvcApplicationPartsAssemblyInfo.cs new file mode 100644 index 0000000..5c337f8 --- /dev/null +++ b/obj/Release/net8.0/Idoklad.MvcApplicationPartsAssemblyInfo.cs @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartAttribute("Swashbuckle.AspNetCore.SwaggerGen")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/obj/Release/net8.0/Idoklad.assets.cache b/obj/Release/net8.0/Idoklad.assets.cache new file mode 100644 index 0000000..01ee4bd Binary files /dev/null and b/obj/Release/net8.0/Idoklad.assets.cache differ diff --git a/obj/Release/net8.0/Idoklad.csproj.AssemblyReference.cache b/obj/Release/net8.0/Idoklad.csproj.AssemblyReference.cache new file mode 100644 index 0000000..d57ab6d Binary files /dev/null and b/obj/Release/net8.0/Idoklad.csproj.AssemblyReference.cache differ diff --git a/obj/Release/net8.0/Idoklad.csproj.CoreCompileInputs.cache b/obj/Release/net8.0/Idoklad.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..0edae6c --- /dev/null +++ b/obj/Release/net8.0/Idoklad.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +8c52ccc98fa666734950d1f217e2bf36db84e91ef7b161912359e9d71820c6b4 diff --git a/obj/Release/net8.0/Idoklad.csproj.FileListAbsolute.txt b/obj/Release/net8.0/Idoklad.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..7e6b1f7 --- /dev/null +++ b/obj/Release/net8.0/Idoklad.csproj.FileListAbsolute.txt @@ -0,0 +1,50 @@ +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\appsettings.json +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Idoklad.staticwebassets.endpoints.json +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Idoklad.exe +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Idoklad.deps.json +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Idoklad.runtimeconfig.json +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Idoklad.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Idoklad.pdb +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Idoklad.xml +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\IbanNet.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\IdokladSdk.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Microsoft.AspNetCore.JsonPatch.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Microsoft.IdentityModel.Abstractions.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Microsoft.IdentityModel.JsonWebTokens.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Microsoft.IdentityModel.Logging.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Microsoft.IdentityModel.Tokens.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Microsoft.OpenApi.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Newtonsoft.Json.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Newtonsoft.Json.Bson.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Swashbuckle.AspNetCore.Swagger.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Swashbuckle.AspNetCore.SwaggerGen.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\Swashbuckle.AspNetCore.SwaggerUI.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\System.IdentityModel.Tokens.Jwt.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\ca\IbanNet.resources.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\de\IbanNet.resources.dll +D:\GitHubRepository\Hracicky\x\idoklad\bin\Release\net8.0\nl\IbanNet.resources.dll +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.csproj.AssemblyReference.cache +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\rpswa.dswa.cache.json +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.GeneratedMSBuildEditorConfig.editorconfig +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.AssemblyInfoInputs.cache +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.AssemblyInfo.cs +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.csproj.CoreCompileInputs.cache +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.MvcApplicationPartsAssemblyInfo.cs +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.MvcApplicationPartsAssemblyInfo.cache +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\rjimswa.dswa.cache.json +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\rjsmrazor.dswa.cache.json +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\rjsmcshtml.dswa.cache.json +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\scopedcss\bundle\Idoklad.styles.css +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\staticwebassets.build.json +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\staticwebassets.build.json.cache +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\staticwebassets.development.json +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\staticwebassets.build.endpoints.json +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\swae.build.ex.cache +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.csproj.Up2Date +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.dll +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\refint\Idoklad.dll +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.xml +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.pdb +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\Idoklad.genruntimeconfig.cache +D:\GitHubRepository\Hracicky\x\idoklad\obj\Release\net8.0\ref\Idoklad.dll diff --git a/obj/Release/net8.0/Idoklad.csproj.Up2Date b/obj/Release/net8.0/Idoklad.csproj.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/obj/Release/net8.0/Idoklad.dll b/obj/Release/net8.0/Idoklad.dll new file mode 100644 index 0000000..2ad363a Binary files /dev/null and b/obj/Release/net8.0/Idoklad.dll differ diff --git a/obj/Release/net8.0/Idoklad.genruntimeconfig.cache b/obj/Release/net8.0/Idoklad.genruntimeconfig.cache new file mode 100644 index 0000000..cefdd42 --- /dev/null +++ b/obj/Release/net8.0/Idoklad.genruntimeconfig.cache @@ -0,0 +1 @@ +6db239378e2f05937262b4a1b5c1dd79b00ebb1f6a28d48bb7c482305ff7786d diff --git a/obj/Release/net8.0/Idoklad.pdb b/obj/Release/net8.0/Idoklad.pdb new file mode 100644 index 0000000..0ec1107 Binary files /dev/null and b/obj/Release/net8.0/Idoklad.pdb differ diff --git a/obj/Release/net8.0/Idoklad.xml b/obj/Release/net8.0/Idoklad.xml new file mode 100644 index 0000000..c0590ea --- /dev/null +++ b/obj/Release/net8.0/Idoklad.xml @@ -0,0 +1,266 @@ + + + + Idoklad + + + + + Helpers that unwrap the SDK's envelope, returning the payload + on success and translating failures into . + + + + + Builds instances from resolved per-request credentials, using the + official iDoklad .NET SDK (IdokladSdk) and an -managed + . This is the iDoklad analogue of microsoft-365-service's graph_client. + + + + + Scoped accessor that resolves the credentials for the current request and lazily builds a + single shared by all services handling that request. + + + + + Raised when an upstream iDoklad API call does not succeed. Carries the upstream HTTP status + code, message and iDoklad error code so the failure can be surfaced to the caller. + + + + + Service configuration resolved from environment variables. + + Mirrors the structure used by the sibling microsoft-365-service (config.py): non-secret + configuration and credential defaults live in environment variables. Per-request callers + can override the credential values through request headers (see + ). + + + + Default iDoklad OAuth2 client id (client credentials flow). + + + Default iDoklad OAuth2 client secret (client credentials flow). + + + Default iDoklad application id from the developer portal (required by client credentials flow). + + + Optional custom iDoklad API base url (defaults to the SDK production url when empty). + + + Optional custom Identity Server token url (defaults to the SDK production url when empty). + + + Default response language for the iDoklad API (Cz, Sk, En). Defaults to Cz. + + + True when both custom urls are configured (e.g. for a sandbox environment). + + + True when the default credential triplet is fully configured via environment variables. + + + + Account agenda: the current agenda (company) and current user. Requires iDoklad credentials + (headers or environment defaults). + + + + Get information about the current agenda (company). + + + Get information about the current user. + + + + Contacts (customers/suppliers) agenda. + + All endpoints require iDoklad credentials. Provide them as request headers + (X-ClientId, X-ClientSecret, X-ApplicationId) or rely on the service + environment defaults. See the Swagger description for details. + + + + List contacts (paged). + + + Get a contact detail by id. + + + Get a pre-filled default contact model for creating a new contact. + + + Create a new contact. + + + Update an existing contact (the model id identifies the contact). + + + Delete a contact by id. + + + + Issued (outgoing) invoices agenda. Requires iDoklad credentials (headers or environment + defaults). + + + + List issued invoices (paged). + + + Get an issued invoice detail by id. + + + Get a pre-filled default model for creating a new issued invoice. + + + Create a new issued invoice. + + + Update an existing issued invoice (the model id identifies the invoice). + + + Create a copy (draft) of an existing issued invoice. + + + Delete an issued invoice by id. + + + Service metadata endpoints. These do not require iDoklad credentials. + + + Liveness probe. + + + Service name, version and language. + + + + Reports whether the service has default iDoklad credentials configured through + environment variables. Per-request callers can always override them with headers. + + + + + Received (incoming) invoices agenda. Requires iDoklad credentials (headers or environment + defaults). + + + + List received invoices (paged). + + + Get a received invoice detail by id. + + + Get a pre-filled default model for creating a new received invoice. + + + Create a new received invoice. + + + Update an existing received invoice (the model id identifies the invoice). + + + Delete a received invoice by id. + + + + Supporting registers: bank accounts, VAT rates and numeric sequences. Requires iDoklad + credentials (headers or environment defaults). + + + + List bank accounts (paged). + + + Get a bank account detail by id. + + + Create a new bank account. + + + Update an existing bank account (the model id identifies the account). + + + Delete a bank account by id. + + + List VAT rates (paged). + + + Get a VAT rate detail by id. + + + List numeric (document) sequences (paged). + + + + Names of the HTTP headers that carry per-request iDoklad credentials. + + Secrets are never accepted in the query string or request body: they are required in + request headers (and documented as such in Swagger). Each header carries the credential + value directly and must therefore only be sent over TLS. + + + + Header carrying the response language override (Cz, Sk, En). + + + + Fully resolved set of credentials and request options used to build a DokladApi + instance for a single request. + + + + + Raised when the request does not provide a complete set of iDoklad credentials, + neither through request headers nor through the service environment defaults. + + + + + Resolves the iDoklad credentials for the current request. + + Mirrors get_request_settings from the sibling microsoft-365-service: each credential + value is taken from its request header when present and otherwise falls back to the + environment-configured default. Secrets are only ever read from headers (never query/body). + If, after applying the fallbacks, any required value is still missing, the request is rejected. + + + + + Documents the per-request credential headers in Swagger for every operation that talks to + iDoklad. The headers are marked optional because the service can fall back to environment + defaults, but the description makes the requirement and secret handling explicit. + + + + + Translates domain exceptions into JSON responses: + missing credentials become 401, and upstream iDoklad failures surface the upstream status. + + + + Account agenda: information about the current agenda and the current user. + + + Contacts (customers/suppliers) agenda. + + + Issued (outgoing) invoices agenda. + + + Received (incoming) invoices agenda. + + + + Supporting registers: bank accounts, VAT rates and numeric (document) sequences. + + + + diff --git a/obj/Release/net8.0/apphost.exe b/obj/Release/net8.0/apphost.exe new file mode 100644 index 0000000..f631b37 Binary files /dev/null and b/obj/Release/net8.0/apphost.exe differ diff --git a/obj/Release/net8.0/ref/Idoklad.dll b/obj/Release/net8.0/ref/Idoklad.dll new file mode 100644 index 0000000..6a407af Binary files /dev/null and b/obj/Release/net8.0/ref/Idoklad.dll differ diff --git a/obj/Release/net8.0/refint/Idoklad.dll b/obj/Release/net8.0/refint/Idoklad.dll new file mode 100644 index 0000000..6a407af Binary files /dev/null and b/obj/Release/net8.0/refint/Idoklad.dll differ diff --git a/obj/Release/net8.0/rjsmcshtml.dswa.cache.json b/obj/Release/net8.0/rjsmcshtml.dswa.cache.json new file mode 100644 index 0000000..9d2ebea --- /dev/null +++ b/obj/Release/net8.0/rjsmcshtml.dswa.cache.json @@ -0,0 +1 @@ +{"GlobalPropertiesHash":"B9kWZPkqs9jh4om+wEa7vtkXe98jy4Uk00TDvCFOMAg=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Xoy6Z/ZliL2FaV/OPQYzcdsWaKV5xBoURVM2EiwsMe0=","UnIQ74hcK4OEyD1OXQb8l/Ai5e5GkT1C8ZVGznd7EHM=","vIllxnm6hE/qU5OIVUPxE4SuD2ijmi27OPg5VyWR6ZM=","QqmhCK1Ak7uSaGTG1n4MvYJ\u002BFpdANJykxNBeraLdr/c=","et\u002BonTqXghtchEvOcFNSnpptMGH2zS\u002Bmy59QN1yTclY="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Release/net8.0/rjsmrazor.dswa.cache.json b/obj/Release/net8.0/rjsmrazor.dswa.cache.json new file mode 100644 index 0000000..9d447f2 --- /dev/null +++ b/obj/Release/net8.0/rjsmrazor.dswa.cache.json @@ -0,0 +1 @@ +{"GlobalPropertiesHash":"ITni+o74UkYnIxQUhjgt1e5B31FSFcyvxyxM3WTkkB8=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Xoy6Z/ZliL2FaV/OPQYzcdsWaKV5xBoURVM2EiwsMe0=","UnIQ74hcK4OEyD1OXQb8l/Ai5e5GkT1C8ZVGznd7EHM=","vIllxnm6hE/qU5OIVUPxE4SuD2ijmi27OPg5VyWR6ZM=","QqmhCK1Ak7uSaGTG1n4MvYJ\u002BFpdANJykxNBeraLdr/c=","et\u002BonTqXghtchEvOcFNSnpptMGH2zS\u002Bmy59QN1yTclY="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Release/net8.0/rpswa.dswa.cache.json b/obj/Release/net8.0/rpswa.dswa.cache.json new file mode 100644 index 0000000..a6be07f --- /dev/null +++ b/obj/Release/net8.0/rpswa.dswa.cache.json @@ -0,0 +1 @@ +{"GlobalPropertiesHash":"mtHRwZSpqhpjTpXVP7OTHx/hA+8aHhOXtaICvBxSOxM=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Xoy6Z/ZliL2FaV/OPQYzcdsWaKV5xBoURVM2EiwsMe0="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Release/net8.0/staticwebassets.build.endpoints.json b/obj/Release/net8.0/staticwebassets.build.endpoints.json new file mode 100644 index 0000000..5576e88 --- /dev/null +++ b/obj/Release/net8.0/staticwebassets.build.endpoints.json @@ -0,0 +1 @@ +{"Version":1,"ManifestType":"Build","Endpoints":[]} \ No newline at end of file diff --git a/obj/Release/net8.0/staticwebassets.build.json b/obj/Release/net8.0/staticwebassets.build.json new file mode 100644 index 0000000..b86cd26 --- /dev/null +++ b/obj/Release/net8.0/staticwebassets.build.json @@ -0,0 +1 @@ +{"Version":1,"Hash":"7DN8saVWijVbmDBZMNPML3QUSVed484vZhEJ3j2d9E8=","Source":"Idoklad","BasePath":"/","Mode":"Root","ManifestType":"Build","ReferencedProjectsConfiguration":[],"DiscoveryPatterns":[],"Assets":[],"Endpoints":[]} \ No newline at end of file diff --git a/obj/Release/net8.0/staticwebassets.build.json.cache b/obj/Release/net8.0/staticwebassets.build.json.cache new file mode 100644 index 0000000..baebe04 --- /dev/null +++ b/obj/Release/net8.0/staticwebassets.build.json.cache @@ -0,0 +1 @@ +7DN8saVWijVbmDBZMNPML3QUSVed484vZhEJ3j2d9E8= \ No newline at end of file diff --git a/obj/Release/net8.0/swae.build.ex.cache b/obj/Release/net8.0/swae.build.ex.cache new file mode 100644 index 0000000..e69de29 diff --git a/obj/project.assets.json b/obj/project.assets.json new file mode 100644 index 0000000..29e2fae --- /dev/null +++ b/obj/project.assets.json @@ -0,0 +1,1181 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "IbanNet/5.16.1": { + "type": "package", + "compile": { + "lib/net8.0/IbanNet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/IbanNet.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/ca/IbanNet.resources.dll": { + "locale": "ca" + }, + "lib/net8.0/de/IbanNet.resources.dll": { + "locale": "de" + }, + "lib/net8.0/nl/IbanNet.resources.dll": { + "locale": "nl" + } + } + }, + "IdokladSdk/5.3.0": { + "type": "package", + "dependencies": { + "IbanNet": "5.16.1", + "Microsoft.CSharp": "4.7.0", + "Newtonsoft.Json": "13.0.3", + "System.ComponentModel.Annotations": "5.0.0", + "System.IdentityModel.Tokens.Jwt": "7.6.0" + }, + "compile": { + "lib/netstandard2.0/IdokladSdk.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/IdokladSdk.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.JsonPatch/8.0.11": { + "type": "package", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "Newtonsoft.Json": "13.0.3" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.11": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.JsonPatch": "8.0.11", + "Newtonsoft.Json": "13.0.3", + "Newtonsoft.Json.Bson": "1.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "type": "package", + "build": { + "build/Microsoft.Extensions.ApiDescription.Server.props": {}, + "build/Microsoft.Extensions.ApiDescription.Server.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props": {}, + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets": {} + } + }, + "Microsoft.IdentityModel.Abstractions/7.6.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/7.6.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.6.0" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Logging/7.6.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "7.6.0" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Tokens/7.6.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.6.0" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.OpenApi/1.6.14": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "compile": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "Newtonsoft.Json.Bson/1.0.2": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "12.0.1" + }, + "compile": { + "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.Bson.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore/6.9.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "6.0.5", + "Swashbuckle.AspNetCore.Swagger": "6.9.0", + "Swashbuckle.AspNetCore.SwaggerGen": "6.9.0", + "Swashbuckle.AspNetCore.SwaggerUI": "6.9.0" + }, + "build": { + "build/Swashbuckle.AspNetCore.props": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Swashbuckle.AspNetCore.props": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/6.9.0": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.6.14" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.9.0": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "6.9.0" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.9.0": { + "type": "package", + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "System.ComponentModel.Annotations/5.0.0": { + "type": "package", + "compile": { + "ref/netstandard2.1/System.ComponentModel.Annotations.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/System.ComponentModel.Annotations.dll": { + "related": ".xml" + } + } + }, + "System.IdentityModel.Tokens.Jwt/7.6.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "7.6.0", + "Microsoft.IdentityModel.Tokens": "7.6.0" + }, + "compile": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "IbanNet/5.16.1": { + "sha512": "07IXXs6sKXL1edCNju4u0fJJSB/4WAUHjkkLIcSUD9u3yRqqKy7jwMWxyaOviheXV0NoagnXSmaKcpu3R5JNLw==", + "type": "package", + "path": "ibannet/5.16.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "IbanNet64.png", + "README.md", + "ibannet.5.16.1.nupkg.sha512", + "ibannet.nuspec", + "lib/net462/IbanNet.dll", + "lib/net462/IbanNet.xml", + "lib/net462/ca/IbanNet.resources.dll", + "lib/net462/de/IbanNet.resources.dll", + "lib/net462/nl/IbanNet.resources.dll", + "lib/net472/IbanNet.dll", + "lib/net472/IbanNet.xml", + "lib/net472/ca/IbanNet.resources.dll", + "lib/net472/de/IbanNet.resources.dll", + "lib/net472/nl/IbanNet.resources.dll", + "lib/net6.0/IbanNet.dll", + "lib/net6.0/IbanNet.xml", + "lib/net6.0/ca/IbanNet.resources.dll", + "lib/net6.0/de/IbanNet.resources.dll", + "lib/net6.0/nl/IbanNet.resources.dll", + "lib/net8.0/IbanNet.dll", + "lib/net8.0/IbanNet.xml", + "lib/net8.0/ca/IbanNet.resources.dll", + "lib/net8.0/de/IbanNet.resources.dll", + "lib/net8.0/nl/IbanNet.resources.dll", + "lib/netstandard2.0/IbanNet.dll", + "lib/netstandard2.0/IbanNet.xml", + "lib/netstandard2.0/ca/IbanNet.resources.dll", + "lib/netstandard2.0/de/IbanNet.resources.dll", + "lib/netstandard2.0/nl/IbanNet.resources.dll", + "lib/netstandard2.1/IbanNet.dll", + "lib/netstandard2.1/IbanNet.xml", + "lib/netstandard2.1/ca/IbanNet.resources.dll", + "lib/netstandard2.1/de/IbanNet.resources.dll", + "lib/netstandard2.1/nl/IbanNet.resources.dll" + ] + }, + "IdokladSdk/5.3.0": { + "sha512": "oJZC8K2YzvnNHQ2vwKAfvfkwk+WCPbeELdyuS8A8sX2y/KEo5KBl9S5PJfCAYpH/1y+0hyspiY1KoJToUxj0eQ==", + "type": "package", + "path": "idokladsdk/5.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "iDoklad_180.png", + "idokladsdk.5.3.0.nupkg.sha512", + "idokladsdk.nuspec", + "lib/netstandard2.0/IdokladSdk.dll", + "lib/netstandard2.0/IdokladSdk.xml" + ] + }, + "Microsoft.AspNetCore.JsonPatch/8.0.11": { + "sha512": "l1tFnQm2LtFE3M9YRM/bdwtxxCV50Y5jnN0LjliQH1sqvWsN46++Uu3QCJL9IdOweFvXSf3Shi7DI/Vc1jkdKA==", + "type": "package", + "path": "microsoft.aspnetcore.jsonpatch/8.0.11", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net462/Microsoft.AspNetCore.JsonPatch.dll", + "lib/net462/Microsoft.AspNetCore.JsonPatch.xml", + "lib/net8.0/Microsoft.AspNetCore.JsonPatch.dll", + "lib/net8.0/Microsoft.AspNetCore.JsonPatch.xml", + "lib/netstandard2.0/Microsoft.AspNetCore.JsonPatch.dll", + "lib/netstandard2.0/Microsoft.AspNetCore.JsonPatch.xml", + "microsoft.aspnetcore.jsonpatch.8.0.11.nupkg.sha512", + "microsoft.aspnetcore.jsonpatch.nuspec" + ] + }, + "Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.11": { + "sha512": "XcfFd8e0g2M0mcAKVNgoHJtWYJfKrPntHhgqiZ1Ci37i3AEJbM0GHIa715i0UPSksiKmDxsJWXnM3rg8keF/Zg==", + "type": "package", + "path": "microsoft.aspnetcore.mvc.newtonsoftjson/8.0.11", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll", + "lib/net8.0/Microsoft.AspNetCore.Mvc.NewtonsoftJson.xml", + "microsoft.aspnetcore.mvc.newtonsoftjson.8.0.11.nupkg.sha512", + "microsoft.aspnetcore.mvc.newtonsoftjson.nuspec" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/6.0.5": { + "sha512": "Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/6.0.5", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net461-x86/GetDocument.Insider.exe", + "tools/net461-x86/GetDocument.Insider.exe.config", + "tools/net461-x86/Microsoft.Win32.Primitives.dll", + "tools/net461-x86/System.AppContext.dll", + "tools/net461-x86/System.Buffers.dll", + "tools/net461-x86/System.Collections.Concurrent.dll", + "tools/net461-x86/System.Collections.NonGeneric.dll", + "tools/net461-x86/System.Collections.Specialized.dll", + "tools/net461-x86/System.Collections.dll", + "tools/net461-x86/System.ComponentModel.EventBasedAsync.dll", + "tools/net461-x86/System.ComponentModel.Primitives.dll", + "tools/net461-x86/System.ComponentModel.TypeConverter.dll", + "tools/net461-x86/System.ComponentModel.dll", + "tools/net461-x86/System.Console.dll", + "tools/net461-x86/System.Data.Common.dll", + "tools/net461-x86/System.Diagnostics.Contracts.dll", + "tools/net461-x86/System.Diagnostics.Debug.dll", + "tools/net461-x86/System.Diagnostics.DiagnosticSource.dll", + "tools/net461-x86/System.Diagnostics.FileVersionInfo.dll", + "tools/net461-x86/System.Diagnostics.Process.dll", + "tools/net461-x86/System.Diagnostics.StackTrace.dll", + "tools/net461-x86/System.Diagnostics.TextWriterTraceListener.dll", + "tools/net461-x86/System.Diagnostics.Tools.dll", + "tools/net461-x86/System.Diagnostics.TraceSource.dll", + "tools/net461-x86/System.Diagnostics.Tracing.dll", + "tools/net461-x86/System.Drawing.Primitives.dll", + "tools/net461-x86/System.Dynamic.Runtime.dll", + "tools/net461-x86/System.Globalization.Calendars.dll", + "tools/net461-x86/System.Globalization.Extensions.dll", + "tools/net461-x86/System.Globalization.dll", + "tools/net461-x86/System.IO.Compression.ZipFile.dll", + "tools/net461-x86/System.IO.Compression.dll", + "tools/net461-x86/System.IO.FileSystem.DriveInfo.dll", + "tools/net461-x86/System.IO.FileSystem.Primitives.dll", + "tools/net461-x86/System.IO.FileSystem.Watcher.dll", + "tools/net461-x86/System.IO.FileSystem.dll", + "tools/net461-x86/System.IO.IsolatedStorage.dll", + "tools/net461-x86/System.IO.MemoryMappedFiles.dll", + "tools/net461-x86/System.IO.Pipes.dll", + "tools/net461-x86/System.IO.UnmanagedMemoryStream.dll", + "tools/net461-x86/System.IO.dll", + "tools/net461-x86/System.Linq.Expressions.dll", + "tools/net461-x86/System.Linq.Parallel.dll", + "tools/net461-x86/System.Linq.Queryable.dll", + "tools/net461-x86/System.Linq.dll", + "tools/net461-x86/System.Memory.dll", + "tools/net461-x86/System.Net.Http.dll", + "tools/net461-x86/System.Net.NameResolution.dll", + "tools/net461-x86/System.Net.NetworkInformation.dll", + "tools/net461-x86/System.Net.Ping.dll", + "tools/net461-x86/System.Net.Primitives.dll", + "tools/net461-x86/System.Net.Requests.dll", + "tools/net461-x86/System.Net.Security.dll", + "tools/net461-x86/System.Net.Sockets.dll", + "tools/net461-x86/System.Net.WebHeaderCollection.dll", + "tools/net461-x86/System.Net.WebSockets.Client.dll", + "tools/net461-x86/System.Net.WebSockets.dll", + "tools/net461-x86/System.Numerics.Vectors.dll", + "tools/net461-x86/System.ObjectModel.dll", + "tools/net461-x86/System.Reflection.Extensions.dll", + "tools/net461-x86/System.Reflection.Primitives.dll", + "tools/net461-x86/System.Reflection.dll", + "tools/net461-x86/System.Resources.Reader.dll", + "tools/net461-x86/System.Resources.ResourceManager.dll", + "tools/net461-x86/System.Resources.Writer.dll", + "tools/net461-x86/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net461-x86/System.Runtime.CompilerServices.VisualC.dll", + "tools/net461-x86/System.Runtime.Extensions.dll", + "tools/net461-x86/System.Runtime.Handles.dll", + "tools/net461-x86/System.Runtime.InteropServices.RuntimeInformation.dll", + "tools/net461-x86/System.Runtime.InteropServices.dll", + "tools/net461-x86/System.Runtime.Numerics.dll", + "tools/net461-x86/System.Runtime.Serialization.Formatters.dll", + "tools/net461-x86/System.Runtime.Serialization.Json.dll", + "tools/net461-x86/System.Runtime.Serialization.Primitives.dll", + "tools/net461-x86/System.Runtime.Serialization.Xml.dll", + "tools/net461-x86/System.Runtime.dll", + "tools/net461-x86/System.Security.Claims.dll", + "tools/net461-x86/System.Security.Cryptography.Algorithms.dll", + "tools/net461-x86/System.Security.Cryptography.Csp.dll", + "tools/net461-x86/System.Security.Cryptography.Encoding.dll", + "tools/net461-x86/System.Security.Cryptography.Primitives.dll", + "tools/net461-x86/System.Security.Cryptography.X509Certificates.dll", + "tools/net461-x86/System.Security.Principal.dll", + "tools/net461-x86/System.Security.SecureString.dll", + "tools/net461-x86/System.Text.Encoding.Extensions.dll", + "tools/net461-x86/System.Text.Encoding.dll", + "tools/net461-x86/System.Text.RegularExpressions.dll", + "tools/net461-x86/System.Threading.Overlapped.dll", + "tools/net461-x86/System.Threading.Tasks.Parallel.dll", + "tools/net461-x86/System.Threading.Tasks.dll", + "tools/net461-x86/System.Threading.Thread.dll", + "tools/net461-x86/System.Threading.ThreadPool.dll", + "tools/net461-x86/System.Threading.Timer.dll", + "tools/net461-x86/System.Threading.dll", + "tools/net461-x86/System.ValueTuple.dll", + "tools/net461-x86/System.Xml.ReaderWriter.dll", + "tools/net461-x86/System.Xml.XDocument.dll", + "tools/net461-x86/System.Xml.XPath.XDocument.dll", + "tools/net461-x86/System.Xml.XPath.dll", + "tools/net461-x86/System.Xml.XmlDocument.dll", + "tools/net461-x86/System.Xml.XmlSerializer.dll", + "tools/net461-x86/netstandard.dll", + "tools/net461/GetDocument.Insider.exe", + "tools/net461/GetDocument.Insider.exe.config", + "tools/net461/Microsoft.Win32.Primitives.dll", + "tools/net461/System.AppContext.dll", + "tools/net461/System.Buffers.dll", + "tools/net461/System.Collections.Concurrent.dll", + "tools/net461/System.Collections.NonGeneric.dll", + "tools/net461/System.Collections.Specialized.dll", + "tools/net461/System.Collections.dll", + "tools/net461/System.ComponentModel.EventBasedAsync.dll", + "tools/net461/System.ComponentModel.Primitives.dll", + "tools/net461/System.ComponentModel.TypeConverter.dll", + "tools/net461/System.ComponentModel.dll", + "tools/net461/System.Console.dll", + "tools/net461/System.Data.Common.dll", + "tools/net461/System.Diagnostics.Contracts.dll", + "tools/net461/System.Diagnostics.Debug.dll", + "tools/net461/System.Diagnostics.DiagnosticSource.dll", + "tools/net461/System.Diagnostics.FileVersionInfo.dll", + "tools/net461/System.Diagnostics.Process.dll", + "tools/net461/System.Diagnostics.StackTrace.dll", + "tools/net461/System.Diagnostics.TextWriterTraceListener.dll", + "tools/net461/System.Diagnostics.Tools.dll", + "tools/net461/System.Diagnostics.TraceSource.dll", + "tools/net461/System.Diagnostics.Tracing.dll", + "tools/net461/System.Drawing.Primitives.dll", + "tools/net461/System.Dynamic.Runtime.dll", + "tools/net461/System.Globalization.Calendars.dll", + "tools/net461/System.Globalization.Extensions.dll", + "tools/net461/System.Globalization.dll", + "tools/net461/System.IO.Compression.ZipFile.dll", + "tools/net461/System.IO.Compression.dll", + "tools/net461/System.IO.FileSystem.DriveInfo.dll", + "tools/net461/System.IO.FileSystem.Primitives.dll", + "tools/net461/System.IO.FileSystem.Watcher.dll", + "tools/net461/System.IO.FileSystem.dll", + "tools/net461/System.IO.IsolatedStorage.dll", + "tools/net461/System.IO.MemoryMappedFiles.dll", + "tools/net461/System.IO.Pipes.dll", + "tools/net461/System.IO.UnmanagedMemoryStream.dll", + "tools/net461/System.IO.dll", + "tools/net461/System.Linq.Expressions.dll", + "tools/net461/System.Linq.Parallel.dll", + "tools/net461/System.Linq.Queryable.dll", + "tools/net461/System.Linq.dll", + "tools/net461/System.Memory.dll", + "tools/net461/System.Net.Http.dll", + "tools/net461/System.Net.NameResolution.dll", + "tools/net461/System.Net.NetworkInformation.dll", + "tools/net461/System.Net.Ping.dll", + "tools/net461/System.Net.Primitives.dll", + "tools/net461/System.Net.Requests.dll", + "tools/net461/System.Net.Security.dll", + "tools/net461/System.Net.Sockets.dll", + "tools/net461/System.Net.WebHeaderCollection.dll", + "tools/net461/System.Net.WebSockets.Client.dll", + "tools/net461/System.Net.WebSockets.dll", + "tools/net461/System.Numerics.Vectors.dll", + "tools/net461/System.ObjectModel.dll", + "tools/net461/System.Reflection.Extensions.dll", + "tools/net461/System.Reflection.Primitives.dll", + "tools/net461/System.Reflection.dll", + "tools/net461/System.Resources.Reader.dll", + "tools/net461/System.Resources.ResourceManager.dll", + "tools/net461/System.Resources.Writer.dll", + "tools/net461/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net461/System.Runtime.CompilerServices.VisualC.dll", + "tools/net461/System.Runtime.Extensions.dll", + "tools/net461/System.Runtime.Handles.dll", + "tools/net461/System.Runtime.InteropServices.RuntimeInformation.dll", + "tools/net461/System.Runtime.InteropServices.dll", + "tools/net461/System.Runtime.Numerics.dll", + "tools/net461/System.Runtime.Serialization.Formatters.dll", + "tools/net461/System.Runtime.Serialization.Json.dll", + "tools/net461/System.Runtime.Serialization.Primitives.dll", + "tools/net461/System.Runtime.Serialization.Xml.dll", + "tools/net461/System.Runtime.dll", + "tools/net461/System.Security.Claims.dll", + "tools/net461/System.Security.Cryptography.Algorithms.dll", + "tools/net461/System.Security.Cryptography.Csp.dll", + "tools/net461/System.Security.Cryptography.Encoding.dll", + "tools/net461/System.Security.Cryptography.Primitives.dll", + "tools/net461/System.Security.Cryptography.X509Certificates.dll", + "tools/net461/System.Security.Principal.dll", + "tools/net461/System.Security.SecureString.dll", + "tools/net461/System.Text.Encoding.Extensions.dll", + "tools/net461/System.Text.Encoding.dll", + "tools/net461/System.Text.RegularExpressions.dll", + "tools/net461/System.Threading.Overlapped.dll", + "tools/net461/System.Threading.Tasks.Parallel.dll", + "tools/net461/System.Threading.Tasks.dll", + "tools/net461/System.Threading.Thread.dll", + "tools/net461/System.Threading.ThreadPool.dll", + "tools/net461/System.Threading.Timer.dll", + "tools/net461/System.Threading.dll", + "tools/net461/System.ValueTuple.dll", + "tools/net461/System.Xml.ReaderWriter.dll", + "tools/net461/System.Xml.XDocument.dll", + "tools/net461/System.Xml.XPath.XDocument.dll", + "tools/net461/System.Xml.XPath.dll", + "tools/net461/System.Xml.XmlDocument.dll", + "tools/net461/System.Xml.XmlSerializer.dll", + "tools/net461/netstandard.dll", + "tools/netcoreapp2.1/GetDocument.Insider.deps.json", + "tools/netcoreapp2.1/GetDocument.Insider.dll", + "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", + "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" + ] + }, + "Microsoft.IdentityModel.Abstractions/7.6.0": { + "sha512": "q4MZ8d0LlWKWtQfxNl9ZRZVOQ7IPEAR6CF4rFKITfuqEUOhqrbwHbqBanReI37155IKb8V/tPJqpPa3KXm9wQQ==", + "type": "package", + "path": "microsoft.identitymodel.abstractions/7.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Abstractions.dll", + "lib/net461/Microsoft.IdentityModel.Abstractions.xml", + "lib/net462/Microsoft.IdentityModel.Abstractions.dll", + "lib/net462/Microsoft.IdentityModel.Abstractions.xml", + "lib/net472/Microsoft.IdentityModel.Abstractions.dll", + "lib/net472/Microsoft.IdentityModel.Abstractions.xml", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", + "microsoft.identitymodel.abstractions.7.6.0.nupkg.sha512", + "microsoft.identitymodel.abstractions.nuspec" + ] + }, + "Microsoft.IdentityModel.JsonWebTokens/7.6.0": { + "sha512": "lsleZbCuh3wZ3RfKd8WJ7E52nIeQQzJsDrgHN+B3Zhzd32UTQ1V3Vjn1N9PssnSulAoEMF0aAiue7ucX+TPoQA==", + "type": "package", + "path": "microsoft.identitymodel.jsonwebtokens/7.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "microsoft.identitymodel.jsonwebtokens.7.6.0.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.nuspec" + ] + }, + "Microsoft.IdentityModel.Logging/7.6.0": { + "sha512": "7AVJhNY4y/i96XGfaXovX8aAyYWz6HHtPEPHPpbg5JCchwVaoO08VmmpHe0L2gVagW/iHG0w4a4Xg9gxLXQ/8A==", + "type": "package", + "path": "microsoft.identitymodel.logging/7.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Logging.dll", + "lib/net461/Microsoft.IdentityModel.Logging.xml", + "lib/net462/Microsoft.IdentityModel.Logging.dll", + "lib/net462/Microsoft.IdentityModel.Logging.xml", + "lib/net472/Microsoft.IdentityModel.Logging.dll", + "lib/net472/Microsoft.IdentityModel.Logging.xml", + "lib/net6.0/Microsoft.IdentityModel.Logging.dll", + "lib/net6.0/Microsoft.IdentityModel.Logging.xml", + "lib/net8.0/Microsoft.IdentityModel.Logging.dll", + "lib/net8.0/Microsoft.IdentityModel.Logging.xml", + "lib/net9.0/Microsoft.IdentityModel.Logging.dll", + "lib/net9.0/Microsoft.IdentityModel.Logging.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", + "microsoft.identitymodel.logging.7.6.0.nupkg.sha512", + "microsoft.identitymodel.logging.nuspec" + ] + }, + "Microsoft.IdentityModel.Tokens/7.6.0": { + "sha512": "xvEil42RUe4Si/TuLDvglNXpklgCWMSecPduczXPS2BAypjheUehPqKLwIy8vSdzB4K2zza3yLgmODBt+J6ZxQ==", + "type": "package", + "path": "microsoft.identitymodel.tokens/7.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Tokens.dll", + "lib/net461/Microsoft.IdentityModel.Tokens.xml", + "lib/net462/Microsoft.IdentityModel.Tokens.dll", + "lib/net462/Microsoft.IdentityModel.Tokens.xml", + "lib/net472/Microsoft.IdentityModel.Tokens.dll", + "lib/net472/Microsoft.IdentityModel.Tokens.xml", + "lib/net6.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net6.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net8.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net9.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net9.0/Microsoft.IdentityModel.Tokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", + "microsoft.identitymodel.tokens.7.6.0.nupkg.sha512", + "microsoft.identitymodel.tokens.nuspec" + ] + }, + "Microsoft.OpenApi/1.6.14": { + "sha512": "tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==", + "type": "package", + "path": "microsoft.openapi/1.6.14", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/Microsoft.OpenApi.dll", + "lib/netstandard2.0/Microsoft.OpenApi.pdb", + "lib/netstandard2.0/Microsoft.OpenApi.xml", + "microsoft.openapi.1.6.14.nupkg.sha512", + "microsoft.openapi.nuspec" + ] + }, + "Newtonsoft.Json/13.0.3": { + "sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "type": "package", + "path": "newtonsoft.json/13.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/net6.0/Newtonsoft.Json.dll", + "lib/net6.0/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.3.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "Newtonsoft.Json.Bson/1.0.2": { + "sha512": "QYFyxhaABwmq3p/21VrZNYvCg3DaEoN/wUuw5nmfAf0X3HLjgupwhkEWdgfb9nvGAUIv3osmZoD3kKl4jxEmYQ==", + "type": "package", + "path": "newtonsoft.json.bson/1.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "lib/net45/Newtonsoft.Json.Bson.dll", + "lib/net45/Newtonsoft.Json.Bson.pdb", + "lib/net45/Newtonsoft.Json.Bson.xml", + "lib/netstandard1.3/Newtonsoft.Json.Bson.dll", + "lib/netstandard1.3/Newtonsoft.Json.Bson.pdb", + "lib/netstandard1.3/Newtonsoft.Json.Bson.xml", + "lib/netstandard2.0/Newtonsoft.Json.Bson.dll", + "lib/netstandard2.0/Newtonsoft.Json.Bson.pdb", + "lib/netstandard2.0/Newtonsoft.Json.Bson.xml", + "newtonsoft.json.bson.1.0.2.nupkg.sha512", + "newtonsoft.json.bson.nuspec" + ] + }, + "Swashbuckle.AspNetCore/6.9.0": { + "sha512": "lvI+XHF21tkwXd2nDCLGJsdhdUYsY3Ax2fWUlvw81Oa6EedtnIAf5tThy8ZnPcz/9/TwsLgjgtX9ifOCIjbEPA==", + "type": "package", + "path": "swashbuckle.aspnetcore/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Swashbuckle.AspNetCore.props", + "buildMultiTargeting/Swashbuckle.AspNetCore.props", + "swashbuckle.aspnetcore.6.9.0.nupkg.sha512", + "swashbuckle.aspnetcore.nuspec" + ] + }, + "Swashbuckle.AspNetCore.Swagger/6.9.0": { + "sha512": "P316kpxx5DnDvJwNWW8iTAXkh9DVenAxFGe9v4OUS0gil+vitH7F1feXhCtVeHN/616EFNTMh4pV2lcr9kkw/w==", + "type": "package", + "path": "swashbuckle.aspnetcore.swagger/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.Swagger.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swagger.6.9.0.nupkg.sha512", + "swashbuckle.aspnetcore.swagger.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/6.9.0": { + "sha512": "FjeMR3fBzwVc5plfYjoHw9ptf8SOWMupvO9X35J5EgzT3L9dRqSxa+cBKzL8PwCyemY0xNrggQSB5+MFWx1axg==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggergen/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggergen.6.9.0.nupkg.sha512", + "swashbuckle.aspnetcore.swaggergen.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/6.9.0": { + "sha512": "0OxlWBFLl2gUESZX/K7QCTz9KctKy0VxHTvLIBcyWGD4z/fv5MCMW02qzYGcReLJr4yBnNDRzApKtLh6oBpe9A==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggerui/6.9.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net5.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net6.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net7.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netcoreapp3.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/netstandard2.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggerui.6.9.0.nupkg.sha512", + "swashbuckle.aspnetcore.swaggerui.nuspec" + ] + }, + "System.ComponentModel.Annotations/5.0.0": { + "sha512": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==", + "type": "package", + "path": "system.componentmodel.annotations/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/netstandard2.0/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.xml", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/net461/System.ComponentModel.Annotations.xml", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard2.0/System.ComponentModel.Annotations.dll", + "ref/netstandard2.0/System.ComponentModel.Annotations.xml", + "ref/netstandard2.1/System.ComponentModel.Annotations.dll", + "ref/netstandard2.1/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.annotations.5.0.0.nupkg.sha512", + "system.componentmodel.annotations.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.IdentityModel.Tokens.Jwt/7.6.0": { + "sha512": "LIuEbv/kFpuw00yI/mPu+T9NAVdH/u7Y5ChCGzYQQeCg9Pft2C7HFWuO/P+Z7c2RcySNjVk1FmuAheKjYIbOkw==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/7.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/System.IdentityModel.Tokens.Jwt.dll", + "lib/net461/System.IdentityModel.Tokens.Jwt.xml", + "lib/net462/System.IdentityModel.Tokens.Jwt.dll", + "lib/net462/System.IdentityModel.Tokens.Jwt.xml", + "lib/net472/System.IdentityModel.Tokens.Jwt.dll", + "lib/net472/System.IdentityModel.Tokens.Jwt.xml", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net9.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", + "system.identitymodel.tokens.jwt.7.6.0.nupkg.sha512", + "system.identitymodel.tokens.jwt.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "IdokladSdk >= 5.3.0", + "Microsoft.AspNetCore.Mvc.NewtonsoftJson >= 8.0.11", + "Swashbuckle.AspNetCore >= 6.9.0" + ] + }, + "packageFolders": { + "C:\\Users\\GamingPC\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\Idoklad.csproj", + "projectName": "Idoklad", + "projectPath": "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\Idoklad.csproj", + "packagesPath": "C:\\Users\\GamingPC\\.nuget\\packages\\", + "outputPath": "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\GamingPC\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\CustomNuGetPackages": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "10.0.200" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "IdokladSdk": { + "target": "Package", + "version": "[5.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.NewtonsoftJson": { + "target": "Package", + "version": "[8.0.11, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[6.9.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.204/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache new file mode 100644 index 0000000..6a89919 --- /dev/null +++ b/obj/project.nuget.cache @@ -0,0 +1,28 @@ +{ + "version": 2, + "dgSpecHash": "JrrcwEj1SyE=", + "success": true, + "projectFilePath": "D:\\GitHubRepository\\Hracicky\\x\\idoklad\\Idoklad.csproj", + "expectedPackageFiles": [ + "C:\\Users\\GamingPC\\.nuget\\packages\\ibannet\\5.16.1\\ibannet.5.16.1.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\idokladsdk\\5.3.0\\idokladsdk.5.3.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.aspnetcore.jsonpatch\\8.0.11\\microsoft.aspnetcore.jsonpatch.8.0.11.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.aspnetcore.mvc.newtonsoftjson\\8.0.11\\microsoft.aspnetcore.mvc.newtonsoftjson.8.0.11.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.extensions.apidescription.server\\6.0.5\\microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.identitymodel.abstractions\\7.6.0\\microsoft.identitymodel.abstractions.7.6.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\7.6.0\\microsoft.identitymodel.jsonwebtokens.7.6.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.identitymodel.logging\\7.6.0\\microsoft.identitymodel.logging.7.6.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.identitymodel.tokens\\7.6.0\\microsoft.identitymodel.tokens.7.6.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\microsoft.openapi\\1.6.14\\microsoft.openapi.1.6.14.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\newtonsoft.json.bson\\1.0.2\\newtonsoft.json.bson.1.0.2.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\swashbuckle.aspnetcore\\6.9.0\\swashbuckle.aspnetcore.6.9.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\6.9.0\\swashbuckle.aspnetcore.swagger.6.9.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.9.0\\swashbuckle.aspnetcore.swaggergen.6.9.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.9.0\\swashbuckle.aspnetcore.swaggerui.6.9.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\system.componentmodel.annotations\\5.0.0\\system.componentmodel.annotations.5.0.0.nupkg.sha512", + "C:\\Users\\GamingPC\\.nuget\\packages\\system.identitymodel.tokens.jwt\\7.6.0\\system.identitymodel.tokens.jwt.7.6.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file