diff --git a/EnvelopeGenerator.API/Documentation/AuthProxyDocumentFilter.cs b/EnvelopeGenerator.API/Documentation/AuthProxyDocumentFilter.cs
new file mode 100644
index 00000000..d4ae7480
--- /dev/null
+++ b/EnvelopeGenerator.API/Documentation/AuthProxyDocumentFilter.cs
@@ -0,0 +1,70 @@
+using EnvelopeGenerator.API.Models;
+using Microsoft.OpenApi.Any;
+using Microsoft.OpenApi.Models;
+using Swashbuckle.AspNetCore.SwaggerGen;
+
+namespace EnvelopeGenerator.API.Documentation;
+
+///
+///
+///
+public sealed class AuthProxyDocumentFilter : IDocumentFilter
+{
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
+ {
+ const string path = "/api/auth";
+
+ var loginSchema = context.SchemaGenerator.GenerateSchema(typeof(Login), context.SchemaRepository);
+ var loginExample = new OpenApiObject
+ {
+ ["password"] = new OpenApiString(""),
+ ["username"] = new OpenApiString("")
+ };
+
+ var operation = new OpenApiOperation
+ {
+ Summary = "Proxy login (auth-hub)",
+ Description = "Proxies the request to the auth service. Add query parameter `cookie=true|false`.",
+ Tags = [new() { Name = "Auth" }],
+ Parameters =
+ {
+ new OpenApiParameter
+ {
+ Name = "cookie",
+ In = ParameterLocation.Query,
+ Required = false,
+ Schema = new OpenApiSchema { Type = "boolean", Default = new OpenApiBoolean(true) },
+ Example = new OpenApiBoolean(true),
+ Description = "If true, auth service sets the auth cookie."
+ }
+ },
+ RequestBody = new OpenApiRequestBody
+ {
+ Required = true,
+ Content =
+ {
+ ["application/json"] = new OpenApiMediaType { Schema = loginSchema, Example = loginExample },
+ ["multipart/form-data"] = new OpenApiMediaType { Schema = loginSchema, Example = loginExample }
+ }
+ },
+ Responses =
+ {
+ ["200"] = new OpenApiResponse { Description = "OK (proxied response)" },
+ ["401"] = new OpenApiResponse { Description = "Unauthorized" }
+ }
+ };
+
+ swaggerDoc.Paths[path] = new OpenApiPathItem
+ {
+ Operations =
+ {
+ [OperationType.Post] = operation
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git a/EnvelopeGenerator.API/Program.cs b/EnvelopeGenerator.API/Program.cs
index cd63d65c..468e1d82 100644
--- a/EnvelopeGenerator.API/Program.cs
+++ b/EnvelopeGenerator.API/Program.cs
@@ -106,6 +106,8 @@ try
{
options.IncludeXmlComments(xmlFile);
}
+
+ options.DocumentFilter();
});
builder.Services.AddOpenApi();