{"openapi":"3.1.0","info":{"title":"Enzonic Cloud API","version":"1.0.0","description":"API-first hosting control plane. Deploy and manage game/app servers across multiple Pelican panels, metered against a credit balance. Authenticate with a Clerk API key (`Authorization: Bearer <secret>`).","contact":{"name":"Enzonic","url":"https://enzonic.com"}},"servers":[{"url":"https://cloud.api.enzonic.com","description":"Cloud API"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A Clerk API key secret, or a Clerk session token from the dashboard."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}},"Account":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"balanceCents":{"type":"integer"},"balanceUsd":{"type":"number"},"trialGranted":{"type":"boolean"},"isAdmin":{"type":"boolean"}}},"Server":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"instanceId":{"type":"string","format":"uuid"},"identifier":{"type":"string"},"uuid":{"type":"string"},"name":{"type":"string"},"eggId":{"type":"integer"},"region":{"type":"string","nullable":true},"resources":{"type":"object","properties":{"ramMb":{"type":"integer"},"cpuPercent":{"type":"integer"},"diskMb":{"type":"integer"}}},"priceCentsPerHour":{"type":"integer"},"status":{"type":"string","enum":["active","suspended","deleted"]},"createdAt":{"type":"string","format":"date-time"}}},"CreateServer":{"type":"object","required":["name","eggId","ramMb","cpuPercent","diskMb"],"properties":{"name":{"type":"string","minLength":3,"maxLength":60},"instanceId":{"type":"string","format":"uuid","description":"Optional; auto-picked if omitted."},"eggId":{"type":"integer"},"region":{"type":"string","nullable":true,"description":"e.g. USA, SPAIN. null = auto."},"ramMb":{"type":"integer","minimum":256},"cpuPercent":{"type":"integer","minimum":25},"diskMb":{"type":"integer","minimum":512},"environment":{"type":"object","additionalProperties":{"type":"string"}},"dockerImage":{"type":"string"}}}}},"paths":{"/v1/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/account":{"get":{"summary":"Current account & balance","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}}}}}},"/v1/account/transactions":{"get":{"summary":"Credit ledger","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/keys":{"get":{"summary":"List your API keys","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}},"post":{"summary":"Create an API key (secret shown once)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"expiresInDays":{"type":"integer"}}}}}},"responses":{"201":{"description":"Created"}}}},"/v1/keys/{id}":{"delete":{"summary":"Revoke an API key","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/regions":{"get":{"summary":"Region availability (stock)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/instances":{"get":{"summary":"Deployable instances","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/eggs":{"get":{"summary":"List eggs across instances","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/eggs/{instanceId}/{eggId}":{"get":{"summary":"Egg detail with variables","security":[{"bearerAuth":[]}],"parameters":[{"name":"instanceId","in":"path","required":true,"schema":{"type":"string"}},{"name":"eggId","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers":{"get":{"summary":"List your servers","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}},"post":{"summary":"Deploy a server","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServer"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Server"}}}}}}},"/v1/servers/{id}":{"get":{"summary":"Get a server","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Server"}}}}}},"patch":{"summary":"Resize a server","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ramMb","cpuPercent","diskMb"],"properties":{"ramMb":{"type":"integer"},"cpuPercent":{"type":"integer"},"diskMb":{"type":"integer"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Server"}}}}}},"delete":{"summary":"Delete a server","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/power":{"post":{"summary":"Send a power signal","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["signal"],"properties":{"signal":{"type":"string","enum":["start","stop","restart","kill"]}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/resources":{"get":{"summary":"Live CPU/RAM/disk usage","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/command":{"post":{"summary":"Send a console command","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["command"],"properties":{"command":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/console":{"get":{"summary":"Console websocket credentials","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/files":{"get":{"summary":"List files in a directory","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"directory","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/files/contents":{"get":{"summary":"Read a file","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/files/write":{"post":{"summary":"Write a file","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["file","content"],"properties":{"file":{"type":"string"},"content":{"type":"string"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/files/download":{"get":{"summary":"Signed download URL","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"file","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/servers/{id}/files/delete":{"post":{"summary":"Delete files","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/admin/instances":{"get":{"summary":"[admin] List Pelican instances","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}},"post":{"summary":"[admin] Add a Pelican instance","security":[{"bearerAuth":[]}],"responses":{"201":{"description":"Created"}}}},"/v1/admin/instances/{id}":{"patch":{"summary":"[admin] Update an instance","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}},"delete":{"summary":"[admin] Delete an instance","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/admin/instances/{id}/test":{"post":{"summary":"[admin] Test instance connectivity","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/admin/settings":{"get":{"summary":"[admin] Get platform settings","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}},"put":{"summary":"[admin] Update platform settings","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/admin/users":{"get":{"summary":"[admin] List accounts","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/admin/users/{id}/credits":{"post":{"summary":"[admin] Grant/deduct credits","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}},"/v1/admin/servers":{"get":{"summary":"[admin] List all servers","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{}}}}}}}}