using EonaCat.Json; namespace EonaCat.DoxaApi.Models { // This file is part of the EonaCat project(s) which is released under the Apache License. // See the LICENSE file or go to https://EonaCat.com/license for full license details. /// /// Describes how a single security scheme authenticates requests. /// Mirrors the relevant parts of the OpenAPI "securityScheme" object so it can be /// losslessly exported to OpenAPI/Swagger, while also carrying enough information /// for the DoxaApi UI to render a live "Try it" authorization form. /// public sealed class SecuritySchemeModel { [JsonProperty("id")] public string Id { get; set; } = ""; /// apiKey | http | oauth2 | openIdConnect [JsonProperty("type")] public string Type { get; set; } = "apiKey"; [JsonProperty("description")] public string? Description { get; set; } /// For apiKey: header | query | cookie [JsonProperty("in")] public string? In { get; set; } /// For apiKey: the header/query/cookie name. For http: ignored. [JsonProperty("name")] public string? Name { get; set; } /// For http: bearer | basic | digest [JsonProperty("scheme")] public string? Scheme { get; set; } /// For http bearer: an informational hint such as "JWT". [JsonProperty("bearerFormat")] public string? BearerFormat { get; set; } /// For oauth2: supported flows (clientCredentials, authorizationCode, password, implicit). [JsonProperty("flows")] public OAuthFlowsModel? Flows { get; set; } } public sealed class OAuthFlowsModel { [JsonProperty("clientCredentials")] public OAuthFlowModel? ClientCredentials { get; set; } [JsonProperty("authorizationCode")] public OAuthFlowModel? AuthorizationCode { get; set; } [JsonProperty("password")] public OAuthFlowModel? Password { get; set; } [JsonProperty("implicit")] public OAuthFlowModel? Implicit { get; set; } } public sealed class OAuthFlowModel { [JsonProperty("authorizationUrl")] public string? AuthorizationUrl { get; set; } [JsonProperty("tokenUrl")] public string? TokenUrl { get; set; } [JsonProperty("refreshUrl")] public string? RefreshUrl { get; set; } [JsonProperty("scopes")] public Dictionary Scopes { get; set; } = new(); } }