diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java index b0a38d96c6d69196fbb025f0d0a26f43a70a1ee7..8d7b1c1b1e5cc53ca710409cdc70ba9d0d58b06c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAxiosClientCodegen.java @@ -22,6 +22,9 @@ import io.swagger.v3.parser.util.SchemaTypeUtil; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.utils.ModelUtils; + +import java.io.File; import java.util.*; public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodegen { @@ -34,6 +37,9 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege protected String npmRepository = null; + protected String apiDocPath = "docs/api/"; + protected String modelDocPath = "docs/models/"; + private String tsModelPackage = ""; public TypeScriptAxiosClientCodegen() { @@ -45,6 +51,11 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege // at the moment importMapping.clear(); + modelDocTemplateFiles.put("model_doc.mustache", ".md"); + apiDocTemplateFiles.put("api_doc.mustache", ".md"); + additionalProperties.put("apiDocPath", apiDocPath); + additionalProperties.put("modelDocPath", modelDocPath); + outputFolder = "generated-code/typescript-axios"; embeddedTemplateDir = templateDir = "typescript-axios"; @@ -86,6 +97,16 @@ public class TypeScriptAxiosClientCodegen extends AbstractTypeScriptClientCodege return sb.toString(); } + @Override + public String apiDocFileFolder() { + return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar); + } + + @Override + public String modelDocFileFolder() { + return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar); + } + @Override public void processOpts() { super.processOpts(); diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/api_doc.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc.mustache new file mode 100644 index 0000000000000000000000000000000000000000..16a433932e8fe760e818061576e2be55e5e2c288 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc.mustache @@ -0,0 +1,65 @@ +# {{classname}}{{#description}} +{{description}}{{/description}} + +All URIs are relative to *{{basePath}}* + +| Method | HTTP request | Description | +| ------------- | ------------- | ------------- | +{{#operations}}{{#operation}}| [**{{operationId}}**]({{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{#summary}}{{summary}}{{/summary}} | +{{/operation}}{{/operations}} + +{{#operations}} +{{#operation}} +# **{{{operationId}}}** +> {{#returnType}}{{{returnType}}} {{/returnType}}{{{operationId}}}({{#allParams}}{{#required}}{{{paramName}}}{{/required}}{{^required}}{{{paramName}}}={{{paramName}}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) + +{{{summary}}}{{#notes}} + +{{{notes}}}{{/notes}} + +### Example + +{{#hasAuthMethods}} +{{#authMethods}} +{{#isBasic}} +{{#isBasicBasic}} +* Basic Authentication ({{name}}): +{{/isBasicBasic}} +{{#isBasicBearer}} +* Bearer{{#bearerFormat}} ({{{.}}}){{/bearerFormat}} Authentication ({{name}}): +{{/isBasicBearer}} +{{/isBasic}} +{{#isApiKey}} +* Api Key Authentication ({{name}}): +{{/isApiKey }} +{{#isOAuth}} +* OAuth Authentication ({{name}}): +{{/isOAuth }} +{{> api_doc_example }} +{{/authMethods}} +{{/hasAuthMethods}} +{{^hasAuthMethods}} +{{> api_doc_example }} +{{/hasAuthMethods}} +### Parameters +{{^allParams}}This endpoint does not need any parameter.{{/allParams}}{{#allParams}}{{#-last}} +| Name | Type | Description | Notes | +| ------------- | ------------- | ------------- | ------------- |{{/-last}}{{/allParams}} +{{#allParams}}| **{{paramName}}** | {{#isFile}}**{{dataType}}**{{/isFile}}{{^isFile}}{{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{baseType}}.md){{/isPrimitiveType}}{{/isFile}}| {{description}} | {{^required}}[optional] {{/required}}{{#defaultValue}}[default to {{defaultValue}}]{{/defaultValue}} | +{{/allParams}} + +### Return type + +{{#returnType}}{{#returnTypeIsPrimitive}}**{{{returnType}}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{{returnType}}}**](../models/{{{returnType}}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}void (empty response body){{/returnType}} + +### Authorization + +{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}{{{name}}}{{^-last}}, {{/-last}}{{/authMethods}} + +### HTTP request headers + + - **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}} + - **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}} + +{{/operation}} +{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/api_doc_example.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc_example.mustache new file mode 100644 index 0000000000000000000000000000000000000000..215565ef1b0f46400c3e130b93f8b5a5eb1c9fe5 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-axios/api_doc_example.mustache @@ -0,0 +1,15 @@ +```javascript +const ionoscloud = require('@ionos-cloud/sdk-nodejs') +{{#hasAuthMethods}} +# setup authorization +const config = new ionoscloud.Configuration({ + username: 'YOUR_USERNAME', + password: 'YOUR_PASSWORD' +}); +{{/hasAuthMethods}} +api_instance = ionoscloud.{{{classname}}}(config) +{{#summary}}# {{{.}}}{{/summary}} +{{#returnType}}{{/returnType}}api_instance.{{{operationId}}}{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}options{{/-last}}{{/optionalParams}}){{/hasParams}}.then((response) => console.log(response)); +{{#returnType}} +{{/returnType}} +``` diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/model_doc.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/model_doc.mustache new file mode 100644 index 0000000000000000000000000000000000000000..c629f5930c24224e97f33bd07ea9a79b14e8daaf --- /dev/null +++ b/modules/openapi-generator/src/main/resources/typescript-axios/model_doc.mustache @@ -0,0 +1,11 @@ +{{#models}}{{#model}}# {{classname}} + +{{#description}}{{&description}} +{{/description}} +## Properties +| Name | Type | Description | Notes | +| ------------ | ------------- | ------------- | ------------- | +{{#vars}}| **{{name}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{complexType}}.md){{/isPrimitiveType}} | {{{description}}} | {{^required}}[optional] {{/required}}{{#isReadOnly}}[readonly] {{/isReadOnly}}{{#defaultValue}}[default to {{{.}}}]{{/defaultValue}} | +{{/vars}} + +{{/model}}{{/models}}