62 lines
1.6 KiB
TypeScript
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;
|