Instance Management API
Section titled “Instance Management API”The Instance Management API provides programmatic control over VS Code extensions within a running Hoody instance. Use these endpoints to inventory installed extensions, verify extension installation, and remotely install extensions from VSIX URLs for automated deployment workflows.
GET /api/v1/code/extensions/list
Section titled “GET /api/v1/code/extensions/list”Returns a list of all installed VS Code extensions in the extensions directory.
This endpoint takes no parameters.
curl -X GET https://api.hoody.com/api/v1/code/extensions/list \ -H "Authorization: Bearer <token>"const response = await client.code.extensions.listIterator();
for await (const extensions of response) { console.log(extensions);}{ "success": true, "extensionsDir": "/home/user/.local/share/hoody-code/extensions", "count": 3, "extensions": [ "ms-python.python-2023.1.0", "ms-toolsai.jupyter-2023.2.0", "github.copilot-1.67.0" ]}{ "success": true, "extensionsDir": "/home/user/.local/share/hoody-code/extensions", "count": 0, "extensions": []}{ "success": false, "error": "Failed to read extensions directory: Permission denied"}POST /api/v1/code/extensions/install
Section titled “POST /api/v1/code/extensions/install”Installs a VS Code extension by downloading and installing a VSIX file from a URL. The VSIX file is downloaded to a cache directory and then installed using VS Code’s extension manager. If the extension is already cached, the cached version is used.
Request Body
Section titled “Request Body”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | URL to the VSIX file to install. Supports HTTPS URLs (recommended) and HTTP URLs |
asBuiltin | boolean | No | false | If true, install as a system/built-in extension. Built-in extensions cannot be uninstalled by users |
curl -X POST https://api.hoody.com/api/v1/code/extensions/install \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "url": "https://github.com/microsoft/vscode-python/releases/download/2023.1.0/ms-python-python-2023.1.0.vsix", "asBuiltin": false }'const response = await client.code.extensions.install({ data: { url: "https://github.com/microsoft/vscode-python/releases/download/2023.1.0/ms-python-python-2023.1.0.vsix", asBuiltin: false }});{ "success": true, "message": "Extension installed successfully", "url": "https://example.com/my-extension.vsix", "vsixPath": "/home/user/.local/share/hoody-code/vsix-cache/a1b2c3d4e5f6-my-extension.vsix", "asBuiltin": false, "installed": true}{ "success": false, "error": "Missing or invalid 'url' parameter"}{ "success": false, "error": "Invalid URL: not-a-url", "url": "not-a-url"}| Error Code | Title | Description | Resolution |
|---|---|---|---|
MISSING_URL | Missing URL parameter | The required ‘url’ parameter was not provided | Include a valid VSIX URL in the request body |
INVALID_URL_FORMAT | Invalid URL format | The provided URL is not a valid HTTPS or HTTP URL | Check the URL format and try again |
{ "success": false, "error": "HTTP 404 while downloading https://example.com/missing.vsix", "url": "https://example.com/missing.vsix"}{ "success": false, "error": "Installation failed: Extension is incompatible", "url": "https://example.com/extension.vsix"}| Error Code | Title | Description | Resolution |
|---|---|---|---|
DOWNLOAD_FAILED | Failed to download VSIX | Unable to download the extension file from the provided URL | Check if the URL is accessible and try again |
INSTALLATION_FAILED | Extension installation failed | VS Code failed to install the extension (may be incompatible or corrupted) | Verify the VSIX file is valid and compatible with this VS Code version |