{"openapi":"3.1.0","info":{"title":"Mikrom API","description":"REST API for Mikrom microVM orchestration.\n\nAuthentication accepts either a session JWT or a Personal Access Token (`mikrom_pat_...`) sent as an HTTP Bearer credential. Create PATs under `POST /v1/auth/tokens`; see docs/guides/api-authentication.md for the full guide. An interactive explorer is served at `/v1/docs`.","version":"0.5.4"},"servers":[{"url":"/v1","description":"Current API deployment (v1 surface)"}],"paths":{"/v1/health":{"get":{"summary":"","description":"","operationId":"health","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/health/live":{"get":{"summary":"","description":"","operationId":"health_live","responses":{"200":{"description":"plain text","content":{"text/plain; charset=utf-8":{}}}}}},"/v1/health/ready":{"get":{"summary":"","description":"","operationId":"health_ready","responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/health/stream":{"get":{"summary":"","description":"","operationId":"health_stream","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}}}},"/re-attach":{"post":{"summary":"","description":"","operationId":"re_attach","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReAttachResponse"}}}}}}},"/v1/webhooks/polar":{"post":{"summary":"","description":"","operationId":"polar_webhook","requestBody":{"content":{"application/octet-stream":{}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/validate":{"post":{"summary":"","description":"","operationId":"validate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletionValidateRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletionValidateResponse"}}}}}}},"/v1/audit-logs":{"get":{"tags":["audit-logs"],"summary":"List activity audit logs for the authenticated user/tenant","description":"","operationId":"get_audit_logs","parameters":[{"in":"query","name":"action","schema":{"type":["string","null"]},"style":"form"},{"in":"query","name":"limit","schema":{"type":["integer","null"],"format":"int64"},"style":"form"},{"in":"query","name":"offset","schema":{"type":["integer","null"],"format":"int64"},"style":"form"},{"in":"query","name":"resource_type","schema":{"type":["string","null"]},"style":"form"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogListResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/auth/captcha":{"get":{"summary":"","description":"","operationId":"get_captcha","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaResponse"}}}}}}},"/v1/auth/register":{"post":{"summary":"","description":"","operationId":"register","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/auth/login":{"post":{"summary":"","description":"","operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}}}}},"/v1/auth/refresh":{"post":{"summary":"","description":"","operationId":"refresh_session","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenResponse"}}}}}}},"/v1/auth/logout":{"post":{"summary":"","description":"","operationId":"logout","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/webhooks/github/{app_name}":{"post":{"summary":"","description":"","operationId":"github_webhook_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/octet-stream":{}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/webhooks/github":{"post":{"summary":"","description":"","operationId":"github_webhook_handler_generic","requestBody":{"content":{"application/octet-stream":{}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/auth/me":{"get":{"summary":"","description":"","operationId":"get_profile","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]},"put":{"summary":"","description":"","operationId":"update_profile","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]},"delete":{"summary":"","description":"","operationId":"delete_account","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/auth/password":{"post":{"summary":"","description":"","operationId":"change_password","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/auth/2fa/setup":{"get":{"summary":"","description":"","operationId":"setup_totp","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpSetupResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/auth/2fa/verify":{"post":{"summary":"","description":"","operationId":"verify_totp","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyTotpRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/auth/2fa/disable":{"post":{"summary":"","description":"","operationId":"disable_totp","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/auth/tokens":{"get":{"summary":"","description":"","operationId":"list_personal_access_tokens","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PersonalAccessToken"}}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_personal_access_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTokenRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/auth/tokens/{token_id}":{"delete":{"summary":"","description":"","operationId":"revoke_personal_access_token","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/billing":{"get":{"summary":"","description":"","operationId":"get_billing_summary","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSummary"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/billing/products":{"get":{"summary":"","description":"","operationId":"list_billing_products","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingProductListResponse"}}}}}}},"/v1/billing/products/refresh":{"post":{"summary":"","description":"","operationId":"refresh_billing_products","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingProductListResponse"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/billing/checkout-product":{"put":{"summary":"","description":"","operationId":"update_billing_checkout_product","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutProductPreferenceRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSummary"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/billing/checkout":{"post":{"summary":"","description":"","operationId":"create_billing_checkout","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/billing/portal":{"post":{"summary":"","description":"","operationId":"create_billing_portal","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectResponse"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/notifications":{"get":{"summary":"","description":"","operationId":"list_user_notifications","parameters":[{"in":"query","name":"limit","schema":{"type":["integer","null"],"format":"int64"},"style":"form"},{"in":"query","name":"offset","schema":{"type":["integer","null"],"format":"int64"},"style":"form"},{"in":"query","name":"unread_only","schema":{"type":["boolean","null"]},"style":"form"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/notifications/{notification_id}/read":{"post":{"summary":"","description":"","operationId":"mark_user_notification_read","parameters":[{"in":"path","name":"notification_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/notifications/read-all":{"post":{"summary":"","description":"","operationId":"mark_all_user_notifications_read","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/github/install":{"get":{"summary":"","description":"","operationId":"github_install","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/github/callback":{"get":{"summary":"","description":"","operationId":"github_callback","parameters":[{"in":"query","name":"installation_id","required":true,"schema":{"type":"integer","format":"int64"},"style":"form"},{"in":"query","name":"setup_action","required":true,"schema":{"type":"string"},"style":"form"},{"in":"query","name":"state","schema":{"type":["string","null"]},"style":"form"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/github/repos":{"get":{"summary":"","description":"","operationId":"list_repos","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepo"}}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/github/accounts":{"get":{"summary":"","description":"","operationId":"list_accounts","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserGithubAccount"}}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/projects":{"get":{"summary":"","description":"","operationId":"list_projects","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tenant"}}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_project","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/projects/{tenant_id}":{"get":{"summary":"","description":"","operationId":"get_project","parameters":[{"in":"path","name":"tenant_slug","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}}},"security":[{"jwt":[]},{"pat":[]}]},"delete":{"summary":"","description":"","operationId":"delete_project","parameters":[{"in":"path","name":"tenant_slug","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]},"patch":{"summary":"","description":"","operationId":"update_project","parameters":[{"in":"path","name":"tenant_slug","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tenant"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps":{"get":{"summary":"","description":"","operationId":"list_apps_handler","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AppResponse"}}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_app_handler","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/deploy":{"post":{"summary":"","description":"","operationId":"deploy_app","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployRequestPayload"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployResponseBody"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}":{"get":{"summary":"","description":"","operationId":"get_app_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]},"delete":{"summary":"","description":"","operationId":"delete_app_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]},"patch":{"summary":"","description":"","operationId":"update_app_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAppRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/secret":{"get":{"summary":"","description":"","operationId":"get_app_secret_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSecretResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/scale":{"patch":{"summary":"","description":"","operationId":"scale_app_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScaleAppRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deploy":{"post":{"summary":"","description":"","operationId":"deploy_app_version_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualDeployRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployResponseBody"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments":{"get":{"summary":"","description":"","operationId":"list_deployments_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Deployment"}}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/stream":{"get":{"summary":"","description":"","operationId":"deployments_stream_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/logs/stream":{"get":{"summary":"","description":"","operationId":"app_logs_stream_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/metrics/stream":{"get":{"summary":"","description":"","operationId":"app_metrics_stream_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/workspace/events":{"get":{"summary":"","description":"","operationId":"workspace_events_stream","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{deployment_id}/activate":{"post":{"summary":"","description":"","operationId":"activate_deployment_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"deployment_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]},{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}":{"get":{"summary":"","description":"","operationId":"get_deployment_status","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveDeploymentStatus"}}}}},"security":[{"jwt":[]},{"pat":[]}]},"delete":{"summary":"","description":"","operationId":"stop_deployment","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/logs":{"get":{"summary":"","description":"","operationId":"get_deployment_logs","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/pause":{"post":{"summary":"","description":"","operationId":"pause_deployment","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/resume":{"post":{"summary":"","description":"","operationId":"resume_deployment","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/delete":{"delete":{"summary":"","description":"","operationId":"delete_deployment_record","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/snapshot":{"post":{"summary":"","description":"","operationId":"vm_snapshot_create_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotNameRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/snapshot/{snapshot_name}/restore":{"post":{"summary":"","description":"","operationId":"vm_snapshot_restore_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"snapshot_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/snapshot/{snapshot_name}":{"delete":{"summary":"","description":"","operationId":"vm_snapshot_delete_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"snapshot_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/snapshots":{"get":{"summary":"","description":"","operationId":"vm_snapshot_list_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/volumes/attach":{"post":{"summary":"","description":"","operationId":"attach_volume_runtime_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachVolumeRuntimeRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/volumes/detach":{"post":{"summary":"","description":"","operationId":"detach_volume_runtime_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":true}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/migration/start":{"post":{"summary":"","description":"","operationId":"start_migration_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MigrationStartRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/migration/cancel":{"post":{"summary":"","description":"","operationId":"cancel_migration_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/migration/status":{"get":{"summary":"","description":"","operationId":"query_migration_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/deployments/{job_id}/balloon":{"get":{"summary":"","description":"","operationId":"query_balloon_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"set_balloon_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"job_id","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalloonSetRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/security-groups":{"get":{"summary":"","description":"","operationId":"list_security_rules_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SecurityRule"}}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_security_rule_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecurityRuleRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_name}/security-groups/{rule_id}":{"delete":{"summary":"","description":"","operationId":"delete_security_rule_handler","parameters":[{"in":"path","name":"app_name","required":true,"schema":{"type":"string"},"style":"simple"},{"in":"path","name":"rule_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":true}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/networking/mesh":{"get":{"summary":"","description":"","operationId":"get_mesh_status_handler","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeshStatus"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/networking/mesh/stream":{"get":{"summary":"","description":"","operationId":"mesh_status_stream_handler","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/deployments/active":{"get":{"summary":"","description":"","operationId":"list_active_deployments","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LiveDeploymentInfo"}}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/deployments/events":{"get":{"summary":"","description":"","operationId":"watch_deployments","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Server-Sent Events stream","content":{"text/event-stream":{}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_id}/volumes":{"get":{"summary":"","description":"","operationId":"list_volumes_handler","parameters":[{"in":"path","name":"app_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AttachedVolume"}}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_id}/volumes/attach":{"post":{"summary":"","description":"","operationId":"attach_volume_handler","parameters":[{"in":"path","name":"app_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachVolumeRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/apps/{app_id}/volumes/{volume_id}/detach":{"delete":{"summary":"","description":"","operationId":"detach_volume_handler","parameters":[{"in":"path","name":"app_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"},{"in":"path","name":"volume_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/volumes":{"get":{"summary":"","description":"","operationId":"list_all_volumes_handler","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VolumeWithAttachments"}}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_volume_handler","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVolumeRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/volumes/{volume_id}/snapshots":{"get":{"summary":"","description":"","operationId":"list_snapshots_handler","parameters":[{"in":"path","name":"volume_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VolumeSnapshot"}}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_snapshot_handler","parameters":[{"in":"path","name":"volume_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSnapshotRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/volumes/{volume_id}/restore":{"post":{"summary":"","description":"","operationId":"restore_snapshot_handler","parameters":[{"in":"path","name":"volume_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestoreSnapshotRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/volumes/{volume_id}/clone":{"post":{"summary":"","description":"","operationId":"clone_volume_handler","parameters":[{"in":"path","name":"volume_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneVolumeRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/volumes/{volume_id}/usage":{"get":{"summary":"","description":"","operationId":"get_volume_usage_handler","parameters":[{"in":"path","name":"volume_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolumeUsageResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/volumes/{volume_id}":{"delete":{"summary":"","description":"","operationId":"delete_volume_handler","parameters":[{"in":"path","name":"volume_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/snapshots/{snapshot_id}":{"delete":{"summary":"","description":"","operationId":"delete_snapshot_handler","parameters":[{"in":"path","name":"snapshot_id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases":{"get":{"summary":"","description":"","operationId":"list_databases","responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DatabaseResponse"}}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_database","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatabaseRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases/{id}":{"delete":{"summary":"","description":"","operationId":"delete_database","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"null"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases/{id}/connection":{"get":{"summary":"","description":"","operationId":"get_database_connection","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseConnectionInfo"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases/{id}/branches":{"get":{"summary":"","description":"","operationId":"list_database_branches","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DatabaseBranchResponse"}}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases/{id}/backups":{"get":{"summary":"","description":"","operationId":"get_database_backups","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases/{id}/backups/snapshots":{"get":{"summary":"","description":"","operationId":"list_database_snapshots","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseSnapshotListResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]},"post":{"summary":"","description":"","operationId":"create_database_snapshot","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseSnapshotNameRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases/{id}/backups/restore":{"post":{"summary":"","description":"","operationId":"restore_database_snapshot","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseRestoreSnapshotRequest"}}},"required":true},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseSnapshotActionResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}},"/v1/databases/{id}/backups/snapshots/{snapshot_name}":{"delete":{"summary":"","description":"","operationId":"delete_database_snapshot","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"},"style":"simple"},{"in":"path","name":"snapshot_name","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseSnapshotActionResponse"}}}}},"security":[{"jwt":[]},{"pat":[]}]}}},"components":{"securitySchemes":{"jwt":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Session JWT issued by `POST /v1/auth/login` (or rotated through `POST /v1/auth/refresh`) using the Bearer scheme."},"pat":{"type":"http","scheme":"bearer","bearerFormat":"mikrom_pat_<secret>","description":"Personal Access Token created via `POST /v1/auth/tokens`. Send as `Authorization: Bearer mikrom_pat_...`; tokens can be scoped to scripts, CI pipelines and third-party integrations and revoked independently of the user password."}},"schemas":{"DeletionValidateRequest":{"type":"object","properties":{"tenants":{"type":"array","items":{"$ref":"#/components/schemas/ValidateRequestTenant"}}},"required":["tenants"]},"DeletionValidateResponse":{"type":"object","properties":{"tenants":{"type":"array","items":{"$ref":"#/components/schemas/ValidateResponseTenant"}}},"required":["tenants"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"status":{"type":"integer","format":"uint16","maximum":65535,"minimum":0}},"required":["error","status"]},"HealthResponse":{"type":"object","properties":{"services":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"version":{"type":"string"}},"required":["status","version","services"]},"ReAttachResponse":{"type":"object","properties":{"tenants":{"type":"array","items":{"$ref":"#/components/schemas/ReAttachResponseTenant"}}},"required":["tenants"]},"ReAttachResponseTenant":{"type":"object","properties":{"gen":{"type":"integer","format":"uint32","minimum":0},"id":{"type":"string"}},"required":["id","gen"]},"ValidateRequestTenant":{"type":"object","properties":{"gen":{"type":"integer","format":"uint32","minimum":0},"id":{"type":"string"}},"required":["id","gen"]},"ValidateResponseTenant":{"type":"object","properties":{"id":{"type":"string"},"valid":{"type":"boolean"}},"required":["id","valid"]},"AppResponse":{"type":"object","properties":{"active_deployment_id":{"type":["string","null"],"format":"uuid"},"autoscaling_enabled":{"type":"boolean"},"cpu_threshold":{"type":"number","format":"double"},"created_at":{"type":"string","format":"date-time"},"desired_replicas":{"type":"integer","format":"int32"},"drain_timeout":{"type":"integer","format":"int32"},"git_url":{"type":"string"},"github_installation_id":{"type":["integer","null"],"format":"int64"},"github_repo_full_name":{"type":["string","null"]},"github_repo_id":{"type":["integer","null"],"format":"int64"},"github_webhook_secret":{"type":["string","null"]},"health_check_path":{"type":"string"},"hostname":{"type":["string","null"]},"id":{"type":"string","format":"uuid"},"max_replicas":{"type":"integer","format":"int32"},"mem_threshold":{"type":"number","format":"double"},"min_replicas":{"type":"integer","format":"int32"},"name":{"type":"string"},"port":{"type":"integer","format":"uint32","minimum":0},"scale_state":{"$ref":"#/components/schemas/AppScaleState"}},"required":["id","name","git_url","port","health_check_path","drain_timeout","desired_replicas","min_replicas","max_replicas","autoscaling_enabled","cpu_threshold","mem_threshold","scale_state","created_at"]},"AppScaleState":{"type":"string","enum":["active","idle","scaled_to_zero","warming_up"]},"AppSecretResponse":{"type":"object","properties":{"github_webhook_secret":{"type":["string","null"]}}},"AttachVolumeRequest":{"type":"object","properties":{"access_mode":{"type":"integer","format":"int32","default":0},"mount_point":{"type":"string","default":"/data"},"volume_id":{"type":"string","format":"uuid"}},"required":["volume_id"]},"AttachVolumeRuntimeRequest":{"type":"object","properties":{"mount_point":{"type":"string"},"read_only":{"type":"boolean","default":false},"volume_id":{"type":"string"}},"required":["volume_id","mount_point"]},"AttachedVolume":{"type":"object","properties":{"access_mode":{"type":"integer","format":"int32"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"mount_point":{"type":"string"},"name":{"type":"string"},"pool_name":{"type":"string","default":""},"size_mib":{"type":"integer","format":"int32"},"tenant_id":{"type":"string","format":"uuid"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","tenant_id","name","size_mib","created_at","updated_at","mount_point","access_mode"]},"AuditLog":{"type":"object","properties":{"action":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"details":true,"id":{"type":"string","format":"uuid"},"ip_address":{"type":["string","null"]},"resource_id":{"type":["string","null"]},"resource_type":{"type":"string"},"user_id":{"type":"string","format":"uuid"}},"required":["id","user_id","action","resource_type","details","created_at"]},"AuditLogFilter":{"type":"object","properties":{"action":{"type":["string","null"]},"limit":{"type":["integer","null"],"format":"int64"},"offset":{"type":["integer","null"],"format":"int64"},"resource_type":{"type":["string","null"]}}},"AuditLogListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AuditLog"}},"total":{"type":"integer","format":"int64"}},"required":["items","total"]},"AuthResponse":{"type":"object","properties":{"refresh_token":{"type":["string","null"]},"requires_2fa":{"type":"boolean"},"token":{"type":["string","null"]},"user":{"$ref":"#/components/schemas/UserResponse"}},"required":["user","requires_2fa"]},"BalloonSetRequest":{"type":"object","properties":{"target_memory_mib":{"type":"integer","format":"uint32","minimum":0}},"required":["target_memory_mib"]},"BillingProduct":{"type":"object","properties":{"description":{"type":["string","null"]},"currency":{"type":["string","null"]},"id":{"type":"string"},"is_archived":{"type":"boolean"},"is_default_checkout_product":{"type":"boolean"},"name":{"type":"string"},"price_amount_cents":{"type":["integer","null"],"format":"int32"},"recurring_interval":{"type":["string","null"]}},"required":["id","name","is_archived","is_default_checkout_product"]},"BillingProductListResponse":{"type":"object","properties":{"default_checkout_product_id":{"type":["string","null"]},"last_synced_at":{"type":["string","null"],"format":"date-time"},"products":{"type":"array","items":{"$ref":"#/components/schemas/BillingProduct"}}},"required":["products"]},"BillingSummary":{"type":"object","properties":{"amount_cents":{"type":["integer","null"],"format":"int32"},"cancel_at_period_end":{"type":"boolean"},"currency":{"type":["string","null"]},"current_period_end":{"type":["string","null"],"format":"date-time"},"current_period_start":{"type":["string","null"],"format":"date-time"},"customer_external_id":{"type":"string"},"default_checkout_product_id":{"type":["string","null"]},"has_billing_record":{"type":"boolean"},"is_test_mode":{"type":"boolean"},"plan_limits":{"anyOf":[{"$ref":"#/components/schemas/PlanLimits"},{"type":"null"}]},"plan_name":{"type":["string","null"]},"polar_customer_id":{"type":["string","null"]},"polar_product_id":{"type":["string","null"]},"polar_subscription_id":{"type":["string","null"]},"selected_checkout_product_id":{"type":["string","null"]},"status":{"type":"string"},"tenant_id":{"type":"string"},"tier_slug":{"type":["string","null"]}},"required":["tenant_id","customer_external_id","status","cancel_at_period_end","is_test_mode","has_billing_record"]},"CaptchaResponse":{"type":"object","properties":{"captcha_id":{"type":"string"},"captcha_image":{"type":"string"}},"required":["captcha_id","captcha_image"]},"ChangePasswordRequest":{"type":"object","properties":{"current_password":{"type":"string"},"new_password":{"type":"string"}},"required":["current_password","new_password"]},"CheckoutProductPreferenceRequest":{"type":"object","properties":{"product_id":{"type":["string","null"]}}},"CheckoutRequest":{"type":"object","properties":{"product_id":{"type":["string","null"]}}},"CloneVolumeRequest":{"type":"object","properties":{"name":{"type":"string"},"snapshot_name":{"type":"string"}},"required":["name","snapshot_name"]},"CreateAppRequest":{"type":"object","properties":{"autoscaling_enabled":{"type":["boolean","null"]},"desired_replicas":{"type":["integer","null"],"format":"int32"},"drain_timeout":{"type":["integer","null"],"format":"int32"},"git_url":{"type":"string"},"github_installation_id":{"type":["integer","null"],"format":"int64"},"github_repo_full_name":{"type":["string","null"]},"github_repo_id":{"type":["integer","null"],"format":"int64"},"health_check_path":{"type":["string","null"]},"max_replicas":{"type":["integer","null"],"format":"int32"},"min_replicas":{"type":["integer","null"],"format":"int32"},"name":{"type":"string"},"port":{"type":["integer","null"],"format":"uint32","minimum":0}},"required":["name","git_url"]},"CreateDatabaseRequest":{"type":"object","properties":{"disk_mib":{"type":["integer","null"],"format":"uint32","minimum":0},"engine":{"type":"string"},"memory_mib":{"type":["integer","null"],"format":"uint32","minimum":0},"name":{"type":"string"},"postgres_version":{"type":["integer","null"],"format":"uint16","maximum":65535,"minimum":0},"settings":{"type":["object","null"],"additionalProperties":{"type":"string"}},"vcpus":{"type":["integer","null"],"format":"uint32","minimum":0}},"required":["name","engine"]},"CreateProjectRequest":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"CreateSecurityRuleRequest":{"type":"object","properties":{"action":{"type":"string"},"port_end":{"type":"integer","format":"uint32","minimum":0},"port_start":{"type":"integer","format":"uint32","minimum":0},"protocol":{"type":"string"}},"required":["protocol","port_start","port_end","action"]},"CreateSnapshotRequest":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"CreateTokenRequest":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"CreateVolumeRequest":{"type":"object","properties":{"name":{"type":"string"},"size_mib":{"type":"integer","format":"int32"}},"required":["name","size_mib"]},"DatabaseBackupResponse":{"type":"object","properties":{"backup_strategy":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"database_id":{"type":"string","format":"uuid"},"database_name":{"type":"string"},"neon_tenant_id":{"type":["string","null"]},"neon_timeline_id":{"type":["string","null"]},"recovery_mode":{"type":"string"},"retention_valid":{"type":"boolean"},"status":{"type":"string"},"tenant_gen":{"type":["integer","null"],"format":"uint32","minimum":0},"updated_at":{"type":"string","format":"date-time"}},"required":["database_id","database_name","backup_strategy","recovery_mode","retention_valid","status","created_at","updated_at"]},"DatabaseBranchResponse":{"type":"object","properties":{"branch_name":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"database_id":{"type":"string","format":"uuid"},"database_name":{"type":"string"},"is_current":{"type":"boolean"},"neon_tenant_id":{"type":["string","null"]},"neon_timeline_id":{"type":["string","null"]},"status":{"type":"string"},"tenant_gen":{"type":["integer","null"],"format":"uint32","minimum":0},"updated_at":{"type":"string","format":"date-time"}},"required":["database_id","database_name","branch_name","status","is_current","created_at","updated_at"]},"DatabaseConnectionInfo":{"type":"object","properties":{"database_host":{"type":"string"},"database_id":{"type":"string","format":"uuid"},"database_name":{"type":"string"},"database_port":{"type":"integer","format":"uint16","maximum":65535,"minimum":0},"database_user":{"type":"string"},"psql_command":{"type":"string"},"ssh_host":{"type":"string"},"ssh_port":{"type":"integer","format":"uint16","maximum":65535,"minimum":0},"ssh_tunnel_command":{"type":"string"},"ssh_user":{"type":"string"}},"required":["database_id","database_name","database_user","database_host","database_port","ssh_host","ssh_user","ssh_port","ssh_tunnel_command","psql_command"]},"DatabaseResponse":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"disk_mib":{"type":"integer","format":"uint32","minimum":0},"engine":{"type":"string"},"id":{"type":"string","format":"uuid"},"memory_mib":{"type":"integer","format":"uint32","minimum":0},"name":{"type":"string"},"neon_tenant_id":{"type":["string","null"]},"neon_timeline_id":{"type":["string","null"]},"postgres_version":{"type":"integer","format":"uint16","maximum":65535,"minimum":0},"status":{"type":"string"},"tenant_gen":{"type":["integer","null"],"format":"uint32","minimum":0},"updated_at":{"type":"string","format":"date-time"},"vcpus":{"type":"integer","format":"uint32","minimum":0}},"required":["id","name","engine","postgres_version","status","vcpus","memory_mib","disk_mib","created_at","updated_at"]},"DatabaseRestoreSnapshotRequest":{"type":"object","properties":{"snapshot_name":{"type":"string"}},"required":["snapshot_name"]},"DatabaseSnapshotActionResponse":{"type":"object","properties":{"message":{"type":"string"},"success":{"type":"boolean"}},"required":["success","message"]},"DatabaseSnapshotListResponse":{"type":"object","properties":{"message":{"type":"string"},"snapshots":{"type":"array","items":{"$ref":"#/components/schemas/VmSnapshot"}},"success":{"type":"boolean"}},"required":["success","message","snapshots"]},"DatabaseSnapshotNameRequest":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"DeployRequestPayload":{"type":"object","properties":{"app_name":{"type":"string"},"disk_mib":{"type":["integer","null"],"format":"uint32","minimum":0},"git_url":{"type":["string","null"]},"hypervisor":{"type":["string","null"]},"image":{"type":"string"},"memory_mib":{"type":["integer","null"],"format":"uint32","minimum":0},"port":{"type":["integer","null"],"format":"uint32","minimum":0},"vcpus":{"type":["integer","null"],"format":"uint32","minimum":0}},"required":["app_name","image"]},"DeployResponseBody":{"type":"object","properties":{"deployment_id":{"type":["string","null"]},"host_id":{"type":["string","null"]},"image_tag":{"type":["string","null"]},"job_id":{"type":["string","null"]},"message":{"type":"string"},"status":{"type":"string"},"vm_id":{"type":["string","null"]}},"required":["status","message"]},"Deployment":{"type":"object","properties":{"app_id":{"type":"string","format":"uuid"},"build_id":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"disk_mib":{"type":"integer","format":"int64"},"git_branch":{"type":["string","null"]},"git_commit_hash":{"type":["string","null"]},"git_commit_message":{"type":["string","null"]},"hypervisor":{"type":"integer","format":"int32"},"id":{"type":"string","format":"uuid"},"image_tag":{"type":["string","null"]},"ipv6_address":{"type":["string","null"]},"job_id":{"type":["string","null"]},"memory_mib":{"type":"integer","format":"uint32","minimum":0},"port":{"type":"integer","format":"uint32","minimum":0},"status":{"type":"string"},"tenant_id":{"type":"string","format":"uuid"},"trigger_source":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"vcpus":{"type":"integer","format":"uint32","minimum":0}},"required":["id","app_id","tenant_id","status","vcpus","memory_mib","disk_mib","port","trigger_source","created_at","updated_at","hypervisor"]},"GithubRepo":{"type":"object","properties":{"description":{"type":["string","null"]},"full_name":{"type":"string"},"html_url":{"type":"string"},"id":{"type":"integer","format":"int64"},"installation_id":{"type":["integer","null"],"format":"int64"},"name":{"type":"string"},"private":{"type":"boolean"}},"required":["id","name","full_name","private","html_url"]},"InstallCallbackQuery":{"type":"object","properties":{"installation_id":{"type":"integer","format":"int64"},"setup_action":{"type":"string"},"state":{"type":["string","null"]}},"required":["installation_id","setup_action"]},"LiveDeploymentInfo":{"type":"object","properties":{"app_id":{"type":"string"},"app_name":{"type":"string"},"cpu_usage":{"type":"number","format":"float"},"deployment_id":{"type":"string"},"host_id":{"type":"string"},"hypervisor":{"type":["string","null"]},"image":{"type":"string"},"ipv6_address":{"type":["string","null"]},"job_id":{"type":"string"},"memory_mib":{"type":"integer","format":"int64"},"ram_used_bytes":{"type":"integer","format":"uint64","minimum":0},"rx_bytes":{"type":"integer","format":"uint64","minimum":0},"scale_state":{"$ref":"#/components/schemas/AppScaleState"},"status":{"type":"string"},"tx_bytes":{"type":"integer","format":"uint64","minimum":0},"vcpus":{"type":"integer","format":"int32"},"vm_id":{"type":"string"}},"required":["job_id","deployment_id","app_id","app_name","image","status","host_id","vm_id","cpu_usage","ram_used_bytes","tx_bytes","rx_bytes","vcpus","memory_mib","scale_state"]},"LiveDeploymentStatus":{"type":"object","properties":{"app_id":{"type":"string"},"app_name":{"type":"string"},"cpu_usage":{"type":"number","format":"float"},"deployment_id":{"type":"string"},"error_message":{"type":"string"},"host_id":{"type":"string"},"hypervisor":{"type":["string","null"]},"image":{"type":"string"},"ipv6_address":{"type":["string","null"]},"job_id":{"type":"string"},"memory_mib":{"type":"integer","format":"int64"},"ram_used_bytes":{"type":"integer","format":"uint64","minimum":0},"rx_bytes":{"type":"integer","format":"uint64","minimum":0},"scale_state":{"$ref":"#/components/schemas/AppScaleState"},"scheduled_at":{"type":"integer","format":"int64"},"started_at":{"type":"integer","format":"int64"},"status":{"type":"string"},"stopped_at":{"type":"integer","format":"int64"},"tx_bytes":{"type":"integer","format":"uint64","minimum":0},"vcpus":{"type":"integer","format":"int32"},"vm_id":{"type":"string"}},"required":["job_id","deployment_id","app_id","app_name","image","status","host_id","vm_id","scheduled_at","started_at","stopped_at","error_message","cpu_usage","ram_used_bytes","tx_bytes","rx_bytes","vcpus","memory_mib","scale_state"]},"LoginRequest":{"type":"object","properties":{"code":{"type":["string","null"]},"email":{"type":"string"},"password":{"type":"string"}},"required":["email","password"]},"ManualDeployRequest":{"type":"object","properties":{"disk_mib":{"type":["integer","null"],"format":"uint32","minimum":0},"hypervisor":{"description":"Hypervisor to use: \"firecracker\" or \"cloud-hypervisor\". Defaults to scheduler-selected.","type":["string","null"]},"image":{"type":["string","null"]},"memory_mib":{"description":"Memory to allocate in MiB. Allowed values: 512, 1024, 2048, or 4096.","type":["integer","null"],"format":"uint32","minimum":0},"port":{"type":["integer","null"],"format":"uint32","minimum":0},"vcpus":{"description":"CPU cores to allocate. Allowed values: 1, 2, 3, or 4.","type":["integer","null"],"format":"uint32","minimum":0}}},"MeshStatus":{"type":"object","properties":{"total_workers":{"type":"integer","format":"uint","minimum":0},"workers":{"type":"array","items":{"$ref":"#/components/schemas/Worker"}}},"required":["workers","total_workers"]},"MigrationStartRequest":{"type":"object","properties":{"target_host":{"type":"string"},"target_uri":{"type":"string"}},"required":["target_host","target_uri"]},"Notification":{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"entity_name":{"type":["string","null"]},"id":{"type":"string","format":"uuid"},"is_read":{"type":"boolean"},"kind":{"type":"string"},"metadata":true,"read_at":{"type":["string","null"],"format":"date-time"},"resource_id":{"type":["string","null"]},"route":{"type":"string"},"tenant_id":{"type":["string","null"],"format":"uuid"},"user_id":{"type":"string","format":"uuid"}},"required":["id","user_id","kind","title","body","route","metadata","created_at","is_read"]},"NotificationListResponse":{"type":"object","properties":{"has_more":{"type":"boolean"},"next_offset":{"type":"integer","format":"int64"},"notifications":{"type":"array","items":{"$ref":"#/components/schemas/Notification"}},"unread_count":{"type":"integer","format":"int64"}},"required":["notifications","unread_count","has_more","next_offset"]},"NotificationQuery":{"type":"object","properties":{"limit":{"type":["integer","null"],"format":"int64"},"offset":{"type":["integer","null"],"format":"int64"},"unread_only":{"type":["boolean","null"]}}},"PersonalAccessToken":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"last_used_at":{"type":["string","null"],"format":"date-time"},"name":{"type":"string"},"token_last_four":{"type":"string"},"user_id":{"type":"string","format":"uuid"}},"required":["id","user_id","name","token_last_four","created_at"]},"PlanLimits":{"type":"object","properties":{"autoscaling_allowed":{"type":"boolean"},"custom_domains":{"type":"boolean"},"max_apps":{"type":"integer","format":"int32"},"max_databases":{"type":"integer","format":"int32"},"max_deployments_per_app":{"type":"integer","format":"int32"},"max_memory_mb_total":{"type":"integer","format":"int32"},"max_storage_gb_total":{"type":"integer","format":"int32"},"max_team_members":{"type":"integer","format":"int32"},"max_vcpus_total":{"type":"integer","format":"int32"},"max_volumes":{"type":"integer","format":"int32"}},"required":["max_apps","max_databases","max_volumes","max_vcpus_total","max_memory_mb_total","max_storage_gb_total","max_deployments_per_app","max_team_members","autoscaling_allowed","custom_domains"]},"RedirectResponse":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"RefreshTokenRequest":{"type":"object","properties":{"refresh_token":{"type":"string"}},"required":["refresh_token"]},"RefreshTokenResponse":{"type":"object","properties":{"refresh_token":{"type":"string"},"token":{"type":"string"}},"required":["token","refresh_token"]},"RegisterRequest":{"type":"object","properties":{"captcha_answer":{"type":"string"},"captcha_id":{"type":"string"},"email":{"type":"string"},"first_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"password":{"type":"string"}},"required":["email","password","captcha_id","captcha_answer"]},"RestoreSnapshotRequest":{"type":"object","properties":{"snapshot_name":{"type":"string"}},"required":["snapshot_name"]},"ScaleAppRequest":{"type":"object","properties":{"autoscaling_enabled":{"type":["boolean","null"]},"cpu_threshold":{"type":["number","null"],"format":"double"},"desired_replicas":{"type":["integer","null"],"format":"int32"},"max_replicas":{"type":["integer","null"],"format":"int32"},"mem_threshold":{"type":["number","null"],"format":"double"},"min_replicas":{"type":["integer","null"],"format":"int32"}}},"SecurityRule":{"type":"object","properties":{"action":{"type":"string"},"app_id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"port_end":{"type":"integer","format":"uint32","minimum":0},"port_start":{"type":"integer","format":"uint32","minimum":0},"priority":{"type":"integer","format":"int32"},"protocol":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","app_id","protocol","port_start","port_end","action","priority","created_at","updated_at"]},"SnapshotNameRequest":{"type":"object","properties":{"snapshot_name":{"type":"string"}},"required":["snapshot_name"]},"Tenant":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"tenant_id":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","tenant_id","name","created_at","updated_at"]},"TotpSetupResponse":{"type":"object","properties":{"otpauth_url":{"type":"string"},"secret":{"type":"string"}},"required":["secret","otpauth_url"]},"UpdateAppRequest":{"type":"object","properties":{"port":{"type":"integer","format":"uint32","minimum":0}},"required":["port"]},"UpdateProfileRequest":{"type":"object","properties":{"email_notifications":{"type":["boolean","null"]},"first_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"marketing_emails":{"type":["boolean","null"]}}},"UpdateProjectRequest":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]},"UserGithubAccount":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"github_username":{"type":"string"},"id":{"type":"string","format":"uuid"},"installation_id":{"type":"integer","format":"int64"},"user_id":{"type":"string","format":"uuid"}},"required":["id","user_id","installation_id","github_username","created_at"]},"UserResponse":{"type":"object","properties":{"avatar_url":{"type":["string","null"]},"email":{"type":"string"},"email_notifications":{"type":"boolean"},"first_name":{"type":["string","null"]},"id":{"type":"string"},"last_name":{"type":["string","null"]},"marketing_emails":{"type":"boolean"},"role":{"$ref":"#/components/schemas/UserRole"},"totp_enabled":{"type":"boolean"},"vpc_ipv6_prefix":{"type":["string","null"]}},"required":["id","email","role","totp_enabled","email_notifications","marketing_emails"]},"UserRole":{"type":"string","enum":["Admin","User"]},"VerifyTotpRequest":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]},"VmSnapshot":{"type":"object","properties":{"created_at":{"type":"integer","format":"int64"},"id":{"type":"string"},"name":{"type":"string"},"size_bytes":{"type":"integer","format":"uint64","minimum":0},"vm_status":{"type":"string"}},"required":["id","name","created_at","size_bytes","vm_status"]},"VolumeAttachmentInfo":{"type":"object","properties":{"access_mode":{"type":"integer","format":"int32"},"app_id":{"type":"string","format":"uuid"},"app_name":{"type":"string"},"mount_point":{"type":"string"}},"required":["app_id","app_name","mount_point","access_mode"]},"VolumeSnapshot":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"tenant_id":{"type":"string","format":"uuid"},"volume_id":{"type":"string","format":"uuid"}},"required":["id","volume_id","tenant_id","name","created_at"]},"VolumeUsageResponse":{"type":"object","properties":{"provisioned_bytes":{"type":"integer","format":"uint64","minimum":0},"used_bytes":{"type":"integer","format":"uint64","minimum":0}},"required":["provisioned_bytes","used_bytes"]},"VolumeWithAttachments":{"type":"object","properties":{"attachments":{"type":"array","items":{"$ref":"#/components/schemas/VolumeAttachmentInfo"}},"created_at":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"pool_name":{"type":"string","default":""},"size_mib":{"type":"integer","format":"int32"},"tenant_id":{"type":"string","format":"uuid"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","tenant_id","name","size_mib","created_at","updated_at","attachments"]},"Worker":{"type":"object","properties":{"created_at":{"type":"string","format":"date-time"},"hostname":{"type":"string"},"id":{"type":"string"},"last_seen_at":{"type":"string","format":"date-time"},"wireguard_pubkey":{"type":"string"}},"required":["id","hostname","wireguard_pubkey","last_seen_at","created_at"]}}}}