I am struggling with java annotations to return definition of Maps in my
Models. I am aware of the additionalProperties stuff. What I want it to
have them listed among the "definitions" in the swagger.json output
For instance, I am returning data such as:
```
{
"en": "Hi there!",
"fr": "Salut !"
}
```
What should I do with my java annotations / classes definitions to finally
get something like that in swagger-ui:
```
Labels {
description: a map lang -> label
< * >: string
}
```
I know how the swagger.json file must look like (example below), but I
don't know how to have it generated using annotations in my java source
For instance, here is a simple Resource that returns a Map language ->
label:
```
@Path("test")
@Produces(MediaType.APPLICATION_JSON)
@Api(tags={"Test"})
public class TestResource {
@GET
@ApiOperation(value = "Testing labels")
@ApiResponses(value = {
@ApiResponse(code = HttpURLConnection.HTTP_OK, message = "Some
labels returned by the test salutation resource", response = Labels.class)
})
public Labels getResponse() {
Labels labels = new Labels();
labels.put("en","Hi there!");
labels.put("fr", "Salut !");
return labels;
}
@ApiModel(description="a Map lang -> label")
static public class Labels extends LinkedHashMap<String, String> {
}
}
```
Here is the swagger.json that gets generated:
```
{
"swagger": "2.0",
"tags": [
{
"name": "Test"
}
],
"paths": {
"/test": {
"get": {
"tags": [
"Test"
],
"summary": "Testing labels",
"description": "",
"operationId": "getResponse",
"produces": [
"application/json"
],
"parameters": [ ],
"responses": {
"200": {
"description": "Some labels",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
}
}
}
```
Here how it looks in swagger-ui ("Model") :
```
{
< * >: string
}
``
How could I get the following, using java annotations:
```
{
"swagger": "2.0",
"tags": [
{
"name": "Test"
}
],
"paths": {
"/test": {
"get": {
"tags": [
"Test"
],
"summary": "Testing labels",
"description": "",
"operationId": "getResponse",
"produces": [
"application/json"
],
"parameters": [ ],
"responses": {
"200": {
"description": "Some labels",
"schema": {
"$ref": "#/definitions/Labels"
}
}
}
}
}
},
"definitions": {
"Labels": {
"type": "object",
"description": "a map lang -> label",
"additionalProperties": {
"type": "string"
}
}
}
}
```
in order to get the following in swagger-ui:
```
Labels {
description: a map lang -> label
< * >: string
}
```
TIA
fps
--
You received this message because you are subscribed to the Google Groups
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.