/**
 * NOTE: This class is auto generated by the swagger code generator program (3.0.18).
 * https://github.com/swagger-api/swagger-codegen
 * Do not edit the class manually.
 */
package io.swagger.api.geno;

import io.swagger.model.geno.VendorOrderListResponse;
import io.swagger.model.geno.VendorOrderStatusResponse;
import io.swagger.model.geno.VendorOrderSubmissionRequest;
import io.swagger.model.geno.VendorOrderSubmissionSingleResponse;
import io.swagger.model.geno.VendorPlateListResponse;
import io.swagger.model.geno.VendorPlateSubmissionIdSingleResponse;
import io.swagger.model.geno.VendorPlateSubmissionRequest;
import io.swagger.model.geno.VendorPlateSubmissionSingleResponse;
import io.swagger.model.geno.VendorResultFileListResponse;
import io.swagger.model.geno.VendorSpecificationSingleResponse;
import io.swagger.annotations.*;

import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
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 jakarta.validation.Valid;

@javax.annotation.processing.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2020-03-20T16:32:53.794Z[GMT]")
@Api(value = "vendor", description = "the vendor API")
public interface VendorApi {

	@ApiOperation(value = "List current available orders", nickname = "vendorOrdersGet", notes = "List current available orders", response = VendorOrderListResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = { @ApiResponse(code = 200, message = "OK", response = VendorOrderListResponse.class),
			@ApiResponse(code = 400, message = "Bad Request", response = String.class),
			@ApiResponse(code = 401, message = "Unauthorized", response = String.class),
			@ApiResponse(code = 403, message = "Forbidden", response = String.class) })
	@RequestMapping(value = "/vendor/orders", produces = { "application/json" }, method = RequestMethod.GET)
	ResponseEntity<VendorOrderListResponse> vendorOrdersGet(
			@ApiParam(value = "The order id returned by the vendor when the order was successfully submitted. From response of \"POST /vendor/orders\"") @Valid @RequestParam(value = "orderId", required = false) String orderId,
			@ApiParam(value = "The submission id returned by the vendor when a set of plates was successfully submitted. From response of \"POST /vendor/plates\"") @Valid @RequestParam(value = "submissionId", required = false) String submissionId,
			@ApiParam(value = "Used to request a specific page of data to be returned.  The page indexing starts at 0 (the first page is 'page'= 0). Default is `0`.") @Valid @RequestParam(value = "page", required = false) Integer page,
			@ApiParam(value = "The size of the pages to be returned. Default is `1000`.") @Valid @RequestParam(value = "pageSize", required = false) Integer pageSize,
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

	@ApiOperation(value = "Get the Plates for a specific Order", nickname = "vendorOrdersOrderIdPlatesGet", notes = "Retrieve the plate and sample details of an order being processed", response = VendorPlateListResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = { @ApiResponse(code = 200, message = "OK", response = VendorPlateListResponse.class),
			@ApiResponse(code = 400, message = "Bad Request", response = String.class),
			@ApiResponse(code = 401, message = "Unauthorized", response = String.class),
			@ApiResponse(code = 403, message = "Forbidden", response = String.class),
			@ApiResponse(code = 404, message = "Not Found", response = String.class) })
	@RequestMapping(value = "/vendor/orders/{orderId}/plates", produces = {
			"application/json" }, method = RequestMethod.GET)
	ResponseEntity<VendorPlateListResponse> vendorOrdersOrderIdPlatesGet(
			@ApiParam(value = "The order id returned by the vendor when the order was successfully submitted.", required = true) @PathVariable("orderId") String orderId,
			@ApiParam(value = "Used to request a specific page of data to be returned.  The page indexing starts at 0 (the first page is 'page'= 0). Default is `0`.") @Valid @RequestParam(value = "page", required = false) Integer page,
			@ApiParam(value = "The size of the pages to be returned. Default is `1000`.") @Valid @RequestParam(value = "pageSize", required = false) Integer pageSize,
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

	@ApiOperation(value = "Get the results of a specific Order", nickname = "vendorOrdersOrderIdResultsGet", notes = "Retrieve the data files generated by the vendors analysis", response = VendorResultFileListResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = { @ApiResponse(code = 200, message = "OK", response = VendorResultFileListResponse.class),
			@ApiResponse(code = 400, message = "Bad Request", response = String.class),
			@ApiResponse(code = 401, message = "Unauthorized", response = String.class),
			@ApiResponse(code = 403, message = "Forbidden", response = String.class),
			@ApiResponse(code = 404, message = "Not Found", response = String.class) })
	@RequestMapping(value = "/vendor/orders/{orderId}/results", produces = {
			"application/json" }, method = RequestMethod.GET)
	ResponseEntity<VendorResultFileListResponse> vendorOrdersOrderIdResultsGet(
			@ApiParam(value = "The order id returned by the vendor when the order was successfully submitted.", required = true) @PathVariable("orderId") String orderId,
			@ApiParam(value = "Used to request a specific page of data to be returned.  The page indexing starts at 0 (the first page is 'page'= 0). Default is `0`.") @Valid @RequestParam(value = "page", required = false) Integer page,
			@ApiParam(value = "The size of the pages to be returned. Default is `1000`.") @Valid @RequestParam(value = "pageSize", required = false) Integer pageSize,
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

	@ApiOperation(value = "Get the status of a specific Order", nickname = "vendorOrdersOrderIdStatusGet", notes = "Retrieve the current status of an order being processed", response = VendorOrderStatusResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = { @ApiResponse(code = 200, message = "OK", response = VendorOrderStatusResponse.class),
			@ApiResponse(code = 400, message = "Bad Request", response = String.class),
			@ApiResponse(code = 401, message = "Unauthorized", response = String.class),
			@ApiResponse(code = 403, message = "Forbidden", response = String.class),
			@ApiResponse(code = 404, message = "Not Found", response = String.class) })
	@RequestMapping(value = "/vendor/orders/{orderId}/status", produces = {
			"application/json" }, method = RequestMethod.GET)
	ResponseEntity<VendorOrderStatusResponse> vendorOrdersOrderIdStatusGet(
			@ApiParam(value = "The order id returned by the vendor when the order was successfully submitted.", required = true) @PathVariable("orderId") String orderId,
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

	@ApiOperation(value = "Submit New Order", nickname = "vendorOrdersPost", notes = "Submit a new order to a vendor", response = VendorOrderSubmissionSingleResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = {
			@ApiResponse(code = 200, message = "OK", response = VendorOrderSubmissionSingleResponse.class),
			@ApiResponse(code = 400, message = "Bad Request", response = String.class),
			@ApiResponse(code = 401, message = "Unauthorized", response = String.class),
			@ApiResponse(code = 403, message = "Forbidden", response = String.class) })
	@RequestMapping(value = "/vendor/orders", produces = { "application/json" }, consumes = {
			"application/json" }, method = RequestMethod.POST)
	ResponseEntity<VendorOrderSubmissionSingleResponse> vendorOrdersPost(
			@ApiParam(value = "") @Valid @RequestBody VendorOrderSubmissionRequest body,
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

	@ApiOperation(value = "Submit a new set of Sample data", nickname = "vendorPlatesPost", notes = "Submit a new set of Sample data", response = VendorPlateSubmissionIdSingleResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = {
			@ApiResponse(code = 200, message = "OK", response = VendorPlateSubmissionIdSingleResponse.class),
			@ApiResponse(code = 400, message = "Bad Request", response = String.class),
			@ApiResponse(code = 401, message = "Unauthorized", response = String.class),
			@ApiResponse(code = 403, message = "Forbidden", response = String.class) })
	@RequestMapping(value = "/vendor/plates", produces = { "application/json" }, consumes = {
			"application/json" }, method = RequestMethod.POST)
	ResponseEntity<VendorPlateSubmissionIdSingleResponse> vendorPlatesPost(
			@ApiParam(value = "") @Valid @RequestBody VendorPlateSubmissionRequest body,
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

	@ApiOperation(value = "Get the data for a submitted set of plates", nickname = "vendorPlatesSubmissionIdGet", notes = "Get data for a submitted set of plates", response = VendorPlateSubmissionSingleResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = {
			@ApiResponse(code = 200, message = "OK", response = VendorPlateSubmissionSingleResponse.class),
			@ApiResponse(code = 400, message = "Bad Request", response = String.class),
			@ApiResponse(code = 401, message = "Unauthorized", response = String.class),
			@ApiResponse(code = 403, message = "Forbidden", response = String.class),
			@ApiResponse(code = 404, message = "Not Found", response = String.class) })
	@RequestMapping(value = "/vendor/plates/{submissionId}", produces = {
			"application/json" }, method = RequestMethod.GET)
	ResponseEntity<VendorPlateSubmissionSingleResponse> vendorPlatesSubmissionIdGet(
			@ApiParam(value = "The submission id returned by the vendor when a set of plates was successfully submitted. From response of \"POST /vendor/plates\"", required = true) @PathVariable("submissionId") String submissionId,
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

	@ApiOperation(value = "Get the Vendor Specifications", nickname = "vendorSpecificationsGet", notes = "Defines the plate format specification for the vendor.", response = VendorSpecificationSingleResponse.class, authorizations = {
			@Authorization(value = "AuthorizationToken") }, tags = { "Vendor", })
	@ApiResponses(value = {
			@ApiResponse(code = 200, message = "OK", response = VendorSpecificationSingleResponse.class) })
	@RequestMapping(value = "/vendor/specifications", produces = { "application/json" }, method = RequestMethod.GET)
	ResponseEntity<VendorSpecificationSingleResponse> vendorSpecificationsGet(
			@ApiParam(value = "HTTP HEADER - Token used for Authorization   <strong> Bearer {token_string} </strong>") @RequestHeader(value = "Authorization", required = false) String authorization)
			throws BrAPIServerException;

}
