Skip to content

Commit a623a65

Browse files
committed
Added CRM endpoints to Swagger
1 parent 0bb68b8 commit a623a65

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

server/src/main/java/invite/SwaggerOpenIdConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.springframework.context.annotation.Configuration;
1212
import org.springframework.web.filter.ForwardedHeaderFilter;
1313

14+
import static invite.security.SecurityConfig.API_KEY_HEADER;
1415
import static invite.security.SecurityConfig.API_TOKEN_HEADER;
1516

1617
@Configuration
@@ -20,6 +21,7 @@ public class SwaggerOpenIdConfig {
2021
public static final String OPEN_ID_SCHEME_NAME = "openId";
2122
public static final String API_TOKENS_SCHEME_NAME = "apiTokens";
2223
public static final String BASIC_AUTHENTICATION_SCHEME_NAME = "basic_auth";
24+
public static final String API_HEADER_SCHEME_NAME = "apiHeaders";
2325

2426
@Bean
2527
OpenAPI customOpenApi(@Value("${spring.security.oauth2.client.provider.oidcng.authorization-uri}") String authorizationUrl,
@@ -39,13 +41,19 @@ OpenAPI customOpenApi(@Value("${spring.security.oauth2.client.provider.oidcng.au
3941
.in(SecurityScheme.In.HEADER)
4042
.name(API_TOKEN_HEADER);
4143

44+
SecurityScheme apiHeaderSecurityScheme = new SecurityScheme()
45+
.type(SecurityScheme.Type.APIKEY)
46+
.in(SecurityScheme.In.HEADER)
47+
.name(API_KEY_HEADER);
48+
4249
SecurityScheme basicAuthentication = new SecurityScheme()
4350
.type(SecurityScheme.Type.HTTP)
4451
.scheme("basic");
4552

4653
Components components = new Components()
4754
.addSecuritySchemes(OPEN_ID_SCHEME_NAME, openIdSecuritySchema)
4855
.addSecuritySchemes(API_TOKENS_SCHEME_NAME, apiTokensSecurityScheme)
56+
.addSecuritySchemes(API_HEADER_SCHEME_NAME, apiHeaderSecurityScheme)
4957
.addSecuritySchemes(BASIC_AUTHENTICATION_SCHEME_NAME, basicAuthentication);
5058

5159
OpenAPI openAPI = new OpenAPI()
@@ -59,6 +67,7 @@ OpenAPI customOpenApi(@Value("${spring.security.oauth2.client.provider.oidcng.au
5967
openAPI.components(components)
6068
.addSecurityItem(new SecurityRequirement().addList(OPEN_ID_SCHEME_NAME))
6169
.addSecurityItem(new SecurityRequirement().addList(API_TOKENS_SCHEME_NAME))
70+
.addSecurityItem(new SecurityRequirement().addList(API_HEADER_SCHEME_NAME))
6271
.addSecurityItem(new SecurityRequirement().addList(BASIC_AUTHENTICATION_SCHEME_NAME));
6372
return openAPI;
6473
}

server/src/main/java/invite/crm/CRMController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import invite.repository.InvitationRepository;
2828
import invite.repository.RoleRepository;
2929
import invite.repository.UserRepository;
30+
import io.swagger.v3.oas.annotations.Operation;
31+
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
3032
import org.apache.commons.logging.Log;
3133
import org.apache.commons.logging.LogFactory;
3234
import org.jspecify.annotations.NonNull;
@@ -50,11 +52,13 @@
5052
import java.util.Set;
5153
import java.util.stream.Collectors;
5254

55+
import static invite.SwaggerOpenIdConfig.API_HEADER_SCHEME_NAME;
5356
import static invite.api.InvitationOperations.identityProviderName;
5457

5558
@RestController
5659
@RequestMapping(value = {"/api/internal/v1/crm"}, produces = MediaType.APPLICATION_JSON_VALUE)
5760
@Transactional
61+
@SecurityRequirement(name = API_HEADER_SCHEME_NAME)
5862
public class CRMController {
5963

6064
private static final Log LOG = LogFactory.getLog(CRMController.class);
@@ -108,6 +112,8 @@ public CRMController(@Value("${crm.collab-person-prefix}") String collabPersonPr
108112
}
109113

110114
@PostMapping("")
115+
@Operation(summary = "Create, update CRM role memberships",
116+
description = "Add or delete the CRM roles to the CRM contact")
111117
public ResponseEntity<String> contact(@RequestBody CRMContact crmContact) {
112118
LOG.debug("POST /api/external/v1/crm: " + crmContact);
113119

@@ -127,6 +133,8 @@ public ResponseEntity<String> contact(@RequestBody CRMContact crmContact) {
127133
}
128134

129135
@DeleteMapping("")
136+
@Operation(summary = "Delete CRM profile",
137+
description = "Delete CRM profile")
130138
public ResponseEntity<String> delete(@RequestBody CRMContact crmContact) {
131139
LOG.debug("DELETE /api/external/v1/crm: " + crmContact);
132140

server/src/main/resources/application.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,9 @@ manage:
222222
# staticManageDirectory: file:///usr/local/etc/manage
223223

224224
springdoc:
225-
pathsToMatch: "/api/external/v1/**"
225+
pathsToMatch:
226+
- "/api/external/v1/**"
227+
- "/api/internal/v1/crm"
226228
api-docs:
227229
enabled: true
228230
path: "/ui/api-docs"

0 commit comments

Comments
 (0)