diff --git a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java index f3d29751..f138b7fd 100644 --- a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java +++ b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java @@ -115,14 +115,11 @@ public class GenerateOpenApiSpecAction extends AbstractQActionFunction()); openAPI.setPaths(new LinkedHashMap<>()); @@ -134,27 +131,23 @@ public class GenerateOpenApiSpecAction extends AbstractQActionFunction scopes = new LinkedHashMap<>(); // todo, or not todo? .withScopes(scopes) securitySchemes.put("OAuth2", new OAuth2() .withFlows(MapBuilder.of("clientCredentials", new OAuth2Flow() - .withTokenUrl("/api/oauth/token") - )) - ); + .withTokenUrl("/api/oauth/token")))); + componentSchemas.put("baseSearchResultFields", new Schema() .withType("object") .withProperties(MapBuilder.of( @@ -167,8 +160,7 @@ public class GenerateOpenApiSpecAction extends AbstractQActionFunction buildStandardErrorResponses() + private static Map buildStandardErrorResponses(ApiInstanceMetaData apiInstanceMetaData) { - return MapBuilder.of( + Map rs = MapBuilder.of( HttpStatus.BAD_REQUEST.getCode(), new Response().withRef("#/components/responses/error" + HttpStatus.BAD_REQUEST.getCode()), HttpStatus.UNAUTHORIZED.getCode(), new Response().withRef("#/components/responses/error" + HttpStatus.UNAUTHORIZED.getCode()), HttpStatus.FORBIDDEN.getCode(), new Response().withRef("#/components/responses/error" + HttpStatus.FORBIDDEN.getCode()), HttpStatus.INTERNAL_SERVER_ERROR.getCode(), new Response().withRef("#/components/responses/error" + HttpStatus.INTERNAL_SERVER_ERROR.getCode()) ); + + if(apiInstanceMetaData.getIncludeErrorTooManyRequests()) + { + rs.put(HttpStatus.TOO_MANY_REQUESTS.getCode(), new Response().withRef("#/components/responses/error" + HttpStatus.TOO_MANY_REQUESTS.getCode())); + } + + return (rs); } diff --git a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/ApiInstanceMetaData.java b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/ApiInstanceMetaData.java index c2e4707b..7faeebbc 100644 --- a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/ApiInstanceMetaData.java +++ b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/ApiInstanceMetaData.java @@ -50,6 +50,8 @@ public class ApiInstanceMetaData extends QMiddlewareInstanceMetaData private List pastVersions; private List futureVersions; + private boolean includeErrorTooManyRequests = true; + /******************************************************************************* @@ -120,6 +122,7 @@ public class ApiInstanceMetaData extends QMiddlewareInstanceMetaData } } + // todo - find duplicate tableApiNames!! } @@ -339,4 +342,35 @@ public class ApiInstanceMetaData extends QMiddlewareInstanceMetaData return (this); } + + + /******************************************************************************* + ** Getter for includeErrorTooManyRequests + *******************************************************************************/ + public boolean getIncludeErrorTooManyRequests() + { + return (this.includeErrorTooManyRequests); + } + + + + /******************************************************************************* + ** Setter for includeErrorTooManyRequests + *******************************************************************************/ + public void setIncludeErrorTooManyRequests(boolean includeErrorTooManyRequests) + { + this.includeErrorTooManyRequests = includeErrorTooManyRequests; + } + + + + /******************************************************************************* + ** Fluent setter for includeErrorTooManyRequests + *******************************************************************************/ + public ApiInstanceMetaData withIncludeErrorTooManyRequests(boolean includeErrorTooManyRequests) + { + this.includeErrorTooManyRequests = includeErrorTooManyRequests; + return (this); + } + }