{"openapi":"3.1.0","info":{"title":"OpenRelay API","version":"0.1.0","description":"The OpenRelay control-plane REST API. Deploy GPU VMs and inference clusters, manage organizations and billing, and automate your infrastructure. All requests are authenticated with an API key (`vl_…`)."},"servers":[{"url":"https://api.openrelay.inc","description":"Production"}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"OpenRelay API key. Send it as `Authorization: Bearer vl_…`."}},"schemas":{"Health":{"type":"object","required":["status","service"],"properties":{"status":{"type":"string"},"service":{"type":"string"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string"}}},"ClusterSummary":{"type":"object","required":["id","organizationId","name","status"],"properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"gpuModelId":{"type":"string"},"replicaCount":{"type":"integer"},"activeReplicas":{"type":"integer"},"endpointUrl":{"type":"string"},"createdAt":{"type":"string"}}},"ClusterPage":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ClusterSummary"}},"nextCursor":{"type":"string"}}},"GpuAvailability":{"type":"object","required":["gpuModelId","capacity","inUse","available","groupSize"],"properties":{"gpuModelId":{"type":"string"},"capacity":{"type":"integer"},"inUse":{"type":"integer"},"available":{"type":"integer"},"groupSize":{"type":"integer","description":"Allocation step: GPUs are sellable only in multiples of this because VFIO IOMMU groups are indivisible. Paired consumer GPUs => 2, single => 1."}}},"BootstrapRequest":{"type":"object","properties":{"orgName":{"type":"string"}}},"BootstrapResult":{"type":"object","required":["organizationId","role"],"properties":{"organizationId":{"type":"string"},"role":{"type":"string"}}},"UserProfile":{"type":"object","required":["id","email"],"properties":{"id":{"type":"string"},"email":{"type":"string"},"fullName":{"type":"string"},"avatarUrl":{"type":"string"},"defaultOrganizationId":{"type":"string"}}},"OrgMembership":{"type":"object","required":["organizationId","name","role"],"properties":{"organizationId":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"}}},"Me":{"type":"object","required":["user","organizations"],"properties":{"user":{"$ref":"#/components/schemas/UserProfile"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrgMembership"}}}},"Member":{"type":"object","required":["userId","role"],"properties":{"userId":{"type":"string"},"role":{"type":"string"},"email":{"type":"string"},"fullName":{"type":"string"},"avatarUrl":{"type":"string"},"invitedAt":{"type":"string"},"joinedAt":{"type":"string"}}},"VmSummary":{"type":"object","required":["id","organizationId","name","status"],"properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"statusReason":{"type":"string","description":"human-readable cause for failed/stuck states"},"gpuModelId":{"type":"string"},"gpuCount":{"type":"integer"},"endpointUrl":{"type":"string"},"createdAt":{"type":"string"},"provisioningStage":{"type":"string"},"resourceSize":{"type":"string"},"tier":{"type":"string"},"diskSizeGb":{"type":"integer"},"gpuModelName":{"type":"string"},"pricePerHourCents":{"type":"integer"}}},"VmPage":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/VmSummary"}},"nextCursor":{"type":"string"}}},"Transaction":{"type":"object","required":["id","type","source","amountCents","createdAt"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"source":{"type":"string"},"amountCents":{"type":"integer"},"description":{"type":"string"},"createdAt":{"type":"string"}}},"SetupIntent":{"type":"object","required":["clientSecret","publishableKey"],"properties":{"clientSecret":{"type":"string"},"publishableKey":{"type":"string"}}},"DepositRequest":{"type":"object","required":["amountCents"],"properties":{"amountCents":{"type":"integer","description":"Amount to charge the saved card, in cents (bounds $10–$500)."},"idempotencyKey":{"type":"string","description":"Client-generated id for this logical deposit; reused verbatim on retry so a network/client retry can't double-charge. Optional — the server generates one if absent (then retries won't dedupe)."}}},"DepositResult":{"type":"object","required":["paymentIntentId","status"],"properties":{"paymentIntentId":{"type":"string"},"status":{"type":"string","description":"Stripe PaymentIntent status. \"succeeded\" → credit lands via webhook; \"requires_action\" → complete SCA on-session with clientSecret; \"requires_payment_method\" → the card was declined."},"clientSecret":{"type":"string","description":"Set only when status is requires_action (on-session SCA)."}}},"AutoRechargeSettings":{"type":"object","required":["enabled","thresholdCents","amountCents"],"properties":{"enabled":{"type":"boolean","description":"When on, the balance is topped up automatically below the threshold."},"thresholdCents":{"type":"integer","description":"Recharge fires when available balance drops below this."},"amountCents":{"type":"integer","description":"Amount charged per auto-recharge (within deposit bounds $10–$500)."}}},"PaymentMethodCard":{"type":"object","required":["id","brand","last4","expMonth","expYear"],"properties":{"id":{"type":"string"},"brand":{"type":"string"},"last4":{"type":"string"},"expMonth":{"type":"integer"},"expYear":{"type":"integer"}}},"PaymentMethods":{"type":"object","required":["paymentMethods"],"properties":{"paymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/PaymentMethodCard"}},"defaultPaymentMethodId":{"type":"string"}}},"Balance":{"type":"object","required":["balanceCents","availableCents","accruedUsageCents","transactions"],"properties":{"balanceCents":{"type":"integer","description":"Raw ledger balance (deposits + credits − settled debits)."},"availableCents":{"type":"integer","description":"Spendable balance = balanceCents − accruedUsageCents. This is what the deploy gate checks; it can be below balanceCents while usage is running, and slightly negative between auto-recharge ticks."},"accruedUsageCents":{"type":"integer","description":"Current-month usage cost not yet settled into a transaction."},"transactions":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"}}}},"ApiKeySummary":{"type":"object","required":["id","name","keyPrefix","scopes","createdAt"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"keyPrefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"lastUsedAt":{"type":"string"},"expiresAt":{"type":"string"},"revokedAt":{"type":"string"},"createdAt":{"type":"string"}}},"SshKeySummary":{"type":"object","required":["id","name","publicKey","fingerprint","createdAt"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"publicKey":{"type":"string"},"fingerprint":{"type":"string"},"createdAt":{"type":"string"}}},"RegistryCredentialSummary":{"type":"object","required":["id","name","server","authType","createdAt"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"server":{"type":"string"},"authType":{"type":"string"},"createdAt":{"type":"string"}}},"CreateRegistryCredentialRequest":{"type":"object","required":["name","server","authType","credentials"],"properties":{"name":{"type":"string"},"server":{"type":"string"},"authType":{"type":"string","enum":["basic","aws_ecr","gcp_gcr"]},"credentials":{"type":"object","additionalProperties":{"type":"string"}}}},"WebhookSummary":{"type":"object","required":["id","name","url","secretPrefix","events","enabled","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"secretPrefix":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}}},"WebhookWithSecret":{"type":"object","required":["id","name","url","secretPrefix","events","enabled","createdAt","secret"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"secretPrefix":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string"},"secret":{"type":"string"}}},"WebhookSecret":{"type":"object","required":["id","secret","secretPrefix"],"properties":{"id":{"type":"string"},"secret":{"type":"string"},"secretPrefix":{"type":"string"}}},"WebhookToggleResult":{"type":"object","required":["id","enabled"],"properties":{"id":{"type":"string"},"enabled":{"type":"boolean"}}},"WebhookUpdateResult":{"type":"object","required":["id","name","url","events"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}}}},"WebhookDeliveryItem":{"type":"object","required":["id","eventType","eventId","attemptNumber","status","createdAt"],"properties":{"id":{"type":"string"},"eventType":{"type":"string"},"eventId":{"type":"string"},"attemptNumber":{"type":"integer"},"status":{"type":"string"},"statusCode":{"type":"integer"},"errorMessage":{"type":"string"},"createdAt":{"type":"string"},"deliveredAt":{"type":"string"}}},"CreateWebhookRequest":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}}}},"UpdateWebhookRequest":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string"}}}},"ToggleWebhookRequest":{"type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"ClusterReplicaItem":{"type":"object","required":["id","gpuCount","status","healthy","nvlinkEnabled","createdAt"],"properties":{"id":{"type":"string"},"nodeId":{"type":"string"},"gpuCount":{"type":"integer"},"status":{"type":"string"},"healthy":{"type":"boolean"},"lastHealthCheckAt":{"type":"string"},"consecutiveFailures":{"type":"integer"},"internalIp":{"type":"string"},"port":{"type":"integer"},"endpointUrl":{"type":"string"},"sshPort":{"type":"integer"},"startedAt":{"type":"string"},"createdAt":{"type":"string"},"diskUsedBytes":{"type":"integer","format":"int64"},"diskTotalBytes":{"type":"integer","format":"int64"},"diskUpdatedAt":{"type":"string"},"nvlinkEnabled":{"type":"boolean"},"nodeHostname":{"type":"string"},"nodeLocation":{"type":"string"},"nodeRegion":{"type":"string"}}},"ClusterDetail":{"type":"object","required":["id","organizationId","name","status","gpusPerReplica","resourceSize","replicaCount","tier","allowFallback","diskSizeGb","privileged","replicas","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"statusReason":{"type":"string","description":"human-readable cause for failed/stuck states"},"gpuModelId":{"type":"string"},"gpusPerReplica":{"type":"integer"},"resourceSize":{"type":"string"},"replicaCount":{"type":"integer"},"tier":{"type":"string"},"preferredRegions":{"type":"array","items":{"type":"string"}},"allowFallback":{"type":"boolean"},"imageUrl":{"type":"string"},"envVars":{"type":"object","additionalProperties":{"type":"string"}},"containerPort":{"type":"integer"},"healthChecks":{"type":"array","items":{"type":"string"}},"healthCheckPath":{"type":"string"},"healthCheckPort":{"type":"integer"},"diskSizeGb":{"type":"integer"},"privileged":{"type":"boolean"},"notes":{"type":"string"},"endpointUrl":{"type":"string"},"deployToken":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"gpuModel":{"$ref":"#/components/schemas/GpuModel"},"replicas":{"type":"array","items":{"$ref":"#/components/schemas/ClusterReplicaItem"}}}},"VmGpuInfo":{"type":"object","required":["name","vramGb"],"properties":{"name":{"type":"string"},"vramGb":{"type":"integer"},"pricePerHourCents":{"type":"integer"}}},"VmNodeInfo":{"type":"object","required":["hostname"],"properties":{"hostname":{"type":"string"},"location":{"type":"string"}}},"VmTemplateInfo":{"type":"object","required":["name","osType"],"properties":{"name":{"type":"string"},"osType":{"type":"string"},"osVersion":{"type":"string"}}},"VmDetail":{"type":"object","required":["id","organizationId","name","status","gpuCount","resourceSize","tier","diskSizeGb","healthy","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"statusReason":{"type":"string","description":"human-readable cause for failed/stuck states"},"provisioningStage":{"type":"string"},"gpuModelId":{"type":"string"},"gpuCount":{"type":"integer"},"resourceSize":{"type":"string"},"tier":{"type":"string"},"diskSizeGb":{"type":"integer"},"diskUsedBytes":{"type":"integer","format":"int64"},"diskTotalBytes":{"type":"integer","format":"int64"},"imageUrl":{"type":"string"},"containerPort":{"type":"integer"},"endpointUrl":{"type":"string"},"healthy":{"type":"boolean"},"nodeId":{"type":"string"},"internalIp":{"type":"string"},"sshPort":{"type":"integer"},"rdpPort":{"type":"integer"},"rdpPassword":{"type":"string"},"persistentDiskPath":{"type":"string"},"startedAt":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"osType":{"type":"string"},"pricePerHourCents":{"type":"integer"},"sshHost":{"type":"string","description":"data-plane SSH gateway host, e.g. ssh.run.beta.vectorlay.com"},"sshHandle":{"type":"string","description":"RunPod-style SSH handle (first label of endpointUrl); used as the SSH username"},"sshUser":{"type":"string","description":"login user the gateway lands as inside the VM (e.g. ubuntu)"},"sshCommand":{"type":"string","description":"ready-to-paste ssh command (ssh <handle>@<host>)"},"sshReady":{"type":"boolean","description":"true once the VM is running and its data-plane route exists"},"gpuInfo":{"$ref":"#/components/schemas/VmGpuInfo"},"nodeInfo":{"$ref":"#/components/schemas/VmNodeInfo"},"templateInfo":{"$ref":"#/components/schemas/VmTemplateInfo"}}},"GpuModel":{"type":"object","required":["id","name","manufacturer","vramGb","hidden"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"manufacturer":{"type":"string"},"vramGb":{"type":"integer"},"architecture":{"type":"string"},"hidden":{"type":"boolean"},"createdAt":{"type":"string"}}},"GpuPrice":{"type":"object","required":["gpuModelId","tier","pricePerHourCents"],"properties":{"gpuModelId":{"type":"string"},"gpuModelName":{"type":"string"},"vramGb":{"type":"integer"},"tier":{"type":"string"},"pricePerHourCents":{"type":"integer"}}},"CpuPrice":{"type":"object","required":["resourceSize","pricePerHourCents"],"properties":{"resourceSize":{"type":"string"},"pricePerHourCents":{"type":"integer"}}},"Pricing":{"type":"object","required":["gpu","cpu"],"properties":{"gpu":{"type":"array","items":{"$ref":"#/components/schemas/GpuPrice"}},"cpu":{"type":"array","items":{"$ref":"#/components/schemas/CpuPrice"}}}},"VmTemplate":{"type":"object","required":["id","name","slug","filename","requiresGpu","osType"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"filename":{"type":"string"},"requiresGpu":{"type":"boolean"},"osVersion":{"type":"string"},"driverVersion":{"type":"string"},"osType":{"type":"string"},"isDefault":{"type":"boolean"},"sortOrder":{"type":"integer"},"compatibleGpuModelIds":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GPU model ids this template supports; null = all GPUs allowed"}}},"Location":{"type":"object","required":["id","name","city","country","region"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"region":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}}},"Organization":{"type":"object","required":["id","shortId","name","slug","billingEmail","plan"],"properties":{"id":{"type":"string"},"shortId":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"billingEmail":{"type":"string"},"plan":{"type":"string"},"isProvider":{"type":"boolean"},"createdAt":{"type":"string"}}},"CreateOrgRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"slug":{"type":"string"},"billingEmail":{"type":"string"}}},"UpdateOrgRequest":{"type":"object","properties":{"name":{"type":"string"},"billingEmail":{"type":"string"}}},"UpdateProfileRequest":{"type":"object","properties":{"fullName":{"type":"string"},"avatarUrl":{"type":"string"},"defaultOrganizationId":{"type":"string"}}},"AddMemberRequest":{"type":"object","required":["email","role"],"properties":{"email":{"type":"string"},"role":{"type":"string","enum":["admin","member","viewer"]}}},"UpdateMemberRoleRequest":{"type":"object","required":["role"],"properties":{"role":{"type":"string","enum":["owner","admin","member","viewer"]}}},"CreateApiKeyRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}}}},"CreateApiKeyResult":{"type":"object","required":["id","key","keyPrefix","name","scopes","createdAt"],"properties":{"id":{"type":"string"},"key":{"type":"string","description":"Plaintext key — shown once"},"keyPrefix":{"type":"string"},"name":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"}}},"CreateSshKeyRequest":{"type":"object","required":["name","publicKey"],"properties":{"name":{"type":"string"},"publicKey":{"type":"string"}}},"CreateClusterRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"resourceSize":{"type":"string"},"tier":{"type":"string"},"replicaCount":{"type":"integer"},"gpuModelId":{"type":"string"},"gpusPerReplica":{"type":"integer"},"imageUrl":{"type":"string"},"containerPort":{"type":"integer"},"preferredRegions":{"type":"array","items":{"type":"string"}},"allowFallback":{"type":"boolean"},"envVars":{"type":"object","additionalProperties":{"type":"string"}},"registryCredentialId":{"type":"string"},"healthChecks":{"type":"array","items":{"type":"string"}},"healthCheckPath":{"type":"string"},"healthCheckPort":{"type":"integer"},"diskSizeGb":{"type":"integer"},"containerCommand":{"type":"array","items":{"type":"string"}},"privileged":{"type":"boolean"},"kernelModules":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"}}},"CreateVmRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"resourceSize":{"type":"string"},"tier":{"type":"string"},"gpuModelId":{"type":"string"},"gpuCount":{"type":"integer"},"imageUrl":{"type":"string"},"containerPort":{"type":"integer"},"preferredRegions":{"type":"array","items":{"type":"string"}},"allowFallback":{"type":"boolean"},"envVars":{"type":"object","additionalProperties":{"type":"string"}},"registryCredentialId":{"type":"string"},"healthChecks":{"type":"array","items":{"type":"string"}},"healthCheckPath":{"type":"string"},"healthCheckPort":{"type":"integer"},"diskSizeGb":{"type":"integer"},"containerCommand":{"type":"array","items":{"type":"string"}},"privileged":{"type":"boolean"},"kernelModules":{"type":"array","items":{"type":"string"}},"templateId":{"type":"string"},"sshKeyIds":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean","description":"true = open endpoint (no data-plane auth); default false requires an org API key"}}},"ScaleRequest":{"type":"object","required":["replicaCount"],"properties":{"replicaCount":{"type":"integer"}}},"VmSshKeyItem":{"type":"object","required":["id","name","fingerprint","attached","crossOrg"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"fingerprint":{"type":"string"},"attached":{"type":"boolean"},"crossOrg":{"type":"boolean"},"orgName":{"type":"string","nullable":true}}},"AttachSshKeyRequest":{"type":"object","required":["sshKeyId"],"properties":{"sshKeyId":{"type":"string"}}},"ResizeDiskRequest":{"type":"object","required":["newSizeGb"],"properties":{"newSizeGb":{"type":"integer"}}},"TelegramLinkResult":{"type":"object","required":["present"],"properties":{"present":{"type":"boolean"},"telegramUserId":{"type":"integer","format":"int64"},"telegramUsername":{"type":"string"},"linkingCode":{"type":"string"},"linkedAt":{"type":"string"},"createdAt":{"type":"string"}}},"Snapshot":{"type":"object","required":["id","organizationId","name","status","diskSizeGb","chainDepth","createdAt"],"properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"sourceVmId":{"type":"string"},"nodeId":{"type":"string"},"name":{"type":"string"},"diskPath":{"type":"string"},"diskSizeGb":{"type":"integer"},"sizeBytes":{"type":"integer","format":"int64"},"chainDepth":{"type":"integer"},"templateId":{"type":"string"},"gpuModelId":{"type":"string"},"gpuCount":{"type":"integer"},"resourceSize":{"type":"string"},"imageUrl":{"type":"string"},"envVars":{"type":"object","additionalProperties":{"type":"string"}},"containerPort":{"type":"integer"},"status":{"type":"string"},"errorMessage":{"type":"string"},"createdAt":{"type":"string"},"deletedAt":{"type":"string"}}},"CreateSnapshotRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"ForkRequest":{"type":"object","required":["snapshotId"],"properties":{"snapshotId":{"type":"string"},"name":{"type":"string"},"gpuModelId":{"type":"string"},"gpuCount":{"type":"integer"},"resourceSize":{"type":"string"},"diskSizeGb":{"type":"integer"},"imageUrl":{"type":"string"},"envVars":{"type":"object","additionalProperties":{"type":"string"}},"containerPort":{"type":"integer"}}},"CreatedResource":{"type":"object","required":["id","name","status"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"}}},"TransferRequest":{"type":"object","required":["id","resourceType","sourceOrganizationId","targetOrganizationId","status","createdAt"],"properties":{"id":{"type":"string"},"resourceType":{"type":"string"},"clusterId":{"type":"string"},"vmId":{"type":"string"},"sourceOrganizationId":{"type":"string"},"targetOrganizationId":{"type":"string"},"initiatedBy":{"type":"string"},"respondedBy":{"type":"string"},"status":{"type":"string"},"note":{"type":"string"},"createdAt":{"type":"string"},"respondedAt":{"type":"string"},"completedAt":{"type":"string"},"expiresAt":{"type":"string"}}},"InitiateTransferRequest":{"type":"object","required":["resourceType","resourceId","targetOrgSlug"],"properties":{"resourceType":{"type":"string","enum":["cluster","vm"]},"resourceId":{"type":"string"},"targetOrgSlug":{"type":"string"},"note":{"type":"string"}}},"AcceptTransferRequest":{"type":"object","properties":{"sshKeyIds":{"type":"array","items":{"type":"string"}}}},"TransferItem":{"type":"object","required":["id","resourceType","status","resourceName","createdAt"],"properties":{"id":{"type":"string"},"resourceType":{"type":"string"},"clusterId":{"type":"string"},"vmId":{"type":"string"},"status":{"type":"string"},"note":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"respondedAt":{"type":"string"},"completedAt":{"type":"string"},"resourceName":{"type":"string"},"sourceOrgName":{"type":"string"},"sourceOrgSlug":{"type":"string"},"targetOrgName":{"type":"string"},"targetOrgSlug":{"type":"string"}}},"TargetOrg":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}}},"PendingCount":{"type":"object","required":["count"],"properties":{"count":{"type":"integer"}}},"UsageBreakdownItem":{"type":"object","required":["key","hours","cents"],"properties":{"key":{"type":"string"},"hours":{"type":"number"},"cents":{"type":"integer"}}},"CurrentUsage":{"type":"object","required":["usageCents","usageHours","breakdown"],"properties":{"usageCents":{"type":"integer"},"usageHours":{"type":"number"},"breakdown":{"type":"array","items":{"$ref":"#/components/schemas/UsageBreakdownItem"}}}},"ProviderStatus":{"type":"object","required":["isProvider"],"properties":{"isProvider":{"type":"boolean"},"applicationStatus":{"type":"string","nullable":true},"applicationSubmittedAt":{"type":"string","nullable":true}}},"ApplyForProviderRequest":{"type":"object","required":["note"],"properties":{"note":{"type":"string"}}},"ProvisioningTokenItem":{"type":"object","required":["id","tokenPrefix","nodeType","status","createdAt"],"properties":{"id":{"type":"string"},"tokenPrefix":{"type":"string"},"name":{"type":"string","nullable":true},"nodeType":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"expiresAt":{"type":"string","nullable":true},"usedAt":{"type":"string","nullable":true},"usedByNodeId":{"type":"string","nullable":true},"nodePool":{"type":"string"},"maxNodes":{"type":"integer"},"usedCount":{"type":"integer"},"revokedAt":{"type":"string","nullable":true}}},"GenerateProvisioningTokenRequest":{"type":"object","properties":{"name":{"type":"string"},"expiresInHours":{"type":"integer"},"nodeType":{"type":"string","enum":["persistent","spot"]},"maxNodes":{"type":"integer","description":"Enrollment quota; 0/omitted = unlimited"},"nodePool":{"type":"string","description":"Pool enrolled nodes land in (default community)"}}},"ProvisioningTokenCreated":{"type":"object","required":["id","token","tokenPrefix","warning"],"properties":{"id":{"type":"string"},"token":{"type":"string"},"tokenPrefix":{"type":"string"},"name":{"type":"string","nullable":true},"expiresAt":{"type":"string","nullable":true},"warning":{"type":"string"},"maxNodes":{"type":"integer"},"nodePool":{"type":"string"}}},"EnrollNodeRequest":{"type":"object","required":["token","hardwareFingerprint","nebulaPubkey"],"properties":{"token":{"type":"string","description":"Provisioning token (vtk_...)"},"hardwareFingerprint":{"type":"string"},"machineId":{"type":"string","description":"Stable per-box identity (SMBIOS product_uuid / serial / cloud instance-id). Primary global node-identity key; fingerprint is the fallback when empty."},"hostname":{"type":"string"},"cpuModel":{"type":"string"},"cpuCores":{"type":"integer"},"ramGb":{"type":"integer"},"nebulaPubkey":{"type":"string","description":"Node Nebula public key PEM (from nebula-cert keygen)"},"runtime":{"type":"string","description":"Node runtime detected by enroll.sh: qemu (VFIO/KVM passthrough) or gvisor (container GPUs). Default gvisor."},"gpus":{"type":"array","description":"LEGACY nvidia-smi detection (name + pci.bus_id BDF — NOT a vendor:device id despite the example). Kept for old scripts; gpuInventory supersedes it.","items":{"type":"object","required":["pciId"],"properties":{"pciId":{"type":"string","description":"nvidia-smi pci.bus_id (a BDF like 00000000:04:00.0)"},"name":{"type":"string"}}}},"gpuInventory":{"$ref":"#/components/schemas/GpuInventory"}}},"GpuInventory":{"type":"object","description":"Versioned, driverless GPU detection (lspci) collected by enroll.sh. Works on VFIO hosts with no NVIDIA driver and on non-NVIDIA accelerators. source=none means the node could not detect (no lspci) — the control plane must NOT treat that as \"no GPUs\".\n","required":["version","source","devices","nvswitchCount"],"properties":{"version":{"type":"integer"},"source":{"type":"string","description":"none | lspci | lspci+nvidia-smi"},"driverVersion":{"type":"string"},"nvswitchCount":{"type":"integer","description":"NVSwitch bridges (PCI class 0680, vendor 10de) on the node"},"devices":{"type":"array","items":{"type":"object","required":["pciDeviceId","count"],"properties":{"pciDeviceId":{"type":"string","description":"vendor:device, e.g. 10de:2204"},"count":{"type":"integer"},"pciClass":{"type":"string","description":"PCI class code, e.g. 0300/0302/1200"},"pciName":{"type":"string","description":"lspci device name string"},"bdfs":{"type":"array","items":{"type":"string"},"description":"full BDFs of the group's devices"}}}},"iommuGroups":{"type":"array","description":"Per-IOMMU-group VFIO units: each entry is one IOMMU group containing an NVIDIA/AMD GPU. A group's GPUs are indivisible (must be passed together). Empty when IOMMU is off (gVisor/CPU nodes) — those GPUs are fed via the Nomad device fingerprint instead. Kept out of the hardware fingerprint (BDFs renumber across reboots).\n","items":{"type":"object","required":["group","gpus"],"properties":{"group":{"type":"integer","description":"IOMMU group number (provenance)"},"gpus":{"type":"array","description":"GPU-class (0300/0302) NVIDIA/AMD devices in this group — the sellable + passthrough set","items":{"type":"object","required":["bdf","deviceId"],"properties":{"bdf":{"type":"string","description":"full BDF, e.g. 0000:04:00.0"},"deviceId":{"type":"string","description":"vendor:device, e.g. 10de:2204"}}}}}}}}},"EnrollNodeBundle":{"type":"object","required":["nodeId","nebulaCert","nebulaCa","nebulaOverlayIp","nebulaLighthouses","nomadCa","nomadClientCert","nomadClientKey","nomadServers","nomadIntroToken","nomadPool","datacenter","dataPlaneCert","dataPlaneKey","dataPlaneCa","gatewayAddr","gatewayServerName"],"properties":{"nodeId":{"type":"string"},"nebulaCert":{"type":"string"},"nebulaCa":{"type":"string"},"nebulaOverlayIp":{"type":"string"},"nebulaLighthouses":{"type":"array","items":{"type":"object","required":["nebulaIp","endpoint"],"properties":{"nebulaIp":{"type":"string"},"endpoint":{"type":"string","description":"publicIp:4242"}}}},"nomadCa":{"type":"string"},"nomadClientCert":{"type":"string"},"nomadClientKey":{"type":"string"},"nomadServers":{"type":"array","items":{"type":"string"},"description":"server Nebula RPC addrs (ip:4647)"},"nomadIntroToken":{"type":"string"},"nomadPool":{"type":"string"},"datacenter":{"type":"string"},"dataPlaneCert":{"type":"string","description":"node data-plane mTLS cert (gateway tunnel); optional"},"dataPlaneKey":{"type":"string","description":"node data-plane mTLS key; optional"},"dataPlaneCa":{"type":"string","description":"CertIssuer CA the gateway pins; optional"},"gatewayAddr":{"type":"string","description":"host:port the node-agent dials (QUIC/UDP); optional"},"gatewayServerName":{"type":"string","description":"expected CN on the gateway server cert; optional"},"nodeAgentToken":{"type":"string","description":"durable node token for the node-agent self-update fetch (GET /v1/nodes/agent); optional"}}},"NodeGpuItem":{"type":"object","required":["gpuName","vramGb","quantity"],"properties":{"gpuName":{"type":"string"},"vramGb":{"type":"integer"},"quantity":{"type":"integer"}}},"ProviderNode":{"type":"object","required":["id","hostname","nodeType","tdxEnabled","status","createdAt","gpus"],"properties":{"id":{"type":"string"},"hostname":{"type":"string"},"nodeType":{"type":"string"},"tdxEnabled":{"type":"boolean"},"status":{"type":"string"},"cpuModel":{"type":"string","nullable":true},"cpuCores":{"type":"integer","nullable":true},"ramGb":{"type":"integer","nullable":true},"createdAt":{"type":"string"},"locationCity":{"type":"string","nullable":true},"locationCountry":{"type":"string","nullable":true},"gpus":{"type":"array","items":{"$ref":"#/components/schemas/NodeGpuItem"}}}},"ProviderStats":{"type":"object","required":["totalNodes","onlineNodes","offlineNodes","activeTokens"],"properties":{"totalNodes":{"type":"integer"},"onlineNodes":{"type":"integer"},"offlineNodes":{"type":"integer"},"activeTokens":{"type":"integer"}}},"EarningsBreakdownNode":{"type":"object","required":["nodeId","hostname","earningsCents","hours"],"properties":{"nodeId":{"type":"string"},"hostname":{"type":"string"},"earningsCents":{"type":"integer"},"hours":{"type":"number"}}},"EarningsBreakdownGpu":{"type":"object","required":["gpuModelId","name","earningsCents","hours"],"properties":{"gpuModelId":{"type":"string"},"name":{"type":"string"},"earningsCents":{"type":"integer"},"hours":{"type":"number"}}},"PayoutItem":{"type":"object","required":["id","type","amountCents","createdAt"],"properties":{"id":{"type":"string"},"type":{"type":"string"},"amountCents":{"type":"integer"},"description":{"type":"string","nullable":true},"createdAt":{"type":"string"}}},"ProviderEarnings":{"type":"object","required":["totalEarningsCents","totalHours","currentMonthEarningsCents","currentMonthHours","pendingEarningsCents","availableForPayoutCents","totalPaidOutCents","commissionPercent","byNode","byGpuModel","recentPayouts"],"properties":{"totalEarningsCents":{"type":"integer"},"totalHours":{"type":"number"},"currentMonthEarningsCents":{"type":"integer"},"currentMonthHours":{"type":"number"},"pendingEarningsCents":{"type":"integer"},"availableForPayoutCents":{"type":"integer"},"totalPaidOutCents":{"type":"integer"},"commissionPercent":{"type":"integer"},"byNode":{"type":"array","items":{"$ref":"#/components/schemas/EarningsBreakdownNode"}},"byGpuModel":{"type":"array","items":{"$ref":"#/components/schemas/EarningsBreakdownGpu"}},"recentPayouts":{"type":"array","items":{"$ref":"#/components/schemas/PayoutItem"}}}},"RunnerPool":{"type":"object","required":["id","organizationId","name","githubInstallationId","githubOwner","githubOwnerType","poolRamGb","diskSizeGb","status","createdAt","updatedAt"],"properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"githubInstallationId":{"type":"integer","format":"int64"},"githubOwner":{"type":"string"},"githubOwnerType":{"type":"string"},"poolRamGb":{"type":"integer"},"diskSizeGb":{"type":"integer"},"runtime":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}}},"RunnerPoolItem":{"type":"object","required":["id","organizationId","name","githubInstallationId","githubOwner","githubOwnerType","poolRamGb","diskSizeGb","status","createdAt","updatedAt","activeRunners","usedRamMb","queuedRunners","queuedRamMb"],"properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"name":{"type":"string"},"githubInstallationId":{"type":"integer","format":"int64"},"githubOwner":{"type":"string"},"githubOwnerType":{"type":"string"},"poolRamGb":{"type":"integer"},"diskSizeGb":{"type":"integer"},"runtime":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"activeRunners":{"type":"integer"},"usedRamMb":{"type":"integer"},"queuedRunners":{"type":"integer"},"queuedRamMb":{"type":"integer"}}},"CreateRunnerPoolRequest":{"type":"object","required":["name","installationId","poolRamGb"],"properties":{"name":{"type":"string"},"installationId":{"type":"integer","format":"int64"},"githubOwner":{"type":"string"},"githubOwnerType":{"type":"string"},"poolRamGb":{"type":"integer"},"diskSizeGb":{"type":"integer"}}},"ResizeRunnerPoolRequest":{"type":"object","required":["poolRamGb"],"properties":{"poolRamGb":{"type":"integer"}}},"DeleteRunnerPoolResult":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}}},"RunnerJob":{"type":"object","required":["id","runnerPoolId","organizationId","status","ramMb","cpus","queuedAt"],"properties":{"id":{"type":"string"},"runnerPoolId":{"type":"string"},"organizationId":{"type":"string"},"githubRepo":{"type":"string"},"runnerName":{"type":"string"},"runnerSizeLabel":{"type":"string"},"ramMb":{"type":"integer"},"cpus":{"type":"integer"},"nodeId":{"type":"string"},"status":{"type":"string"},"queuedAt":{"type":"string"},"provisioningAt":{"type":"string"},"runningAt":{"type":"string"},"completedAt":{"type":"string"},"failureReason":{"type":"string"}}},"RunnerMetricsDaily":{"type":"object","required":["date","completed","failed","cancelled","running"],"properties":{"date":{"type":"string"},"completed":{"type":"integer"},"failed":{"type":"integer"},"cancelled":{"type":"integer"},"running":{"type":"integer"}}},"RunnerMetricsSummary":{"type":"object","required":["totalJobs","completedJobs","failedJobs","avgDurationSec","avgQueueTimeSec"],"properties":{"totalJobs":{"type":"integer"},"completedJobs":{"type":"integer"},"failedJobs":{"type":"integer"},"avgDurationSec":{"type":"integer"},"avgQueueTimeSec":{"type":"integer"}}},"RunnerMetricsCost":{"type":"object","required":["githubCostCents","vectorlayCostCents","savedCents"],"properties":{"githubCostCents":{"type":"integer"},"vectorlayCostCents":{"type":"integer"},"savedCents":{"type":"integer"}}},"RunnerMetrics":{"type":"object","required":["daily","summary","cost"],"properties":{"daily":{"type":"array","items":{"$ref":"#/components/schemas/RunnerMetricsDaily"}},"summary":{"$ref":"#/components/schemas/RunnerMetricsSummary"},"cost":{"$ref":"#/components/schemas/RunnerMetricsCost"}}},"ProxyKey":{"type":"object","required":["id","name","keyPrefix","usageCount","bandwidthBytes","createdAt"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"keyPrefix":{"type":"string"},"lastUsedAt":{"type":"string","nullable":true},"usageCount":{"type":"integer","format":"int64"},"bandwidthBytes":{"type":"integer","format":"int64"},"createdAt":{"type":"string"}}},"ProxyInfo":{"type":"object","required":["host","port","proxyKeys"],"properties":{"host":{"type":"string"},"port":{"type":"integer"},"username":{"type":"string","nullable":true},"proxyKeys":{"type":"array","items":{"$ref":"#/components/schemas/ProxyKey"}}}},"ProxyUsageDaily":{"type":"object","required":["date","requests","bytes","success","errors"],"properties":{"date":{"type":"string"},"requests":{"type":"integer"},"bytes":{"type":"integer","format":"int64"},"success":{"type":"integer"},"errors":{"type":"integer"}}},"ProxyUsageTotals":{"type":"object","required":["requests","bytes","success","errors"],"properties":{"requests":{"type":"integer"},"bytes":{"type":"integer","format":"int64"},"success":{"type":"integer"},"errors":{"type":"integer"}}},"ProxyUsageResult":{"type":"object","required":["daily","totals"],"properties":{"daily":{"type":"array","items":{"$ref":"#/components/schemas/ProxyUsageDaily"}},"totals":{"$ref":"#/components/schemas/ProxyUsageTotals"}}}},"responses":{"Unauthorized":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"The request conflicts with existing state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"BadRequest":{"description":"The request is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unavailable":{"description":"A required integration (e.g. payments) is not configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/clusters/{id}":{"get":{"operationId":"getCluster","summary":"Get a cluster by id","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The cluster","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Clusters"]}},"/v1/clusters/{id}/detail":{"get":{"operationId":"getClusterDetail","summary":"Get a cluster with its replicas and GPU model","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The cluster detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterDetail"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Clusters"]}},"/v1/orgs/{orgId}/clusters":{"get":{"operationId":"listOrgClusters","summary":"List an org's clusters (cursor-paginated)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Page of clusters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterPage"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Clusters"]}},"/v1/onboarding/bootstrap":{"post":{"operationId":"bootstrap","summary":"Create the caller's profile + first org (idempotent). Supabase-JWT only.","security":[{"apiKey":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapRequest"}}}},"responses":{"200":{"description":"Bootstrapped (or already existed)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}},"tags":["Account"]}},"/v1/gpu-availability":{"get":{"operationId":"getGpuAvailability","summary":"GPU availability by model","security":[{"apiKey":[]}],"responses":{"200":{"description":"Availability by gpu model","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GpuAvailability"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Catalog"]}},"/v1/me":{"get":{"operationId":"getMe","summary":"Current user profile + org memberships","security":[{"apiKey":[]}],"responses":{"200":{"description":"The caller's profile + orgs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}},"tags":["Account"]}},"/v1/orgs/{orgId}/members":{"get":{"operationId":"listOrgMembers","summary":"List an org's members","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Members","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Member"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Organizations"]}},"/v1/orgs/{orgId}/vms":{"get":{"operationId":"listOrgVms","summary":"List an org's VMs (cursor-paginated)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Page of VMs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmPage"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["VMs"]}},"/v1/vms/{id}":{"get":{"operationId":"getVm","summary":"Get a VM by id","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The VM","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/detail":{"get":{"operationId":"getVmDetail","summary":"Get a VM with its GPU/node/template info and price","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The VM detail","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmDetail"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/orgs/{orgId}/billing/balance":{"get":{"operationId":"getBalance","summary":"Org balance + recent transactions","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Balance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Balance"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Billing"]}},"/v1/orgs/{orgId}/billing/setup-intent":{"post":{"operationId":"createBillingSetupIntent","summary":"Start saving a card (Stripe SetupIntent for inline Elements)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SetupIntent client secret + publishable key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupIntent"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"503":{"$ref":"#/components/responses/Unavailable"}},"tags":["Billing"]}},"/v1/orgs/{orgId}/billing/deposit":{"post":{"operationId":"createBillingDeposit","summary":"Charge the saved card to top up prepaid balance","description":"Charges the org's default saved card off-session. The balance credit is applied by the payment_intent.succeeded webhook (the authoritative money signal), not this response — poll the balance after success.","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositRequest"}}}},"responses":{"200":{"description":"Charge outcome (status drives the dashboard's next step)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"503":{"$ref":"#/components/responses/Unavailable"}},"tags":["Billing"]}},"/v1/orgs/{orgId}/billing/auto-recharge":{"get":{"operationId":"getAutoRecharge","summary":"Read the org's auto-recharge policy","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current settings (defaults when never set)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRechargeSettings"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Billing"]},"put":{"operationId":"updateAutoRecharge","summary":"Set the org's auto-recharge policy","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRechargeSettings"}}}},"responses":{"200":{"description":"Saved settings","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoRechargeSettings"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"503":{"$ref":"#/components/responses/Unavailable"}},"tags":["Billing"]}},"/v1/orgs/{orgId}/billing/payment-methods":{"get":{"operationId":"listBillingPaymentMethods","summary":"List saved cards (brand/last4/exp only)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Saved cards","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethods"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Billing"]}},"/v1/orgs/{orgId}/billing/payment-methods/{paymentMethodId}":{"delete":{"operationId":"deleteBillingPaymentMethod","summary":"Remove a saved card","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"paymentMethodId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Removed"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"503":{"$ref":"#/components/responses/Unavailable"}},"tags":["Billing"]}},"/v1/orgs/{orgId}/api-keys":{"get":{"operationId":"listOrgApiKeys","summary":"List an org's API keys (no secrets)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"API keys","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeySummary"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["API Keys"]}},"/v1/orgs/{orgId}/ssh-keys":{"get":{"operationId":"listOrgSshKeys","summary":"List an org's SSH public keys","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SSH keys","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SshKeySummary"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["SSH Keys"]}},"/v1/gpu-models":{"get":{"operationId":"listGpuModels","summary":"GPU model catalog","security":[{"apiKey":[]}],"responses":{"200":{"description":"GPU models","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GpuModel"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}},"tags":["Catalog"]}},"/v1/pricing":{"get":{"operationId":"getPricing","summary":"GPU + CPU pricing","security":[{"apiKey":[]}],"responses":{"200":{"description":"Pricing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pricing"}}}},"401":{"$ref":"#/components/responses/Unauthorized"}},"tags":["Catalog"]}},"/v1/vm-templates":{"get":{"operationId":"listVmTemplates","summary":"VM template catalog","security":[{"apiKey":[]}],"responses":{"200":{"description":"Templates","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VmTemplate"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}},"tags":["Catalog"]}},"/v1/locations":{"get":{"operationId":"listLocations","summary":"Locations / regions","security":[{"apiKey":[]}],"responses":{"200":{"description":"Locations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Location"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}},"tags":["Catalog"]}},"/v1/orgs":{"post":{"operationId":"createOrg","summary":"Create an organization (caller becomes owner). Supabase-JWT only.","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrgRequest"}}}},"responses":{"200":{"description":"Created (caller is owner)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BootstrapResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["Organizations"]}},"/v1/orgs/{orgId}":{"get":{"operationId":"getOrg","summary":"Get an organization","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Organizations"]},"patch":{"operationId":"updateOrg","summary":"Update an organization (owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrgRequest"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Organizations"]}},"/v1/me/profile":{"patch":{"operationId":"updateProfile","summary":"Update the caller's profile","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileRequest"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Account"]}},"/v1/orgs/{orgId}/members/add":{"post":{"operationId":"addOrgMember","summary":"Add a member by email (owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMemberRequest"}}}},"responses":{"200":{"description":"Added","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Member"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["Organizations"]}},"/v1/orgs/{orgId}/members/{userId}":{"patch":{"operationId":"updateOrgMemberRole","summary":"Update a member's role (owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRoleRequest"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Member"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Organizations"]},"delete":{"operationId":"removeOrgMember","summary":"Remove a member (owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Removed"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Organizations"]}},"/v1/orgs/{orgId}/api-keys/create":{"post":{"operationId":"createOrgApiKey","summary":"Create an API key (returns the plaintext once)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["API Keys"]}},"/v1/orgs/{orgId}/api-keys/{id}":{"delete":{"operationId":"revokeOrgApiKey","summary":"Revoke an API key","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Revoked"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["API Keys"]}},"/v1/orgs/{orgId}/ssh-keys/create":{"post":{"operationId":"createOrgSshKey","summary":"Add an SSH public key (computes fingerprint)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSshKeyRequest"}}}},"responses":{"200":{"description":"Added","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshKeySummary"}}}},"400":{"description":"Invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["SSH Keys"]}},"/v1/orgs/{orgId}/ssh-keys/{id}":{"delete":{"operationId":"deleteOrgSshKey","summary":"Delete an SSH public key","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["SSH Keys"]}},"/v1/orgs/{orgId}/registry-credentials":{"get":{"operationId":"listOrgRegistryCredentials","summary":"List an org's registry credentials (no secrets)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Registry credentials","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RegistryCredentialSummary"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Registry Credentials"]}},"/v1/orgs/{orgId}/registry-credentials/create":{"post":{"operationId":"createOrgRegistryCredential","summary":"Create a registry credential (credentials stored encrypted)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRegistryCredentialRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryCredentialSummary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Registry Credentials"]}},"/v1/orgs/{orgId}/registry-credentials/{id}":{"delete":{"operationId":"deleteOrgRegistryCredential","summary":"Delete a registry credential","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Registry Credentials"]}},"/v1/orgs/{orgId}/webhooks":{"get":{"operationId":"listOrgWebhooks","summary":"List an org's webhooks (no secrets)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Webhooks","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookSummary"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Webhooks"]}},"/v1/orgs/{orgId}/webhooks/create":{"post":{"operationId":"createOrgWebhook","summary":"Create a webhook (returns the signing secret once)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookWithSecret"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Webhooks"]}},"/v1/orgs/{orgId}/webhooks/{id}":{"patch":{"operationId":"updateOrgWebhook","summary":"Update a webhook (name/url/events)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookRequest"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdateResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Webhooks"]},"delete":{"operationId":"deleteOrgWebhook","summary":"Delete a webhook","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Webhooks"]}},"/v1/orgs/{orgId}/webhooks/{id}/toggle":{"post":{"operationId":"toggleOrgWebhook","summary":"Enable/disable a webhook","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleWebhookRequest"}}}},"responses":{"200":{"description":"Toggled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookToggleResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Webhooks"]}},"/v1/orgs/{orgId}/webhooks/{id}/regenerate-secret":{"post":{"operationId":"regenerateOrgWebhookSecret","summary":"Regenerate a webhook's signing secret (returned once)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Regenerated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecret"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Webhooks"]}},"/v1/orgs/{orgId}/webhooks/{id}/deliveries":{"get":{"operationId":"listOrgWebhookDeliveries","summary":"Recent delivery attempts for a webhook","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Deliveries","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveryItem"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Webhooks"]}},"/v1/orgs/{orgId}/clusters/create":{"post":{"operationId":"createCluster","summary":"Create a cluster","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClusterRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterSummary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["Clusters"]}},"/v1/clusters/{id}/stop":{"post":{"operationId":"stopCluster","summary":"Stop a cluster","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Clusters"]}},"/v1/clusters/{id}/restart":{"post":{"operationId":"restartCluster","summary":"Restart a cluster","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Clusters"]}},"/v1/clusters/{id}/terminate":{"post":{"operationId":"terminateCluster","summary":"Terminate a cluster","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Clusters"]}},"/v1/clusters/{id}/scale":{"post":{"operationId":"scaleCluster","summary":"Scale a cluster's replica count","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScaleRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["Clusters"]}},"/v1/orgs/{orgId}/vms/create":{"post":{"operationId":"createVm","summary":"Create a VM","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVmRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmSummary"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["VMs"]}},"/v1/vms/{id}/stop":{"post":{"operationId":"stopVm","summary":"Stop a VM","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/restart":{"post":{"operationId":"restartVm","summary":"Restart a VM","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/terminate":{"post":{"operationId":"terminateVm","summary":"Terminate a VM","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmSummary"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/reboot":{"post":{"operationId":"rebootVm","summary":"Reboot a VM","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Rebooted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/resize-disk":{"post":{"operationId":"resizeVmDisk","summary":"Resize a stopped VM's disk","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResizeDiskRequest"}}}},"responses":{"204":{"description":"Resized"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/telegram-link":{"get":{"operationId":"getVmTelegramLink","summary":"Get a VM's embedded Telegram link","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelegramLinkResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/ssh-keys":{"get":{"operationId":"getVmSshKeys","summary":"SSH keys attached to a VM + the org's keys","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VmSshKeyItem"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]},"post":{"operationId":"attachVmSshKey","summary":"Attach an org SSH key to a VM","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachSshKeyRequest"}}}},"responses":{"204":{"description":"Attached"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["VMs"]}},"/v1/vms/{id}/snapshots":{"post":{"operationId":"createVmSnapshot","summary":"Create a snapshot of a VM","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSnapshotRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedResource"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["Snapshots"]}},"/v1/orgs/{orgId}/snapshots":{"get":{"operationId":"listOrgSnapshots","summary":"List an org's VM snapshots (optionally filtered by source VM)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"vmId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Snapshot"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Snapshots"]}},"/v1/snapshots/{id}":{"delete":{"operationId":"deleteSnapshot","summary":"Soft-delete a snapshot","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"409":{"$ref":"#/components/responses/Conflict"}},"tags":["Snapshots"]}},"/v1/orgs/{orgId}/vms/fork":{"post":{"operationId":"forkVm","summary":"Fork a new VM from a snapshot","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForkRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedResource"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Snapshots"]}},"/v1/orgs/{orgId}/usage/current":{"get":{"operationId":"getCurrentUsage","summary":"Current-month usage (cents/hours + per gpuModel-tier breakdown)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentUsage"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Usage"]}},"/v1/transfers/target-orgs":{"get":{"operationId":"listTransferTargetOrgs","summary":"Orgs the caller belongs to (for the transfer target dropdown)","security":[{"apiKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TargetOrg"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}},"tags":["Transfers"]}},"/v1/orgs/{orgId}/transfers":{"post":{"operationId":"initiateTransfer","summary":"Initiate a resource transfer to another org (owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateTransferRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Transfers"]}},"/v1/orgs/{orgId}/transfers/incoming":{"get":{"operationId":"listIncomingTransfers","summary":"Pending incoming transfers (enriched)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransferItem"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Transfers"]}},"/v1/orgs/{orgId}/transfers/outgoing":{"get":{"operationId":"listOutgoingTransfers","summary":"Outgoing transfers, all statuses (enriched)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransferItem"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Transfers"]}},"/v1/orgs/{orgId}/transfers/pending-count":{"get":{"operationId":"getTransferPendingCount","summary":"Count of pending incoming transfers","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PendingCount"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Transfers"]}},"/v1/transfers/{id}/cancel":{"post":{"operationId":"cancelTransfer","summary":"Cancel a pending outgoing transfer (source org)","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Cancelled"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Transfers"]}},"/v1/transfers/{id}/accept":{"post":{"operationId":"acceptTransfer","summary":"Accept a pending incoming transfer (target org owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptTransferRequest"}}}},"responses":{"204":{"description":"Accepted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Transfers"]}},"/v1/transfers/{id}/reject":{"post":{"operationId":"rejectTransfer","summary":"Reject a pending incoming transfer (target org owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Rejected"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Transfers"]}},"/v1/orgs/{orgId}/provider/status":{"get":{"operationId":"getProviderStatus","summary":"Provider status (isProvider + application status)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderStatus"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/provider/apply":{"post":{"operationId":"applyForProvider","summary":"Submit a provider application","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyForProviderRequest"}}}},"responses":{"204":{"description":"Submitted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/provider/tokens":{"get":{"operationId":"listProvisioningTokens","summary":"List the org's provisioning tokens (provider only)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProvisioningTokenItem"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Provider"]},"post":{"operationId":"generateProvisioningToken","summary":"Generate a one-time provisioning token (owner/admin, provider only)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateProvisioningTokenRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisioningTokenCreated"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/provider/tokens/{id}":{"delete":{"operationId":"revokeProvisioningToken","summary":"Revoke a provisioning token (owner/admin)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Revoked"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/provider/nodes":{"get":{"operationId":"listProviderNodes","summary":"List the provider org's nodes (with GPUs + location)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"includeRemoved","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"},"description":"Filter to one status (online|offline|maintenance|draining|removed)"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProviderNode"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/provider/nodes/{nodeId}":{"patch":{"operationId":"updateProviderNode","summary":"Set a node's operator lifecycle status (drain / maintenance / remove / online)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"nodeId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["online","draining","maintenance","removed"],"description":"Operator-set lifecycle state. draining/maintenance stop new placement (reconcile leaves them alone, capacity excluded); removed decommissions the node (Phase-1 reaper frees its workloads + GPU units); online clears an operator hold (the next reconcile pass re-derives true liveness from Nomad).\n"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderNode"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/provider/stats":{"get":{"operationId":"getProviderStats","summary":"Provider node + token stats","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderStats"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/provider/earnings":{"get":{"operationId":"getProviderEarnings","summary":"Provider earnings from usage records (+ payout history)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderEarnings"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Provider"]}},"/v1/orgs/{orgId}/runner-pools":{"get":{"operationId":"listRunnerPools","summary":"List runner pools (with active/queued usage)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RunnerPoolItem"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Runners"]},"post":{"operationId":"createRunnerPool","summary":"Create a runner pool","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunnerPoolRequest"}}}},"responses":{"200":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerPool"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["Runners"]}},"/v1/orgs/{orgId}/runner-pools/{id}":{"get":{"operationId":"getRunnerPool","summary":"Get a runner pool (with usage)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerPoolItem"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Runners"]},"delete":{"operationId":"deleteRunnerPool","summary":"Delete (or drain) a runner pool","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRunnerPoolResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Runners"]}},"/v1/orgs/{orgId}/runner-pools/{id}/resize":{"post":{"operationId":"resizeRunnerPool","summary":"Resize a runner pool's RAM tier","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResizeRunnerPoolRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerPool"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Runners"]}},"/v1/orgs/{orgId}/runner-pools/{id}/jobs":{"get":{"operationId":"listRunnerJobs","summary":"List runner jobs for a pool","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RunnerJob"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Runners"]}},"/v1/orgs/{orgId}/runner-pools/{id}/metrics":{"get":{"operationId":"getRunnerJobMetrics","summary":"Runner pool job metrics (last 30 days) + cost comparison","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerMetrics"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}},"tags":["Runners"]}},"/v1/orgs/{orgId}/ai/proxy":{"get":{"operationId":"getAiProxy","summary":"AI proxy connection info + proxy-scoped keys","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyInfo"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["AI Proxy"]}},"/v1/orgs/{orgId}/ai/proxy-usage":{"get":{"operationId":"getAiProxyUsage","summary":"AI proxy usage (daily + totals)","security":[{"apiKey":[]}],"parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyUsageResult"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}},"tags":["AI Proxy"]}}},"tags":[{"name":"Account","description":"The signed-in user: profile, memberships, and first-time onboarding."},{"name":"Organizations","description":"Organizations and their members. Most resources are scoped to an org."},{"name":"Clusters","description":"Autoscaling inference clusters that serve a container image behind an endpoint."},{"name":"VMs","description":"GPU virtual machines: lifecycle, disks, SSH access, and console links."},{"name":"Snapshots","description":"Point-in-time VM snapshots and forking new VMs from them."},{"name":"SSH Keys","description":"Org-level SSH public keys that can be attached to VMs."},{"name":"API Keys","description":"Programmatic access keys (vl_…) used to authenticate with this API."},{"name":"Registry Credentials","description":"Private container-registry credentials for pulling images."},{"name":"Webhooks","description":"Subscribe to platform events with signed HTTP callbacks."},{"name":"Billing","description":"Prepaid balance, saved cards, deposits, and auto-recharge."},{"name":"Usage","description":"Current-period usage and cost breakdowns."},{"name":"Transfers","description":"Move resources between organizations you belong to."},{"name":"Provider","description":"For GPU providers: applications, nodes, provisioning tokens, and earnings."},{"name":"Runners","description":"Managed GitHub Actions runner pools."},{"name":"AI Proxy","description":"OpenAI-compatible proxy connection details and usage."},{"name":"Catalog","description":"Public catalog: GPU models, availability, pricing, templates, and locations."}]}