From cc9645c7802727ce584aa12c83fbb462db7c3548 Mon Sep 17 00:00:00 2001 From: Anthony Kovach Date: Sat, 14 Mar 2026 02:58:28 -0400 Subject: [PATCH] add security schemes to OpenAPI document for SwaggerUI authentication --- .../HelldiversDocumentProcessor.cs | 24 ++++++++++++++++++ .../SuperHeadersProcessor.cs | 25 ++++--------------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/Helldivers-2-API/OpenApi/DocumentProcessors/HelldiversDocumentProcessor.cs b/src/Helldivers-2-API/OpenApi/DocumentProcessors/HelldiversDocumentProcessor.cs index ae42331..ac7d426 100644 --- a/src/Helldivers-2-API/OpenApi/DocumentProcessors/HelldiversDocumentProcessor.cs +++ b/src/Helldivers-2-API/OpenApi/DocumentProcessors/HelldiversDocumentProcessor.cs @@ -41,6 +41,30 @@ public void Process(DocumentProcessorContext context) property.OneOf.Clear(); } } + + context.Document.SecurityDefinitions.Add(Constants.CLIENT_HEADER_NAME, new OpenApiSecurityScheme + { + Type = OpenApiSecuritySchemeType.ApiKey, + In = OpenApiSecurityApiKeyLocation.Header, + Name = Constants.CLIENT_HEADER_NAME, + Description = "A unique name that identifies your client to the API." + }); + + context.Document.SecurityDefinitions.Add(Constants.CONTACT_HEADER_NAME, new OpenApiSecurityScheme + { + Type = OpenApiSecuritySchemeType.ApiKey, + In = OpenApiSecurityApiKeyLocation.Header, + Name = Constants.CONTACT_HEADER_NAME, + Description = "Contact information for the developer (e.g. an email address or URL)." + }); + + context.Document.SecurityDefinitions.Add("Bearer", new OpenApiSecurityScheme + { + Type = OpenApiSecuritySchemeType.Http, + Scheme = "bearer", + BearerFormat = "JWT", + Description = "A JWT bearer token for authenticated access." + }); } } #endif diff --git a/src/Helldivers-2-API/OpenApi/OperationProcessors/SuperHeadersProcessor.cs b/src/Helldivers-2-API/OpenApi/OperationProcessors/SuperHeadersProcessor.cs index ff014fa..a01598f 100644 --- a/src/Helldivers-2-API/OpenApi/OperationProcessors/SuperHeadersProcessor.cs +++ b/src/Helldivers-2-API/OpenApi/OperationProcessors/SuperHeadersProcessor.cs @@ -14,27 +14,12 @@ public class SuperHeadersProcessor : IOperationProcessor /// public bool Process(OperationProcessorContext context) { - context.OperationDescription.Operation.Parameters.Add( - new OpenApiParameter + context.OperationDescription.Operation.Security ??= []; + context.OperationDescription.Operation.Security.Add( + new OpenApiSecurityRequirement { - Name = Constants.CLIENT_HEADER_NAME, - Kind = OpenApiParameterKind.Header, - Type = NJsonSchema.JsonObjectType.String, - IsRequired = true, - Description = "The name of the header that identifies the client to the API.", - Default = string.Empty - } - ); - - context.OperationDescription.Operation.Parameters.Add( - new OpenApiParameter - { - Name = Constants.CONTACT_HEADER_NAME, - Kind = OpenApiParameterKind.Header, - Type = NJsonSchema.JsonObjectType.String, - IsRequired = true, - Description = "The name of the header with developer contact information.", - Default = string.Empty + { Constants.CLIENT_HEADER_NAME, [] }, + { Constants.CONTACT_HEADER_NAME, [] } } );