LinksAndContent31Resource.java

package io.swagger.v3.jaxrs2.petstore.link;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.StringToClassMapItem;
import io.swagger.v3.oas.annotations.extensions.Extension;
import io.swagger.v3.oas.annotations.extensions.ExtensionProperty;
import io.swagger.v3.oas.annotations.links.Link;
import io.swagger.v3.oas.annotations.links.LinkParameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.DependentSchema;
import io.swagger.v3.oas.annotations.media.DependentSchemas;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;

/**
 * Class with Links
 */
public class LinksAndContent31Resource {
    @Path("/links")
    @Operation(operationId = "getUserWithAddress",
            responses = {
                    @ApiResponse(description = "test description",
                            content = @Content(
                                    mediaType = "*/*",
                                    schema = @Schema(
                                            types = { "object" }
                                    ),
                                    dependentSchemas = {
                                            @DependentSchema(
                                                    name = "value",
                                                    schema = @Schema(
                                                            types = {
                                                                    "string",
                                                                    "number"
                                                            }
                                                    )
                                            )
                                    }
                            ),
                            links = {
                                    @Link(
                                            name = "address",
                                            operationId = "getAddress",
                                            parameters = @LinkParameter(
                                                    name = "userId",
                                                    expression = "$request.query.userId")),
                                    @Link(
                                            name = "user",
                                            operationId = "getUser",
                                            operationRef = "#/components/links/MyLink",
                                            parameters = @LinkParameter(
                                                    name = "userId",
                                                    expression = "$request.query.userId"),
                                            extensions = @Extension(
                                                    name = "x-one",
                                                    properties = {
                                                            @ExtensionProperty(
                                                                    name = "x-sample-extension",
                                                                    value = "true"
                                                            )
                                                    }
                                            )

                                    )
                            })}
    )
    @GET
    public String getUser(@QueryParam("userId")final String userId) {
        return null;
    }

}