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

import io.swagger.model.Error;
import io.swagger.model.Pet;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
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.security.SecurityRequirement;
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 org.springframework.web.bind.annotation.CookieValue;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
import java.util.Map;

@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2021-02-10T23:33:14.005Z[GMT]")
public interface PetsApi {

    @Operation(summary = "Create a pet", description = "", tags={ "pets" })
    @ApiResponses(value = {
        @ApiResponse(responseCode = "201", description = "Null response"),

        @ApiResponse(responseCode = "200", description = "unexpected error", content = @Content(schema = @Schema(implementation = Error.class))) })
    @RequestMapping(value = "/pets",
        produces = { "application/json" },
        consumes = { "application/json" },
        method = RequestMethod.POST)
    ResponseEntity<Void> createPets(@Parameter(in = ParameterIn.DEFAULT, description = "Pet to add to the store", required=true, schema=@Schema()) @Valid @RequestBody Pet body);


    @Operation(summary = "Delete a specific pet", description = "", tags={ "pets" })
    @ApiResponses(value = {
        @ApiResponse(responseCode = "200", description = "Expected response to a valid request", content = @Content(schema = @Schema(implementation = Pet.class))),

        @ApiResponse(responseCode = "200", description = "unexpected error", content = @Content(schema = @Schema(implementation = Error.class))) })
    @RequestMapping(value = "/pets/{petId}",
        produces = { "application/json" },
        method = RequestMethod.DELETE)
    ResponseEntity<Pet> deletePetById(@Parameter(in = ParameterIn.PATH, description = "The id of the pet to delete", required=true, schema=@Schema()) @PathVariable("petId") String petId, @Parameter(in = ParameterIn.HEADER, description = "The key header" ,required=true,schema=@Schema()) @RequestHeader(value="key", required=true) String key);


    @Operation(summary = "List all pets", description = "", tags={ "pets" })
    @ApiResponses(value = {
        @ApiResponse(responseCode = "200", description = "An paged array of pets", content = @Content(array = @ArraySchema(schema = @Schema(implementation = Pet.class)))),

        @ApiResponse(responseCode = "200", description = "unexpected error", content = @Content(schema = @Schema(implementation = Error.class))) })
    @RequestMapping(value = "/pets",
        produces = { "application/json" },
        method = RequestMethod.GET)
    ResponseEntity<List<Pet>> listPets(@Parameter(in = ParameterIn.QUERY, description = "How many items to return at one time (max 100)" ,schema=@Schema()) @Valid @RequestParam(value = "limit", required = false) Integer limit);


    @Operation(summary = "Info for a specific pet", description = "", tags={ "pets" })
    @ApiResponses(value = {
        @ApiResponse(responseCode = "200", description = "Expected response to a valid request", content = @Content(schema = @Schema(implementation = Pet.class))),

        @ApiResponse(responseCode = "200", description = "unexpected error", content = @Content(schema = @Schema(implementation = Error.class))) })
    @RequestMapping(value = "/pets/{petId}",
        produces = { "application/json" },
        method = RequestMethod.GET)
    ResponseEntity<Pet> showPetById(@Parameter(in = ParameterIn.PATH, description = "The id of the pet to retrieve", required=true, schema=@Schema()) @PathVariable("petId") String petId);

}
