{"openapi":"3.1.0","info":{"title":"Anything API","version":"0.1.0","description":"The Anything API is the fastest way for agents to build and launch mobile and web apps."},"servers":[{"url":"/"}],"components":{"securitySchemes":{"basicAuth":{"type":"http","scheme":"basic","description":"Use your Anything API key as the Basic auth username and leave the password empty. Example credentials: anything_xxx:"}},"schemas":{},"parameters":{}},"paths":{"/v0/api/me":{"get":{"summary":"Get current user info","description":"Returns the authenticated user and their organizations, including plan and credit context.","tags":["User"],"security":[{"basicAuth":[]}],"responses":{"200":{"description":"Current user context","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":["string","null"]},"name":{"type":["string","null"]},"organizations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"plan":{"type":"string"},"planDisplayName":{"type":"string"},"isPaid":{"type":"boolean"},"creditsBalance":{"type":"integer"}},"required":["id","name","plan","planDisplayName","isPaid","creditsBalance"]}}},"required":["id","email","name","organizations"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/organizations/{organizationId}/members":{"get":{"summary":"List organization members","description":"Returns collaborators and pending invites for an organization the authenticated user can access.","tags":["Organizations"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"organizationId","in":"path"}],"responses":{"200":{"description":"Organization members","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"role":{"type":["string","null"]}},"required":["id","name","role"]},"collaborators":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"email":{"type":["string","null"]},"displayName":{"type":"string"},"role":{"type":"string"},"isMe":{"type":"boolean"}},"required":["userId","email","displayName","role","isMe"]}},"pendingInvites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"toEmail":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["pending","expired"]}},"required":["id","toEmail","expiresAt","status"]}}},"required":["organization","collaborators","pendingInvites"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects":{"get":{"summary":"List accessible projects","description":"Returns project groups the authenticated user can access, optionally filtered by organization or search query.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"organizationId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"query","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Projects list","content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":["string","null"]},"organizationId":{"type":"string","format":"uuid"},"organizationName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","slug","organizationId","organizationName","createdAt","updatedAt"]}}},"required":["projects"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"post":{"summary":"Create a new project","description":"Creates a new project and starts initial generation from a prompt.","tags":["Projects"],"security":[{"basicAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"prompt":{"type":"string","minLength":1},"organizationId":{"type":"string","format":"uuid"}},"required":["prompt","organizationId"]}}}},"responses":{"201":{"description":"Project created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"projectGroupId":{"type":"string","format":"uuid"},"revisionId":{"type":"string","format":"uuid"}},"required":["projectGroupId","revisionId"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Failed to start generation","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/databases":{"get":{"summary":"List accessible databases","description":"Returns databases in an organization that the authenticated user can access.","tags":["Databases"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"organizationId","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Databases list","content":{"application/json":{"schema":{"type":"object","properties":{"databases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","enum":["CREATING","COMPLETED","FAILED"]},"organizationId":{"type":"string","format":"uuid"},"organizationName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pointInTimeRestoreEnabled":{"type":"boolean"}},"required":["id","name","status","organizationId","organizationName","createdAt","updatedAt","pointInTimeRestoreEnabled"]}}},"required":["databases"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"post":{"summary":"Create a database","description":"Creates a new user database. The database is provisioned asynchronously — poll GET /databases/{databaseId} until the status leaves CREATING.","tags":["Databases"],"security":[{"basicAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid"},"projectGroupId":{"type":["string","null"],"format":"uuid"},"name":{"type":["string","null"]}},"required":["organizationId"]}}}},"responses":{"201":{"description":"Database creation started","content":{"application/json":{"schema":{"type":"object","properties":{"database":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","enum":["CREATING","COMPLETED","FAILED"]},"organizationId":{"type":"string","format":"uuid"},"organizationName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pointInTimeRestoreEnabled":{"type":"boolean"}},"required":["id","name","status","organizationId","organizationName","createdAt","updatedAt","pointInTimeRestoreEnabled"]}},"required":["database"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/domains":{"get":{"summary":"List organization domains","description":"Returns the apex domains for an organization, including verification status and linked project information.","tags":["Domains"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"organizationId","in":"query"}],"responses":{"200":{"description":"Domains list","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"domain":{"type":"string"},"vercelVerified":{"type":"boolean"},"vercelVerification":{},"projectGroup":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","domain","vercelVerified","projectGroup"]}}},"required":["domains"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"post":{"summary":"Add a domain","description":"Adds a custom domain to an organization, optionally linked to a project group.","tags":["Domains"],"security":[{"basicAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid"},"domain":{"type":"string","minLength":1},"projectGroupId":{"type":["string","null"],"format":"uuid"}},"required":["organizationId","domain"]}}}},"responses":{"201":{"description":"Domain created","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"domain":{"type":"string"},"vercelVerified":{"type":"boolean"},"vercelVerification":{},"projectGroup":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","domain","vercelVerified","projectGroup"]}},"required":["domain"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/duplicate":{"post":{"summary":"Duplicate a project","description":"Duplicates an existing project group into the same organization and returns the new project group ID.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}}}}}},"responses":{"201":{"description":"Duplicate created","content":{"application/json":{"schema":{"type":"object","properties":{"projectGroupId":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["projectGroupId","name"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}":{"get":{"summary":"Get project info","description":"Returns project group details including modules and dev server status.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Project group info","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":["string","null"]},"filesystemVersion":{"type":["string","null"]},"platform":{"type":"string","enum":["web","mobile","both"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"devServerUrl":{"type":["string","null"]},"mobilePreviewUrl":{"type":["string","null"]},"publishedUrls":{"type":"array","items":{"type":"string"},"description":"Public URLs where the app is served once published: custom domains when configured, otherwise the hosted Anything domain."},"latestPublishedUrl":{"type":["string","null"],"description":"Public URL of the live app. Null if the project has never been successfully published."},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":["string","null"]},"moduleType":{"type":"string"},"pathSegment":{"type":["string","null"]},"path":{"type":["string","null"]}},"required":["id","name","slug","moduleType","pathSegment","path"]}}},"required":["id","name","slug","filesystemVersion","platform","createdAt","updatedAt","devServerUrl","mobilePreviewUrl","publishedUrls","latestPublishedUrl","files"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"delete":{"summary":"Delete a project","description":"Marks a project group for deletion and schedules permanent cleanup.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Project marked for deletion","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectGroupId":{"type":"string","format":"uuid"}},"required":["success","projectGroupId"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/auth/providers":{"get":{"summary":"Inspect auth provider configuration","description":"Returns the auth providers configured for a project group, including the secret metadata used by the Authentication settings UI.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Auth provider configuration","content":{"application/json":{"schema":{"type":"object","properties":{"authEnabled":{"type":"boolean"},"providers":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["google","email","facebook","twitter","apple"]},"enabled":{"type":"boolean"},"secrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"envKey":{"type":"string"},"displayName":{"type":"string"},"environment":{"type":"string"}},"required":["id","envKey","displayName","environment"]}}},"required":["provider","enabled","secrets"]}}},"required":["authEnabled","providers"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/rename":{"post":{"summary":"Rename a project group","description":"Renames a project group the authenticated user can access and returns the updated metadata.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100}},"required":["name"]}}}},"responses":{"200":{"description":"Project group renamed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectGroupId":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":["string","null"]},"updatedAt":{"type":"string","format":"date-time"}},"required":["success","projectGroupId","name","slug","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/generate":{"post":{"summary":"Request a change","description":"Sends a prompt to generate changes in an existing project. Optionally creates or continues a conversation thread.","tags":["Generation"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","minLength":1},"threadId":{"type":["string","null"],"format":"uuid"},"createNewThread":{"type":"boolean"}},"required":["prompt"]}}}},"responses":{"200":{"description":"Generation started","content":{"application/json":{"schema":{"type":"object","properties":{"revisionId":{"type":"string","format":"uuid"},"threadId":{"type":["string","null"],"format":"uuid"}},"required":["revisionId","threadId"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Failed to start generation","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/messages":{"get":{"summary":"Read messages","description":"Returns chat messages for a project, optionally filtered by thread.","tags":["Messages"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"threadId","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Messages list","content":{"application/json":{"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userMessage":{"type":["string","null"]},"assistantMessage":{"type":["string","null"]},"action":{"type":"string"},"status":{"type":"string"},"threadId":{"type":["string","null"],"format":"uuid"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","userMessage","assistantMessage","action","status","threadId","createdAt"]}}},"required":["messages"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/status":{"get":{"summary":"Read project status","description":"Returns a small status document (latest revision status + deployment summary) for cheap polling. Avoids the message body payload.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Project status","content":{"application/json":{"schema":{"type":"object","properties":{"projectGroupId":{"type":"string","format":"uuid"},"latestRevisionId":{"type":["string","null"],"format":"uuid"},"status":{"type":["string","null"]},"buildErrors":{"type":["string","null"]},"deployment":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"url":{"type":["string","null"],"description":"Public URL where the app is served. Null until the deployment succeeds."}},"required":["id","status","url"]},"updatedAt":{"type":"string","format":"date-time"}},"required":["projectGroupId","latestRevisionId","status","buildErrors","deployment","updatedAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/restore":{"post":{"summary":"Restore a deleted project","description":"Restores a project group that has been marked for deletion and cancels its pending cleanup job.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Project restored successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectGroupId":{"type":"string","format":"uuid"}},"required":["success","projectGroupId"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/files":{"get":{"summary":"Read project files","description":"Lists project files, or returns one file with content when `path` is provided.","tags":["Files"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"string","minLength":1},"required":false,"name":"path","in":"query"}],"responses":{"200":{"description":"Project files","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"}},"required":["path"]}}},"required":["files"]},{"type":"object","properties":{"file":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"}},"required":["path","content"]}},"required":["file"]}]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"File not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/logs":{"get":{"summary":"Read recent development logs","description":"Returns recent development logs for a project, optionally filtered by level or message text.","tags":["Logs"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"string","enum":["info","warn","error"]},"required":false,"name":"level","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Logs list","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"message":{"type":"string"},"level":{"type":"string","enum":["info","warn","error"]},"timestamp":{"type":"string","format":"date-time"},"source":{"type":["string","null"]},"devServerId":{"type":["string","null"]}},"required":["id","message","level","timestamp","source","devServerId"]}}},"required":["logs"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/settings/auth":{"get":{"summary":"Read project auth settings","description":"Returns the current project auth provider state and whether each provider appears configured.","tags":["Settings"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Project auth settings","content":{"application/json":{"schema":{"type":"object","properties":{"authEnabled":{"type":"boolean"},"providers":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["google","email","facebook","twitter","apple"]},"enabled":{"type":"boolean"},"configured":{"type":"boolean"},"expectedSecretKeys":{"type":"array","items":{"type":"string"}},"configuredSecretKeys":{"type":"array","items":{"type":"string"}},"helpUrl":{"type":"string"}},"required":["provider","enabled","configured","expectedSecretKeys","configuredSecretKeys","helpUrl"]}}},"required":["authEnabled","providers"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"post":{"summary":"Update project auth settings","description":"Updates the enabled state for a project auth provider and optionally stores provider secrets.","tags":["Settings"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["google","email","facebook","twitter","apple"]},"enabled":{"type":"boolean"},"secrets":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string","minLength":1},"envKey":{"type":"string","minLength":2},"value":{"type":"string","minLength":1},"environment":{"type":"string","enum":["development","preview","production"]}},"required":["displayName","envKey","value","environment"]}},"enableForAllModules":{"type":"boolean"}},"required":["provider","enabled"]}}}},"responses":{"200":{"description":"Updated project auth settings","content":{"application/json":{"schema":{"type":"object","properties":{"authEnabled":{"type":"boolean"},"providers":{"type":"array","items":{"type":"object","properties":{"provider":{"type":"string","enum":["google","email","facebook","twitter","apple"]},"enabled":{"type":"boolean"},"configured":{"type":"boolean"},"expectedSecretKeys":{"type":"array","items":{"type":"string"}},"configuredSecretKeys":{"type":"array","items":{"type":"string"}},"helpUrl":{"type":"string"}},"required":["provider","enabled","configured","expectedSecretKeys","configuredSecretKeys","helpUrl"]}}},"required":["authEnabled","providers"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/secrets":{"get":{"summary":"List secrets","description":"Returns the configured secrets for a project without exposing plaintext values.","tags":["Secrets"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Secrets list","content":{"application/json":{"schema":{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"envKey":{"type":"string"},"displayName":{"type":"string"},"environment":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","envKey","displayName","environment","createdAt","updatedAt"]}}},"required":["secrets"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"post":{"summary":"Add secrets","description":"Adds one or more secrets to a project. Send a single secret object or a bulk array.","tags":["Secrets"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string","minLength":1},"envKey":{"type":"string","minLength":2},"value":{"type":"string","minLength":1}},"required":["displayName","value"]},"minItems":1},"environment":{"type":"string","enum":["DEVELOPMENT","PREVIEW","PRODUCTION"]}},"required":["secrets","environment"]},{"type":"object","properties":{"displayName":{"type":"string","minLength":1},"value":{"type":"string","minLength":1},"environment":{"type":"string","enum":["DEVELOPMENT","PREVIEW","PRODUCTION"]}},"required":["displayName","value"]}]}}}},"responses":{"201":{"description":"Secret(s) created","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"envKey":{"type":"string"},"displayName":{"type":"string"},"environment":{"type":"string"}},"required":["id","envKey","displayName","environment"]}}},"required":["secrets"]},{"type":"object","properties":{"secret":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"envKey":{"type":"string"},"displayName":{"type":"string"},"environment":{"type":"string"}},"required":["id","envKey","displayName","environment"]}},"required":["secret"]}]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/secrets/{secretId}":{"delete":{"summary":"Delete a secret","description":"Removes a secret from the project.","tags":["Secrets"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"secretId","in":"path"}],"responses":{"204":{"description":"Secret deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/publish":{"post":{"summary":"Publish project","description":"Publishes the project, making it publicly accessible. Optionally claims a custom slug.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"}}}}}},"responses":{"200":{"description":"Project published","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectGroupId":{"type":"string","format":"uuid"},"slug":{"type":["string","null"]},"deploymentId":{"type":"string","format":"uuid"}},"required":["success","projectGroupId","slug","deploymentId"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/submit":{"post":{"summary":"Start an App Store submission","description":"Starts the Expo launch flow for an app store submission. Returns the session so clients can poll for launch URL readiness.","tags":["Mobile"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"store":{"type":"string","enum":["app-store","play-store"]}},"required":["store"]}}}},"responses":{"201":{"description":"Submission started","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"submission":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectGroupId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PENDING","CREATED","FAILED"]},"launchUrl":{"type":["string","null"]},"authUrl":{"type":["string","null"]},"errorMessage":{"type":["string","null"]},"expiresAt":{"type":["string","null"],"format":"date-time"}},"required":["id","projectGroupId","status","launchUrl","authUrl","errorMessage","expiresAt"]}},"required":["success","submission"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Failed to start submission","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/submit/{submissionId}":{"get":{"summary":"Read submission status","description":"Returns the current state of an Expo launch session for a project.","tags":["Mobile"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"submissionId","in":"path"}],"responses":{"200":{"description":"Submission state","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"submission":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectGroupId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PENDING","CREATED","FAILED"]},"launchUrl":{"type":["string","null"]},"authUrl":{"type":["string","null"]},"errorMessage":{"type":["string","null"]},"expiresAt":{"type":["string","null"],"format":"date-time"}},"required":["id","projectGroupId","status","launchUrl","authUrl","errorMessage","expiresAt"]}},"required":["success","submission"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Submission not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/play-store-setup":{"get":{"summary":"Get Play Store setup details","description":"Returns the package name to register and the service account email to invite in Google Play Console before starting a Play Store submission.","tags":["Mobile"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Play Store setup details","content":{"application/json":{"schema":{"type":"object","properties":{"packageName":{"type":"string"},"serviceAccountEmail":{"type":["string","null"]}},"required":["packageName","serviceAccountEmail"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/unpublish":{"post":{"summary":"Unpublish project","description":"Removes the published app for a project group without deleting the project group itself.","tags":["Projects"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"200":{"description":"Project unpublished","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"projectGroupId":{"type":"string","format":"uuid"}},"required":["success","projectGroupId"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/assets":{"post":{"summary":"Upload an asset","description":"Uploads an image asset to a project group. Send the file as multipart/form-data under the `file` field, with an optional display `name`.","tags":["Assets"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","description":"Image file to upload. Allowed types: image/png, image/jpeg, image/gif, image/svg+xml, image/webp.","format":"binary"},"name":{"type":"string"}},"required":["file"]}}}},"responses":{"201":{"description":"Asset uploaded","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string"},"mimeType":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","url","mimeType","createdAt"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"413":{"description":"File too large","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"get":{"summary":"List assets","description":"Returns the image assets uploaded to a project group, optionally filtered by a search query and paginated.","tags":["Assets"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"query","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0},"required":false,"name":"offset","in":"query"}],"responses":{"200":{"description":"Assets list","content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"url":{"type":"string"},"mimeType":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","url","mimeType","createdAt"]}},"total":{"type":"number"}},"required":["assets","total"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/assets/{assetId}":{"delete":{"summary":"Delete an asset","description":"Removes an asset from a project group.","tags":["Assets"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"assetId","in":"path"}],"responses":{"204":{"description":"Asset deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Asset not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/databases/{databaseId}":{"get":{"summary":"Get a single database","description":"Returns details for a specific user database.","tags":["Databases"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"databaseId","in":"path"}],"responses":{"200":{"description":"Database details","content":{"application/json":{"schema":{"type":"object","properties":{"database":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string","enum":["CREATING","COMPLETED","FAILED"]},"organizationId":{"type":"string","format":"uuid"},"organizationName":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"pointInTimeRestoreEnabled":{"type":"boolean"}},"required":["id","name","status","organizationId","organizationName","createdAt","updatedAt","pointInTimeRestoreEnabled"]}},"required":["database"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Database not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}},"delete":{"summary":"Delete a database","description":"Soft-deletes a user database and schedules permanent removal of the underlying infrastructure after a 30-day grace period.","tags":["Databases"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"databaseId","in":"path"}],"responses":{"204":{"description":"Database deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Database not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/databases/{databaseId}/query":{"post":{"summary":"Query a database","description":"Executes a read-only SQL query against the database. Only SELECT, WITH, EXPLAIN, and SHOW statements are allowed.","tags":["Databases"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"databaseId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sql":{"type":"string","minLength":1}},"required":["sql"]}}}},"responses":{"200":{"description":"Query results","content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"array","items":{}}},"rowCount":{"type":"number"}},"required":["columns","rows","rowCount"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Database not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/databases/{databaseId}/connection":{"get":{"summary":"Get database connection string","description":"Returns the connection string for a user database.","tags":["Databases"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"databaseId","in":"path"}],"responses":{"200":{"description":"Connection string","content":{"application/json":{"schema":{"type":"object","properties":{"connectionString":{"type":"string"}},"required":["connectionString"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Database not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/databases/{databaseId}/reset":{"post":{"summary":"Reset development database","description":"Resets the development branch of a user database.","tags":["Databases"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"databaseId","in":"path"}],"responses":{"204":{"description":"Database reset"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Database not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/domains/{domainId}":{"delete":{"summary":"Remove a domain","description":"Removes a custom domain.","tags":["Domains"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"domainId","in":"path"}],"responses":{"204":{"description":"Domain deleted"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Domain not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/domains/{domainId}/verify":{"post":{"summary":"Verify a domain","description":"Triggers verification for a custom domain.","tags":["Domains"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"domainId","in":"path"}],"responses":{"200":{"description":"Domain verification result","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"verified":{"type":"boolean"},"vercelVerification":{}},"required":["domain","verified"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Domain not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/deployments":{"get":{"summary":"List project deployments","description":"Returns recent deployments for a project group, ordered by creation time descending.","tags":["Deployments"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Deployments list","content":{"application/json":{"schema":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectGroupId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PENDING","BUILDING","DEPLOYING","SUCCESS","FAILED"]},"url":{"type":["string","null"],"description":"Public URL where the app is served. Null until the deployment succeeds."},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","projectGroupId","status","url","createdAt","completedAt"]}}},"required":["deployments"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/deployments/{deploymentId}":{"get":{"summary":"Get deployment status","description":"Returns the current state of a deployment, including build logs if available.","tags":["Deployments"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"deploymentId","in":"path"}],"responses":{"200":{"description":"Deployment detail","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectGroupId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PENDING","BUILDING","DEPLOYING","SUCCESS","FAILED"]},"url":{"type":["string","null"],"description":"Public URL where the app is served. Null until the deployment succeeds."},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"type":["string","null"],"format":"date-time"},"buildLogs":{"type":["string","null"]},"failureReason":{"type":["string","null"]}},"required":["id","projectGroupId","status","url","createdAt","completedAt","buildLogs","failureReason"]}},"required":["deployment"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/deployments/{deploymentId}/logs":{"get":{"summary":"Get deployment logs","description":"Returns the build logs for a specific deployment.","tags":["Deployments"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"deploymentId","in":"path"}],"responses":{"200":{"description":"Deployment logs","content":{"application/json":{"schema":{"type":"object","properties":{"logs":{"type":"string"},"status":{"type":"string","enum":["PENDING","BUILDING","DEPLOYING","SUCCESS","FAILED"]},"failureReason":{"type":["string","null"]}},"required":["logs","status","failureReason"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Deployment not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/projects/{projectGroupId}/deployments/rollback":{"post":{"summary":"Rollback a deployment","description":"Deployment rollback is not yet implemented.","tags":["Deployments"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"projectGroupId","in":"path"}],"responses":{"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"501":{"description":"Not implemented","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/organizations/{organizationId}/invites":{"post":{"summary":"Invite a member","description":"Sends an invitation to join the organization. Requires OWNER or ADMIN role.","tags":["Organizations"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"organizationId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"role":{"type":["string","null"]}},"required":["email"]}}}},"responses":{"201":{"description":"Invite sent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"invite":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"toEmail":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}},"required":["id","toEmail","expiresAt"]}},"required":["success","invite"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/organizations/{organizationId}/members/remove":{"post":{"summary":"Remove a member","description":"Removes a member from the organization. Requires OWNER or ADMIN role.","tags":["Organizations"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"organizationId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]}}}},"responses":{"200":{"description":"Member removed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}},"/v0/api/organizations/{organizationId}/members/role":{"post":{"summary":"Update member role","description":"Changes the role of an organization member. Requires OWNER or ADMIN role.","tags":["Organizations"],"security":[{"basicAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"organizationId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"role":{"type":"string","enum":["OWNER","ADMIN","EDITOR","VIEWER"]}},"required":["email","role"]}}}},"responses":{"200":{"description":"Role updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"userId":{"type":"string","format":"uuid"},"role":{"type":"string"}},"required":["success","userId","role"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Not found — the referenced resource does not exist (including malformed resource IDs)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{}},"message":{"type":"string"}},"required":["error"]}}}}}}}},"webhooks":{}}