Skip to main content

API Reference

The API Server exposes a REST API over HTTP. All endpoints are versioned under /api/v1. The browser-based Console and CLI are the primary callers.

Go SDK

k8shell-go is the official Go client for this API. If you are building automation or tooling in Go, use it instead of calling the REST endpoints directly.

Authentication​

All endpoints except those under /api/v1/auth and /api/v1/healthcheck require a valid session. Requests must carry either a session cookie (web clients) or a bearer token (CLI and automation). Unauthenticated requests are rejected with 401 Unauthorized. See Authentication for details.

Endpoints​

Health​

Base path: /api/v1

GET /healthcheck — Returns 200 OK with a health status payload.

Auth​

Base path: /api/v1/auth. No authentication required.

GET /providers — Returns the list of configured identity providers available for login.

GET /login — Initiates the OAuth web flow for the selected identity provider. Redirects the browser to the provider's authorization endpoint.

POST /callback — OAuth callback handler. Exchanges the authorization code for a user token, issues a session cookie, and redirects the browser back to the Console.

POST /logout — Invalidates the current session and clears the session cookie.

Current user​

Base path: /api/v1/me

Convenience aliases that resolve to the authenticated user's own identity. Equivalent to calling the corresponding /api/v1/users/:username/... endpoint.

GET /profile — Returns the authenticated user's profile.

GET /sessions — Returns the authenticated user's workspace sessions.

GET /credentials — Returns all credential records for the authenticated user.

GET /credentials/:name — Returns the credential helper record for git, registry, or kubernetes.

GET /blueprints — Returns the blueprints available to the authenticated user.

Users​

Base path: /api/v1/users

GET / — Returns all users known to the platform.

GET /:username/profile — Returns the profile for the specified user.

GET /:username/sessions — Returns workspace sessions for the specified user.

GET /:username/credentials — Returns all credential records for the specified user.

GET /:username/credentials/:name — Returns a credential helper for a specific service for the user.

GET /:username/blueprints — Returns the blueprints available to the specified user.

Workspaces​

Base path: /api/v1/workspaces

GET / — Returns all workspaces visible to the authenticated user.

POST / — Provisions a new workspace. The request body specifies the blueprint and user-string parameters. The API Server forwards the request to the Provisioner and returns a provision job ID for progress tracking.

GET /:workspace_name — Returns the full details of a single workspace.

DELETE /:workspace_name — Deletes a workspace and all its resources or a workspace pod (soft shutown)

GET /:workspace_name/sysinfo — Returns system information for a workspace (CPU, memory, disk).

GET /:workspace_name/interactive — Upgrades the connection to a WebSocket and starts an interactive CloudShell session. See WebSocket for protocol details.

Workspace apps​

Base path: /api/v1/workspaces/:workspace_name/apps

GET / — Returns the list of apps registered for the workspace.

GET /:app_name/logs — Streams logs from the specified app.

POST /:app_name/install — Installs the specified app into the workspace.

POST /:app_name/start — Starts the specified app.

POST /:app_name/stop — Stops the specified app.

File transfer​

Base path: /api/v1/workspaces/:workspace_name

GET /files — Downloads a file from the workspace. The file path is supplied as a query parameter. Routed to the workspace SFTP subsystem via k8shelld.

PUT /files — Uploads a file to the workspace. The target path is supplied as a query parameter.

Provision jobs​

Base path: /api/v1/jobs

GET /:job_id — Returns the current status of a workspace provisioning job. Jobs are short-lived and stored in NATS KV with a 10-minute TTL. Callers poll this endpoint after POST /api/v1/workspaces to track provisioning progress.

Internal​

Base path: /api/v1/internal/users

POST /:username/token — Issues a short-lived user token for use inside a workspace. Called by k8shelld on behalf of a workspace process that needs to authenticate against the API Server. Not intended for external callers.