package {{apiPackage}};

import static org.springframework.http.MediaType.*;
import java.util.List;
import java.util.Map;
{{#imports}}import {{import}};
{{/imports}}
import org.apache.servicecomb.provider.rest.common.RestSchema;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;

@RestSchema(schemaId = "{{#camelcase}}{{classname}}{{/camelcase}}")
@RequestMapping(value = "{{#getRelativeBasePath}}{{basePath}}{{/getRelativeBasePath}}", produces = {APPLICATION_JSON_VALUE})
{{#operations}}
public class {{classname}} {

  {{>libraries/SpringBoot/operationMethod}}
}
{{/operations}}