@apistudio/apim-cli
Version:
CLI for API Management Products
119 lines • 4.27 kB
TypeScript
import { AssetInfo } from "../../lfs/models/asset-info.model.js";
import { Project } from "../../lfs/models/project.model.js";
import { VCSProject } from "../../vcs/models/vcs-project.model.js";
import { VCSFileInfo } from "../../vcs/models/vcs-file-info.model.js";
import { FormViewTableData } from "../../component-models/models/form-view-table-data.model.js";
import { Metadata } from "../../common/models/base-asset.model.js";
import { FileAccessType } from "../interfaces/api-spec-handler.interface.js";
export interface ApiMockInfo extends AssetInfo {
project: Project | VCSProject;
apiFileHandle: FileSystemFileHandle | VCSFileInfo;
enableMocking: boolean;
}
export type ApiMockStoreModel = {
apiMock: ApiMockInfo | null;
data: ApiMockingSpec;
routeFileHandle: FileSystemFileHandle | VCSFileInfo | null;
activeResourcePath: string;
activeResourceMethod: string;
isValidPolicySequenceArray: {
state: boolean;
reason: string;
};
isValidRouteArrayInPolicySequence: {
state: boolean;
reason: string;
};
};
interface ApiResponse {
$ref: string;
}
interface ConditionalResponse {
condition: string;
statusCode: number;
response: ApiResponse;
}
interface MethodResponses {
defaultResponse: {
[statusCode: number]: {
response: ApiResponse;
};
};
conditionalResponse?: ConditionalResponse[];
}
interface Paths {
[path: string]: {
[method: string]: MethodResponses;
};
}
interface ApiMockingSpec {
paths: Paths;
}
export interface ResponseHeader extends FormViewTableData {
Key: string;
Value: string;
}
export interface ResponseBody extends FormViewTableData {
'Content-type': string;
'payload': string;
}
export interface ApiMockingStoreActions {
addApiMock: (scopeInfo: ApiMockInfo) => Promise<void>;
setRouteFileHandle: (fileHandle: FileSystemFileHandle | VCSFileInfo | null) => void;
setApiMock: (apiMock: ApiMockInfo | null) => void;
setValidPolicySequenceArray: (data: {
state: boolean;
reason: string;
}) => void;
setValidRouteArrayInPolicySequence: (data: {
state: boolean;
reason: string;
}) => void;
setData: (data: {
paths: Record<string, any>;
}) => void;
setActiveResourcePath: (path: string) => void;
setActiveResourceMethod: (method: string) => void;
setEnableMocking: (bool: boolean) => void;
addStaticResponse: (statuscode: string, responseDetails: {
name: string;
namespace: string;
version: string;
project: string;
tags: string[];
}, headerData: ResponseHeader[], body: ResponseBody[]) => Promise<void>;
addConditionalResponse: (condition: string, statuscode: string, responseDetails: {
name: string;
namespace: string;
version: string;
project: string;
tags: string[];
}, headerData: ResponseHeader[], body: ResponseBody[]) => Promise<void>;
updateStaticResponse: (prevStatusCode: string, statuscode: string, responseDetails: {
name: string;
namespace: string;
version: string;
project: string;
tags: string[];
}, headerData: ResponseHeader[], body: ResponseBody[]) => Promise<void>;
deleteStaticResponse: (statuscode: string) => Promise<void>;
updateConditionalResponse: (condition: string, index: number, statuscode: string, responseDetails: {
name: string;
namespace: string;
version: string;
project: string;
tags: string[];
}, headerData: ResponseHeader[], body: ResponseBody[]) => Promise<void>;
deleteConditionalResponse: (index: number) => Promise<void>;
refreshData: () => Promise<void>;
updateEndpointMetadata: (metadata: Metadata) => Promise<void>;
updateMockResponse: (statuscode: string, responseDetails: {
name: string;
namespace: string;
version: string;
project: string;
tags: string[];
}, headerData: ResponseHeader[], body: ResponseBody[], mockResponseFile: FileAccessType, mockResponseProject: Project | VCSProject, condition?: string) => Promise<void>;
}
export {};
//# sourceMappingURL=api-mocking-store.model.d.ts.map