github.com/phrase/openapi@v0.0.0-20240514140800-49e8a106740e/openapi-generator/templates/typescript-fetch/apis.mustache (about)

     1  /* tslint:disable */
     2  /* eslint-disable */
     3  {{>licenseInfo}}
     4  
     5  import * as runtime from '../runtime';
     6  {{#imports.0}}
     7  import {
     8      {{#imports}}
     9      {{className}},
    10      {{className}}FromJSON,
    11      {{className}}ToJSON,
    12      {{/imports}}
    13  } from '../models';
    14  {{/imports.0}}
    15  
    16  {{#operations}}
    17  {{#operation}}
    18  {{#allParams.0}}
    19  export interface {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request {
    20  {{#allParams}}
    21      {{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}};
    22  {{/allParams}}
    23  }
    24  
    25  {{/allParams.0}}
    26  {{/operation}}
    27  {{/operations}}
    28  {{#withInterfaces}}
    29  {{#operations}}
    30  /**
    31   * {{classname}} - interface
    32   * {{#lambda.indented_1}}{{{unescapedDescription}}}{{/lambda.indented_1}}
    33   * @export
    34   * @interface {{classname}}Interface
    35   */
    36  export interface {{classname}}Interface {
    37  {{#operation}}
    38      /**
    39       * {{&notes}}
    40       {{#summary}}
    41       * @summary {{&summary}}
    42       {{/summary}}
    43       {{#allParams}}
    44       * @param {{=<% %>=}}{<%&dataType%>}<%={{ }}=%> {{^required}}[{{/required}}{{paramName}}{{^required}}]{{/required}} {{description}}
    45       {{/allParams}}
    46       * @param {*} [options] Override http request option.
    47       * @throws {RequiredError}
    48       * @memberof {{classname}}Interface
    49       */
    50      {{nickname}}Raw({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request{{/allParams.0}}): Promise<runtime.ApiResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}}>>;
    51  
    52      /**
    53       {{#notes}}
    54       * {{&notes}}
    55       {{/notes}}
    56       {{#summary}}
    57       * {{&summary}}
    58       {{/summary}}
    59       */
    60      {{^useSingleRequestParameter}}
    61      {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}{{^-last}}, {{/-last}}{{/allParams}}): Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}}>;
    62      {{/useSingleRequestParameter}}
    63      {{#useSingleRequestParameter}}
    64      {{nickname}}({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request{{/allParams.0}}): Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}}>;
    65      {{/useSingleRequestParameter}}
    66  
    67  {{/operation}}
    68  }
    69  
    70  {{/operations}}
    71  {{/withInterfaces}}
    72  {{#operations}}
    73  /**
    74   * {{#lambda.indented_star_1}}{{{unescapedDescription}}}{{/lambda.indented_star_1}}
    75   */
    76  {{#withInterfaces}}
    77  export class {{classname}} extends runtime.BaseAPI implements {{classname}}Interface {
    78  {{/withInterfaces}}
    79  {{^withInterfaces}}
    80  export class {{classname}} extends runtime.BaseAPI {
    81  {{/withInterfaces}}
    82  
    83      {{#operation}}
    84      /**
    85       {{#notes}}
    86       * {{&notes}}
    87       {{/notes}}
    88       {{#summary}}
    89       * {{&summary}}
    90       {{/summary}}
    91       */
    92      async {{nickname}}Raw({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request{{/allParams.0}}): Promise<runtime.ApiResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}}>> {
    93          {{#allParams}}
    94          {{#required}}
    95          if (requestParameters.{{paramName}} === null || requestParameters.{{paramName}} === undefined) {
    96              throw new runtime.RequiredError('{{paramName}}','Required parameter requestParameters.{{paramName}} was null or undefined when calling {{nickname}}.');
    97          }
    98  
    99          {{/required}}
   100          {{/allParams}}
   101          const queryParameters: any = {};
   102  
   103          {{#queryParams}}
   104          {{#isArray}}
   105          if (requestParameters.{{paramName}}) {
   106              {{#isCollectionFormatMulti}}
   107              queryParameters['{{baseName}}'] = requestParameters.{{paramName}};
   108              {{/isCollectionFormatMulti}}
   109              {{^isCollectionFormatMulti}}
   110              queryParameters['{{baseName}}'] = requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]);
   111              {{/isCollectionFormatMulti}}
   112          }
   113  
   114          {{/isArray}}
   115          {{^isArray}}
   116          if (requestParameters.{{paramName}} !== undefined) {
   117              {{#isDateTime}}
   118              queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString();
   119              {{/isDateTime}}
   120              {{^isDateTime}}
   121              {{#isDate}}
   122              queryParameters['{{baseName}}'] = (requestParameters.{{paramName}} as any).toISOString().substr(0,10);
   123              {{/isDate}}
   124              {{^isDate}}
   125              queryParameters['{{baseName}}'] = requestParameters.{{paramName}};
   126              {{/isDate}}
   127              {{/isDateTime}}
   128          }
   129  
   130          {{/isArray}}
   131          {{/queryParams}}
   132          const headerParameters: runtime.HTTPHeaders = {};
   133  
   134          {{#bodyParam}}
   135          {{^consumes}}
   136          headerParameters['Content-Type'] = 'application/json';
   137  
   138          {{/consumes}}
   139          {{#consumes.0}}
   140          headerParameters['Content-Type'] = '{{{mediaType}}}';
   141  
   142          {{/consumes.0}}
   143          {{/bodyParam}}
   144          {{#headerParams}}
   145          {{#isArray}}
   146          if (requestParameters.{{paramName}}) {
   147              headerParameters['{{baseName}}'] = requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]);
   148          }
   149  
   150          {{/isArray}}
   151          {{^isArray}}
   152          if (requestParameters.{{paramName}} !== undefined && requestParameters.{{paramName}} !== null) {
   153              headerParameters['{{baseName}}'] = String(requestParameters.{{paramName}});
   154          }
   155  
   156          {{/isArray}}
   157          {{/headerParams}}
   158          {{#authMethods}}
   159          {{#isBasic}}
   160          {{#isBasicBasic}}
   161          if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) {
   162              headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password);
   163          }
   164          {{/isBasicBasic}}
   165          {{#isBasicBearer}}
   166          if (this.configuration && this.configuration.accessToken) {
   167              const token = this.configuration.accessToken;
   168              const tokenString = typeof token === 'function' ? token("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]) : token;
   169  
   170              if (tokenString) {
   171                  headerParameters["Authorization"] = `Bearer ${tokenString}`;
   172              }
   173          }
   174          {{/isBasicBearer}}
   175          {{/isBasic}}
   176          {{#isApiKey}}
   177          {{#isKeyInHeader}}
   178          if (this.configuration && this.configuration.apiKey) {
   179              headerParameters["{{keyParamName}}"] = this.configuration.apiKey("{{keyParamName}}"); // {{name}} authentication
   180          }
   181  
   182          {{/isKeyInHeader}}
   183          {{#isKeyInQuery}}
   184          if (this.configuration && this.configuration.apiKey) {
   185              queryParameters["{{keyParamName}}"] = this.configuration.apiKey("{{keyParamName}}"); // {{name}} authentication
   186          }
   187  
   188          {{/isKeyInQuery}}
   189          {{/isApiKey}}
   190          {{#isOAuth}}
   191          if (this.configuration && this.configuration.accessToken) {
   192              // oauth required
   193              if (typeof this.configuration.accessToken === 'function') {
   194                  headerParameters["Authorization"] = this.configuration.accessToken("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]);
   195              } else {
   196                  headerParameters["Authorization"] = this.configuration.accessToken;
   197              }
   198          }
   199  
   200          {{/isOAuth}}
   201          {{/authMethods}}
   202          {{#hasFormParams}}
   203          const consumes: runtime.Consume[] = [
   204              {{#consumes}}
   205              { contentType: '{{{mediaType}}}' },
   206              {{/consumes}}
   207          ];
   208          // @ts-ignore: canConsumeForm may be unused
   209          const canConsumeForm = runtime.canConsumeForm(consumes);
   210  
   211          let formParams: { append(param: string, value: any): any };
   212          let useForm = false;
   213          {{#formParams}}
   214          {{#isFile}}
   215          // use FormData to transmit files using content-type "multipart/form-data"
   216          useForm = canConsumeForm;
   217          {{/isFile}}
   218          {{/formParams}}
   219          if (useForm) {
   220              formParams = new FormData();
   221          } else {
   222              formParams = new URLSearchParams();
   223          }
   224  
   225          {{#formParams}}
   226          {{#isArray}}
   227          if (requestParameters.{{paramName}}) {
   228              {{#isCollectionFormatMulti}}
   229              requestParameters.{{paramName}}.forEach((element) => {
   230                  formParams.append('{{baseName}}', element as any);
   231              })
   232              {{/isCollectionFormatMulti}}
   233              {{^isCollectionFormatMulti}}
   234              formParams.append('{{baseName}}', requestParameters.{{paramName}}.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]));
   235              {{/isCollectionFormatMulti}}
   236          }
   237  
   238          {{/isArray}}
   239          {{^isArray}}
   240          if (requestParameters.{{paramName}} !== undefined) {
   241              {{#isFreeFormObject}}
   242              this.flattenDeepParams({
   243                  {{baseName}}: requestParameters.{{paramName}}
   244              }).forEach(([name, value]) => {
   245                  formParams.append(name, value as any);
   246              });
   247              {{/isFreeFormObject}}
   248              {{^isFreeFormObject}}
   249              formParams.append('{{baseName}}', requestParameters.{{paramName}} as any);
   250              {{/isFreeFormObject}}
   251          }
   252  
   253          {{/isArray}}
   254          {{/formParams}}
   255          {{/hasFormParams}}
   256          const response = await this.request({
   257              path: `{{{path}}}`{{#pathParams}}.replace(`{${"{{baseName}}"}}`, encodeURIComponent(String(requestParameters.{{paramName}}))){{/pathParams}},
   258              method: '{{httpMethod}}',
   259              headers: headerParameters,
   260              query: queryParameters,
   261              {{#hasBodyParam}}
   262              {{#bodyParam}}
   263              {{#isContainer}}
   264              body: requestParameters.{{paramName}}{{#isArray}}{{#items}}{{^isPrimitiveType}}.map({{datatype}}ToJSON){{/isPrimitiveType}}{{/items}}{{/isArray}},
   265              {{/isContainer}}
   266              {{^isContainer}}
   267              {{^isPrimitiveType}}
   268              body: {{dataType}}ToJSON(requestParameters.{{paramName}}),
   269              {{/isPrimitiveType}}
   270              {{#isPrimitiveType}}
   271              body: requestParameters.{{paramName}} as any,
   272              {{/isPrimitiveType}}
   273              {{/isContainer}}
   274              {{/bodyParam}}
   275              {{/hasBodyParam}}
   276              {{#hasFormParams}}
   277              body: formParams,
   278              {{/hasFormParams}}
   279          });
   280  
   281          {{#returnType}}
   282          {{#isResponseFile}}
   283          return new runtime.BlobApiResponse(response);
   284          {{/isResponseFile}}
   285          {{^isResponseFile}}
   286          {{#returnTypeIsPrimitive}}
   287          {{#isMap}}
   288          return new runtime.JSONApiResponse<any>(response);
   289          {{/isMap}}
   290          {{#isArray}}
   291          return new runtime.JSONApiResponse<any>(response);
   292          {{/isArray}}
   293          {{#returnSimpleType}}
   294          return new runtime.TextApiResponse(response) as any;
   295          {{/returnSimpleType}}
   296          {{/returnTypeIsPrimitive}}
   297          {{^returnTypeIsPrimitive}}
   298          {{#isArray}}
   299          return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map({{returnBaseType}}FromJSON));
   300          {{/isArray}}
   301          {{^isArray}}
   302          {{#isMap}}
   303          return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, {{returnBaseType}}FromJSON));
   304          {{/isMap}}
   305          {{^isMap}}
   306          return new runtime.JSONApiResponse(response, (jsonValue) => {{returnBaseType}}FromJSON(jsonValue));
   307          {{/isMap}}
   308          {{/isArray}}
   309          {{/returnTypeIsPrimitive}}
   310          {{/isResponseFile}}
   311          {{/returnType}}
   312          {{^returnType}}
   313          return new runtime.TextApiResponse(response) as any;
   314          {{/returnType}}
   315      }
   316  
   317      /**
   318       {{#notes}}
   319       * {{&notes}}
   320       {{/notes}}
   321       {{#summary}}
   322       * {{&summary}}
   323       {{/summary}}
   324       */
   325      {{^useSingleRequestParameter}}
   326      async {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}{{^-last}}, {{/-last}}{{/allParams}}): Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}}> {
   327          {{#returnType}}
   328          const response = await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }{{/allParams.0}});
   329          return await response.value();
   330          {{/returnType}}
   331          {{^returnType}}
   332          await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }{{/allParams.0}});
   333          {{/returnType}}
   334      }
   335      {{/useSingleRequestParameter}}
   336      {{#useSingleRequestParameter}}
   337      async {{nickname}}({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request{{/allParams.0}}): Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}any{{/returnType}}> {
   338          const response = await this.{{nickname}}Raw({{#allParams.0}}requestParameters{{/allParams.0}});
   339          return await response.value();
   340      }
   341      {{/useSingleRequestParameter}}
   342  
   343      {{/operation}}
   344  }
   345  {{/operations}}
   346  {{#hasEnums}}
   347  
   348  {{#operations}}
   349  {{#operation}}
   350  {{#allParams}}
   351  {{#isEnum}}
   352  /**
   353      * @export
   354      * @enum {string}
   355      */
   356  export enum {{operationIdCamelCase}}{{enumName}} {
   357  {{#allowableValues}}
   358      {{#enumVars}}
   359      {{{name}}} = {{{value}}}{{^-last}},{{/-last}}
   360      {{/enumVars}}
   361  {{/allowableValues}}
   362  }
   363  {{/isEnum}}
   364  {{/allParams}}
   365  {{/operation}}
   366  {{/operations}}
   367  {{/hasEnums}}