Path: blob/master/src/packages/next/pages/api/v2/compute/compute-server-action.ts
1452 views
/*1Request to do an action (e.g., "start") with a compute server.2You must be the owner of the compute server.3*/4import computeServerAction from "@cocalc/server/compute/compute-server-action";56import getAccountId from "lib/account/get-account";7import getParams from "lib/api/get-params";89import { apiRoute, apiRouteOperation } from "lib/api";10import { OkStatus } from "lib/api/status";11import {12ComputeServerActionInputSchema,13ComputeServerActionOutputSchema,14} from "lib/api/schema/compute/compute-server-action";1516async function handle(req, res) {17try {18res.json(await get(req));19} catch (err) {20res.json({ error: `${err.message}` });21return;22}23}2425async function get(req) {26const account_id = await getAccountId(req);27if (!account_id) {28throw Error("must be signed in");29}30const { id, action } = getParams(req);31await computeServerAction({32account_id,33id,34action,35});36return OkStatus;37}3839export default apiRoute({40serverAction: apiRouteOperation({41method: "POST",42openApiOperation: {43tags: ["Compute"],44},45})46.input({47contentType: "application/json",48body: ComputeServerActionInputSchema,49})50.outputs([51{52status: 200,53contentType: "application/json",54body: ComputeServerActionOutputSchema,55},56])57.handler(handle),58});596061