SchemaPropertiesResource.java

package io.swagger.v3.jaxrs2.resources;

import io.swagger.v3.jaxrs2.resources.model.MultipleBaseBean;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.SchemaProperty;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import io.swagger.v3.oas.annotations.responses.ApiResponse;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

public class SchemaPropertiesResource {

    @GET
    @Path("/")
    @Operation(
            summary = "Simple get operation",
            description = "Defines a simple get operation with no inputs and a complex output object",
            operationId = "getWithPayloadResponse",
            deprecated = true,
            responses = {
                    @ApiResponse(
                            responseCode = "200",
                            description = "voila!",
                            content = @Content(
                                    mediaType = "application/json",
                                    schemaProperties = {
                                            @SchemaProperty(
                                                    name = "foo",
                                                    schema = @Schema(
                                                            type = "integer",
                                                            maximum = "1"
                                                    )
                                            )
                                    }
                            )
                    ),
                    @ApiResponse(
                            description = "boo",
                            content = @Content(
                                    schema = @Schema(
                                            type = "object",
                                            description = "various properties",
                                            maxProperties = 3
                                    ),
                                    mediaType = "application/json",
                                    schemaProperties = {
                                            @SchemaProperty(
                                                    name = "foo",
                                                    schema = @Schema(
                                                            type = "integer",
                                                            maximum = "1"
                                                    )
                                            )
                                    }
                            )
                    ),
                    @ApiResponse(
                            responseCode = "400",
                            description = "additionalProperties schema",
                            content = @Content(
                                    mediaType = "application/json",
                                    schema = @Schema(
                                            type = "object",
                                            maxProperties = 2
                                    ),
                                    additionalPropertiesSchema = @Schema(
                                            type = "string"
                                    )
                            )
                    ),
                    @ApiResponse(
                            responseCode = "401",
                            description = "additionalProperties boolean",
                            content = @Content(
                                    mediaType = "application/json",
                                    schema = @Schema(
                                            type = "object",
                                            maxProperties = 2,
                                            additionalProperties = Schema.AdditionalPropertiesValue.FALSE
                                    )
                            )
                    )
            }
    )
    public void getResponses() {
    }

    @GET
    @Path("/one")
    @Produces({MediaType.APPLICATION_JSON})
    public MultipleBaseBean requestBodySchemaPropertyNoSchema(
            @RequestBody(
                    content = @Content(
                            mediaType = "application/yaml",
                            schemaProperties = {
                                    @SchemaProperty(
                                            name = "foo",
                                            schema = @Schema(
                                                    type = "string"
                                            )
                                    )
                            }
                    )
            ) Object body) {
        return null;
    }

    @GET
    @Path("/two")
    @Produces({MediaType.APPLICATION_JSON})
    public MultipleBaseBean requestBodySchemaPropertySchema(
            @RequestBody(
                    content = @Content(
                            mediaType = "application/yaml",
                            schema = @Schema(
                                    type = "object",
                                    requiredProperties = {
                                            "foo"
                                    }
                            ),
                            schemaProperties= {
                                    @SchemaProperty(
                                            name = "foo",
                                            schema = @Schema(
                                                    type = "string"
                                            )
                                    )
                            }
                    )
            ) Object body) {
        return null;
    }

    @GET
    @Path("/three")
    @Produces({MediaType.APPLICATION_JSON})
    public MultipleBaseBean requestBodySchemaPropertySchemaArray(
            @RequestBody(
                    content = @Content(
                            mediaType = "application/yaml",
                            array = @ArraySchema(
                                    schema = @Schema(
                                            type = "object",
                                            requiredProperties = {
                                                    "foo"
                                            }
                                    )
                            ),
                            schemaProperties = {
                                    @SchemaProperty(
                                            name = "foo",
                                            schema = @Schema(
                                                    type = "string"
                                            )
                                    )
                            }
                    )
            ) Object body) {
        return null;
    }
}