/**
 * NOTE: This class is auto generated by the swagger code generator program (2.4.8).
 * https://github.com/swagger-api/swagger-codegen
 * Do not edit the class manually.
 */
package nl.uva.sne.drip.api;

import org.springframework.core.io.Resource;
import io.swagger.annotations.*;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
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;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
@javax.annotation.Generated(value = "nl.uva.sne.drip.codegen.languages.SpringCodegen", date = "2019-10-09T14:00:37.436Z")

@Api(value = "topolog_template", description = "the topolog_template API")
public interface TopologTemplateApi {

    @ApiOperation(value = "upload a topolog template description file", nickname = "addTopologTemplate", notes = "", authorizations = {
        @Authorization(value = "drip_auth", scopes = {
            @AuthorizationScope(scope = "write:TopologTemplate", description = "modify topolog template in your account"),
            @AuthorizationScope(scope = "read:TopologTemplate", description = "read your topolog template")
            })
    }, tags={  })
    @ApiResponses(value = { 
        @ApiResponse(code = 405, message = "Invalid input") })
    @RequestMapping(value = "/topolog_template",
        consumes = { "multipart/form-data" },
        method = RequestMethod.POST)
    ResponseEntity<Void> addTopologTemplate(@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file);


    @ApiOperation(value = "Find topolog template by ID", nickname = "getTopologTemplateById", notes = "Returns a single topolog template", authorizations = {
        @Authorization(value = "drip_auth", scopes = {
            @AuthorizationScope(scope = "write:TopologTemplate", description = "modify topolog template in your account"),
            @AuthorizationScope(scope = "read:TopologTemplate", description = "read your topolog template")
            })
    }, tags={  })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "successful operation"),
        @ApiResponse(code = 400, message = "Invalid ID supplied"),
        @ApiResponse(code = 404, message = "TopologTemplate not found"),
        @ApiResponse(code = 405, message = "Invalid input") })
    @RequestMapping(value = "/topolog_template/{TopologTemplateId}",
        produces = { "text/plain" }, 
        method = RequestMethod.GET)
    ResponseEntity<Void> getTopologTemplateById(@ApiParam(value = "ID of topolog template to return",required=true) @PathVariable("TopologTemplateId") Long topologTemplateId);


    @ApiOperation(value = "Deletes a topolog template", nickname = "topologTemplate", notes = "", authorizations = {
        @Authorization(value = "drip_auth", scopes = {
            @AuthorizationScope(scope = "write:TopologTemplate", description = "modify topolog template in your account"),
            @AuthorizationScope(scope = "read:TopologTemplate", description = "read your topolog template")
            })
    }, tags={  })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "successful operation"),
        @ApiResponse(code = 400, message = "Invalid ID supplied"),
        @ApiResponse(code = 404, message = "TopologTemplate not found") })
    @RequestMapping(value = "/topolog_template/{TopologTemplateId}",
        method = RequestMethod.DELETE)
    ResponseEntity<Void> topologTemplate(@ApiParam(value = "ID of topolog template to return",required=true) @PathVariable("TopologTemplateId") Long topologTemplateId,@ApiParam(value = "" ) @RequestHeader(value="api_key", required=false) String apiKey);


    @ApiOperation(value = "Updates exisintg topolog template in the store", nickname = "updateTopologTemplate", notes = "", authorizations = {
        @Authorization(value = "drip_auth", scopes = {
            @AuthorizationScope(scope = "write:TopologTemplate", description = "modify topolog template in your account"),
            @AuthorizationScope(scope = "read:TopologTemplate", description = "read your topolog template")
            })
    }, tags={  })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "successful operation"),
        @ApiResponse(code = 400, message = "Invalid ID supplied"),
        @ApiResponse(code = 404, message = "TopologTemplate not found"),
        @ApiResponse(code = 405, message = "Invalid input") })
    @RequestMapping(value = "/topolog_template/{TopologTemplateId}",
        produces = { "application/json" }, 
        consumes = { "multipart/form-data" },
        method = RequestMethod.POST)
    ResponseEntity<Void> updateTopologTemplate(@ApiParam(value = "ID of topolog template to return",required=true) @PathVariable("TopologTemplateId") Long topologTemplateId,@ApiParam(value = "file detail") @Valid @RequestPart("file") MultipartFile file);

}
