/** * Copyright (c) 2020 TypeFox GmbH. All rights reserved. * Licensed under the GNU Affero General Public License (AGPL). * See License-AGPL.txt in the project root for license information. */ import { User, Workspace, NamedWorkspaceFeatureFlag } from "./protocol"; import { Without } from "./util/without"; import { WorkspaceInstance, WorkspaceInstancePhase } from "./workspace-instance"; import { RoleOrPermission } from "./permission"; export interface AdminServer { adminGetUsers(req: AdminGetListRequest): Promise>; adminGetUser(id: string): Promise; adminBlockUser(req: AdminBlockUserRequest): Promise; adminModifyRoleOrPermission(req: AdminModifyRoleOrPermissionRequest): Promise; adminModifyPermanentWorkspaceFeatureFlag(req: AdminModifyPermanentWorkspaceFeatureFlagRequest): Promise; adminGetWorkspaces(req: AdminGetWorkspacesRequest): Promise>; adminGetWorkspace(id: string): Promise; adminForceStopWorkspace(id: string): Promise; adminSetLicense(key: string): Promise; } export interface AdminGetListRequest { offset: number limit: number orderBy: keyof T orderDir: "asc" | "desc" searchTerm?: string; } export interface AdminGetListResult { total: number rows: T[] } export interface AdminBlockUserRequest { id: string blocked: boolean } export interface AdminModifyRoleOrPermissionRequest { id: string; rpp: { r: RoleOrPermission add: boolean }[] } export interface AdminModifyPermanentWorkspaceFeatureFlagRequest { id: string; changes: { featureFlag: NamedWorkspaceFeatureFlag add: boolean }[] } export interface WorkspaceAndInstance extends Without, Without { workspaceId: string; workspaceCreationTime: string; instanceId: string; instanceCreationTime: string; phase: WorkspaceInstancePhase; } export interface AdminGetWorkspacesRequest extends AdminGetListRequest { ownerId?: string }