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