Skip to content

Commit 1f23b01

Browse files
authored
[Spring] fix Paginated without params (#15315) (fix #15265)
1 parent da96058 commit 1f23b01

File tree

16 files changed

+510
-23
lines changed

16 files changed

+510
-23
lines changed

modules/openapi-generator/src/main/resources/JavaSpring/api.mustache

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,20 +244,20 @@ public interface {{classname}} {
244244
{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>cookieParams}}{{^-last}},
245245
{{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}},
246246
{{/hasParams}}{{#swagger2AnnotationLibrary}}@Parameter(hidden = true){{/swagger2AnnotationLibrary}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}} final ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}},
247-
{{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore {{/springFoxDocumentationProvider}}{{#springDocDocumentationProvider}}@ParameterObject {{/springDocDocumentationProvider}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}
247+
{{/hasParams}}{{^hasParams}}{{#reactive}},{{/reactive}}{{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore {{/springFoxDocumentationProvider}}{{#springDocDocumentationProvider}}@ParameterObject {{/springDocDocumentationProvider}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}
248248
){{#unhandledException}} throws Exception{{/unhandledException}}{{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}} {
249249
{{#delegate-method}}
250-
{{^isVoid}}return {{/isVoid}}{{#isVoid}}{{#useResponseEntity}}return {{/useResponseEntity}}{{^useResponseEntity}}{{#reactive}}return {{/reactive}}{{/useResponseEntity}}{{/isVoid}}{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, pageable{{/vendorExtensions.x-spring-paginated}});
250+
{{^isVoid}}return {{/isVoid}}{{#isVoid}}{{#useResponseEntity}}return {{/useResponseEntity}}{{^useResponseEntity}}{{#reactive}}return {{/reactive}}{{/useResponseEntity}}{{/isVoid}}{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}pageable{{/vendorExtensions.x-spring-paginated}});
251251
}
252252

253253
// Override this method
254-
{{#jdk8-default-interface}}default {{/jdk8-default-interface}} {{#responseWrapper}}{{.}}<{{/responseWrapper}}{{#useResponseEntity}}ResponseEntity<{{/useResponseEntity}}{{>returnTypes}}{{#useResponseEntity}}>{{/useResponseEntity}}{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}} final ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, {{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}} final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}} {
254+
{{#jdk8-default-interface}}default {{/jdk8-default-interface}} {{#responseWrapper}}{{.}}<{{/responseWrapper}}{{#useResponseEntity}}ResponseEntity<{{/useResponseEntity}}{{>returnTypes}}{{#useResponseEntity}}>{{/useResponseEntity}}{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}} final ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}} {
255255
{{/delegate-method}}
256256
{{^isDelegate}}
257257
{{>methodBody}}
258258
{{/isDelegate}}
259259
{{#isDelegate}}
260-
{{^isVoid}}return {{/isVoid}}{{#isVoid}}{{#useResponseEntity}}return {{/useResponseEntity}}{{^useResponseEntity}}{{#reactive}}return {{/reactive}}{{/useResponseEntity}}{{/isVoid}}getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, pageable{{/vendorExtensions.x-spring-paginated}});
260+
{{^isVoid}}return {{/isVoid}}{{#isVoid}}{{#useResponseEntity}}return {{/useResponseEntity}}{{^useResponseEntity}}{{#reactive}}return {{/reactive}}{{/useResponseEntity}}{{/isVoid}}getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}pageable{{/vendorExtensions.x-spring-paginated}});
261261
{{/isDelegate}}
262262
}{{/jdk8-default-interface}}
263263

modules/openapi-generator/src/main/resources/JavaSpring/apiController.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public class {{classname}}Controller implements {{classname}} {
122122
public {{#responseWrapper}}{{.}}<{{/responseWrapper}}{{#useResponseEntity}}ResponseEntity<{{/useResponseEntity}}{{>returnTypes}}{{#useResponseEntity}}>{{/useResponseEntity}}{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}(
123123
{{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>cookieParams}}{{^-last}},
124124
{{/-last}}{{/allParams}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}},
125-
{{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore {{/springFoxDocumentationProvider}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}
125+
{{/hasParams}}{{^hasParams}}{{#reactive}},{{/reactive}}{{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore {{/springFoxDocumentationProvider}}{{#springDocDocumentationProvider}}@ParameterObject {{/springDocDocumentationProvider}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}
126126
) {
127127
{{^isDelegate}}
128128
{{^async}}
@@ -138,7 +138,7 @@ public class {{classname}}Controller implements {{classname}} {
138138
{{/async}}
139139
{{/isDelegate}}
140140
{{#isDelegate}}
141-
{{^isVoid}}return {{/isVoid}}{{#isVoid}}{{#useResponseEntity}}return {{/useResponseEntity}}{{^useResponseEntity}}{{#reactive}}return {{/reactive}}{{/useResponseEntity}}{{/isVoid}}delegate.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#vendorExtensions.x-spring-paginated}}, pageable{{/vendorExtensions.x-spring-paginated}});
141+
{{^isVoid}}return {{/isVoid}}{{#isVoid}}{{#useResponseEntity}}return {{/useResponseEntity}}{{^useResponseEntity}}{{#reactive}}return {{/reactive}}{{/useResponseEntity}}{{/isVoid}}delegate.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}pageable{{/vendorExtensions.x-spring-paginated}});
142142
{{/isDelegate}}
143143
}
144144

modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public interface {{classname}}Delegate {
6464
{{/isDeprecated}}
6565
{{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{#responseWrapper}}{{.}}<{{/responseWrapper}}{{#useResponseEntity}}ResponseEntity<{{/useResponseEntity}}{{>returnTypes}}{{#useResponseEntity}}>{{/useResponseEntity}}{{#responseWrapper}}>{{/responseWrapper}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#isArray}}List<{{/isArray}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{#isArray}}>{{/isArray}}{{/isFile}} {{paramName}}{{^-last}},
6666
{{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}},
67-
{{/hasParams}}ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}, final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}}{{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}} {
67+
{{/hasParams}}ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}}{{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}} {
6868
{{>methodBody}}
6969
}{{/jdk8-default-interface}}
7070

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 70 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -868,8 +868,7 @@ private void beanValidationForFormatEmail(boolean useBeanValidation, boolean per
868868
Map<String, File> files = generator.opts(input).generate().stream()
869869
.collect(Collectors.toMap(File::getName, Function.identity()));
870870

871-
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("PersonWithEmail.java"))
872-
.printFileContent();
871+
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("PersonWithEmail.java"));
873872
if (useBeanValidation) javaFileAssert.hasImports((useJakarta? "jakarta" : "javax") + ".validation.constraints");
874873
if (performBeanValidation) javaFileAssert.hasImports("org.hibernate.validator.constraints");
875874
assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/PersonWithEmail.java"), contains);
@@ -946,6 +945,71 @@ public void shouldGenerateValidCodeForReactiveControllerWithoutParams_issue14907
946945
.assertMethod("readAgreements", "ServerWebExchange");
947946
}
948947

948+
@Test
949+
public void shouldGenerateValidCodeWithPaginated_reactive_issue15265() throws IOException {
950+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
951+
output.deleteOnExit();
952+
953+
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/bugs/issue_15265.yaml");
954+
final SpringCodegen codegen = new SpringCodegen();
955+
codegen.setOpenAPI(openAPI);
956+
codegen.setOutputDir(output.getAbsolutePath());
957+
958+
codegen.additionalProperties().put(SpringCodegen.REACTIVE, "true");
959+
codegen.additionalProperties().put(USE_TAGS, "true");
960+
codegen.additionalProperties().put(SpringCodegen.DATE_LIBRARY, "java8");
961+
codegen.additionalProperties().put(INTERFACE_ONLY, "true");
962+
codegen.additionalProperties().put(SKIP_DEFAULT_INTERFACE, "true");
963+
codegen.additionalProperties().put(IMPLICIT_HEADERS, "true");
964+
codegen.additionalProperties().put(OPENAPI_NULLABLE, "false");
965+
966+
ClientOptInput input = new ClientOptInput();
967+
input.openAPI(openAPI);
968+
input.config(codegen);
969+
970+
DefaultGenerator generator = new DefaultGenerator();
971+
972+
Map<String, File> files = generator.opts(input).generate().stream()
973+
.collect(Collectors.toMap(File::getName, Function.identity()));
974+
975+
JavaFileAssert.assertThat(files.get("ConsentControllerApi.java"))
976+
.assertMethod("paginated", "ServerWebExchange", "Pageable")
977+
.toFileAssert()
978+
.assertMethod("paginatedWithParams", "String", "ServerWebExchange", "Pageable");
979+
}
980+
981+
@Test
982+
public void shouldGenerateValidCodeWithPaginated_nonReactive_issue15265() throws IOException {
983+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
984+
output.deleteOnExit();
985+
986+
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/bugs/issue_15265.yaml");
987+
final SpringCodegen codegen = new SpringCodegen();
988+
codegen.setOpenAPI(openAPI);
989+
codegen.setOutputDir(output.getAbsolutePath());
990+
991+
codegen.additionalProperties().put(USE_TAGS, "true");
992+
codegen.additionalProperties().put(SpringCodegen.DATE_LIBRARY, "java8");
993+
codegen.additionalProperties().put(INTERFACE_ONLY, "true");
994+
codegen.additionalProperties().put(SKIP_DEFAULT_INTERFACE, "true");
995+
codegen.additionalProperties().put(IMPLICIT_HEADERS, "true");
996+
codegen.additionalProperties().put(OPENAPI_NULLABLE, "false");
997+
998+
ClientOptInput input = new ClientOptInput();
999+
input.openAPI(openAPI);
1000+
input.config(codegen);
1001+
1002+
DefaultGenerator generator = new DefaultGenerator();
1003+
1004+
Map<String, File> files = generator.opts(input).generate().stream()
1005+
.collect(Collectors.toMap(File::getName, Function.identity()));
1006+
1007+
JavaFileAssert.assertThat(files.get("ConsentControllerApi.java"))
1008+
.assertMethod("paginated", "Pageable")
1009+
.toFileAssert()
1010+
.assertMethod("paginatedWithParams", "String", "Pageable");
1011+
}
1012+
9491013
@Test
9501014
public void shouldEscapeReservedKeyWordsForRequestParameters_7506_Regression() throws Exception {
9511015
final SpringCodegen codegen = new SpringCodegen();
@@ -1483,7 +1547,6 @@ public void shouldGenerateExternalDocs() throws IOException {
14831547
.collect(Collectors.toMap(File::getName, Function.identity()));
14841548

14851549
JavaFileAssert.assertThat(files.get("PetApi.java"))
1486-
.printFileContent()
14871550
.hasImports("io.swagger.v3.oas.annotations.ExternalDocumentation")
14881551
.assertMethod("updatePet")
14891552
.assertMethodAnnotations()
@@ -1831,7 +1894,6 @@ public void shouldGenerateBeanValidationOnHeaderParams() throws IOException {
18311894
.collect(Collectors.toMap(File::getName, Function.identity()));
18321895

18331896
JavaFileAssert.assertThat(files.get("SomeMethodApi.java"))
1834-
.printFileContent()
18351897
.assertMethod("methodWithValidation")
18361898
.hasParameter("headerOne")
18371899
.assertParameterAnnotations()
@@ -1872,8 +1934,7 @@ public void requiredFieldShouldIncludeNotNullAnnotation_issue13365() throws IOEx
18721934
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_13365.yml");
18731935

18741936
//Assert that NotNull annotation exists alone with no other BeanValidation annotations
1875-
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Person.java"))
1876-
.printFileContent();
1937+
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Person.java"));
18771938
javaFileAssert.assertMethod("getName").assertMethodAnnotations()
18781939
.containsWithName("NotNull").anyMatch(annotation ->
18791940
!annotation.getNameAsString().equals("Valid") ||
@@ -1904,8 +1965,7 @@ public void requiredFieldShouldIncludeNotNullAnnotationJakarta_issue13365_issue1
19041965
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_13365.yml");
19051966

19061967
//Assert that NotNull annotation exists alone with no other BeanValidation annotations
1907-
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Person.java"))
1908-
.printFileContent();
1968+
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Person.java"));
19091969
javaFileAssert.assertMethod("getName").assertMethodAnnotations()
19101970
.containsWithName("NotNull").anyMatch(annotation ->
19111971
!annotation.getNameAsString().equals("Valid") ||
@@ -1933,8 +1993,7 @@ public void nonRequiredFieldShouldNotIncludeNotNullAnnotation_issue13365() throw
19331993

19341994
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_13365.yml");
19351995

1936-
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Alien.java"))
1937-
.printFileContent();
1996+
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Alien.java"));
19381997
javaFileAssert.assertMethod("getName")
19391998
.assertMethodAnnotations().anyMatch(annotation -> !annotation.getNameAsString().equals("NotNull"));
19401999
javaFileAssert.hasNoImports("javax.validation.constraints.NotNull");
@@ -1950,7 +2009,6 @@ public void requiredFieldShouldIncludeNotNullAnnotationWithBeanValidationTrue_is
19502009
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_14252.yaml");
19512010

19522011
JavaFileAssert.assertThat(files.get("MyResponse.java"))
1953-
.printFileContent()
19542012
.hasImports("com.fasterxml.jackson.databind.annotation.JsonSerialize", "com.fasterxml.jackson.databind.ser.std.ToStringSerializer")
19552013
.assertMethod("getMyPropTypeNumber")
19562014
.assertMethodAnnotations()
@@ -1977,8 +2035,7 @@ public void requiredFieldShouldIncludeNotNullAnnotationWithBeanValidationTrue_is
19772035

19782036
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_13365.yml");
19792037

1980-
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Person.java"))
1981-
.printFileContent();
2038+
JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("Person.java"));
19822039
javaFileAssert.assertMethod("getName").assertMethodAnnotations()
19832040
.containsWithName("NotNull").containsWithName("Size").containsWithName("javax.validation.constraints.Email");
19842041
javaFileAssert
@@ -2010,7 +2067,6 @@ public void shouldUseEqualsNullableForArrayWhenSetInConfig_issue13385() throws I
20102067
.collect(Collectors.toMap(File::getName, Function.identity()));
20112068

20122069
JavaFileAssert.assertThat(files.get("TestObject.java"))
2013-
.printFileContent()
20142070
.assertMethod("equals")
20152071
.bodyContainsLines("return equalsNullable(this.picture, testObject.picture);");
20162072

@@ -2041,7 +2097,6 @@ public void shouldNotUseEqualsNullableForArrayWhenNotSetInConfig_issue13385() th
20412097
.collect(Collectors.toMap(File::getName, Function.identity()));
20422098

20432099
JavaFileAssert.assertThat(files.get("TestObject.java"))
2044-
.printFileContent()
20452100
.assertMethod("equals")
20462101
.bodyContainsLines("return Arrays.equals(this.picture, testObject.picture);");
20472102
}
@@ -2071,7 +2126,6 @@ public void useBeanValidationGenerateAnnotationsForRequestBody_issue13932() thro
20712126
.collect(Collectors.toMap(File::getName, Function.identity()));
20722127

20732128
JavaFileAssert.assertThat(files.get("AddApi.java"))
2074-
.printFileContent()
20752129
.assertMethod("addPost")
20762130
.hasParameter("body")
20772131
.assertParameterAnnotations()

modules/openapi-generator/src/test/resources/3_0/spring/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,34 @@ paths:
124124
- write:pets
125125
- read:pets
126126
x-spring-paginated: true
127+
/pet/all:
128+
get:
129+
tags:
130+
- pet
131+
summary: List all pets
132+
operationId: listAllPets
133+
responses:
134+
200:
135+
description: successful operation
136+
content:
137+
application/xml:
138+
schema:
139+
type: array
140+
items:
141+
$ref: '#/components/schemas/Pet'
142+
application/json:
143+
schema:
144+
type: array
145+
items:
146+
$ref: '#/components/schemas/Pet'
147+
400:
148+
description: Invalid status value
149+
content: { }
150+
security:
151+
- petstore_auth:
152+
- write:pets
153+
- read:pets
154+
x-spring-paginated: true
127155
/pet/findByTags:
128156
get:
129157
tags:

0 commit comments

Comments
 (0)