API Usage Cookbook¶
This guide shows how to call REST API using Bash (curl), Python, and JavaScript.
Authentication: All API requests must include your API key in the X-API-KEY header.
API Documentation: For interactive API exploration and full endpoint reference, visit the SharonAI API Documentation.
Table of contents¶
- Quickstart in 2 Minutes
- Compute Instance Lifecycle Flow
- Copy-Ready Examples
- Get your X-API-KEY from the portal
- List available compute profiles
- Compute Instance Payload
- Create a Compute Instance
- Publish a Compute Instance
- Manage Compute Instance
- Get Compute Instance Connection Details
- Destroy a Compute Instance
Quickstart in 2 Minutes¶
If you already have an API key, this flow creates and publishes one compute instance, then fetches its connection details.
export API_KEY="ra2.your-api-key"
export BASE_URL="https://console.compute.sharonai.cloud"
export PROJECT_NAME="defaultproject"
export WORKSPACE_NAME="my-workspace"
export INSTANCE_NAME="my-instance"
export COMPUTE_PROFILE_NAME="od-ssd-l40s-vm-1"
cat > payload.json <<JSON
{
"apiVersion": "paas.envmgmt.io/v1",
"kind": "ComputeInstance",
"metadata": {
"name": "${INSTANCE_NAME}",
"workspace": "${WORKSPACE_NAME}",
"project": "${PROJECT_NAME}"
},
"spec": {
"computeProfile": {
"name": "${COMPUTE_PROFILE_NAME}",
"systemCatalog": true
},
"variables": [
{
"name": "Assign Public IP to Guest",
"value": "True"
},
{
"name": "Guest Disk Size",
"value": "32"
},
{
"name": "Guest Password",
"value": "my-secure-password"
}
]
}
}
JSON
# 1) Create compute instance
curl -sS -X POST "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-d @payload.json
# 2) Publish compute instance (start provisioning)
curl -sS -X POST "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/publish" \
-H "accept: application/json" \
-H "X-API-KEY: $API_KEY"
# 3) Wait briefly, then fetch connection details
sleep 20
curl -sS -X GET "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}" \
-H "accept: application/json" \
-H "X-API-KEY: $API_KEY"
Tip: If you do not have an API key yet, complete the steps in the next section first.
Compute Instance Lifecycle Flow¶
flowchart LR
A[Get API key] --> B[List compute profiles]
B --> C[Create compute instance]
C --> D[Publish instance]
D --> E[Get connection details]
E --> F{Operate instance}
F --> G[Start]
F --> H[Stop]
F --> I[Reboot]
G --> E
H --> E
I --> E
E --> J[Destroy instance]
Copy-Ready Examples¶
Use this block as your default shell setup, then copy any API command below.
export API_KEY="ra2.your-api-key"
export BASE_URL="https://console.compute.sharonai.cloud"
export PROJECT_NAME="defaultproject"
export WORKSPACE_NAME="my-workspace"
export INSTANCE_NAME="my-instance"
export COMPUTE_PROFILE_NAME="od-ssd-l40s-vm-1"
# List compute profiles
curl -X GET "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/computeprofiles" \
-H "accept: application/json" \
-H "X-API-KEY: $API_KEY"
# Create instance (expects payload.json in current directory)
curl -X POST "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-d @payload.json
# Publish existing instance
curl -X POST "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/publish" \
-H "accept: application/json" \
-H "X-API-KEY: $API_KEY"
# Get connection details
curl -X GET "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}" \
-H "accept: application/json" \
-H "X-API-KEY: $API_KEY"
# Destroy instance
curl -X POST "${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/destroy" \
-H "accept: application/json" \
-H "X-API-KEY: $API_KEY"
Get your X-API-KEY from the portal¶
Before calling the API, you need an API key.
- Log in to the https://portal.sharonai.cloud
- Go to Compute or Infrastructure from App launcher Icon
- Go to My Tools -> API & Registry Keys click on Manage keys
- Create New API key, copy and store it securely for usage
- API key starts with
ra2.
Bash — set the key in your shell (use a config file or env for real use):
# Replace with the key you got from the portal
export API_KEY="your-api-key-from-portal"
# Set base URL (optional, defaults to production)
export BASE_URL="https://console.compute.sharonai.cloud"
# Set your project and workspace names
export PROJECT_NAME="defaultproject"
export WORKSPACE_NAME="my-workspace"
export INSTANCE_NAME="my-instance"
export COMPUTE_PROFILE_NAME="od-ssd-l40s-vm-1"
Python — set the key in your script (use an env var or config in production):
import os
# Replace with the key you got from the portal, or use an env var:
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
# Set base URL (optional, defaults to production)
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
# Set your project and workspace names
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
COMPUTE_PROFILE_NAME = os.environ.get("COMPUTE_PROFILE_NAME", "od-ssd-l40s-vm-1")
JavaScript — set the key in your script (use an env var or config in production):
// Replace with the key you got from the portal, or use an env var:
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
// Set base URL (optional, defaults to production)
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
// Set your project and workspace names
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const COMPUTE_PROFILE_NAME = process.env.COMPUTE_PROFILE_NAME || "od-ssd-l40s-vm-1";
List available compute profiles¶
List available compute profiles
To discover what compute profiles are available for your project, make a GET request to the `/apis/paas.envmgmt.io/v1/projects/{project-name}/computeprofiles` endpoint. This is useful to determine which `computeProfile.name` you can use in the compute instance payload.curl -X 'GET' \
"${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/computeprofiles" \
-H 'accept: application/json' \
-H "X-API-KEY: $API_KEY"
import os
import requests
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/computeprofiles"
headers = {
"accept": "application/json",
"X-API-KEY": API_KEY,
}
response = requests.get(url, headers=headers)
print(response.json())
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/computeprofiles`;
fetch(url, {
method: "GET",
headers: {
"accept": "application/json",
"X-API-KEY": API_KEY,
},
})
.then((res) => res.json())
.then((data) => console.log(data))
.catch((err) => console.error("Error:", err));
{
"apiVersion": "paas.envmgmt.io/v1",
"kind": "ComputeProfileList",
"metadata": {
"count": 1,
"limit": 10
},
"items": [
{
"apiVersion": "paas.envmgmt.io/v1",
"kind": "ComputeProfile",
"metadata": {
"name": "od-ssd-l40s-vm-8",
"description": "High-performance Ubuntu GPU VM with 8× NVIDIA L40S, 720 GB RAM, and 112 vCPUs, available on Ubuntu 22.04 or 24.04 with optional GPU-ready images for fast AI and ML workloads."
}
}
]
}
Compute Instance Payload¶
Compute Instance Payload
To avoid repeating the same request body for every language, store the JSON payload in one file (e.g. `payload.json`) and reference it from your client of choice. The rest of this section shows a canonical **cURL** example (portable across platforms). The **Python** and **JavaScript** snippets that follow are optional versions for developers already working in those languages. Create `payload.json` with the following content and replace the placeholder values where indicated:{
"apiVersion": "paas.envmgmt.io/v1",
"kind": "ComputeInstance",
"metadata": {
"name": "{{INSTANCE_NAME}}",
"workspace": "{{WORKSPACE_NAME}}",
"project": "{{PROJECT_NAME}}"
},
"spec": {
"computeProfile": {
"name": "{{COMPUTE_PROFILE_NAME}}",
"systemCatalog": true
},
"variables": [
{
"name": "Assign Public IP to Guest",
"value": "True"
},
{
"name": "Guest Disk Size",
"value": "32"
},
{
"name": "Guest Password",
"value": "my-secure-password"
},
{
"name": "Guest SSH Public Keys",
"value": "ssh-rsa AAAAB3NzaC1yc..."
}
]
}
}
# Render payload.json with environment variables (requires envsubst)
envsubst < payload.json > payload.rendered.json
curl -X POST "${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-d @payload.rendered.json
import json
import os
import requests
# Replace with your actual values or set via environment variables
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
COMPUTE_PROFILE_NAME = os.environ.get("COMPUTE_PROFILE_NAME", "od-ssd-l40s-vm-1")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances"
headers = {
"X-API-KEY": API_KEY,
"Content-Type": "application/json"
}
with open("payload.json", "r", encoding="utf-8") as f:
payload = json.load(f)
# Override placeholders as needed
payload["metadata"]["name"] = INSTANCE_NAME
payload["metadata"]["workspace"] = WORKSPACE_NAME
payload["metadata"]["project"] = PROJECT_NAME
payload["spec"]["computeProfile"]["name"] = COMPUTE_PROFILE_NAME
response = requests.post(url, headers=headers, json=payload)
print(response.json())
import fs from "fs";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const COMPUTE_PROFILE_NAME = process.env.COMPUTE_PROFILE_NAME || "od-ssd-l40s-vm-1";
const payload = JSON.parse(fs.readFileSync("payload.json", "utf8"));
// Override placeholders with runtime values
payload.metadata.name = INSTANCE_NAME;
payload.metadata.workspace = WORKSPACE_NAME;
payload.metadata.project = PROJECT_NAME;
payload.spec.computeProfile.name = COMPUTE_PROFILE_NAME;
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances`;
const headers = {
"X-API-KEY": API_KEY,
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(payload)
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
Create a Compute Instance¶
Create a Compute Instance
To create a compute instance, make a POST request to the `/apis/paas.envmgmt.io/v1/projects/{project-name}/workspaces/{workspace-name}/computeinstances` endpoint with your API key in the `X-API-KEY` header. **Note:** Replace `{project-name}` with your actual project name and `{workspace-name}` with your workspace name. You can also set `PROJECT_NAME` and `WORKSPACE_NAME` environment variables to avoid hardcoding these values. ### Commonly Customized Variables When creating a compute instance, you can customize these key variables: - **Assign Public IP to Guest**: Set to `"True"` or `"False"` for public IP assignment - **Guest Disk Size**: Disk size in GB (minimum 32GB, increments of 32GB) - **Guest Password**: VM password (leave empty for auto-generated secure password) - **Guest SSH Public Keys**: Your SSH public key for VM access ### Shared JSON Payload (single source of truth) To avoid repeating the same request body for every language, store the JSON payload in one file (e.g. `payload.json`) and reference it from your client of choice. The rest of this section shows a canonical **cURL** example (portable across platforms). The **Python** and **JavaScript** snippets that follow are optional versions for developers already working in those languages. Create `payload.json` with the following content and replace the placeholder values where indicated:{
"apiVersion": "paas.envmgmt.io/v1",
"kind": "ComputeInstance",
"metadata": {
"name": "{{INSTANCE_NAME}}",
"workspace": "{{WORKSPACE_NAME}}",
"project": "{{PROJECT_NAME}}"
},
"spec": {
"computeProfile": {
"name": "{{COMPUTE_PROFILE_NAME}}",
"systemCatalog": true
},
"variables": [
{
"name": "Assign Public IP to Guest",
"value": "True"
},
{
"name": "Guest Disk Size",
"value": "32"
},
{
"name": "Guest Password",
"value": "my-secure-password"
},
{
"name": "Guest SSH Public Keys",
"value": "ssh-rsa AAAAB3NzaC1yc..."
}
]
}
}
# Render payload.json with environment variables (requires envsubst)
envsubst < payload.json > payload.rendered.json
curl -X POST "${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances" \
-H "X-API-KEY: $API_KEY" \
-H "Content-Type: application/json" \
-d @payload.rendered.json
import json
import os
import requests
# Replace with your actual values or set via environment variables
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
COMPUTE_PROFILE_NAME = os.environ.get("COMPUTE_PROFILE_NAME", "od-ssd-l40s-vm-1")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances"
headers = {
"X-API-KEY": API_KEY,
"Content-Type": "application/json"
}
with open("payload.json", "r", encoding="utf-8") as f:
payload = json.load(f)
# Override placeholders as needed
payload["metadata"]["name"] = INSTANCE_NAME
payload["metadata"]["workspace"] = WORKSPACE_NAME
payload["metadata"]["project"] = PROJECT_NAME
payload["spec"]["computeProfile"]["name"] = COMPUTE_PROFILE_NAME
response = requests.post(url, headers=headers, json=payload)
print(response.json())
import fs from "fs";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const COMPUTE_PROFILE_NAME = process.env.COMPUTE_PROFILE_NAME || "od-ssd-l40s-vm-1";
const payload = JSON.parse(fs.readFileSync("payload.json", "utf8"));
// Override placeholders with runtime values
payload.metadata.name = INSTANCE_NAME;
payload.metadata.workspace = WORKSPACE_NAME;
payload.metadata.project = PROJECT_NAME;
payload.spec.computeProfile.name = COMPUTE_PROFILE_NAME;
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances`;
const headers = {
"X-API-KEY": API_KEY,
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(payload)
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
Publish a Compute Instance¶
Publish a Compute Instance
Once a compute instance exists, you can publish it (trigger provisioning) by calling the `publish` endpoint.curl -X 'POST' \
"${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances/${INSTANCE_NAME:-my-instance}/publish" \
-H 'accept: application/json' \
-H "X-API-KEY: $API_KEY"
import os
import requests
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances/{INSTANCE_NAME}/publish"
headers = {
"accept": "application/json",
"X-API-KEY": API_KEY,
}
response = requests.post(url, headers=headers)
print(response.json())
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/publish`;
fetch(url, {
method: "POST",
headers: {
"accept": "application/json",
"X-API-KEY": API_KEY,
},
})
.then((res) => res.json())
.then((data) => console.log(data))
.catch((err) => console.error("Error:", err));
Manage Compute Instance¶
Manage Compute Instance
You can perform actions on an existing compute instance such as start, stop, or reboot by calling the `action` endpoint with the desired action. ### Stop a Compute Instancecurl -X 'POST' \
"${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances/${INSTANCE_NAME:-my-instance}/action/stop" \
-H 'accept: application/json' \
-H "X-API-KEY: $API_KEY" \
-H 'Content-Type: application/json'
import os
import requests
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances/{INSTANCE_NAME}/action/stop"
headers = {
"accept": "application/json",
"X-API-KEY": API_KEY,
"Content-Type": "application/json",
}
response = requests.post(url, headers=headers)
print(response.json())
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/action/stop`;
fetch(url, {
method: "POST",
headers: {
"accept": "application/json",
"X-API-KEY": API_KEY,
"Content-Type": "application/json",
},
})
.then((res) => res.json())
.then((data) => console.log(data))
.catch((err) => console.error("Error:", err));
curl -X 'POST' \
"${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances/${INSTANCE_NAME:-my-instance}/action/start" \
-H 'accept: application/json' \
-H "X-API-KEY: $API_KEY" \
-H 'Content-Type: application/json'
import os
import requests
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances/{INSTANCE_NAME}/action/start"
headers = {
"accept": "application/json",
"X-API-KEY": API_KEY,
"Content-Type": "application/json",
}
response = requests.post(url, headers=headers)
print(response.json())
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/action/start`;
fetch(url, {
method: "POST",
headers: {
"accept": "application/json",
"X-API-KEY": API_KEY,
"Content-Type": "application/json",
},
})
.then((res) => res.json())
.then((data) => console.log(data))
.catch((err) => console.error("Error:", err));
curl -X 'POST' \
"${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances/${INSTANCE_NAME:-my-instance}/action/reboot" \
-H 'accept: application/json' \
-H "X-API-KEY: $API_KEY" \
-H 'Content-Type: application/json'
import os
import requests
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances/{INSTANCE_NAME}/action/reboot"
headers = {
"accept": "application/json",
"X-API-KEY": API_KEY,
"Content-Type": "application/json",
}
response = requests.post(url, headers=headers)
print(response.json())
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/action/reboot`;
fetch(url, {
method: "POST",
headers: {
"accept": "application/json",
"X-API-KEY": API_KEY,
"Content-Type": "application/json",
},
})
.then((res) => res.json())
.then((data) => console.log(data))
.catch((err) => console.error("Error:", err));
Get Compute Instance Connection Details¶
Get Compute Instance Connection Details
Use this API to fetch variables and network details for a provisioned compute instance. This is the endpoint to check values such as username, password, host, public IP, and private IP.curl -X 'GET' \
"${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances/${INSTANCE_NAME:-my-instance}" \
-H 'accept: application/json' \
-H "X-API-KEY: $API_KEY"
import os
import requests
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances/{INSTANCE_NAME}"
headers = {
"accept": "application/json",
"X-API-KEY": API_KEY,
}
response = requests.get(url, headers=headers)
print(response.json())
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}`;
fetch(url, {
method: "GET",
headers: {
"accept": "application/json",
"X-API-KEY": API_KEY,
},
})
.then((res) => res.json())
.then((data) => console.log(data))
.catch((err) => console.error("Error:", err));
{
...
"Hostname": {
"DisplayMetadata": {
"label": "",
"valueType": "text",
"weight": null
},
"sensitive": false,
"value": "test-vm"
},
"Password": {
"DisplayMetadata": {
"label": "",
"valueType": "text",
"weight": null
},
"sensitive": false,
"value": "<redacted>"
},
"Private IP": {
"DisplayMetadata": {
"label": "",
"valueType": "text",
"weight": null
},
"sensitive": false,
"value": "10.0.0.25"
},
"Public IP": {
"DisplayMetadata": {
"label": "",
"valueType": "text",
"weight": null
},
"sensitive": false,
"value": "203.0.113.10"
}
...
}
Destroy a Compute Instance¶
Destroy a Compute Instance
To destroy (delete) an existing compute instance, call the `destroy` endpoint.curl -X 'POST' \
"${BASE_URL:-https://console.compute.sharonai.cloud}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME:-defaultproject}/workspaces/${WORKSPACE_NAME:-my-workspace}/computeinstances/${INSTANCE_NAME:-my-instance}/destroy" \
-H 'accept: application/json' \
-H "X-API-KEY: $API_KEY"
import os
import requests
BASE_URL = os.environ.get("BASE_URL", "https://console.compute.sharonai.cloud")
PROJECT_NAME = os.environ.get("PROJECT_NAME", "defaultproject")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "my-workspace")
INSTANCE_NAME = os.environ.get("INSTANCE_NAME", "my-instance")
API_KEY = os.environ.get("API_KEY", "your-api-key-from-portal")
url = f"{BASE_URL}/apis/paas.envmgmt.io/v1/projects/{PROJECT_NAME}/workspaces/{WORKSPACE_NAME}/computeinstances/{INSTANCE_NAME}/destroy"
headers = {
"accept": "application/json",
"X-API-KEY": API_KEY,
}
response = requests.post(url, headers=headers)
print(response.json())
const BASE_URL = process.env.BASE_URL || "https://console.compute.sharonai.cloud";
const PROJECT_NAME = process.env.PROJECT_NAME || "defaultproject";
const WORKSPACE_NAME = process.env.WORKSPACE_NAME || "my-workspace";
const INSTANCE_NAME = process.env.INSTANCE_NAME || "my-instance";
const API_KEY = process.env.API_KEY || "your-api-key-from-portal";
const url = `${BASE_URL}/apis/paas.envmgmt.io/v1/projects/${PROJECT_NAME}/workspaces/${WORKSPACE_NAME}/computeinstances/${INSTANCE_NAME}/destroy`;
fetch(url, {
method: "POST",
headers: {
"accept": "application/json",
"X-API-KEY": API_KEY,
},
})
.then((res) => res.json())
.then((data) => console.log(data))
.catch((err) => console.error("Error:", err));