export type AppSchema = { modules: Module[] } export type App = { id: string; tenantId: string; picture?: string; ownerId: string; title: string; web?: string; createdDate: Date; updatedDate: Date; description?: string; starred: number; archived: boolean; defaultView: boolean; itemName: string; itemsName: string; projectType: number; commentAll: number; commitsVisibility: number; inviteAll: boolean; projectColor?: string; viewTitle?: string; position?: number; schema?: AppSchema; config?: any; } export type Page = { id: string; tenantId: string; appId: string; moduleId: string; slug: string; title: string; description?: string; createdDate: Date; updatedDate: Date; parentId?: string; isFolder?: boolean; schema?: any; } export type PageSchema = { id: string; tenantId: string; pageId: string; schema: string; } export type Module = { id: string; tenantId: string; appId: string; name: string; description?: string; createdDate: Date; updatedDate: Date; pages: Page[]; } export type Extensions = { id: string; } export type Config = { extensions: Extensions[]; } export type PublishedPageOption = { id: string; slug: string; title: string; moduleId?: string; moduleName?: string; } export type PublishedAppSettings = { id: string; appId: string; subdomain: string; publishedVersion: number; defaultPageSlug: string; publishedAt: Date; updatedAt: Date; } export type PublishAppResult = { appId: string; subdomain: string; publishedVersion: number; defaultPageSlug: string; title: string; pages: PublishedPageOption[]; } export type PublishedSettingsResponse = { published: PublishedAppSettings | null; pages: PublishedPageOption[]; } export type PublishedRouteResponse = { published: PublishedAppSettings; app: App; page: Page; pages: Page[]; resolvedSlug: string; isDefaultPage: boolean; }