/**
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) ({{{generatorVersion}}}).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
package {{package}}

{{#imports}}import {{import}}
{{/imports}}
{{#swagger2AnnotationLibrary}}
    import io.swagger.v3.oas.annotations.*
    import io.swagger.v3.oas.annotations.enums.*
    import io.swagger.v3.oas.annotations.media.*
    import io.swagger.v3.oas.annotations.responses.*
    import io.swagger.v3.oas.annotations.security.*
{{/swagger2AnnotationLibrary}}
{{#swagger1AnnotationLibrary}}
    import io.swagger.annotations.Api
    import io.swagger.annotations.ApiOperation
    import io.swagger.annotations.ApiParam
    import io.swagger.annotations.ApiResponse
    import io.swagger.annotations.ApiResponses
    import io.swagger.annotations.Authorization
    import io.swagger.annotations.AuthorizationScope
{{/swagger1AnnotationLibrary}}
import org.springframework.http.HttpStatus
import org.springframework.http.MediaType
import org.springframework.http.ResponseEntity

import org.springframework.web.bind.annotation.*
{{#useBeanValidation}}
    import org.springframework.validation.annotation.Validated
{{/useBeanValidation}}
import org.springframework.web.context.request.NativeWebRequest
import org.springframework.beans.factory.annotation.Autowired

{{#useBeanValidation}}
    import {{javaxPackage}}.validation.constraints.DecimalMax
    import {{javaxPackage}}.validation.constraints.DecimalMin
    import {{javaxPackage}}.validation.constraints.Email
    import {{javaxPackage}}.validation.constraints.Max
    import {{javaxPackage}}.validation.constraints.Min
    import {{javaxPackage}}.validation.constraints.NotNull
    import {{javaxPackage}}.validation.constraints.Pattern
    import {{javaxPackage}}.validation.constraints.Size
    import {{javaxPackage}}.validation.Valid
{{/useBeanValidation}}

{{#reactive}}
    import kotlinx.coroutines.flow.Flow
{{/reactive}}
import kotlin.collections.List
import kotlin.collections.Map
import dev.usbharu.hideout.generate.JsonOrFormBind

{{#useBeanValidation}}
    @Validated
{{/useBeanValidation}}
{{#swagger1AnnotationLibrary}}
    @Api(value = "{{{baseName}}}", description = "The {{{baseName}}} API")
{{/swagger1AnnotationLibrary}}
{{^useFeignClient}}
    {{=<% %>=}}
    @RequestMapping("\${api.base-path:<%contextPath%>}")
    <%={{ }}=%>
{{/useFeignClient}}
{{#operations}}
    interface {{classname}} {
    {{#isDelegate}}

        fun getDelegate(): {{classname}}Delegate = object: {{classname}}Delegate {}
    {{/isDelegate}}
    {{#operation}}

        {{#swagger2AnnotationLibrary}}
            @Operation(
            summary = "{{{summary}}}",
            operationId = "{{{operationId}}}",
            description = """{{{unescapedNotes}}}""",
            responses = [{{#responses}}
                ApiResponse(responseCode = "{{{code}}}", description = "{{{message}}}"{{#baseType}}, content = [Content({{#isArray}}array = ArraySchema({{/isArray}}schema = Schema(implementation = {{{baseType}}}::class)){{#isArray}}){{/isArray}}]{{/baseType}}){{^-last}},{{/-last}}{{/responses}}
            ]{{#hasAuthMethods}},
            security = [ {{#authMethods}}SecurityRequirement(name = "{{name}}"{{#isOAuth}}, scopes = [ {{#scopes}}"{{scope}}"{{^-last}}, {{/-last}}{{/scopes}} ]{{/isOAuth}}){{^-last}},{{/-last}}{{/authMethods}} ]{{/hasAuthMethods}}
            ){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}
            @ApiOperation(
            value = "{{{summary}}}",
            nickname = "{{{operationId}}}",
            notes = "{{{notes}}}"{{#returnBaseType}},
            response = {{{.}}}::class{{/returnBaseType}}{{#returnContainer}},
            responseContainer = "{{{.}}}"{{/returnContainer}}{{#hasAuthMethods}},
            authorizations = [{{#authMethods}}Authorization(value = "{{name}}"{{#isOAuth}}, scopes = [{{#scopes}}AuthorizationScope(scope = "{{scope}}", description = "{{description}}"){{^-last}}, {{/-last}}{{/scopes}}]{{/isOAuth}}){{^-last}}, {{/-last}}{{/authMethods}}]{{/hasAuthMethods}})
            @ApiResponses(
            value = [{{#responses}}ApiResponse(code = {{{code}}}, message = "{{{message}}}"{{#baseType}}, response = {{{.}}}::class{{/baseType}}{{#containerType}}, responseContainer = "{{{.}}}"{{/containerType}}){{^-last}}, {{/-last}}{{/responses}}]){{/swagger1AnnotationLibrary}}
        @RequestMapping(
        method = [RequestMethod.{{httpMethod}}],
        value = ["{{#lambda.escapeDoubleQuote}}{{path}}{{/lambda.escapeDoubleQuote}}"]{{#singleContentTypes}}{{#hasProduces}},
        produces = "{{{vendorExtensions.x-accepts}}}"{{/hasProduces}}{{#hasConsumes}},
        consumes = "{{{vendorExtensions.x-content-type}}}"{{/hasConsumes}}{{/singleContentTypes}}{{^singleContentTypes}}{{#hasProduces}},
        produces = [{{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}}]{{/hasProduces}}{{#hasConsumes}},
        consumes = [{{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}}]{{/hasConsumes}}{{/singleContentTypes}}
        )
        {{#reactive}}{{^isArray}}suspend {{/isArray}}{{/reactive}}fun {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}},{{/-last}}{{/allParams}}): ResponseEntity<{{>returnTypes}}>{{^skipDefaultInterface}} {
        {{^isDelegate}}
            return {{>returnValue}}
        {{/isDelegate}}
        {{#isDelegate}}
            return getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}})
        {{/isDelegate}}
        }{{/skipDefaultInterface}}
    {{/operation}}
    }
{{/operations}}
