Tune Swagger doc (#2436)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2025-06-09 12:52:55 +03:00
committed by GitHub
parent 0e0b5ed6ff
commit 32ad93c59c
2 changed files with 21 additions and 7 deletions

View File

@@ -9,6 +9,7 @@
*/ */
package org.eclipse.hawkbit.ddi.rest.resource; package org.eclipse.hawkbit.ddi.rest.resource;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement; import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import org.eclipse.hawkbit.rest.OpenApiConfiguration; import org.eclipse.hawkbit.rest.OpenApiConfiguration;
@@ -24,7 +25,7 @@ import org.springframework.context.annotation.Configuration;
matchIfMissing = true) matchIfMissing = true)
public class DdiOpenApiConfiguration { public class DdiOpenApiConfiguration {
private static final String DDI_TOKEN_SEC_SCHEME_NAME = "DDI Target/GatewayToken Authentication"; private static final String DDI_TOKEN_SEC_SCHEME_NAME = "Token";
@Bean @Bean
@ConditionalOnProperty( @ConditionalOnProperty(
@@ -38,16 +39,20 @@ public class DdiOpenApiConfiguration {
.pathsToMatch("/{tenant}/controller/**") .pathsToMatch("/{tenant}/controller/**")
.addOpenApiCustomizer(openApi -> .addOpenApiCustomizer(openApi ->
openApi openApi
.info(new Info()
.title("Direct Device Integration API")
.version("v1")
.description("The Direct Device Integration (DDI) API provides a way for devices to interact directly with the hawkBit."))
.addSecurityItem(new SecurityRequirement().addList(DDI_TOKEN_SEC_SCHEME_NAME)) .addSecurityItem(new SecurityRequirement().addList(DDI_TOKEN_SEC_SCHEME_NAME))
.components( .components(
openApi openApi
.getComponents() .getComponents()
.addSecuritySchemes(DDI_TOKEN_SEC_SCHEME_NAME, .addSecuritySchemes(DDI_TOKEN_SEC_SCHEME_NAME,
new SecurityScheme() new SecurityScheme()
.name("Authorization") .name(DDI_TOKEN_SEC_SCHEME_NAME)
.description("Format: (Target|Gateway)Token &lt;token&gt;")
.type(SecurityScheme.Type.APIKEY) .type(SecurityScheme.Type.APIKEY)
.in(SecurityScheme.In.HEADER) .in(SecurityScheme.In.HEADER))))
.description("Format: (Target|Gateway)Token &lt;token&gt;"))))
.build(); .build();
} }
} }

View File

@@ -9,6 +9,7 @@
*/ */
package org.eclipse.hawkbit.mgmt.rest.resource; package org.eclipse.hawkbit.mgmt.rest.resource;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement; import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.security.SecurityScheme;
import org.eclipse.hawkbit.rest.OpenApiConfiguration; import org.eclipse.hawkbit.rest.OpenApiConfiguration;
@@ -24,8 +25,8 @@ import org.springframework.context.annotation.Configuration;
matchIfMissing = true) matchIfMissing = true)
public class MgmtOpenApiConfiguration { public class MgmtOpenApiConfiguration {
private static final String BASIC_AUTH_SEC_SCHEME_NAME = "Basic Authentication"; private static final String BASIC_AUTH_SEC_SCHEME_NAME = "Basic";
private static final String BEARER_AUTH_SEC_SCHEME_NAME = "Bearer Authentication"; private static final String BEARER_AUTH_SEC_SCHEME_NAME = "Bearer";
@Bean @Bean
@ConditionalOnProperty( @ConditionalOnProperty(
@@ -36,9 +37,15 @@ public class MgmtOpenApiConfiguration {
return GroupedOpenApi return GroupedOpenApi
.builder() .builder()
.group("Management API") .group("Management API")
.pathsToMatch("/rest/v*/**") .pathsToMatch("/rest/v*/**", "/{tenant}/rest/v*/**")
.addOpenApiCustomizer(openApi -> .addOpenApiCustomizer(openApi ->
openApi openApi
.info(new Info()
.title("Management API")
.description("""
The Management API provides access to the management features of the hawkBit.
It allows for managing devices, deployments, and other.
"""))
.addSecurityItem(new SecurityRequirement() .addSecurityItem(new SecurityRequirement()
.addList(BASIC_AUTH_SEC_SCHEME_NAME) .addList(BASIC_AUTH_SEC_SCHEME_NAME)
.addList(BEARER_AUTH_SEC_SCHEME_NAME)) .addList(BEARER_AUTH_SEC_SCHEME_NAME))
@@ -48,12 +55,14 @@ public class MgmtOpenApiConfiguration {
.addSecuritySchemes(BASIC_AUTH_SEC_SCHEME_NAME, .addSecuritySchemes(BASIC_AUTH_SEC_SCHEME_NAME,
new SecurityScheme() new SecurityScheme()
.name(BASIC_AUTH_SEC_SCHEME_NAME) .name(BASIC_AUTH_SEC_SCHEME_NAME)
.description(BASIC_AUTH_SEC_SCHEME_NAME + " Authentication")
.type(SecurityScheme.Type.HTTP) .type(SecurityScheme.Type.HTTP)
.in(SecurityScheme.In.HEADER) .in(SecurityScheme.In.HEADER)
.scheme("basic")) .scheme("basic"))
.addSecuritySchemes(BEARER_AUTH_SEC_SCHEME_NAME, .addSecuritySchemes(BEARER_AUTH_SEC_SCHEME_NAME,
new SecurityScheme() new SecurityScheme()
.name(BEARER_AUTH_SEC_SCHEME_NAME) .name(BEARER_AUTH_SEC_SCHEME_NAME)
.description(BEARER_AUTH_SEC_SCHEME_NAME + " Authentication")
.type(SecurityScheme.Type.HTTP) .type(SecurityScheme.Type.HTTP)
.in(SecurityScheme.In.HEADER) .in(SecurityScheme.In.HEADER)
.bearerFormat("JWT") .bearerFormat("JWT")