@microsoft/m365-spec-parser 0.1.1-alpha.169a2b37a.0 → 0.1.1-alpha.2f5decfcc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { IParameter } from "@microsoft/teams-manifest";
1
2
  import { OpenAPIV3 } from "openapi-types";
2
3
  /**
3
4
  * An interface that represents the result of validating an OpenAPI specification file.
@@ -67,7 +68,7 @@ export declare enum ErrorType {
67
68
  NoExtraAPICanBeAdded = "no-extra-api-can-be-added",
68
69
  ResolveServerUrlFailed = "resolve-server-url-failed",
69
70
  SwaggerNotSupported = "swagger-not-supported",
70
- MultipleAPIKeyNotSupported = "multiple-api-key-not-supported",
71
+ MultipleAuthNotSupported = "multiple-auth-not-supported",
71
72
  ListFailed = "list-failed",
72
73
  listSupportedAPIInfoFailed = "list-supported-api-info-failed",
73
74
  FilterSpecFailed = "filter-spec-failed",
@@ -135,18 +136,6 @@ export interface WrappedAdaptiveCard {
135
136
  responseCardTemplate: AdaptiveCard;
136
137
  previewCardTemplate: PreviewCardTemplate;
137
138
  }
138
- export interface ChoicesItem {
139
- title: string;
140
- value: string;
141
- }
142
- export interface Parameter {
143
- name: string;
144
- title: string;
145
- description: string;
146
- inputType?: "text" | "textarea" | "number" | "date" | "time" | "toggle" | "choiceset";
147
- value?: string;
148
- choices?: ChoicesItem[];
149
- }
150
139
  export interface CheckParamResult {
151
140
  requiredNum: number;
152
141
  optionalNum: number;
@@ -166,11 +155,15 @@ export interface ParseOptions {
166
155
  */
167
156
  allowAPIKeyAuth?: boolean;
168
157
  /**
169
- * If true, the parser will allow multiple parameters in the spec file.
158
+ * If true, the parser will allow Bearer Token authentication in the spec file.
159
+ */
160
+ allowBearerTokenAuth?: boolean;
161
+ /**
162
+ * If true, the parser will allow multiple parameters in the spec file. Teams AI project would ignore this parameters and always true
170
163
  */
171
164
  allowMultipleParameters?: boolean;
172
165
  /**
173
- * If true, the parser will allow OAuth2 authentication in the spec file.
166
+ * If true, the parser will allow OAuth2 authentication in the spec file. Currently only support OAuth2 with auth code flow.
174
167
  */
175
168
  allowOauth2?: boolean;
176
169
  /**
@@ -193,17 +186,22 @@ export interface APIInfo {
193
186
  path: string;
194
187
  title: string;
195
188
  id: string;
196
- parameters: Parameter[];
189
+ parameters: IParameter[];
197
190
  description: string;
198
191
  warning?: WarningResult;
199
192
  }
200
- export interface ListAPIResult {
193
+ export interface ListAPIInfo {
201
194
  api: string;
202
195
  server: string;
203
196
  operationId: string;
204
- auth?: OpenAPIV3.SecuritySchemeObject;
197
+ auth?: AuthInfo;
198
+ }
199
+ export interface ListAPIResult {
200
+ allAPICount: number;
201
+ validAPICount: number;
202
+ validAPIs: ListAPIInfo[];
205
203
  }
206
- export interface AuthSchema {
207
- authSchema: OpenAPIV3.SecuritySchemeObject;
204
+ export interface AuthInfo {
205
+ authScheme: OpenAPIV3.SecuritySchemeObject;
208
206
  name: string;
209
207
  }
@@ -1,12 +1,12 @@
1
1
  import { OpenAPIV3 } from "openapi-types";
2
- import { ParseOptions, WarningResult } from "./interfaces";
2
+ import { AuthInfo, ParseOptions, WarningResult } from "./interfaces";
3
3
  import { IMessagingExtensionCommand, TeamsAppManifest, PluginManifestSchema, FunctionParameter } from "@microsoft/teams-manifest";
4
4
  export declare class ManifestUpdater {
5
5
  static updateManifestWithAiPlugin(manifestPath: string, outputSpecPath: string, apiPluginFilePath: string, spec: OpenAPIV3.Document, options: ParseOptions): Promise<[TeamsAppManifest, PluginManifestSchema]>;
6
6
  static updateManifestDescription(manifest: TeamsAppManifest, spec: OpenAPIV3.Document): void;
7
7
  static mapOpenAPISchemaToFuncParam(schema: OpenAPIV3.SchemaObject, method: string, pathUrl: string): FunctionParameter;
8
8
  static generatePluginManifestSchema(spec: OpenAPIV3.Document, specRelativePath: string, options: ParseOptions): PluginManifestSchema;
9
- static updateManifest(manifestPath: string, outputSpecPath: string, spec: OpenAPIV3.Document, options: ParseOptions, adaptiveCardFolder?: string, auth?: OpenAPIV3.SecuritySchemeObject): Promise<[TeamsAppManifest, WarningResult[]]>;
9
+ static updateManifest(manifestPath: string, outputSpecPath: string, spec: OpenAPIV3.Document, options: ParseOptions, adaptiveCardFolder?: string, authInfo?: AuthInfo): Promise<[TeamsAppManifest, WarningResult[]]>;
10
10
  static generateCommands(spec: OpenAPIV3.Document, manifestPath: string, options: ParseOptions, adaptiveCardFolder?: string): Promise<[IMessagingExtensionCommand[], WarningResult[]]>;
11
11
  static getRelativePath(from: string, to: string): string;
12
12
  }
@@ -31,7 +31,7 @@ export declare class SpecParser {
31
31
  * @returns A string array that represents the HTTP method and path of each operation, such as ['GET /pets/{petId}', 'GET /user/{userId}']
32
32
  * according to copilot plugin spec, only list get and post method without auth
33
33
  */
34
- list(): Promise<ListAPIResult[]>;
34
+ list(): Promise<ListAPIResult>;
35
35
  /**
36
36
  * Generate specs according to the filters.
37
37
  * @param filter An array of strings that represent the filters to apply when generating the artifacts. If filter is empty, it would process nothing.
@@ -1,11 +1,12 @@
1
1
  import { OpenAPIV3 } from "openapi-types";
2
2
  import SwaggerParser from "@apidevtools/swagger-parser";
3
- import { AuthSchema, CheckParamResult, ErrorResult, Parameter, ParseOptions, ValidateResult, WarningResult } from "./interfaces";
4
- import { IMessagingExtensionCommand } from "@microsoft/teams-manifest";
3
+ import { AuthInfo, CheckParamResult, ErrorResult, ParseOptions, ValidateResult, WarningResult } from "./interfaces";
4
+ import { IMessagingExtensionCommand, IParameter } from "@microsoft/teams-manifest";
5
5
  export declare class Utils {
6
6
  static hasNestedObjectInSchema(schema: OpenAPIV3.SchemaObject): boolean;
7
7
  static checkParameters(paramObject: OpenAPIV3.ParameterObject[], isCopilot: boolean): CheckParamResult;
8
8
  static checkPostBody(schema: OpenAPIV3.SchemaObject, isRequired?: boolean, isCopilot?: boolean): CheckParamResult;
9
+ static containMultipleMediaTypes(bodyObject: OpenAPIV3.RequestBodyObject | OpenAPIV3.ResponseObject): boolean;
9
10
  /**
10
11
  * Checks if the given API is supported.
11
12
  * @param {string} method - The HTTP method of the API.
@@ -21,20 +22,21 @@ export declare class Utils {
21
22
  * 6. only support request body with “application/json” content type
22
23
  */
23
24
  static isSupportedApi(method: string, path: string, spec: OpenAPIV3.Document, options: ParseOptions): boolean;
24
- static isSupportedAuth(authSchemaArray: AuthSchema[][], options: ParseOptions): boolean;
25
- static isAPIKeyAuth(authSchema: OpenAPIV3.SecuritySchemeObject): boolean;
26
- static isBearerTokenAuth(authSchema: OpenAPIV3.SecuritySchemeObject): boolean;
27
- static getAuthArray(securities: OpenAPIV3.SecurityRequirementObject[] | undefined, spec: OpenAPIV3.Document): AuthSchema[][];
25
+ static isSupportedAuth(authSchemeArray: AuthInfo[][], options: ParseOptions): boolean;
26
+ static isBearerTokenAuth(authScheme: OpenAPIV3.SecuritySchemeObject): boolean;
27
+ static isAPIKeyAuth(authScheme: OpenAPIV3.SecuritySchemeObject): boolean;
28
+ static isOAuthWithAuthCodeFlow(authScheme: OpenAPIV3.SecuritySchemeObject): boolean;
29
+ static getAuthArray(securities: OpenAPIV3.SecurityRequirementObject[] | undefined, spec: OpenAPIV3.Document): AuthInfo[][];
28
30
  static updateFirstLetter(str: string): string;
29
- static getResponseJson(operationObject: OpenAPIV3.OperationObject | undefined): OpenAPIV3.MediaTypeObject;
31
+ static getResponseJson(operationObject: OpenAPIV3.OperationObject | undefined, isTeamsAiProject?: boolean): OpenAPIV3.MediaTypeObject;
30
32
  static convertPathToCamelCase(path: string): string;
31
33
  static getUrlProtocol(urlString: string): string | undefined;
32
34
  static resolveServerUrl(url: string): string;
33
35
  static checkServerUrl(servers: OpenAPIV3.ServerObject[]): ErrorResult[];
34
36
  static validateServer(spec: OpenAPIV3.Document, options: ParseOptions): ErrorResult[];
35
37
  static isWellKnownName(name: string, wellknownNameList: string[]): boolean;
36
- static generateParametersFromSchema(schema: OpenAPIV3.SchemaObject, name: string, allowMultipleParameters: boolean, isRequired?: boolean): [Parameter[], Parameter[]];
37
- static updateParameterWithInputType(schema: OpenAPIV3.SchemaObject, param: Parameter): void;
38
+ static generateParametersFromSchema(schema: OpenAPIV3.SchemaObject, name: string, allowMultipleParameters: boolean, isRequired?: boolean): [IParameter[], IParameter[]];
39
+ static updateParameterWithInputType(schema: OpenAPIV3.SchemaObject, param: IParameter): void;
38
40
  static parseApiInfo(operationItem: OpenAPIV3.OperationObject, options: ParseOptions): [IMessagingExtensionCommand, WarningResult | undefined];
39
41
  static listSupportedAPIs(spec: OpenAPIV3.Document, options: ParseOptions): {
40
42
  [key: string]: OpenAPIV3.OperationObject;
@@ -42,4 +44,5 @@ export declare class Utils {
42
44
  static validateSpec(spec: OpenAPIV3.Document, parser: SwaggerParser, isSwaggerFile: boolean, options: ParseOptions): ValidateResult;
43
45
  static format(str: string, ...args: string[]): string;
44
46
  static getSafeRegistrationIdEnvName(authName: string): string;
47
+ static getAllAPICount(spec: OpenAPIV3.Document): number;
45
48
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/m365-spec-parser",
3
- "version": "0.1.1-alpha.169a2b37a.0",
3
+ "version": "0.1.1-alpha.2f5decfcc.0",
4
4
  "description": "OpenAPI specification files Parser for M365 Apps",
5
5
  "main": "dist/index.node.cjs.js",
6
6
  "browser": "dist/index.esm2017.js",
@@ -39,7 +39,7 @@
39
39
  "sideEffects": false,
40
40
  "dependencies": {
41
41
  "@apidevtools/swagger-parser": "^10.1.0",
42
- "@microsoft/teams-manifest": "0.1.4-alpha.169a2b37a.0",
42
+ "@microsoft/teams-manifest": "0.1.4-alpha.2f5decfcc.0",
43
43
  "fs-extra": "^11.2.0",
44
44
  "js-yaml": "^4.1.0",
45
45
  "openapi-types": "^7.2.3",
@@ -148,5 +148,5 @@
148
148
  "npx eslint --cache --fix --quiet"
149
149
  ]
150
150
  },
151
- "gitHead": "9e21a14cbb5f6def91abf56725a2ba0c60cec375"
151
+ "gitHead": "f45c01f9a70836de49671dc1e5a2ca6ac22eac8e"
152
152
  }