{"openapi":"3.0.0","info":{"title":"Fugoku Cloud API","version":"0.1.0","description":"Cloud provisioning API compatible with Latitude.sh. Manages GPU instances via SkyPilot and Latitude.sh providers. All responses follow JSON:API format."},"servers":[{"url":"https://api.fugoku.com","description":"Production"},{"url":"http://localhost:3002","description":"Local development"}],"paths":{"/v1/instances":{"post":{"summary":"Create instance","description":"Creates a new compute instance. Returns 202 with instance data and jobId for async tracking.","tags":["Instances"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","schema":{"type":"string"},"description":"Unique key to prevent duplicate creates"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"my-gpu-server"},"providerId":{"type":"string","example":"prov-1"},"region":{"type":"string","example":"us-east-1"},"instanceType":{"type":"string","example":"g3.h100.2x"},"workerCount":{"type":"integer","default":1,"minimum":1},"image":{"type":"string","example":"ubuntu-22.04"},"diskSizeGb":{"type":"integer","minimum":1},"sshKeyId":{"type":"string"},"spot":{"type":"boolean","default":false},"ports":{"type":"array","items":{"type":"integer"}},"autoStopMinutes":{"type":"integer","minimum":0},"accelerators":{"type":"string","example":"A100:1"},"tags":{"type":"object","additionalProperties":{"type":"string"}}},"required":["name","providerId","region","instanceType"]}}}},"responses":{"202":{"description":"Instance creation accepted","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","example":"clx123abc"},"type":{"type":"string","example":"instances"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"hostname":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["creating","active","stopping","stopped","error","terminated","terminating","starting","provisioning"]},"site":{"type":"string"},"role":{"type":"string","enum":["BareMetal","VirtualMachine"]},"plan":{"type":"string"},"operating_system":{"type":"string"},"billing":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"ipmi_status":{"type":"string"},"primary_ipv4":{"type":"string","nullable":true},"primary_ipv6":{"type":"string","nullable":true},"ssh_keys":{"type":"array","items":{"type":"string"}},"sshKeyFingerprint":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"object"}},"backups_enabled":{"type":"boolean"},"credentials":{"type":"object"},"specs":{"type":"object"},"interfaces":{"type":"array","items":{"type":"object"}},"region":{"type":"string","example":"us-east-1"},"instanceType":{"type":"string","example":"g3.h100.2x"},"workerCount":{"type":"integer","example":1},"externalId":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"vcpus":{"type":"integer"},"ramMb":{"type":"integer"},"diskGb":{"type":"integer"},"gpus":{"type":"integer"},"gpuType":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}},"jobId":{"type":"string"}}}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"404":{"description":"Provider not found","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}},"get":{"summary":"List instances","tags":["Instances"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"provider","in":"query","schema":{"type":"string"}},{"name":"region","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string","enum":["name","status","createdAt","region"]}}],"responses":{"200":{"description":"List of instances","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"clx123abc"},"type":{"type":"string","example":"instances"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"hostname":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["creating","active","stopping","stopped","error","terminated","terminating","starting","provisioning"]},"site":{"type":"string"},"role":{"type":"string","enum":["BareMetal","VirtualMachine"]},"plan":{"type":"string"},"operating_system":{"type":"string"},"billing":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"ipmi_status":{"type":"string"},"primary_ipv4":{"type":"string","nullable":true},"primary_ipv6":{"type":"string","nullable":true},"ssh_keys":{"type":"array","items":{"type":"string"}},"sshKeyFingerprint":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"object"}},"backups_enabled":{"type":"boolean"},"credentials":{"type":"object"},"specs":{"type":"object"},"interfaces":{"type":"array","items":{"type":"object"}},"region":{"type":"string","example":"us-east-1"},"instanceType":{"type":"string","example":"g3.h100.2x"},"workerCount":{"type":"integer","example":1},"externalId":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"vcpus":{"type":"integer"},"ramMb":{"type":"integer"},"diskGb":{"type":"integer"},"gpus":{"type":"integer"},"gpuType":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}},"meta":{"type":"object"},"links":{"type":"object"}}}}}}}}},"/v1/instances/{id}":{"get":{"summary":"Get instance","tags":["Instances"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Instance details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","example":"clx123abc"},"type":{"type":"string","example":"instances"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"hostname":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["creating","active","stopping","stopped","error","terminated","terminating","starting","provisioning"]},"site":{"type":"string"},"role":{"type":"string","enum":["BareMetal","VirtualMachine"]},"plan":{"type":"string"},"operating_system":{"type":"string"},"billing":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"ipmi_status":{"type":"string"},"primary_ipv4":{"type":"string","nullable":true},"primary_ipv6":{"type":"string","nullable":true},"ssh_keys":{"type":"array","items":{"type":"string"}},"sshKeyFingerprint":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"object"}},"backups_enabled":{"type":"boolean"},"credentials":{"type":"object"},"specs":{"type":"object"},"interfaces":{"type":"array","items":{"type":"object"}},"region":{"type":"string","example":"us-east-1"},"instanceType":{"type":"string","example":"g3.h100.2x"},"workerCount":{"type":"integer","example":1},"externalId":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"vcpus":{"type":"integer"},"ramMb":{"type":"integer"},"diskGb":{"type":"integer"},"gpus":{"type":"integer"},"gpuType":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}},"patch":{"summary":"Update instance","tags":["Instances"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"tags":{"type":"object"}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","example":"clx123abc"},"type":{"type":"string","example":"instances"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"hostname":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["creating","active","stopping","stopped","error","terminated","terminating","starting","provisioning"]},"site":{"type":"string"},"role":{"type":"string","enum":["BareMetal","VirtualMachine"]},"plan":{"type":"string"},"operating_system":{"type":"string"},"billing":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"ipmi_status":{"type":"string"},"primary_ipv4":{"type":"string","nullable":true},"primary_ipv6":{"type":"string","nullable":true},"ssh_keys":{"type":"array","items":{"type":"string"}},"sshKeyFingerprint":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"object"}},"backups_enabled":{"type":"boolean"},"credentials":{"type":"object"},"specs":{"type":"object"},"interfaces":{"type":"array","items":{"type":"object"}},"region":{"type":"string","example":"us-east-1"},"instanceType":{"type":"string","example":"g3.h100.2x"},"workerCount":{"type":"integer","example":1},"externalId":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"vcpus":{"type":"integer"},"ramMb":{"type":"integer"},"diskGb":{"type":"integer"},"gpus":{"type":"integer"},"gpuType":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}}}}},"delete":{"summary":"Delete instance","description":"Enqueues async termination job. Returns 202 with jobId.","tags":["Instances"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Termination enqueued","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"}}}}}}}}},"/v1/instances/{id}/actions":{"post":{"summary":"Instance action","description":"Perform power action. Returns 202 with action status.","tags":["Instances"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["power_on","power_off","reboot","start","stop","restart","terminate","reinstall","rescue"]}},"required":["action"]}}}},"responses":{"202":{"description":"Action enqueued","content":{"application/json":{"schema":{"type":"object","properties":{"actions":{"type":"object","properties":{"status":{"type":"string"}}}}}}}}}}},"/v1/instances/{id}/metrics":{"get":{"summary":"Instance metrics","tags":["Instances","Monitoring"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Metrics"}}}},"/v1/instances/{id}/events":{"get":{"summary":"Instance events","tags":["Instances","Monitoring"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Events"}}}},"/v1/instances/{id}/ssh":{"get":{"summary":"SSH info","tags":["Instances","Monitoring"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SSH connection info"}}}},"/v1/instances/{id}/jobs":{"get":{"summary":"Instance job history","tags":["Instances","Jobs"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Jobs"}}}},"/v1/instances/all":{"get":{"summary":"List all instances across providers","description":"Aggregate view of all active instances across all configured providers for the project.","tags":["Instances","Aggregation"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Aggregated instances"}}}},"/v1/providers":{"get":{"summary":"List providers","tags":["Providers"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Providers"}}},"post":{"summary":"Create provider","tags":["Providers"],"security":[{"fugokuApiKey":[]}],"responses":{"201":{"description":"Created"}}}},"/v1/providers/{id}":{"get":{"summary":"Get provider","tags":["Providers"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider"}}},"patch":{"summary":"Update provider","tags":["Providers"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated"}}},"delete":{"summary":"Delete provider","tags":["Providers"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/providers/{id}/health":{"get":{"summary":"Get provider health","tags":["Providers","Health"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Provider health status"}}}},"/v1/providers/{id}/sync":{"post":{"summary":"Trigger catalog sync","tags":["Providers","Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Sync started"}}}},"/v1/catalog":{"get":{"summary":"Get aggregated catalog","description":"Returns instance types, regions, and images across ALL enabled providers for the project.","tags":["Catalog","Aggregation"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Aggregated catalog"}}}},"/v1/catalog/all":{"get":{"summary":"Get aggregated catalog (all providers)","description":"Alias for /v1/catalog. Returns instance types, regions, and images across ALL enabled providers for the project.","tags":["Catalog","Aggregation"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Aggregated catalog"}}}},"/v1/catalog/instance-types":{"get":{"summary":"List instance types","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"providerId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Instance types"}}}},"/v1/catalog/regions":{"get":{"summary":"List regions","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"providerId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Regions"}}}},"/v1/catalog/images":{"get":{"summary":"List images","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"providerId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Images"}}}},"/v1/catalog/resources":{"get":{"summary":"List catalog resources","description":"Returns synced provider resources (plans/instance types) with per-region availability, stock, and pricing.","tags":["Catalog","Service Discovery"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"providerId","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"available","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Catalog resources"}}}},"/v1/catalog/resources/{id}":{"get":{"summary":"Get catalog resource","tags":["Catalog","Service Discovery"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Catalog resource"}}}},"/v1/catalog/regions/{id}":{"get":{"summary":"Get catalog region","tags":["Catalog","Service Discovery"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Catalog region"}}}},"/v1/catalog/availability":{"get":{"summary":"List availability","description":"Returns availability items across all providers and regions.","tags":["Catalog","Service Discovery"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Availability items"}}}},"/v1/jobs/failed":{"get":{"summary":"List failed jobs","tags":["Jobs"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Failed jobs"}}}},"/v1/jobs/{id}/retry":{"post":{"summary":"Retry failed job","tags":["Jobs"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrying"}}}},"/health":{"get":{"summary":"Health check","tags":["Health"],"responses":{"200":{"description":"OK"}}}},"/v1/health/ready":{"get":{"summary":"Readiness check","tags":["Health"],"responses":{"200":{"description":"Ready"}}}},"/v1/health/metrics":{"get":{"summary":"Process metrics","tags":["Health"],"responses":{"200":{"description":"Metrics"}}}},"/redoc":{"get":{"summary":"ReDoc API documentation","tags":["Documentation"],"responses":{"200":{"description":"ReDoc HTML"}}}},"/v1/storage/volumes/db":{"get":{"summary":"List volumes from database","tags":["Storage"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Volumes"}}},"post":{"summary":"Create volume in database","tags":["Storage"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"sizeGb":{"type":"integer"},"type":{"type":"string"},"providerId":{"type":"string"},"region":{"type":"string"},"instanceId":{"type":"string"}},"required":["name","sizeGb","providerId","region"]}}}},"responses":{"201":{"description":"Created"}}}},"/v1/storage/snapshots/db":{"get":{"summary":"List snapshots from database","tags":["Storage"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Snapshots"}}},"post":{"summary":"Create snapshot in database","tags":["Storage"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"sizeGb":{"type":"integer"},"providerId":{"type":"string"},"region":{"type":"string"},"instanceId":{"type":"string"}},"required":["name","sizeGb","providerId","region"]}}}},"responses":{"201":{"description":"Created"}}}},"/v1/networking/floating-ips/db":{"get":{"summary":"List floating IPs from database","tags":["Networking"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Floating IPs"}}},"post":{"summary":"Create floating IP in database","tags":["Networking"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ipAddress":{"type":"string"},"providerId":{"type":"string"},"region":{"type":"string"},"instanceId":{"type":"string"}},"required":["ipAddress","providerId","region"]}}}},"responses":{"201":{"description":"Created"}}}},"/v1/networking/security-groups/db":{"get":{"summary":"List security groups from database","tags":["Networking"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Security groups"}}},"post":{"summary":"Create security group in database","tags":["Networking"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"rules":{"type":"array"},"providerId":{"type":"string"},"region":{"type":"string"}},"required":["name","rules","providerId","region"]}}}},"responses":{"201":{"description":"Created"}}}},"/v1/audit-logs":{"get":{"summary":"List audit logs","tags":["IAM","Audit"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"action","in":"query","schema":{"type":"string"}},{"name":"resourceType","in":"query","schema":{"type":"string"}},{"name":"userId","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer"}},{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"sort","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Audit logs"}}}},"/v1/audit-logs/:id":{"get":{"summary":"Get audit log","tags":["IAM","Audit"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Audit log"},"404":{"description":"Not found"}}}},"/v1/batch/action":{"post":{"summary":"Batch action on instances","tags":["Batch"],"security":[{"fugokuApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["start","stop","restart","terminate","reinstall"]},"instanceIds":{"type":"array","items":{"type":"string"},"maxItems":50}},"required":["action","instanceIds"]}}}},"responses":{"202":{"description":"Batch action queued"}}}},"/v1/batch/delete":{"post":{"summary":"Batch delete instances","tags":["Batch"],"security":[{"fugokuApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instanceIds":{"type":"array","items":{"type":"string"},"maxItems":50}},"required":["instanceIds"]}}}},"responses":{"202":{"description":"Batch delete queued"}}}},"/v1/batch/status":{"get":{"summary":"Get batch job statuses","tags":["Batch"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"jobIds","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Batch statuses"}}}},"/v1/ws":{"get":{"summary":"WebSocket for real-time instance updates","tags":["WebSocket"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"101":{"description":"Switching protocols"}}}},"/v1/sse/instances/{id}":{"get":{"summary":"SSE for instance provisioning progress","tags":["SSE"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SSE stream"}}}},"/v1/cost-estimate/estimate":{"post":{"summary":"Estimate instance costs","tags":["Cost"],"security":[{"fugokuApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vcpus":{"type":"integer"},"ramMb":{"type":"integer"},"diskSizeGb":{"type":"integer"},"gpus":{"type":"integer"},"gpuType":{"type":"string"},"plan":{"type":"string"},"hoursPerMonth":{"type":"integer"}}}}}},"responses":{"200":{"description":"Cost estimate"}}}},"/v1/templates":{"get":{"summary":"List instance templates","tags":["Templates"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Templates"}}},"post":{"summary":"Create instance template","tags":["Templates"],"security":[{"fugokuApiKey":[]}],"responses":{"201":{"description":"Created"}}}},"/v1/templates/{id}":{"get":{"summary":"Get instance template","tags":["Templates"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Template"},"404":{"description":"Not found"}}},"delete":{"summary":"Delete instance template","tags":["Templates"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/notifications/endpoints":{"get":{"summary":"List notification endpoints","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Notification endpoints","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"notification-endpoints"},"attributes":{"type":"object","properties":{"type":{"type":"string","enum":["webhook","email"]},"url":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"meta":{"type":"object"}}}}}}}},"post":{"summary":"Create notification endpoint","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["webhook","email"]},"url":{"type":"string","format":"uri","nullable":true},"email":{"type":"string","format":"email","nullable":true},"events":{"type":"array","items":{"type":"string"}},"secret":{"type":"string","nullable":true},"enabled":{"type":"boolean","default":true}},"required":["type","events"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"notification-endpoints"},"attributes":{"type":"object","properties":{"type":{"type":"string","enum":["webhook","email"]},"url":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}}}}}},"/v1/notifications/endpoints/{id}":{"delete":{"summary":"Delete notification endpoint","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/notifications/test":{"post":{"summary":"Send test notification to all endpoints","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Test results","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","example":"notification-test"},"attributes":{"type":"object","properties":{"total":{"type":"integer"},"results":{"type":"array","items":{"type":"object"}}}}}}}}}}}}}},"/v1/notifications":{"get":{"summary":"List user notifications","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"User notifications","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"notifications"},"attributes":{"type":"object","properties":{"title":{"type":"string","example":"Server created"},"message":{"type":"string","example":"Your GPU server is ready"},"read":{"type":"boolean","example":false},"type":{"type":"string","enum":["info","warning","error","success"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"meta":{"type":"object"}}}}}}}},"post":{"summary":"Create user notification","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"message":{"type":"string","minLength":1,"maxLength":5000},"type":{"type":"string","enum":["info","warning","error","success"],"default":"info"}},"required":["title","message"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"notifications"},"attributes":{"type":"object","properties":{"title":{"type":"string","example":"Server created"},"message":{"type":"string","example":"Your GPU server is ready"},"read":{"type":"boolean","example":false},"type":{"type":"string","enum":["info","warning","error","success"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}}}}},"patch":{"summary":"Mark all notifications as read","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"updated":{"type":"boolean"}}}}}}}}}},"delete":{"summary":"Delete all notifications","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"responses":{"204":{"description":"Deleted"}}}},"/v1/notifications/{id}":{"patch":{"summary":"Update notification","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"read":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"notifications"},"attributes":{"type":"object","properties":{"title":{"type":"string","example":"Server created"},"message":{"type":"string","example":"Your GPU server is ready"},"read":{"type":"boolean","example":false},"type":{"type":"string","enum":["info","warning","error","success"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}}}}},"delete":{"summary":"Delete notification","tags":["Notifications"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/support":{"get":{"summary":"List support tickets","tags":["Support"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"status","in":"query","schema":{"type":"string"}},{"name":"priority","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Support tickets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"tk-abc123"},"type":{"type":"string","example":"support-tickets"},"attributes":{"type":"object","properties":{"number":{"type":"string","example":"42"},"subject":{"type":"string","example":"Instance creation failed"},"message":{"type":"string","example":"I need help provisioning..."},"status":{"type":"string","example":"open"},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"category":{"type":"string","nullable":true,"example":"billing"},"replies":{"type":"integer","example":2},"messages":{"type":"array","items":{"type":"object"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"meta":{"type":"object"}}}}}}}},"post":{"summary":"Create support ticket","tags":["Support"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":200},"message":{"type":"string","minLength":1,"maxLength":10000},"priority":{"type":"string","enum":["low","medium","high","urgent"],"default":"medium"},"category":{"type":"string","nullable":true}},"required":["subject","message"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","example":"tk-abc123"},"type":{"type":"string","example":"support-tickets"},"attributes":{"type":"object","properties":{"number":{"type":"string","example":"42"},"subject":{"type":"string","example":"Instance creation failed"},"message":{"type":"string","example":"I need help provisioning..."},"status":{"type":"string","example":"open"},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"category":{"type":"string","nullable":true,"example":"billing"},"replies":{"type":"integer","example":2},"messages":{"type":"array","items":{"type":"object"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}}}}}},"/v1/support/{id}":{"get":{"summary":"Get support ticket","tags":["Support"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Support ticket","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","example":"tk-abc123"},"type":{"type":"string","example":"support-tickets"},"attributes":{"type":"object","properties":{"number":{"type":"string","example":"42"},"subject":{"type":"string","example":"Instance creation failed"},"message":{"type":"string","example":"I need help provisioning..."},"status":{"type":"string","example":"open"},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"category":{"type":"string","nullable":true,"example":"billing"},"replies":{"type":"integer","example":2},"messages":{"type":"array","items":{"type":"object"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}},"patch":{"summary":"Update support ticket","tags":["Support"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","nullable":true},"priority":{"type":"string","enum":["low","medium","high","urgent"],"nullable":true},"category":{"type":"string","nullable":true}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","example":"tk-abc123"},"type":{"type":"string","example":"support-tickets"},"attributes":{"type":"object","properties":{"number":{"type":"string","example":"42"},"subject":{"type":"string","example":"Instance creation failed"},"message":{"type":"string","example":"I need help provisioning..."},"status":{"type":"string","example":"open"},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"category":{"type":"string","nullable":true,"example":"billing"},"replies":{"type":"integer","example":2},"messages":{"type":"array","items":{"type":"object"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}}}}},"post":{"summary":"Add message to support ticket","tags":["Support"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","minLength":1,"maxLength":10000}},"required":["content"]}}}},"responses":{"200":{"description":"Message added","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object"}},"replies":{"type":"integer"}}}}}}}}}}},"/v1/backups":{"get":{"summary":"List instance backups","tags":["Backups"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"instanceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Backups"}}},"post":{"summary":"Create instance backup","tags":["Backups"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"instanceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created"}}}},"/v1/instances/{id}/backups":{"get":{"summary":"List instance backups","tags":["Backups"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Backups"}}},"post":{"summary":"Create instance backup","tags":["Backups"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created"}}}},"/v1/backups/{id}/restore":{"post":{"summary":"Restore backup","tags":["Backups"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Accepted"}}}},"/v1/backups/{id}":{"delete":{"summary":"Delete backup","tags":["Backups"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/plans":{"get":{"summary":"List plans","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Plans"}}}},"/v1/plans/{id}":{"get":{"summary":"Get plan","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Plan"},"404":{"description":"Not found"}}}},"/v1/regions":{"get":{"summary":"List regions","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Regions"}}}},"/v1/regions/{id}":{"get":{"summary":"Get region","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Region"},"404":{"description":"Not found"}}}},"/v1/operating_systems":{"get":{"summary":"List operating systems","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Operating systems"}}}},"/v1/operating_systems/{id}":{"get":{"summary":"Get operating system","tags":["Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Operating system"},"404":{"description":"Not found"}}}},"/v1/ssh-keys":{"get":{"summary":"List SSH keys","tags":["SSH Keys"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"providerId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SSH keys"}}},"post":{"summary":"Create SSH key","tags":["SSH Keys"],"security":[{"fugokuApiKey":[]}],"responses":{"201":{"description":"Created"}}},"delete":{"summary":"Delete SSH key","tags":["SSH Keys"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/kubernetes/clusters":{"get":{"summary":"List Kubernetes clusters","tags":["Kubernetes"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Clusters"}}},"post":{"summary":"Create Kubernetes cluster","tags":["Kubernetes"],"security":[{"fugokuApiKey":[]}],"responses":{"201":{"description":"Created"}}}},"/v1/kubernetes/clusters/{clusterId}":{"get":{"summary":"Get Kubernetes cluster","tags":["Kubernetes"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"clusterId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Cluster"},"404":{"description":"Not found"}}},"delete":{"summary":"Delete Kubernetes cluster","tags":["Kubernetes"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"clusterId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/kubernetes/clusters/{clusterId}/kubeconfig":{"get":{"summary":"Get kubeconfig","tags":["Kubernetes"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"clusterId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Kubeconfig"}}}},"/v1/kubernetes/versions":{"get":{"summary":"List Kubernetes versions","tags":["Kubernetes"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Versions"}}}},"/v1/iam/api-keys":{"get":{"summary":"List API keys","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"API keys"}}},"post":{"summary":"Create API key","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"responses":{"201":{"description":"Created"}}}},"/v1/iam/api-keys/{keyId}":{"delete":{"summary":"Delete API key","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"keyId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/iam/team/members":{"get":{"summary":"List team members","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Team members"}}},"post":{"summary":"Add team member","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"responses":{"201":{"description":"Created"}}}},"/v1/iam/team/members/{memberId}":{"patch":{"summary":"Update team member","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Updated"}}},"delete":{"summary":"Remove team member","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"memberId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/iam/usage":{"get":{"summary":"Get billing usage","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Usage"}}}},"/v1/iam/invoices":{"get":{"summary":"List invoices","tags":["IAM"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Invoices"}}}},"/v1/webhooks/{provider}":{"post":{"summary":"Receive webhook","tags":["Webhooks"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Received"}}}},"/v1/api-keys":{"get":{"summary":"List API keys","tags":["API Keys"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"API keys"}}},"post":{"summary":"Create API key","tags":["API Keys"],"security":[{"fugokuApiKey":[]}],"responses":{"201":{"description":"Created"}}}},"/v1/api-keys/{id}":{"delete":{"summary":"Delete API key","tags":["API Keys"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"}}}},"/v1/server-catalog/categories":{"get":{"summary":"List server categories","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Categories"}}}},"/v1/server-catalog/tiers":{"get":{"summary":"List server tiers","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Tiers"}}}},"/v1/server-catalog/macroregions":{"get":{"summary":"List macro regions","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Macro regions"}}}},"/v1/server-catalog/cities":{"get":{"summary":"List cities","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"region","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Cities"}}}},"/v1/server-catalog/servers":{"get":{"summary":"List server options","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"category","in":"query","schema":{"type":"string"}},{"name":"tier","in":"query","schema":{"type":"string"}},{"name":"region","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Servers"}}}},"/v1/server-catalog/servers/{id}":{"get":{"summary":"Get server option","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Server option"},"404":{"description":"Not found"}}}},"/v1/server-catalog/os-versions":{"get":{"summary":"List OS versions","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"category","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OS versions"}}}},"/v1/server-catalog/billing-options":{"get":{"summary":"Get billing options","tags":["Server Catalog"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"serverId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Billing options"}}}},"/v1/changelog":{"get":{"summary":"List changelog entries","tags":["General"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Changelog entries"}}}},"/v1/user-data":{"get":{"summary":"List user data scripts","tags":["General"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"User data scripts"}}}},"/v1/interconnections":{"get":{"summary":"List interconnections","tags":["Networking"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Interconnections"}}}},"/v1/billing/savings-plans":{"get":{"summary":"List savings plans","tags":["Billing"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Savings plans"}}}},"/v1/billing/overview":{"get":{"summary":"Get billing overview","description":"Returns aggregated billing data including total spend, credits, upcoming charges, and wallet balances.","tags":["Billing"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Billing overview","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","example":"billing-overview"},"id":{"type":"string"},"attributes":{"type":"object","properties":{"totalSpendCents":{"type":"integer"},"totalCreditsCents":{"type":"integer"},"upcomingChargesCents":{"type":"integer"},"currency":{"type":"string"},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"balanceCents":{"type":"integer"}}}},"paymentCount":{"type":"integer"},"creditCount":{"type":"integer"},"invoiceCount":{"type":"integer"}}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}}},"/v1/billing/payment-methods":{"get":{"summary":"List payment methods","tags":["Billing"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"Payment methods"}}},"post":{"summary":"Create payment method setup intent","tags":["Billing"],"security":[{"fugokuApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]}}}},"responses":{"201":{"description":"Setup intent created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"payment-methods-setup-intents"},"attributes":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"clientSecret":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}}}}}}}}}}}},"/v1/billing/payment-methods/{id}":{"patch":{"summary":"Update payment method","tags":["Billing"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"isDefault":{"type":"boolean"}},"required":["isDefault"]}}}},"responses":{"200":{"description":"Updated"},"404":{"description":"Not found"}}},"delete":{"summary":"Delete payment method","tags":["Billing"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"},"404":{"description":"Not found"}}}},"/v1/databases":{"get":{"summary":"List databases","tags":["Databases"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"sort","in":"query","schema":{"type":"string","enum":["name","status","createdAt","engine"]}}],"responses":{"200":{"description":"List of databases"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}}},"/v1/databases/{id}":{"get":{"summary":"Get database detail","tags":["Databases"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Database detail"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}}},"/v1/billing/usage":{"get":{"summary":"Get billing usage","tags":["Billing"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"view","in":"query","required":true,"schema":{"type":"string","enum":["daily","summary"]}},{"name":"startDate","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"endDate","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Usage data"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}}},"/v1/activities":{"get":{"summary":"List activities","tags":["Activities"],"security":[{"fugokuApiKey":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"action","in":"query","schema":{"type":"string"}},{"name":"resourceType","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Activity feed"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}}},"/v1/account/credentials":{"get":{"summary":"List account credentials","tags":["Account"],"security":[{"fugokuApiKey":[]}],"responses":{"200":{"description":"List of SSH keys and API keys"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}}}}}}}}},"components":{"securitySchemes":{"fugokuApiKey":{"type":"apiKey","in":"header","name":"X-Fugoku-API-Key","description":"Fugoku API key (prefix: fk_live_ or fk_test_)"}},"schemas":{"Instance":{"type":"object","properties":{"id":{"type":"string","example":"clx123abc"},"type":{"type":"string","example":"instances"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"hostname":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["creating","active","stopping","stopped","error","terminated","terminating","starting","provisioning"]},"site":{"type":"string"},"role":{"type":"string","enum":["BareMetal","VirtualMachine"]},"plan":{"type":"string"},"operating_system":{"type":"string"},"billing":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"ipmi_status":{"type":"string"},"primary_ipv4":{"type":"string","nullable":true},"primary_ipv6":{"type":"string","nullable":true},"ssh_keys":{"type":"array","items":{"type":"string"}},"sshKeyFingerprint":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"object"}},"backups_enabled":{"type":"boolean"},"credentials":{"type":"object"},"specs":{"type":"object"},"interfaces":{"type":"array","items":{"type":"object"}},"region":{"type":"string","example":"us-east-1"},"instanceType":{"type":"string","example":"g3.h100.2x"},"workerCount":{"type":"integer","example":1},"externalId":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"vcpus":{"type":"integer"},"ramMb":{"type":"integer"},"diskGb":{"type":"integer"},"gpus":{"type":"integer"},"gpuType":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}},"SupportTicket":{"type":"object","properties":{"id":{"type":"string","example":"tk-abc123"},"type":{"type":"string","example":"support-tickets"},"attributes":{"type":"object","properties":{"number":{"type":"string","example":"42"},"subject":{"type":"string","example":"Instance creation failed"},"message":{"type":"string","example":"I need help provisioning..."},"status":{"type":"string","example":"open"},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"category":{"type":"string","nullable":true,"example":"billing"},"replies":{"type":"integer","example":2},"messages":{"type":"array","items":{"type":"object"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"NotificationEndpoint":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"notification-endpoints"},"attributes":{"type":"object","properties":{"type":{"type":"string","enum":["webhook","email"]},"url":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"Notification":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"notifications"},"attributes":{"type":"object","properties":{"title":{"type":"string","example":"Server created"},"message":{"type":"string","example":"Your GPU server is ready"},"read":{"type":"boolean","example":false},"type":{"type":"string","enum":["info","warning","error","success"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"Database":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"databases"},"attributes":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","example":"postgres"},"version":{"type":"string","nullable":true},"status":{"type":"string","example":"creating"},"region":{"type":"string"},"size":{"type":"string","example":"small"},"storageGb":{"type":"integer"},"vcpus":{"type":"integer"},"ramMb":{"type":"integer"},"connections":{"type":"integer"},"providerId":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"Error":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","example":"404"},"code":{"type":"string","example":"NOT_FOUND"},"detail":{"type":"string","example":"Instance not found"}}}}}},"BillingOverview":{"type":"object","properties":{"type":{"type":"string","example":"billing-overview"},"id":{"type":"string"},"attributes":{"type":"object","properties":{"totalSpendCents":{"type":"integer"},"totalCreditsCents":{"type":"integer"},"upcomingChargesCents":{"type":"integer"},"currency":{"type":"string","example":"USD"},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"balanceCents":{"type":"integer"}}}},"paymentCount":{"type":"integer"},"creditCount":{"type":"integer"},"invoiceCount":{"type":"integer"}}}}},"PaymentMethod":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"payment-methods"},"attributes":{"type":"object","properties":{"provider":{"type":"string","example":"stripe"},"providerPaymentMethodId":{"type":"string"},"isDefault":{"type":"boolean"},"brand":{"type":"string","nullable":true},"last4":{"type":"string","nullable":true},"expMonth":{"type":"integer","nullable":true},"expYear":{"type":"integer","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}},"WalletTransaction":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","example":"wallet-transactions"},"attributes":{"type":"object","properties":{"walletId":{"type":"string"},"type":{"type":"string","enum":["credit","debit"]},"amountCents":{"type":"integer"},"currency":{"type":"string"},"reference":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time"}}}}}}}}