{"openapi":"3.1.0","info":{"title":"Webyne Deploy API","description":"Build anywhere. Deploy on Webyne. (REST API v1 — spec §8)","version":"1.0.0"},"paths":{"/health":{"get":{"tags":["meta"],"summary":"Health","description":"Health check (spec §22: deployments must return a working URL that is health-checked).","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/db":{"get":{"tags":["meta"],"summary":"Health Db","description":"Database readiness probe.","operationId":"health_db_health_db_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api":{"get":{"tags":["meta"],"summary":"Api Info","operationId":"api_info_api_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/signup":{"post":{"tags":["auth"],"summary":"Signup","operationId":"signup_v1_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_v1_auth_logout_post","responses":{"204":{"description":"Successful Response"}}}},"/v1/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}}}}},"/v1/auth/providers":{"get":{"tags":["auth"],"summary":"Providers","operationId":"providers_v1_auth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/oauth/{provider}/start":{"get":{"tags":["auth"],"summary":"Oauth Start","operationId":"oauth_start_v1_auth_oauth__provider__start_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"next","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/oauth/{provider}/callback":{"get":{"tags":["auth"],"summary":"Oauth Callback","operationId":"oauth_callback_v1_auth_oauth__provider__callback_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys":{"get":{"tags":["api-keys"],"summary":"List Keys","operationId":"list_keys_v1_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ApiKeyOut"},"type":"array","title":"Response List Keys V1 Api Keys Get"}}}}}},"post":{"tags":["api-keys"],"summary":"Create Key","operationId":"create_key_v1_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys/{key_id}":{"delete":{"tags":["api-keys"],"summary":"Revoke Key","operationId":"revoke_key_v1_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plans":{"get":{"tags":["plans"],"summary":"List Plans","operationId":"list_plans_v1_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Plan"},"type":"array","title":"Response List Plans V1 Plans Get"}}}}}}},"/v1/projects":{"post":{"tags":["projects"],"summary":"Create Project","description":"Create a project in the caller's organization.","operationId":"create_project_v1_projects_post","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["projects"],"summary":"List Projects","operationId":"list_projects_v1_projects_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Project"},"title":"Response List Projects V1 Projects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}":{"get":{"tags":["projects"],"summary":"Get Project","operationId":"get_project_v1_projects__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}/analyze":{"post":{"tags":["projects"],"summary":"Analyze Project","description":"Deterministic stack detection (spec §6).\n\nMVP scaffold returns a Node.js plan. The real analyzer inspects package.json /\nrequirements.txt / composer.json / Dockerfile and rejects unsafe assumptions\nrather than guessing.","operationId":"analyze_project_v1_projects__project_id__analyze_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}/builds":{"post":{"tags":["builds"],"summary":"Create Build","description":"Queue an isolated BuildKit build (spec §12: ephemeral worker, no socket/creds).","operationId":"create_build_v1_projects__project_id__builds_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuildRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Build"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/builds/{build_id}":{"get":{"tags":["builds"],"summary":"Get Build","description":"Return build state. Scaffold reports a succeeded build with a sample digest.","operationId":"get_build_v1_builds__build_id__get","parameters":[{"name":"build_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Build Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Build"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}/deployments":{"post":{"tags":["deployments"],"summary":"Create Deployment","description":"Deploy a build.\n\nCharge-incurring operation: the request must carry `authorized=true`, set only\nafter the user explicitly approves the plan and recurring cost (spec §7/§16).\nAI agents cannot silently upgrade paid resources.","operationId":"create_deployment_v1_projects__project_id__deployments_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/deployments/{deployment_id}":{"get":{"tags":["deployments"],"summary":"Get Deployment","description":"Return current state + live URL once ACTIVE (spec §11 terminal state).","operationId":"get_deployment_v1_deployments__deployment_id__get","parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/deployments/{deployment_id}/rollback":{"post":{"tags":["deployments"],"summary":"Rollback","description":"Route traffic back to the last healthy release (spec §17).\n\nNote: rollback never auto-reverses database migrations.","operationId":"rollback_v1_deployments__deployment_id__rollback_post","parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}/logs":{"get":{"tags":["logs"],"summary":"Get Logs","description":"Return tenant-scoped logs. Real implementation streams from Loki and\nredacts secrets before returning (spec §12/§22).","operationId":"get_logs_v1_projects__project_id__logs_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"stream","in":"query","required":false,"schema":{"type":"string","pattern":"^(app|build)$","default":"app","title":"Stream"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}/env/{key}":{"put":{"tags":["env"],"summary":"Set Env","description":"Store an encrypted variable.\n\nThe value is encrypted at rest via Vault/KMS and only an encrypted_reference is\npersisted (spec §13). Plaintext is never returned after write. This endpoint\nacknowledges the write and bumps the version; it does not echo the value.","operationId":"set_env_v1_projects__project_id__env__key__put","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvSet"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvAck"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}/databases":{"post":{"tags":["databases"],"summary":"Add Database","description":"Provision PostgreSQL (MVP) / MySQL / Redis.\n\nPrivate-network access by default; credentials injected via secret references,\nautomated backups (spec §14).","operationId":"add_database_v1_projects__project_id__databases_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Database"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/projects/{project_id}/domains":{"post":{"tags":["domains"],"summary":"Add Domain","description":"Attach a custom domain.\n\nFlow: add -> verify DNS ownership -> issue ACME certificate -> activate (spec §13).\nReturns pending state; verification completes asynchronously.","operationId":"add_domain_v1_projects__project_id__domains_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Domain"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage":{"get":{"tags":["usage"],"summary":"Get Usage","description":"Return metered usage. Production aggregates immutable usage_records (spec §16).","operationId":"get_usage_v1_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UsageRecord"},"type":"array","title":"Response Get Usage V1 Usage Get"}}}}}}}},"components":{"schemas":{"AnalyzeRequest":{"properties":{"repo_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo Ref"},"commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commit Sha"}},"type":"object","title":"AnalyzeRequest"},"AnalyzeResult":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"runtime":{"type":"string","title":"Runtime"},"build_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Build Command"},"start_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Command"},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port"},"database":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Database"},"webyne_yaml":{"type":"string","title":"Webyne Yaml"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","default":[]}},"type":"object","required":["project_id","runtime","build_command","start_command","port","database","webyne_yaml"],"title":"AnalyzeResult"},"ApiKeyCreate":{"properties":{"name":{"type":"string","maxLength":60,"minLength":1,"title":"Name"},"expires_in_days":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Expires In Days","default":90}},"type":"object","required":["name"],"title":"ApiKeyCreate"},"ApiKeyCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"prefix":{"type":"string","title":"Prefix"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"can_revoke":{"type":"boolean","title":"Can Revoke"},"key":{"type":"string","title":"Key"}},"type":"object","required":["id","name","prefix","created_by","created_at","expires_at","last_used_at","revoked_at","can_revoke","key"],"title":"ApiKeyCreated"},"ApiKeyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"prefix":{"type":"string","title":"Prefix"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"can_revoke":{"type":"boolean","title":"Can Revoke"}},"type":"object","required":["id","name","prefix","created_by","created_at","expires_at","last_used_at","revoked_at","can_revoke"],"title":"ApiKeyOut"},"Build":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"status":{"type":"string","title":"Status","default":"queued"},"image_digest":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Digest"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["project_id"],"title":"Build"},"BuildRequest":{"properties":{"source_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Id"}},"type":"object","title":"BuildRequest"},"Database":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"engine":{"type":"string","title":"Engine"},"plan":{"type":"string","title":"Plan"},"state":{"type":"string","title":"State","default":"provisioning"}},"type":"object","required":["project_id","engine","plan"],"title":"Database"},"DatabaseCreate":{"properties":{"engine":{"type":"string","title":"Engine","default":"postgresql"},"plan":{"type":"string","title":"Plan","default":"starter"}},"type":"object","title":"DatabaseCreate"},"Deployment":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"environment_id":{"type":"string","format":"uuid","title":"Environment Id"},"build_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Build Id"},"state":{"$ref":"#/components/schemas/DeploymentState","default":"requested"},"release_no":{"type":"integer","title":"Release No","default":1},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["environment_id"],"title":"Deployment"},"DeploymentRequest":{"properties":{"build_id":{"type":"string","format":"uuid","title":"Build Id"},"authorized":{"type":"boolean","title":"Authorized","description":"User explicitly approved the plan & cost","default":false}},"type":"object","required":["build_id"],"title":"DeploymentRequest"},"DeploymentState":{"type":"string","enum":["requested","analyzing","awaiting_confirmation","queued","building","scanning","provisioning","starting","health_check","active"],"title":"DeploymentState"},"Domain":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"hostname":{"type":"string","title":"Hostname"},"verification_state":{"type":"string","title":"Verification State","default":"pending"},"tls_state":{"type":"string","title":"Tls State","default":"none"}},"type":"object","required":["project_id","hostname"],"title":"Domain"},"DomainCreate":{"properties":{"hostname":{"type":"string","title":"Hostname"}},"type":"object","required":["hostname"],"title":"DomainCreate"},"EnvAck":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"key":{"type":"string","title":"Key"},"version":{"type":"integer","title":"Version"},"stored":{"type":"boolean","title":"Stored","default":true}},"type":"object","required":["project_id","key","version"],"title":"EnvAck"},"EnvSet":{"properties":{"value":{"type":"string","title":"Value","description":"Encrypted at rest; never returned after write (§13)"}},"type":"object","required":["value"],"title":"EnvSet"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LoginIn":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"},"password":{"type":"string","maxLength":200,"title":"Password"}},"type":"object","required":["email","password"],"title":"LoginIn"},"MeOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"org_id":{"type":"string","format":"uuid","title":"Org Id"},"org_name":{"type":"string","title":"Org Name"},"role":{"type":"string","title":"Role"}},"type":"object","required":["id","email","name","org_id","org_name","role"],"title":"MeOut"},"Plan":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"price_inr_month":{"type":"integer","title":"Price Inr Month"},"vcpu":{"type":"integer","title":"Vcpu"},"ram_gb":{"type":"integer","title":"Ram Gb"},"disk_gb":{"type":"integer","title":"Disk Gb"},"region":{"type":"string","title":"Region","default":"webyne-in-1"}},"type":"object","required":["id","name","price_inr_month","vcpu","ram_gb","disk_gb"],"title":"Plan"},"Project":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"region":{"type":"string","title":"Region"},"status":{"type":"string","title":"Status","default":"active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","slug","region"],"title":"Project"},"ProjectCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"region":{"type":"string","title":"Region","default":"webyne-in-1"},"org_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Org Id"}},"type":"object","required":["name"],"title":"ProjectCreate"},"SignupIn":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"email":{"type":"string","maxLength":254,"title":"Email"},"password":{"type":"string","maxLength":200,"minLength":10,"title":"Password"},"org_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Org Name"}},"type":"object","required":["name","email","password"],"title":"SignupIn"},"UsageRecord":{"properties":{"resource_type":{"type":"string","title":"Resource Type"},"quantity":{"type":"number","title":"Quantity"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"}},"type":"object","required":["resource_type","quantity","period_start","period_end"],"title":"UsageRecord"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}