@pipedream.in/cloud-compute-sdk
Version:
Official SDK for Pipedream Cloud Compute Platform
195 lines (194 loc) • 7.7 kB
TypeScript
/**
* SDK Client for Cloud Compute Platform
*
* Example usage:
*
* import { CloudComputeSDK } from './lib/sdkClient'
*
* const sdk = new CloudComputeSDK({
* baseUrl: 'https://your-project.supabase.co/functions/v1',
* apiKey: 'your-api-key'
* })
*
* // Check wallet balance
* const balance = await sdk.wallet.getBalance()
*
* // Create deployment
* const deployment = await sdk.deployments.create({
* cloud_inventory_id: 'uuid',
* rental_duration_hours: 24
* })
*/
export interface SDKConfig {
baseUrl: string;
apiKey: string;
}
export interface CloudProvider {
id: string;
name: string;
display_name: string;
description?: string;
logo_url?: string;
is_active: boolean;
}
export interface CloudRegion {
id: string;
provider_id: string;
region_code: string;
region_name: string;
is_active: boolean;
}
export interface CloudInventory {
id: string;
provider_id: string;
region_id: string;
instance_type: string;
price_usd_hr: number;
vcpu?: number;
memory?: string;
storage_type?: string;
storage_total_gb?: number;
accel_model?: string;
accel_count?: number;
accel_mem_mib?: number;
is_active: boolean;
minimum_hours: number;
availability_type: string;
class?: string;
}
export interface ProviderTemplate {
id: string;
provider_id: string;
template_name: string;
display_name: string;
description?: string;
operating_system: string;
os_family: string;
template_type: string;
default_username: string;
supported_instance_types?: string[];
is_active: boolean;
}
export interface CreateDeploymentRequest {
cloud_inventory_id: string;
rental_duration_hours?: number;
deployment_type?: 'cloud' | 'private';
ssh_public_key?: string;
tags?: Record<string, any>;
}
export interface Deployment {
deployment_id: string;
status: string;
cost_usd: number;
duration_hours: number;
created_at: string;
}
export interface APIKey {
id: string;
keyName: string;
apiKey?: string;
permissions: string[];
isActive: boolean;
lastUsedAt?: string;
expiresAt?: string;
createdAt: string;
}
export interface UsageSummary {
period: {
start_date: string;
end_date: string;
};
summary: {
total_calls: number;
successful_calls: number;
failed_calls: number;
total_cost_usd: number;
success_rate: string;
};
endpoint_breakdown: Array<{
endpoint: string;
calls: number;
cost_usd: number;
}>;
}
export declare class CloudComputeSDK {
private baseUrl;
private apiKey;
constructor(config: SDKConfig);
private request;
providers: {
list: () => Promise<{
data: CloudProvider[];
}>;
getRegions: (providerId?: string) => Promise<{
data: CloudRegion[];
}>;
getTemplates: (providerId?: string) => Promise<{
data: ProviderTemplate[];
}>;
};
inventory: {
list: (params?: {
provider_id?: string;
region_id?: string;
instance_type?: string;
min_vcpu?: number;
max_price_usd_hr?: number;
accel_model?: string;
availability_type?: string;
limit?: number;
offset?: number;
}) => Promise<{
data: CloudInventory[];
}>;
get: (inventoryId: string) => Promise<{
data: CloudInventory;
}>;
getByProvider: (providerName: string, params?: {
region_code?: string;
instance_type?: string;
min_vcpu?: number;
max_price_usd_hr?: number;
limit?: number;
offset?: number;
}) => Promise<{
data: CloudInventory[];
}>;
};
deployments: {
create: (params: CreateDeploymentRequest) => Promise<{
message: string;
data: Deployment;
}>;
list: (params?: {
limit?: number;
offset?: number;
status?: string;
}) => Promise<{
data: any[];
}>;
get: (deploymentId: string) => Promise<{
data: any;
}>;
};
usage: {
getLogs: (params?: {
limit?: number;
offset?: number;
start_date?: string;
end_date?: string;
endpoint?: string;
}) => Promise<{
data: any[];
}>;
getSummary: (params?: {
start_date?: string;
end_date?: string;
}) => Promise<UsageSummary>;
getBilling: (params?: {
start_date?: string;
end_date?: string;
}) => Promise<any>;
};
}
export declare const EXAMPLE_USAGE = "\n// Initialize the SDK\nconst sdk = new CloudComputeSDK({\n baseUrl: 'https://iblofngyjjxyafjayxkt.supabase.co/functions/v1',\n apiKey: 'your-api-key-here'\n})\n\n// List all available cloud providers\nconst providers = await sdk.providers.list()\nconsole.log('Available providers:', providers.data)\n\n// Get regions for AWS\nconst awsRegions = await sdk.providers.getRegions('aws-provider-id')\nconsole.log('AWS regions:', awsRegions.data)\n\n// Get templates for AWS\nconst awsTemplates = await sdk.providers.getTemplates('aws-provider-id')\nconsole.log('AWS templates:', awsTemplates.data)\n\n// List all inventory\nconst allInventory = await sdk.inventory.list()\nconsole.log('All available machines:', allInventory.data)\n\n// Filter AWS machines by region and specs\nconst awsMachines = await sdk.inventory.getByProvider('aws', {\n region_code: 'us-east-1',\n min_vcpu: 4,\n max_price_usd_hr: 1.0\n})\nconsole.log('Filtered AWS machines:', awsMachines.data)\n\n// Get specific inventory details\nconst machineDetails = await sdk.inventory.get('inventory-id')\nconsole.log('Machine details:', machineDetails.data)\n\n// Create a deployment\nconst deployment = await sdk.deployments.create({\n cloud_inventory_id: 'your-inventory-id',\n rental_duration_hours: 24,\n ssh_public_key: 'ssh-rsa AAAAB3...'\n})\n\n// Get usage summary\nconst usage = await sdk.usage.getSummary({\n start_date: '2025-01-01T00:00:00Z',\n end_date: '2025-01-31T23:59:59Z'\n})\n\n// INVENTORY STRUCTURE EXPLANATION:\n// \n// 1. PROVIDERS: Each provider (AWS, Vultr, VAST AI) has different machine types\n// - AWS: EC2 instances (t3.micro, m5.large, g4dn.xlarge, etc.)\n// - Vultr: VPS instances (vc2-1c-1gb, vcg-g1-1c-3gb, etc.) \n// - VAST AI: GPU instances (RTX 4090, A100, H100, etc.)\n//\n// 2. REGIONS: Each provider has different regions\n// - AWS: us-east-1, eu-west-1, ap-southeast-1, etc.\n// - Vultr: ewr, lax, fra, etc.\n// - VAST AI: Global locations\n//\n// 3. TEMPLATES: Each provider has deployment templates\n// - AWS: AMI images (Ubuntu 20.04, Windows Server, Deep Learning AMI)\n// - Vultr: OS templates (Ubuntu, CentOS, Debian, etc.)\n// - VAST AI: Docker images for ML/AI workloads\n//\n// 4. INVENTORY FILTERING:\n// - By provider: Filter machines by specific cloud provider\n// - By region: Filter by geographical location\n// - By specs: Filter by CPU cores, memory, GPU, price\n// - By availability: instant, on-demand, spot instances\n//\n// Example workflow:\n// 1. List providers \u2192 Choose AWS/Vultr/VAST\n// 2. Get regions for chosen provider \u2192 Select region\n// 3. Get templates for provider \u2192 Choose OS/Docker image\n// 4. List inventory with filters \u2192 Find suitable machine\n// 5. Create deployment with inventory_id + template\n";