import Api from "api/Api"; import { AxiosPromise } from "axios"; import { GenericApiResponse } from "api/ApiResponses"; import { PluginType } from "entities/Action"; import { DependencyMap } from "utils/DynamicBindingUtils"; import { DropdownOption } from "components/ads/Dropdown"; export type PluginId = string; export type PluginPackageName = string; export type GenerateCRUDEnabledPluginMap = Record; export enum UIComponentTypes { DbEditorForm = "DbEditorForm", UQIDbEditorForm = "UQIDbEditorForm", ApiEditorForm = "ApiEditorForm", RapidApiEditorForm = "RapidApiEditorForm", JsEditorForm = "JsEditorForm", } export enum DatasourceComponentTypes { RestAPIDatasourceForm = "RestAPIDatasourceForm", AutoForm = "AutoForm", } export interface Plugin { id: string; name: string; type: PluginType; packageName: string; iconLocation?: string; uiComponent: UIComponentTypes; datasourceComponent: DatasourceComponentTypes; allowUserDatasources?: boolean; templates: Record; responseType?: "TABLE" | "JSON"; documentationLink?: string; generateCRUDPageComponent?: string; } export interface PluginFormPayload { form: any[]; editor: any[]; setting: any[]; dependencies: DependencyMap; } class PluginsApi extends Api { static url = "v1/plugins"; static fetchPlugins( orgId: string, ): AxiosPromise> { return Api.get(PluginsApi.url, { organizationId: orgId }); } static fetchFormConfig( id: string, ): AxiosPromise> { return Api.get(PluginsApi.url + `/${id}/form`); } // Definition to fetch the dynamic data via the URL passed in the config static fetchDynamicFormValues( url: string, ): AxiosPromise> { return Api.get(url); } } export default PluginsApi;