All Downloads are FREE. Search and download functionalities are using the official Maven repository.

java.OpenAPI.xpt Maven / Gradle / Ivy

There is a newer version: 1.24.1
Show newest version
«EXTENSION java::Naming»
«EXTENSION java::GeneratorCommons»
«EXTENSION java::OpenAPIFunctions»
«EXTENSION entity::ModelProperties»
«EXTENSION functions::Enumeration»
«EXTENSION functions::OpenAPISpecification»


«IMPORT uml»
«IMPORT JMM»
«IMPORT java»
«IMPORT entity»
«IMPORT jeaf»

«EXTENSION org::openarchitectureware::util::stdlib::io»

«DEFINE GenerateOpenAPI FOR OpenAPI3Specification»
	«FILE resourceName res_gen-»
openapi: «getOpenAPIVersion()»

info:
  title: «name»
  version: «IF apiVersion.length > 0»«apiVersion»«ELSE»«getMavenVersion()»«ENDIF»
  «IF this.hasComment() -»
  description: «getOpenAPICommentStyle()»
    «this.getCommentForOpenAPIDescription("    ")»
  «ENDIF-»
  «IF this.getTermsOfUseURL().length > 0 -»
  termsOfService: «this.getTermsOfUseURL()»
  «ENDIF -»
  «IF this.getContactName().length > 0 || this.getContactURL().length > 0 || this.getContactEmail().length > 0 -»
  contact:
    «IF this.getContactName().length >0 -»
    name: «this.getContactName()»
    «ENDIF-»
    «IF this.getContactURL().length > 0 -»
    url: '«this.getContactURL()»'
    «ENDIF-»
    «IF this.getContactEmail().length > 0 -»
    email: «this.getContactEmail()»
    «ENDIF-»
  «ENDIF-»
  «IF this.getLicenseName().length > 0 || this.getLicenseURL().length > 0-»
  license:
    «IF this.getLicenseName().length > 0 -»
    name: «this.getLicenseName()»
    «ENDIF-»
    «IF this.getLicenseURL().length > 0 -»
    url: '«this.getLicenseURL()»'
    «ENDIF-»
  «ENDIF-»    
«IF this.clientDependency.supplier.typeSelect(OpenAPIServer).size > 0-»

servers:
  «FOREACH this.clientDependency.supplier.typeSelect(OpenAPIServer).sortBy(e|e.name).sortBy(e|e.order) AS server-»
  - url: «server.url»
    «IF server.hasComment() -»
    description: «getOpenAPICommentStyle()»
      «server.getCommentForOpenAPIDescription("      ")»
    «ENDIF-»    
  «ENDFOREACH-»

«ENDIF-»
«IF this.clientDependency.supplier.typeSelect(OpenAPITag).size > 0 -»
tags:
«EXPAND GenerateTags FOREACH this.getOrderedOpenAPITags()»
«ENDIF-»
paths:
«IF this.referencesRESTResources()-»
  «EXPAND GeneratePaths»
«ELSE-»
  # OpenAPI standard requires to define at least 1 operation. This API however seems to be a pure type definition. 
  # So we define NOP operation here as workaround.
  /nop:
    get:
      operationId: noOperation
      responses:
        '200':
          description: Nothing is the result of nop ;-)

«ENDIF-»
«IF this.clientDependency.supplier.typeSelect(JMM::OpenAPISecurityScheme).size > 0-»
security:
  «IF this.securityOptional == true-»
  - {}
  «ENDIF-»
  «FOREACH this.clientDependency.supplier.typeSelect(JMM::OpenAPISecurityScheme).sortBy(e|e.name) AS security-»
  - «security.name»: «IF security.type.name == "oauth2" || security.type.name == "openIdConnect"»[«FOREACH security.getOAuthScopes() AS scope SEPARATOR ","»«scope.name»«ENDFOREACH»]«ELSE»[]«ENDIF»
  «ENDFOREACH-»

«ENDIF-»
«IF this.hasOpenAPITypes() || this.hasOpenAPIEnums() || this.hasOpenAPISecuritySchemes()-»
components:
  «IF this.hasOpenAPISecuritySchemes() -»
  securitySchemes:
    «EXPAND java::OpenAPISecurity::GenerateOpenAPISecurityScheme FOREACH this.getOpenAPISecuritySchemes()-»
  «ENDIF-»
  «IF this.hasOpenAPIParameters()-»
  parameters:
    «FOREACH this.getOpenAPIParameters() AS parameter-»
    «IF suppressClassNameCommentInOpenAPISpec() == false-»
    # «parameter.class.fqn()».«parameter.name»
    «ENDIF-»
    «parameter.name»:
      name: «EXPAND RESTParamName FOR parameter»
      in: «parameter.getOpenAPIParameterType()»
      «IF parameter.hasComment()-»
      description: «getOpenAPICommentStyle()»
        «parameter.getCommentForOpenAPIDescription("        ")»
      «ENDIF-»
      schema:
      «IF parameter.type.isBasicOpenAPIType() == true-»
        «IF parameter.isMultivalued() == false-»
        type: «parameter.type.getOpenAPIType(this)»
          «IF parameter.hasOpenAPIFormatForProperty()-»
        format: «parameter.getOpenAPIFormatForProperty()»
          «ENDIF-»
          «IF parameter.hasPatternForProperty() -»
        pattern: '«parameter.getPatternForProperty()»'
          «ENDIF-»
        «ELSE-»
        type: array
          items:
            type: «parameter.type.getOpenAPIType(this)»
          «IF parameter.hasOpenAPIFormatForProperty()-»
            format: «parameter.getOpenAPIFormatForProperty()»
          «ENDIF-»
          «IF parameter.hasPatternForProperty() -»
            pattern: '«parameter.getPatternForProperty()»'
          «ENDIF-»
        «ENDIF-»
        «EXPAND java::OpenAPIHelper::GenerateExample("          ") FOR parameter -»
      «ELSE-»
      	«IF parameter.type.isOpenAPIDataType() -»
      		«IF ((JMM::OpenAPIDataType)parameter.type).compositeDataType -»
        type: string
      		«ELSE-»
        type: «parameter.type.attribute().first().type.getOpenAPIType(this)»
          			«IF parameter.type.attribute().first().hasOpenAPIFormatForProperty()-»
        format: «parameter.type.attribute().first().getOpenAPIFormatForProperty()»
          			«ENDIF-»
          			«IF parameter.type.attribute().first().hasPatternForProperty() -»
        pattern: '«parameter.type.attribute().first().getPatternForProperty()»'
          			«ENDIF-»
        		«EXPAND java::OpenAPIHelper::GenerateExample("          ") FOR parameter -»
      		«ENDIF-»
      	«ELSE-»
      		«IF parameter.type.isEnumeration() -»
        type: string
        «((uml::Enumeration) parameter.type).getEnumerationType()»:
          		«FOREACH ((uml::Enumeration) parameter.type).ownedLiteral AS literal-»
          - «literal.getLiteralName()»
          		«ENDFOREACH-»
          		«IF ((JMM::OpenAPIEnumeration) parameter.type).hasDefaultLiteral()-»
        default: «((JMM::OpenAPIEnumeration) parameter.type).getDefaultLiteral().getLiteralName()»
          		«ENDIF-»
      		«ENDIF-»
      	«ENDIF-»
      «ENDIF-»
      «IF parameter.isRequiredProperty() -»
      required: «parameter.isRequiredProperty()»
      «ENDIF-»
      «IF parameter.isDeprecated() -»
      deprecated: true
      «ENDIF-»

    «ENDFOREACH-»
  «ENDIF-»
  «IF this.getResponses().size > 0-»
  responses:
    «EXPAND GenerateResponse(this) FOREACH this.getResponses()»
  «ENDIF -»
  «IF this.getOpenAPITypes().size > 0 || this.getOpenAPIEnums().size > 0 || this.getOpenAPIDataTypes().size > 0 -»
  schemas:
    «IF this.explicityTypeOrdering == true -»
      «FOREACH this.getOrderedSchemaElements() AS element -»
        «IF element.isStereotypeApplied("OpenAPIType") -»
          «EXPAND java::OpenAPIType::GenerateOpenAPIType(this) FOR ((OpenAPIType) element)»
        «ELSE-»
          «IF element.isStereotypeApplied("OpenAPIDataType") -»
            «EXPAND java::OpenAPIDataType::GenerateOpenAPIDataType(this, null, "", true) FOR ((OpenAPIDataType) element)»
          «ELSE-»
«EXPAND OpenAPIEnumeration::GenerateOpenAPIEnum FOR ((OpenAPIEnumeration) element)»
          «ENDIF-»
        «ENDIF-»
      «ENDFOREACH-»
    «ELSE-»
      «EXPAND java::OpenAPIType::GenerateOpenAPIType(this) FOREACH this.getOpenAPITypes().sortBy(e|e.name)»
      «EXPAND OpenAPIEnumeration::GenerateOpenAPIEnum FOREACH this.getOpenAPIEnums().sortBy(e|e.name)»
      «EXPAND java::OpenAPIDataType::GenerateOpenAPIDataType(this, null, "", true) FOREACH this.getOpenAPIDataTypes().select(e|e.inline == false).sortBy(e|e.name)»
    «ENDIF-»
  «ENDIF -»
«ENDIF-»
«ENDFILE-»
«ENDDEFINE»

«DEFINE RegisterLocalTypes FOR OpenAPI3Specification»
	«REM»Register local OpenAPI types as well as referenced ones.«ENDREM»
	«EXPAND RegisterLocalType(this) FOREACH this.getOpenAPITypes()»
	«EXPAND RegisterLocalType(this) FOREACH this.getOpenAPIEnums()»
	«EXPAND RegisterLocalType(this) FOREACH this.getResponses()»
	«EXPAND RegisterLocalType(this) FOREACH this.getOpenAPIDataTypes()»
	«EXPAND RegisterLocalParameter(this) FOREACH this.getOpenAPIParameters()»
	
	«FOREACH this.clientDependency.typeSelect(OpenAPISpecReference) AS dependency»
	  «FOREACH dependency.supplier.typeSelect(OpenAPI3Specification) AS dependentSpec»
	    «IF dependency.location.length > 0»
	    «registerSpecDependency(this, dependentSpec, dependency.location + dependentSpec.resourceName)»
	    «REM» Also create spec dependency in opposite direction «ENDREM» 
	    «registerSpecDependency(dependentSpec, this, dependency.location + this.resourceName)»
	    «ELSE»
	    «registerSpecDependency(this, dependentSpec, dependentSpec.resourceName)»
	    «REM» Also create spec dependency in opposite direction «ENDREM» 
	    «registerSpecDependency(dependentSpec, this, this.resourceName)»	    
	    «ENDIF»
	  «ENDFOREACH»
	«ENDFOREACH»
	«EXPAND RegisterLocalTypes FOREACH this.getDependentSpecs()»
«ENDDEFINE»

«DEFINE RegisterLocalType(OpenAPI3Specification spec) FOR OpenAPIResponse»
«this.registerLocalType(spec)»
«ENDDEFINE»

«DEFINE RegisterLocalType(OpenAPI3Specification spec) FOR OpenAPIType»
«this.registerLocalType(spec)»
«ENDDEFINE»

«DEFINE RegisterLocalType(OpenAPI3Specification spec) FOR OpenAPIEnumeration»
«this.registerLocalType(spec)»
«ENDDEFINE»

«DEFINE RegisterLocalType(OpenAPI3Specification spec) FOR OpenAPIDataType»
«this.registerLocalType(spec)»
«ENDDEFINE»

«DEFINE RegisterLocalParameter(OpenAPI3Specification spec) FOR Property»
    «this.registerLocalParameter(spec)»
«ENDDEFINE»

«DEFINE GeneratePaths FOR OpenAPI3Specification -»
  «FOREACH this.getRESTResources() AS service -»
  «IF suppressClassNameCommentInOpenAPISpec() == false-»
  # «service.name»
  «ENDIF-»
  «FOREACH service.getPaths() AS path-»
  «IF service.path.length > 0»«service.path»«ENDIF»«IF path.length > 0»/«path»«ENDIF»:
    «FOREACH service.getRESTOperations(path) AS operation-»
    «FOREACH operation.httpMethods AS httpMethod-»
    «httpMethod.toString().toLowerCase()»:
      «IF operation.hasOperationOpenAPITags() -»
      tags:
      «FOREACH operation.getOpenAPITagsForOperation() AS tag -»
        - «tag.name»
      «ENDFOREACH-»
      «ENDIF-»
      «IF operation.summary.length > 0-»
      summary: «operation.summary»
      «ENDIF-»
      «IF operation.hasComment()-»
      description: «getOpenAPICommentStyle()»
        «operation.getCommentForOpenAPIDescription("        ")»
      «ENDIF-»
      operationId: «IF operation.operationID.length > 0»«operation.operationID»«ELSE»«operation.getOperationID(service)»«ENDIF»
      «IF operation.externalDocsURL.length > 0 -»
      externalDocs:
        url: «operation.externalDocsURL»
      «ENDIF-»
      «IF operation.isDeprecated() -»
      deprecated: true
      «ENDIF-»
      «REM»Process REST request paramaters«ENDREM-»
      «IF operation.hasOpenAPIInputParameters() || operation.hasBeanParameters()-»
      parameters:
        «REM»Process bean paramaters«ENDREM-»
        «FOREACH operation.getBeanParams() AS param-»
        «FOREACH param.type.getOpenAPIProperties() AS property-»
        «IF param.inlineBeanParam()-»
        - name: «EXPAND RESTParamName FOR property»
          in: «property.getOpenAPIParameterType()»
          «IF property.hasComment()-»
          description: «getOpenAPICommentStyle()»
            «property.getCommentForOpenAPIDescription("            ")»
          «ENDIF-»
          «IF property.isRequiredProperty() -»
          required: «property.isRequiredProperty()»
          «ENDIF-»
          «IF property.isDeprecated() -»
          deprecated: true
          «ENDIF-»
          «REM»Only basic types are supported as parameters«ENDREM -»
          schema:
            «IF property.type.isBasicOpenAPIType() == true -»
            	«IF property.isMultivalued() && property.type.isByteType() -» 
            type: string
            format: byte
            	«ELSEIF property.isMultivalued() == false -»
            type: «property.type.getOpenAPIType(this)»
            		«IF property.hasOpenAPIFormatForProperty()-»
            format: «property.getOpenAPIFormatForProperty()»
            		«ENDIF-»
                    «IF property.hasPatternForProperty() -»
            pattern: '«property.getPatternForProperty()»'
                    «ENDIF-»
            «EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("      ") FOR property-»
                    «IF property.defaultValue != null -»
            default: '«property.defaultValue.stringValue()»'
                    «ENDIF-»
            	«ELSE-»
            type: array
            «EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("      ") FOR property-»
            items:
              type: «property.type.getOpenAPIType(this)»
              		«IF property.hasOpenAPIFormatForProperty()-»
              format: «property.getOpenAPIFormatForProperty()»
              		«ENDIF-»
                    «IF property.hasPatternForProperty() -»
              pattern: '«property.getPatternForProperty()»'
                    «ENDIF-»
            	«ENDIF -»
                «EXPAND java::OpenAPIHelper::GenerateExample("            ") FOR property -»
            «ELSE -»
              «IF property.type.isOpenAPIDataType() && ((OpenAPIDataType) property.type).inline == true -»
              «EXPAND java::OpenAPIDataType::GenerateOpenAPIDataType(this, property,"  ", false) FOR (OpenAPIDataType) property.type -»
              «ELSE -»
                «IF property.isMultivalued() == false -»
            $ref: «property.type.getOpenAPIType(this)» 
            «EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("      ") FOR property-»
                «ELSE-»
            type: array
            «EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("      ") FOR property-»
            items:
              $ref: «property.type.getOpenAPIType(this)»
                «ENDIF-»
            «ENDIF-»
            «ENDIF-»
        «ELSE-»
        - $ref: «property.getOpenAPIParameter(this)»
        «ENDIF-»
        «ENDFOREACH-»
        «ENDFOREACH-»
        «REM»Process normal parameters«ENDREM-»
        «FOREACH operation.getOpenAPIInputParameters() AS param-»
        - name: «EXPAND RESTParamName FOR param»
          in: «param.getOpenAPIParameterType()»
          «IF param.hasComment()|| param.hasDefaultValueForEnum() -»
          description: «getOpenAPICommentStyle()»
            «IF param.hasComment()-»
            «param.getCommentForOpenAPIDescription("            ")»
            «ENDIF-»
            «IF param.hasDefaultValueForEnum() -»
            Default value: «param.getDefaultValueForEnum()»
            «ENDIF-»
          «ENDIF-»
          «IF param.isRequired() -»
          required: «param.isRequired()»
          «ENDIF-»
          «IF param.isDeprecated() -»
          deprecated: true
          «ENDIF-»
          schema:
            «IF param.type.isBasicOpenAPIType() == true-»
                «IF param.isMultivalued() && param.type.isByteType() -» 
            type: string
            format: byte
            	«ELSEIF param.isMultivalued() == false-»
            type: «param.type.getOpenAPIType(this)»
            		«IF param.hasOpenAPIFormatForParam()-»
            format: «param.getOpenAPIFormatForParam()»
            		«ENDIF-»
                    «IF param.hasPatternForParam() -»
            pattern: '«param.getOpenAPIFormatForParam()»'
                    «ENDIF-»
			«EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("      ") FOR param-»
                  «IF param.hasDefaultValueForBasicType() -»
            default: «param.getDefaultValueForBasicType()»
                  «ENDIF-»
            	«ELSE-»
            type: array
            items:
              type: «param.type.getOpenAPIType(this)»
              		«IF param.hasOpenAPIFormatForParam()-»
              format: «param.getOpenAPIFormatForParam()»
              		«ENDIF-»
                    «IF param.hasPatternForParam() -»
              pattern: '«param.getPatternForParam()»'
                    «ENDIF-»
              «EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("        ") FOR param-»
            	«ENDIF-»
                «EXPAND java::OpenAPIHelper::GenerateExample("            ") FOR param -»
            «ELSE-»
              «IF param.type.isOpenAPIDataType() && ((OpenAPIDataType) param.type).inline == true -»
              «EXPAND java::OpenAPIDataType::GenerateOpenAPIDataTypeForPath(this, param,"") FOR (OpenAPIDataType) param.type -»
              «ELSE -»
                «IF param.isMultivalued() == false -»
            $ref: «param.type.getOpenAPIType(this)» 
            «EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("      ") FOR param-»
                «ELSE-»
            type: array
            «EXPAND java::OpenAPIRestrictions::OpenAPIRestrictions("      ") FOR param-»
            items:
              $ref: «param.type.getOpenAPIType(this)»
                «ENDIF-»
              «ENDIF-»
            «ENDIF-»
        «ENDFOREACH-»
      «ENDIF-»
      «REM»Process request body«ENDREM-»
      «IF operation.hasRequestBody(httpMethod) -»
      requestBody:
      «FOREACH operation.getRequestBodyParameters() AS param-»
        «IF param.hasComment() || (param.isDeprecated() && param.type.isBasicOpenAPIType() == false) -»
        description: «getOpenAPICommentStyle()»
          «IF param.hasComment()»«param.getCommentForOpenAPIDescription("          ")»«ENDIF»
          «IF param.isDeprecated() && param.type.isBasicOpenAPIType() == false-»
          Operation has deprected body parameter. Please be aware that deprecations on complex bodies are not supported. Instead the whole operation needs to be set to deprecated.
          «ENDIF-»
        «ENDIF-»
        «IF param.isRequired() -»
        required: «param.isRequired()»
        «ENDIF-»
        content:
          «FOREACH unifyMediaTypes(service.consumes, operation.consumes) AS mediaType-»
          «mediaType.toOpenAPIContentType()»:
            schema:
              «IF param.type.isOpenAPIDataType() && ((OpenAPIDataType) param.type).inline == true -»
              «EXPAND java::OpenAPIDataType::GenerateOpenAPIDataTypeForPath(this, param, "    ") FOR (OpenAPIDataType) param.type -»
              «ELSE -»
              «IF param.type.isBasicOpenAPIType() == true-»
                «IF param.isMultivalued() == false-»
              type: «param.type.getOpenAPIType(this)»
                  «IF param.hasOpenAPIFormatForParam()-»
              format: «param.getOpenAPIFormatForParam()»
                  «ENDIF-»
                    «IF param.hasPatternForParam() -»
              pattern: '«param.getPatternForParam()»'
                    «ENDIF-»
                  «IF param.isDeprecated() -»
              deprecated: true
                  «ENDIF-»                
                «ELSE-»
              type: array
              items:
                type: «param.type.getOpenAPIType(this)»
                  «IF param.hasOpenAPIFormatForParam()-»
                format: «param.getOpenAPIFormatForParam()»
                  «ENDIF-»
                    «IF param.hasPatternForParam() -»
                pattern: '«param.getPatternForParam()»'
                    «ENDIF-»
                  «IF param.isDeprecated() -»
                deprecated: true
                  «ENDIF-»                
                «ENDIF-»
                «EXPAND java::OpenAPIHelper::GenerateExample("              ") FOR param -»
              «ELSE-»
                «IF param.isMultivalued() == false-»
              $ref: «param.type.getOpenAPIType(this)»
                «ELSE-»
              type: array
              items:
                $ref: «param.type.getOpenAPIType(this)»
              minItems: «param.getLower()»
                «ENDIF-»
              «ENDIF-»
              «ENDIF-»
          «ENDFOREACH-»
      «ENDFOREACH-»
      «ENDIF-»
      responses:
          «IF operation.hasReturnTypeVoid() == false-»
        '«operation.getHTTPStatusCode()»':
          «LET operation.getReturnResult() AS returnParam-»
          description: «getOpenAPICommentStyle()»
            «IF returnParam.hasComment()»«returnParam.getCommentForOpenAPIDescription("            ")»«ELSE»TODO: Please add comment for response«ENDIF»
            «IF returnParam.isDeprecated() && returnParam.type.isBasicOpenAPIType() == false-»
            Operation has deprected return type. Please be aware that deprecations on complex return types are not supported. Instead the whole operation needs to be set to deprecated.
            «ENDIF-»
          content:
            «FOREACH unifyMediaTypes(service.produces, operation.produces) AS contentType-»
            «contentType.toOpenAPIContentType()»:
              schema:
                «IF returnParam.type.isOpenAPIDataType() && ((OpenAPIDataType) returnParam.type).inline == true -»
                «EXPAND java::OpenAPIDataType::GenerateOpenAPIDataTypeForPath(this, returnParam, "    ") FOR (OpenAPIDataType) returnParam.type -»
                «ELSE -»
                «IF returnParam.type.isBasicOpenAPIType() == true-»
                  «IF returnParam.isMultivalued() == false-»
                type: «returnParam.type.getOpenAPIType(this)»
                    «IF returnParam.hasOpenAPIFormatForParam()-»
                format: «returnParam.getOpenAPIFormatForParam()»
                    «ENDIF-»
                    «IF returnParam.hasPatternForParam() -»
                pattern: '«returnParam.getPatternForParam()»'
                    «ENDIF-»
                    «IF returnParam.isDeprecated() -»
                deprecated: true
                    «ENDIF-»
                  «ELSE-»
                type: array
                items:
                  type: «returnParam.type.getOpenAPIType(this)»
                    «IF returnParam.hasOpenAPIFormatForParam()-»
                  format: «returnParam.getOpenAPIFormatForParam()»
                    «ENDIF-»
                    «IF returnParam.hasPatternForParam() -»
                  pattern: '«returnParam.getPatternForParam()»'
                    «ENDIF-»
                  «ENDIF-»
                  «EXPAND java::OpenAPIHelper::GenerateExample("                ") FOR returnParam -»
                «ELSE-»
                  «IF returnParam.isMultivalued() == false-»
                $ref: «returnParam.type.getOpenAPIType(this)»
                  «ELSE-»
                type: array
                items:
                  $ref: «returnParam.type.getOpenAPIType(this)»
                minItems: «returnParam.getLower()»
                  «ENDIF-»
                «ENDIF-»
                «ENDIF-»
            «ENDFOREACH-»
          «IF operation.hasResponseHeaderFields() -»
          headers:
            «FOREACH operation.getHeaderFields().sortBy(e|e.name) AS headerField -»
            «headerField.name»:
              schema:
                type: «headerField.type.getOpenAPIType(this)»
                «IF headerField.defaultValue != null-»
                default: '«headerField.defaultValue.stringValue().replaceAll("\"", "")»'
                «ENDIF-»
                «IF headerField.hasComment()-»
                description: «getOpenAPICommentStyle()»
                  «headerField.getCommentForOpenAPIDescription("                    ")»
                «ENDIF-»
            «ENDFOREACH-»
          «ENDIF-»
          «ENDLET-»
          «REM»Operation has return type void«ENDREM-»
          «ELSE-»
        '«operation.getHTTPStatusCode()»':
          «LET operation.getReturnResult() AS returnParam-»
          description: «getOpenAPICommentStyle()»
            «IF returnParam.hasComment()»«returnParam.getCommentForOpenAPIDescription("            ")»«ELSE»In case that a request was successful only status code «operation.getHTTPStatusCode()» will be returned but no response content will be provided (aka as return type 'void' in many programming languages).«ENDIF»
          «ENDLET-»
          «ENDIF-»
        «EXPAND java::OpenAPIResponse::Responses(this) FOR operation-»
    «ENDFOREACH-»
    «ENDFOREACH-»
  «ENDFOREACH-»
  «ENDFOREACH-»
«ENDDEFINE»

«DEFINE GenerateResponse(OpenAPI3Specification spec) FOR OpenAPIResponse -»
    «IF suppressClassNameCommentInOpenAPISpec() == false-»
    # «this.fqn()»
    «ENDIF-»
    «this.name»:
      «IF this.hasComment()-»
      description: «getOpenAPICommentStyle()»
        «this.getCommentForOpenAPIDescription("        ")»
      «ELSE -»
      description: TODO Please add comment to error response type
      «ENDIF-»
      content:
        «this.contentType.name.toOpenAPIContentType()»:
          schema:
            $ref: «this.getResponseType().getOpenAPIType(spec)»

«ENDDEFINE»


«DEFINE RESTParamName FOR Parameter-»
«IF this.isStereotypeApplied("PathParam")»«IF ((PathParam) this).value.length > 0»«((PathParam) this).value -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«IF this.isStereotypeApplied("HeaderParam")»«IF ((HeaderParam) this).value.length > 0»«((HeaderParam) this).value -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«IF this.isStereotypeApplied("QueryParam")»«IF ((QueryParam) this).value.length > 0»«((QueryParam) this).value  -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«IF this.isStereotypeApplied("CookieParam")»«IF ((CookieParam) this).value.length > 0»«((CookieParam) this).value -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«ENDDEFINE»

«DEFINE RESTParamName FOR Property-»
«IF this.isStereotypeApplied("PathParam")»«IF ((PathParam) this).value.length > 0 -»«((PathParam) this).value -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«IF this.isStereotypeApplied("HeaderParam")»«IF ((HeaderParam) this).value.length > 0 -»«((HeaderParam) this).value -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«IF this.isStereotypeApplied("QueryParam")»«IF ((QueryParam) this).value.length > 0 -»«((QueryParam) this).value -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«IF this.isStereotypeApplied("CookieParam")»«IF ((CookieParam) this).value.length > 0 -»«((CookieParam) this).value -»«ELSE»«this.name»«ENDIF»«ENDIF-»
«ENDDEFINE»

«DEFINE GenerateTags FOR OpenAPITag -»
  - name: «this.name»
    «IF this.hasComment()-»
    description: «getOpenAPICommentStyle()»
      «this.getCommentForOpenAPIDescription("      ")»
    «ENDIF-»    
    «IF this.externalDocsURL.length > 0 -»
      url: «this.externalDocsURL»
    «ENDIF -»
«ENDDEFINE»




© 2015 - 2024 Weber Informatics LLC | Privacy Policy