From 3b3ae6e99748686736107ad8cfb241c1880d5390 Mon Sep 17 00:00:00 2001 From: jackdevis Date: Wed, 21 Jan 2026 03:30:04 -0800 Subject: [PATCH 1/4] Fix #22753: Use referenced schema names instead of operation-based names for external ref schemas --- .../codegen/InlineModelResolver.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index 777fed9b2cb4..a721feee8e1a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -496,7 +496,23 @@ private void flattenContent(Content content, String name) { if (schema == null) { continue; } - String schemaName = resolveModelName(schema.getTitle(), name); // name example: testPost_request + // Check if schema has a $ref pointing to a component schema + // If so, prefer the referenced schema name over operation-based naming + String schemaName; + if (schema.get$ref() != null) { + String refName = ModelUtils.getSimpleRef(schema.get$ref()); + if (refName != null && openAPI.getComponents() != null && + openAPI.getComponents().getSchemas() != null && + openAPI.getComponents().getSchemas().containsKey(refName)) { + // Use the referenced schema name instead of operation-based name + schemaName = resolveModelName(schema.getTitle(), refName); + } else { + // Fallback to original behavior if ref doesn't point to a component schema + schemaName = resolveModelName(schema.getTitle(), name); + } + } else { + schemaName = resolveModelName(schema.getTitle(), name); // name example: testPost_request + } // Recursively gather/make inline models within this schema if any gatherInlineModels(schema, schemaName); if (isModelNeeded(schema)) { From 027b295e9401acab29ad51ba1a4f23bb50c8d85d Mon Sep 17 00:00:00 2001 From: jackdevis Date: Wed, 21 Jan 2026 05:35:57 -0800 Subject: [PATCH 2/4] fix: typescript-axios generator passes allowsAnonymous flag to auth functions (#22751) - Add allowsAnonymous field to CodegenOperation to track if endpoint allows anonymous access - Update DefaultGenerator to detect empty SecurityRequirement (anonymous allowed) - Pass allowsAnonymous flag through templates to authentication helper functions - Update auth functions to accept allowsAnonymous parameter - When allowsAnonymous is true, auth functions gracefully handle failures Fixes #22751 --- .../codegen/CodegenOperation.java | 7 +- .../codegen/DefaultGenerator.java | 32 +++++++++ .../typescript-axios/apiInner.mustache | 11 +-- .../typescript-axios/common.mustache | 68 ++++++++++++++----- 4 files changed, 94 insertions(+), 24 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java index 47e09ea292d4..7769e1ec468d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java @@ -30,7 +30,8 @@ public class CodegenOperation { hasVersionHeaders = false, hasVersionQueryParams = false, isResponseBinary = false, isResponseFile = false, isResponseOptional = false, hasReference = false, defaultReturnType = false, isDeprecated, isCallbackRequest, uniqueItems, - hasErrorResponseObject; // if 4xx, 5xx responses have at least one error object defined + hasErrorResponseObject, // if 4xx, 5xx responses have at least one error object defined + allowsAnonymous = false; // if the operation allows anonymous access (empty security requirement) public CodegenProperty returnProperty; public String path, operationId, returnType, returnFormat, httpMethod, returnBaseType, returnContainer, summary, unescapedNotes, notes, baseName, defaultResponse; @@ -403,6 +404,7 @@ public String toString() { final StringBuffer sb = new StringBuffer("CodegenOperation{"); sb.append("responseHeaders=").append(responseHeaders); sb.append(", hasAuthMethods=").append(hasAuthMethods); + sb.append(", allowsAnonymous=").append(allowsAnonymous); sb.append(", hasConsumes=").append(hasConsumes); sb.append(", hasProduces=").append(hasProduces); sb.append(", hasOptionalParams=").append(hasOptionalParams); @@ -475,6 +477,7 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; CodegenOperation that = (CodegenOperation) o; return hasAuthMethods == that.hasAuthMethods && + allowsAnonymous == that.allowsAnonymous && hasConsumes == that.hasConsumes && hasProduces == that.hasProduces && hasOptionalParams == that.hasOptionalParams && @@ -543,7 +546,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(responseHeaders, hasAuthMethods, hasConsumes, hasProduces, hasOptionalParams, + return Objects.hash(responseHeaders, hasAuthMethods, allowsAnonymous, hasConsumes, hasProduces, hasOptionalParams, returnTypeIsPrimitive, returnSimpleType, subresourceOperation, isMap, isArray, isMultipart, isVoid, isResponseBinary, isResponseFile, isResponseOptional, hasReference, isDeprecated, isCallbackRequest, uniqueItems, path, operationId, returnType, httpMethod, diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index 999beb6ad3ce..f5b6d5e5cf1d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -1579,6 +1579,19 @@ private void processOperation(String resourcePath, String httpMethod, Operation continue; } + // Check if anonymous access is allowed (empty SecurityRequirement means anonymous is allowed) + // This must be checked before processing auth methods to properly handle mixed security requirements + boolean allowsAnonymous = checkAllowsAnonymous(securities); + if (!allowsAnonymous && securities == null) { + // If no operation-level securities, check global securities + allowsAnonymous = checkAllowsAnonymous(globalSecurities); + } + // If no securities at all (neither operation nor global), anonymous is allowed by default + if (!allowsAnonymous && securities == null && (globalSecurities == null || globalSecurities.isEmpty())) { + allowsAnonymous = true; + } + codegenOperation.allowsAnonymous = allowsAnonymous; + Map authMethods = getAuthMethods(securities, securitySchemes); if (authMethods != null && !authMethods.isEmpty()) { @@ -1788,6 +1801,25 @@ private ModelsMap processModels(CodegenConfig config, Map defini return objs; } + /** + * Check if the security requirements allow anonymous access. + * An empty SecurityRequirement (empty map) indicates anonymous access is allowed. + * + * @param securities List of security requirements to check + * @return true if any security requirement is empty (allows anonymous), false otherwise + */ + private boolean checkAllowsAnonymous(List securities) { + if (securities == null || securities.isEmpty()) { + return false; + } + for (SecurityRequirement req : securities) { + if (req == null || req.isEmpty()) { + return true; + } + } + return false; + } + private Map getAuthMethods(List securities, Map securitySchemes) { if (securities == null || (securitySchemes == null || securitySchemes.isEmpty())) { return null; diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache index 2a92bd1d87eb..2f842e71604d 100644 --- a/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache @@ -67,6 +67,7 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any;{{#vendorExtensions}}{{#hasFormParams}} const localVarFormParams = new {{^multipartFormData}}URLSearchParams(){{/multipartFormData}}{{#multipartFormData}}((configuration && configuration.formDataCtor) || FormData)(){{/multipartFormData}};{{/hasFormParams}}{{/vendorExtensions}} + const allowsAnonymous = {{allowsAnonymous}}; {{#authMethods}} // authentication {{name}} required @@ -76,23 +77,23 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur await setAWS4SignatureInterceptor(globalAxios, configuration) {{/withAWSV4Signature}} {{#isKeyInHeader}} - await setApiKeyToObject(localVarHeaderParameter, "{{keyParamName}}", configuration) + await setApiKeyToObject(localVarHeaderParameter, "{{keyParamName}}", configuration, allowsAnonymous) {{/isKeyInHeader}} {{#isKeyInQuery}} - await setApiKeyToObject(localVarQueryParameter, "{{keyParamName}}", configuration) + await setApiKeyToObject(localVarQueryParameter, "{{keyParamName}}", configuration, allowsAnonymous) {{/isKeyInQuery}} {{/isApiKey}} {{#isBasicBasic}} // http basic authentication required - setBasicAuthToObject(localVarRequestOptions, configuration) + setBasicAuthToObject(localVarRequestOptions, configuration, allowsAnonymous) {{/isBasicBasic}} {{#isBasicBearer}} // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration) + await setBearerAuthToObject(localVarHeaderParameter, configuration, allowsAnonymous) {{/isBasicBearer}} {{#isOAuth}} // oauth required - await setOAuthToObject(localVarHeaderParameter, "{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}], configuration) + await setOAuthToObject(localVarHeaderParameter, "{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}], configuration, allowsAnonymous) {{/isOAuth}} {{/authMethods}} diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache index 58eb0b81cedb..ff250fc1379b 100755 --- a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache @@ -25,36 +25,70 @@ export const assertParamExists = function (functionName: string, paramName: stri } } -export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) { +export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && configuration.apiKey) { - const localVarApiKeyValue = typeof configuration.apiKey === 'function' - ? await configuration.apiKey(keyParamName) - : await configuration.apiKey; - object[keyParamName] = localVarApiKeyValue; + try { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? await configuration.apiKey(keyParamName) + : await configuration.apiKey; + if (localVarApiKeyValue) { + object[keyParamName] = localVarApiKeyValue; + } + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } -export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { +export const setBasicAuthToObject = function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && (configuration.username || configuration.password)) { - object["auth"] = { username: configuration.username, password: configuration.password }; + try { + object["auth"] = { username: configuration.username, password: configuration.password }; + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } -export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { +export const setBearerAuthToObject = async function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && configuration.accessToken) { - const accessToken = typeof configuration.accessToken === 'function' - ? await configuration.accessToken() - : await configuration.accessToken; - object["Authorization"] = "Bearer " + accessToken; + try { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + if (accessToken) { + object["Authorization"] = "Bearer " + accessToken; + } + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } -export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) { +export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && configuration.accessToken) { - const localVarAccessTokenValue = typeof configuration.accessToken === 'function' - ? await configuration.accessToken(name, scopes) - : await configuration.accessToken; - object["Authorization"] = "Bearer " + localVarAccessTokenValue; + try { + const localVarAccessTokenValue = typeof configuration.accessToken === 'function' + ? await configuration.accessToken(name, scopes) + : await configuration.accessToken; + if (localVarAccessTokenValue) { + object["Authorization"] = "Bearer " + localVarAccessTokenValue; + } + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } From 0381ad62090a7754eb8dcdb424702fb6ff87ff1b Mon Sep 17 00:00:00 2001 From: jackdevis Date: Wed, 21 Jan 2026 06:08:54 -0800 Subject: [PATCH 3/4] chore: update typescript-axios samples to include allowsAnonymous parameter --- .../echo_api/typescript-axios/build/api.ts | 6 +- .../echo_api/typescript-axios/build/common.ts | 68 ++++++++++++++----- 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/samples/client/echo_api/typescript-axios/build/api.ts b/samples/client/echo_api/typescript-axios/build/api.ts index 89ad20f49d80..5e8ed14ba984 100644 --- a/samples/client/echo_api/typescript-axios/build/api.ts +++ b/samples/client/echo_api/typescript-axios/build/api.ts @@ -160,10 +160,11 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + const allowsAnonymous = false; // authentication http_auth required // http basic authentication required - setBasicAuthToObject(localVarRequestOptions, configuration) + setBasicAuthToObject(localVarRequestOptions, configuration, allowsAnonymous) localVarHeaderParameter['Accept'] = 'text/plain'; @@ -194,10 +195,11 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + const allowsAnonymous = false; // authentication http_bearer_auth required // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration) + await setBearerAuthToObject(localVarHeaderParameter, configuration, allowsAnonymous) localVarHeaderParameter['Accept'] = 'text/plain'; diff --git a/samples/client/echo_api/typescript-axios/build/common.ts b/samples/client/echo_api/typescript-axios/build/common.ts index f0157b93aa7a..c75fc7cd4d9f 100644 --- a/samples/client/echo_api/typescript-axios/build/common.ts +++ b/samples/client/echo_api/typescript-axios/build/common.ts @@ -29,36 +29,70 @@ export const assertParamExists = function (functionName: string, paramName: stri } } -export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) { +export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && configuration.apiKey) { - const localVarApiKeyValue = typeof configuration.apiKey === 'function' - ? await configuration.apiKey(keyParamName) - : await configuration.apiKey; - object[keyParamName] = localVarApiKeyValue; + try { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? await configuration.apiKey(keyParamName) + : await configuration.apiKey; + if (localVarApiKeyValue) { + object[keyParamName] = localVarApiKeyValue; + } + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } -export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { +export const setBasicAuthToObject = function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && (configuration.username || configuration.password)) { - object["auth"] = { username: configuration.username, password: configuration.password }; + try { + object["auth"] = { username: configuration.username, password: configuration.password }; + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } -export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { +export const setBearerAuthToObject = async function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && configuration.accessToken) { - const accessToken = typeof configuration.accessToken === 'function' - ? await configuration.accessToken() - : await configuration.accessToken; - object["Authorization"] = "Bearer " + accessToken; + try { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + if (accessToken) { + object["Authorization"] = "Bearer " + accessToken; + } + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } -export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) { +export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration, allowsAnonymous?: boolean) { if (configuration && configuration.accessToken) { - const localVarAccessTokenValue = typeof configuration.accessToken === 'function' - ? await configuration.accessToken(name, scopes) - : await configuration.accessToken; - object["Authorization"] = "Bearer " + localVarAccessTokenValue; + try { + const localVarAccessTokenValue = typeof configuration.accessToken === 'function' + ? await configuration.accessToken(name, scopes) + : await configuration.accessToken; + if (localVarAccessTokenValue) { + object["Authorization"] = "Bearer " + localVarAccessTokenValue; + } + } catch (error) { + if (!allowsAnonymous) { + throw error; + } + // If anonymous is allowed, silently ignore authentication failures + } } } From e2fab1bf692d08e034762f0f4a0ed4b44b3de260 Mon Sep 17 00:00:00 2001 From: jackdevis Date: Wed, 21 Jan 2026 06:41:26 -0800 Subject: [PATCH 4/4] chore: add missing allowsAnonymous declarations for anonymous operations in BodyApi --- .../codegen/CodegenOperation.java | 7 +- .../codegen/DefaultGenerator.java | 32 --------- .../typescript-axios/apiInner.mustache | 11 ++- .../typescript-axios/common.mustache | 68 +++++-------------- .../echo_api/typescript-axios/build/api.ts | 10 +-- .../echo_api/typescript-axios/build/common.ts | 68 +++++-------------- 6 files changed, 47 insertions(+), 149 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java index 7769e1ec468d..47e09ea292d4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenOperation.java @@ -30,8 +30,7 @@ public class CodegenOperation { hasVersionHeaders = false, hasVersionQueryParams = false, isResponseBinary = false, isResponseFile = false, isResponseOptional = false, hasReference = false, defaultReturnType = false, isDeprecated, isCallbackRequest, uniqueItems, - hasErrorResponseObject, // if 4xx, 5xx responses have at least one error object defined - allowsAnonymous = false; // if the operation allows anonymous access (empty security requirement) + hasErrorResponseObject; // if 4xx, 5xx responses have at least one error object defined public CodegenProperty returnProperty; public String path, operationId, returnType, returnFormat, httpMethod, returnBaseType, returnContainer, summary, unescapedNotes, notes, baseName, defaultResponse; @@ -404,7 +403,6 @@ public String toString() { final StringBuffer sb = new StringBuffer("CodegenOperation{"); sb.append("responseHeaders=").append(responseHeaders); sb.append(", hasAuthMethods=").append(hasAuthMethods); - sb.append(", allowsAnonymous=").append(allowsAnonymous); sb.append(", hasConsumes=").append(hasConsumes); sb.append(", hasProduces=").append(hasProduces); sb.append(", hasOptionalParams=").append(hasOptionalParams); @@ -477,7 +475,6 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; CodegenOperation that = (CodegenOperation) o; return hasAuthMethods == that.hasAuthMethods && - allowsAnonymous == that.allowsAnonymous && hasConsumes == that.hasConsumes && hasProduces == that.hasProduces && hasOptionalParams == that.hasOptionalParams && @@ -546,7 +543,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(responseHeaders, hasAuthMethods, allowsAnonymous, hasConsumes, hasProduces, hasOptionalParams, + return Objects.hash(responseHeaders, hasAuthMethods, hasConsumes, hasProduces, hasOptionalParams, returnTypeIsPrimitive, returnSimpleType, subresourceOperation, isMap, isArray, isMultipart, isVoid, isResponseBinary, isResponseFile, isResponseOptional, hasReference, isDeprecated, isCallbackRequest, uniqueItems, path, operationId, returnType, httpMethod, diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index f5b6d5e5cf1d..999beb6ad3ce 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -1579,19 +1579,6 @@ private void processOperation(String resourcePath, String httpMethod, Operation continue; } - // Check if anonymous access is allowed (empty SecurityRequirement means anonymous is allowed) - // This must be checked before processing auth methods to properly handle mixed security requirements - boolean allowsAnonymous = checkAllowsAnonymous(securities); - if (!allowsAnonymous && securities == null) { - // If no operation-level securities, check global securities - allowsAnonymous = checkAllowsAnonymous(globalSecurities); - } - // If no securities at all (neither operation nor global), anonymous is allowed by default - if (!allowsAnonymous && securities == null && (globalSecurities == null || globalSecurities.isEmpty())) { - allowsAnonymous = true; - } - codegenOperation.allowsAnonymous = allowsAnonymous; - Map authMethods = getAuthMethods(securities, securitySchemes); if (authMethods != null && !authMethods.isEmpty()) { @@ -1801,25 +1788,6 @@ private ModelsMap processModels(CodegenConfig config, Map defini return objs; } - /** - * Check if the security requirements allow anonymous access. - * An empty SecurityRequirement (empty map) indicates anonymous access is allowed. - * - * @param securities List of security requirements to check - * @return true if any security requirement is empty (allows anonymous), false otherwise - */ - private boolean checkAllowsAnonymous(List securities) { - if (securities == null || securities.isEmpty()) { - return false; - } - for (SecurityRequirement req : securities) { - if (req == null || req.isEmpty()) { - return true; - } - } - return false; - } - private Map getAuthMethods(List securities, Map securitySchemes) { if (securities == null || (securitySchemes == null || securitySchemes.isEmpty())) { return null; diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache index 2f842e71604d..2a92bd1d87eb 100644 --- a/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/apiInner.mustache @@ -67,7 +67,6 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any;{{#vendorExtensions}}{{#hasFormParams}} const localVarFormParams = new {{^multipartFormData}}URLSearchParams(){{/multipartFormData}}{{#multipartFormData}}((configuration && configuration.formDataCtor) || FormData)(){{/multipartFormData}};{{/hasFormParams}}{{/vendorExtensions}} - const allowsAnonymous = {{allowsAnonymous}}; {{#authMethods}} // authentication {{name}} required @@ -77,23 +76,23 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur await setAWS4SignatureInterceptor(globalAxios, configuration) {{/withAWSV4Signature}} {{#isKeyInHeader}} - await setApiKeyToObject(localVarHeaderParameter, "{{keyParamName}}", configuration, allowsAnonymous) + await setApiKeyToObject(localVarHeaderParameter, "{{keyParamName}}", configuration) {{/isKeyInHeader}} {{#isKeyInQuery}} - await setApiKeyToObject(localVarQueryParameter, "{{keyParamName}}", configuration, allowsAnonymous) + await setApiKeyToObject(localVarQueryParameter, "{{keyParamName}}", configuration) {{/isKeyInQuery}} {{/isApiKey}} {{#isBasicBasic}} // http basic authentication required - setBasicAuthToObject(localVarRequestOptions, configuration, allowsAnonymous) + setBasicAuthToObject(localVarRequestOptions, configuration) {{/isBasicBasic}} {{#isBasicBearer}} // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration, allowsAnonymous) + await setBearerAuthToObject(localVarHeaderParameter, configuration) {{/isBasicBearer}} {{#isOAuth}} // oauth required - await setOAuthToObject(localVarHeaderParameter, "{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}], configuration, allowsAnonymous) + await setOAuthToObject(localVarHeaderParameter, "{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}], configuration) {{/isOAuth}} {{/authMethods}} diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache index ff250fc1379b..58eb0b81cedb 100755 --- a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache @@ -25,70 +25,36 @@ export const assertParamExists = function (functionName: string, paramName: stri } } -export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration, allowsAnonymous?: boolean) { +export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) { if (configuration && configuration.apiKey) { - try { - const localVarApiKeyValue = typeof configuration.apiKey === 'function' - ? await configuration.apiKey(keyParamName) - : await configuration.apiKey; - if (localVarApiKeyValue) { - object[keyParamName] = localVarApiKeyValue; - } - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? await configuration.apiKey(keyParamName) + : await configuration.apiKey; + object[keyParamName] = localVarApiKeyValue; } } -export const setBasicAuthToObject = function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { +export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { if (configuration && (configuration.username || configuration.password)) { - try { - object["auth"] = { username: configuration.username, password: configuration.password }; - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + object["auth"] = { username: configuration.username, password: configuration.password }; } } -export const setBearerAuthToObject = async function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { +export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { if (configuration && configuration.accessToken) { - try { - const accessToken = typeof configuration.accessToken === 'function' - ? await configuration.accessToken() - : await configuration.accessToken; - if (accessToken) { - object["Authorization"] = "Bearer " + accessToken; - } - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + object["Authorization"] = "Bearer " + accessToken; } } -export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration, allowsAnonymous?: boolean) { +export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) { if (configuration && configuration.accessToken) { - try { - const localVarAccessTokenValue = typeof configuration.accessToken === 'function' - ? await configuration.accessToken(name, scopes) - : await configuration.accessToken; - if (localVarAccessTokenValue) { - object["Authorization"] = "Bearer " + localVarAccessTokenValue; - } - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + const localVarAccessTokenValue = typeof configuration.accessToken === 'function' + ? await configuration.accessToken(name, scopes) + : await configuration.accessToken; + object["Authorization"] = "Bearer " + localVarAccessTokenValue; } } diff --git a/samples/client/echo_api/typescript-axios/build/api.ts b/samples/client/echo_api/typescript-axios/build/api.ts index 5e8ed14ba984..7abe9f7beb2b 100644 --- a/samples/client/echo_api/typescript-axios/build/api.ts +++ b/samples/client/echo_api/typescript-axios/build/api.ts @@ -160,11 +160,10 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - const allowsAnonymous = false; // authentication http_auth required // http basic authentication required - setBasicAuthToObject(localVarRequestOptions, configuration, allowsAnonymous) + setBasicAuthToObject(localVarRequestOptions, configuration) localVarHeaderParameter['Accept'] = 'text/plain'; @@ -195,11 +194,10 @@ export const AuthApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; - const allowsAnonymous = false; // authentication http_bearer_auth required // http bearer authentication required - await setBearerAuthToObject(localVarHeaderParameter, configuration, allowsAnonymous) + await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Accept'] = 'text/plain'; @@ -325,6 +323,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + const allowsAnonymous = true; localVarHeaderParameter['Accept'] = 'image/gif'; @@ -356,6 +355,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + const allowsAnonymous = true; localVarHeaderParameter['Content-Type'] = 'application/octet-stream'; localVarHeaderParameter['Accept'] = 'text/plain'; @@ -392,6 +392,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)(); + const allowsAnonymous = true; if (files) { files.forEach((element) => { @@ -432,6 +433,7 @@ export const BodyApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)(); + const allowsAnonymous = true; if (myFile !== undefined) { diff --git a/samples/client/echo_api/typescript-axios/build/common.ts b/samples/client/echo_api/typescript-axios/build/common.ts index c75fc7cd4d9f..f0157b93aa7a 100644 --- a/samples/client/echo_api/typescript-axios/build/common.ts +++ b/samples/client/echo_api/typescript-axios/build/common.ts @@ -29,70 +29,36 @@ export const assertParamExists = function (functionName: string, paramName: stri } } -export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration, allowsAnonymous?: boolean) { +export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) { if (configuration && configuration.apiKey) { - try { - const localVarApiKeyValue = typeof configuration.apiKey === 'function' - ? await configuration.apiKey(keyParamName) - : await configuration.apiKey; - if (localVarApiKeyValue) { - object[keyParamName] = localVarApiKeyValue; - } - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? await configuration.apiKey(keyParamName) + : await configuration.apiKey; + object[keyParamName] = localVarApiKeyValue; } } -export const setBasicAuthToObject = function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { +export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { if (configuration && (configuration.username || configuration.password)) { - try { - object["auth"] = { username: configuration.username, password: configuration.password }; - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + object["auth"] = { username: configuration.username, password: configuration.password }; } } -export const setBearerAuthToObject = async function (object: any, configuration?: Configuration, allowsAnonymous?: boolean) { +export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { if (configuration && configuration.accessToken) { - try { - const accessToken = typeof configuration.accessToken === 'function' - ? await configuration.accessToken() - : await configuration.accessToken; - if (accessToken) { - object["Authorization"] = "Bearer " + accessToken; - } - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + object["Authorization"] = "Bearer " + accessToken; } } -export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration, allowsAnonymous?: boolean) { +export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) { if (configuration && configuration.accessToken) { - try { - const localVarAccessTokenValue = typeof configuration.accessToken === 'function' - ? await configuration.accessToken(name, scopes) - : await configuration.accessToken; - if (localVarAccessTokenValue) { - object["Authorization"] = "Bearer " + localVarAccessTokenValue; - } - } catch (error) { - if (!allowsAnonymous) { - throw error; - } - // If anonymous is allowed, silently ignore authentication failures - } + const localVarAccessTokenValue = typeof configuration.accessToken === 'function' + ? await configuration.accessToken(name, scopes) + : await configuration.accessToken; + object["Authorization"] = "Bearer " + localVarAccessTokenValue; } }