Path: blob/master/src/packages/conat/hub/api/system.ts
1712 views
import { noAuth, authFirst, requireAccount } from "./util";1import type { Customize } from "@cocalc/util/db-schema/server-settings";2import type {3ApiKey,4Action as ApiKeyAction,5} from "@cocalc/util/db-schema/api-keys";6import { type UserSearchResult } from "@cocalc/util/db-schema/accounts";78export const system = {9getCustomize: noAuth,10ping: noAuth,11terminate: authFirst,12userTracking: authFirst,13logClientError: authFirst,14webappError: authFirst,15manageApiKeys: authFirst,16generateUserAuthToken: authFirst,17revokeUserAuthToken: noAuth,18userSearch: authFirst,19getNames: requireAccount,20adminResetPasswordLink: authFirst,21sendEmailVerification: authFirst,22deletePassport: authFirst,2324adminSalesloftSync: authFirst,25userSalesloftSync: authFirst,26};2728export interface System {29// get all or specific customize data30getCustomize: (fields?: string[]) => Promise<Customize>;31// ping server and get back the current time32ping: () => { now: number };33// terminate a service:34// - only admin can do this.35// - useful for development36terminate: (service: "database" | "api") => Promise<void>;3738userTracking: (opts: {39event: string;40value: object;41account_id?: string;42}) => Promise<void>;4344logClientError: (opts: {45account_id?: string;46event: string;47error: string;48}) => Promise<void>;4950webappError: (opts: object) => Promise<void>;5152manageApiKeys: (opts: {53account_id?: string;54action: ApiKeyAction;55project_id?: string;56name?: string;57expire?: Date;58id?: number;59}) => Promise<ApiKey[] | undefined>;6061generateUserAuthToken: (opts: {62account_id?: string;63user_account_id: string;64password?: string;65}) => Promise<string>;6667revokeUserAuthToken: (authToken: string) => Promise<void>;6869userSearch: (opts: {70account_id?: string;71query: string;72limit?: number;73admin?: boolean;74only_email?: boolean;75}) => Promise<UserSearchResult[]>;7677getNames: (account_ids: string[]) => Promise<{78[account_id: string]:79| {80first_name: string;81last_name: string;82profile?: { color?: string; image?: string };83}84| undefined;85}>;8687// adminResetPasswordLink: Enables admins (and only admins!) to generate and get a password reset88// for another user. The response message contains a password reset link,89// though without the site part of the url (the client should fill that in).90// This makes it possible for admins to reset passwords of users, even if91// sending email is not setup, e.g., for cocalc-docker, and also deals with the92// possibility that users have no email address, or broken email, or they93// can't receive email due to crazy spam filtering.94// Non-admins always get back an error.95adminResetPasswordLink: (opts: {96account_id?: string;97user_account_id: string;98}) => Promise<string>;99100// user must be an admin or get an error. Sync's the given salesloft accounts.101adminSalesloftSync: (opts: {102account_id?: string;103account_ids: string[];104}) => Promise<void>;105106userSalesloftSync: (opts: { account_id?: string }) => Promise<void>;107108sendEmailVerification: (opts: {109account_id?: string;110only_verify?: boolean;111}) => Promise<void>;112113deletePassport: (opts: {114account_id?: string;115strategy: string;116id: string;117}) => Promise<void>;118}119120121