PromucFlow_constructor/app/client/src/api/ApplicationApi.tsx

62 lines
1.6 KiB
TypeScript

import Api from "./Api";
import { ApiResponse } from "./ApiResponses";
import { AxiosPromise } from "axios";
export interface PublishApplicationRequest {
applicationId: string;
}
export interface PublishApplicationResponse extends ApiResponse {
data: {};
}
export interface ApplicationPagePayload {
id: string;
name: string;
isDefault: boolean;
}
export interface ApplicationResponsePayload {
id: string;
name: string;
organizationId: string;
pages?: ApplicationPagePayload[];
}
export interface FetchApplicationsResponse extends ApiResponse {
data: Array<ApplicationResponsePayload & { pages: ApplicationPagePayload[] }>;
}
export interface CreateApplicationResponse extends ApiResponse {
data: ApplicationResponsePayload;
}
export interface CreateApplicationRequest {
name: string;
}
class ApplicationApi extends Api {
static baseURL = "v1/applications/";
static publishURLPath = (applicationId: string) => `publish/${applicationId}`;
static publishApplication(
publishApplicationRequest: PublishApplicationRequest,
): AxiosPromise<PublishApplicationResponse> {
return Api.post(
ApplicationApi.baseURL +
ApplicationApi.publishURLPath(publishApplicationRequest.applicationId),
undefined,
{},
);
}
static fetchApplications(): AxiosPromise<FetchApplicationsResponse> {
return Api.get(ApplicationApi.baseURL);
}
static createApplication(
request: CreateApplicationRequest,
): AxiosPromise<CreateApplicationResponse> {
return Api.post(ApplicationApi.baseURL, request);
}
}
export default ApplicationApi;