import type { AppListResponse, WorkflowOnlineUsersResponse } from '@/models/app' import type { CommonResponse } from '@/models/common' import type { AppModeEnum } from '@/types/app' import { type } from '@orpc/contract' import { base } from '../base' export type AppListSortBy = 'last_modified' | 'recently_created' | 'earliest_created' type AppListMode = AppModeEnum | 'agent' | 'channel' | 'all' export type AppListQuery = { page?: number limit?: number name?: string mode?: AppListMode tag_ids?: string[] creator_ids?: string[] is_created_by_me?: boolean sort_by?: AppListSortBy } export const appListContract = base .route({ path: '/apps', method: 'GET', }) .input(type<{ query?: AppListQuery }>()) .output(type()) export const appDeleteContract = base .route({ path: '/apps/{appId}', method: 'DELETE', }) .input(type<{ params: { appId: string } }>()) .output(type()) export const appStarredListContract = base .route({ path: '/apps/starred', method: 'GET', }) .input(type<{ query?: AppListQuery }>()) .output(type()) export const appStarContract = base .route({ path: '/apps/{appId}/star', method: 'POST', }) .input(type<{ params: { appId: string } }>()) .output(type()) export const appUnstarContract = base .route({ path: '/apps/{appId}/star', method: 'DELETE', }) .input(type<{ params: { appId: string } }>()) .output(type()) export const workflowOnlineUsersContract = base .route({ path: '/apps/workflows/online-users', method: 'POST', }) .input(type<{ body: { app_ids: string[] } }>()) .output(type())