{"openapi":"3.1.0","info":{"title":"StaticX API","summary":"LLM-readable contract for StaticX site, workspace, deployment, file, domain, environment, and log operations.","description":"StaticX is an API-token-first deployment layer for static websites. Use this OpenAPI document with scoped API tokens, CI jobs, CLI tools, and AI agents.","version":"1.0.0","contact":{"name":"StaticX","url":"https:\/\/staticx.site\/support"}},"servers":[{"url":"https:\/\/staticx.site\/api\/v1","description":"StaticX API v1"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Account","description":"Authenticated user and token context."},{"name":"Workspaces","description":"Workspace listing, creation, detail, and deletion."},{"name":"Projects","description":"Static site project operations."},{"name":"Domains","description":"Generated and custom domain status."},{"name":"Files","description":"Project workspace file browsing and uploads."},{"name":"Builds","description":"Compatibility build-check records."},{"name":"Deployments","description":"Immutable deployment versions, rollback, and deletion."},{"name":"Environment","description":"Project environment variables."},{"name":"Logs","description":"Project activity logs."}],"paths":{"\/user":{"get":{"operationId":"getAuthenticatedUser","summary":"Read authenticated user and current token context.","tags":["Account"],"responses":{"200":{"description":"Authenticated user.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/UserResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}}}},"\/domains":{"get":{"operationId":"listDomains","summary":"List visible custom domains and generated StaticX addresses.","tags":["Domains"],"responses":{"200":{"description":"Visible domains.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DomainCollectionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}}}},"\/workspaces":{"get":{"operationId":"listWorkspaces","summary":"List workspaces visible to the token.","tags":["Workspaces"],"responses":{"200":{"description":"Visible workspaces.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/WorkspaceCollectionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}}},"post":{"operationId":"createWorkspace","summary":"Create a workspace.","tags":["Workspaces"],"responses":{"201":{"description":"Workspace created.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/WorkspaceResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateWorkspaceRequest"}}}}}},"\/workspaces\/{workspace}":{"get":{"operationId":"getWorkspace","summary":"Read one workspace with members and project count.","tags":["Workspaces"],"responses":{"200":{"description":"Workspace detail.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/WorkspaceResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"workspace","in":"path","required":true,"description":"Workspace ID.","schema":{"type":"string"}}]},"delete":{"operationId":"deleteWorkspace","summary":"Delete a workspace and either move or delete its sites.","tags":["Workspaces"],"responses":{"200":{"description":"Workspace deletion result.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/WorkspaceDeletionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"workspace","in":"path","required":true,"description":"Workspace ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeleteWorkspaceRequest"}}}}}},"\/projects":{"get":{"operationId":"listProjects","summary":"List sites visible to the token.","tags":["Projects"],"responses":{"200":{"description":"Visible projects.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectCollectionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"workspace_id","in":"query","required":false,"description":"Filter to one workspace ID.","schema":{"type":"integer"}}]},"post":{"operationId":"createProject","summary":"Create a site from metadata, a ZIP archive, or a source URL.","tags":["Projects"],"responses":{"201":{"description":"Project created.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"requestBody":{"required":true,"content":{"multipart\/form-data":{"schema":{"$ref":"#\/components\/schemas\/CreateProjectRequest"}}}}}},"\/projects\/{project}":{"get":{"operationId":"getProject","summary":"Read one site.","tags":["Projects"],"responses":{"200":{"description":"Project detail.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}]},"patch":{"operationId":"updateProject","summary":"Update site metadata.","tags":["Projects"],"responses":{"200":{"description":"Project updated.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/UpdateProjectRequest"}}}}},"put":{"operationId":"replaceProject","summary":"Update site metadata with a full update request.","tags":["Projects"],"responses":{"200":{"description":"Project updated.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/UpdateProjectRequest"}}}}},"delete":{"operationId":"deleteProject","summary":"Delete a site.","tags":["Projects"],"responses":{"204":{"description":"Project deleted."},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}]}},"\/projects\/{project}\/domain":{"get":{"operationId":"getProjectDomainStatus","summary":"Read custom domain setup, DNS instructions, and activation status.","tags":["Domains","Projects"],"responses":{"200":{"description":"Project domain status.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectDomainResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}]},"post":{"operationId":"connectProjectDomain","summary":"Connect a custom domain and return the single DNS record to create.","tags":["Domains","Projects"],"responses":{"202":{"description":"Custom domain setup started.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectDomainResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ConnectDomainRequest"}}}}}},"\/projects\/{project}\/files":{"get":{"operationId":"listProjectFiles","summary":"List files and folders in a project workspace.","tags":["Files"],"responses":{"200":{"description":"Project file listing.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ProjectFilesResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"path","in":"query","required":false,"description":"Workspace path to browse.","schema":{"type":"string"}}]},"post":{"operationId":"uploadProjectFiles","summary":"Upload files, upload a ZIP archive, or queue a URL import.","tags":["Files"],"responses":{"201":{"description":"Files uploaded.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/FileUploadResponse"}}}},"202":{"description":"URL import queued.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/FileUploadResponse"}}}},"409":{"description":"Overwrite confirmation required.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/OverwriteConfirmationResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart\/form-data":{"schema":{"$ref":"#\/components\/schemas\/UploadFilesRequest"}}}}}},"\/projects\/{project}\/builds":{"post":{"operationId":"createBuild","summary":"Run a compatibility build check.","tags":["Builds"],"responses":{"201":{"description":"Build check created.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeploymentResponse"}}}},"422":{"description":"Build validation failed.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}]}},"\/projects\/{project}\/builds\/{build}":{"get":{"operationId":"getBuild","summary":"Read one compatibility build check.","tags":["Builds"],"responses":{"200":{"description":"Build check detail.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeploymentResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"build","in":"path","required":true,"description":"Build record ID.","schema":{"type":"string"}}]}},"\/projects\/{project}\/deployments":{"get":{"operationId":"listDeployments","summary":"List immutable deployment versions for a site.","tags":["Deployments"],"responses":{"200":{"description":"Deployment versions.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeploymentCollectionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"include_internal","in":"query","required":false,"description":"Include internal debugging fields when allowed.","schema":{"type":"boolean"}}]},"post":{"operationId":"createDeployment","summary":"Publish the current project workspace as an immutable deployment version.","tags":["Deployments"],"responses":{"201":{"description":"Deployment created.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeploymentResponse"}}}},"422":{"description":"Deployment failed.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/CreateDeploymentRequest"}}}}}},"\/projects\/{project}\/deployments\/delete-selected":{"delete":{"operationId":"deleteSelectedDeployments","summary":"Delete multiple inactive deployment versions.","tags":["Deployments"],"responses":{"200":{"description":"Bulk deletion result.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BulkDeploymentDeletionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BulkDeleteDeploymentsRequest"}}}}}},"\/projects\/{project}\/deployments\/{deployment}":{"get":{"operationId":"getDeployment","summary":"Read one deployment version.","tags":["Deployments"],"responses":{"200":{"description":"Deployment detail.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeploymentResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"deployment","in":"path","required":true,"description":"Deployment record ID.","schema":{"type":"string"}}]},"delete":{"operationId":"deleteDeployment","summary":"Delete one inactive deployment version.","tags":["Deployments"],"responses":{"204":{"description":"Deployment deleted."},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"deployment","in":"path","required":true,"description":"Deployment record ID.","schema":{"type":"string"}}]}},"\/projects\/{project}\/deployments\/{deployment}\/rollback":{"post":{"operationId":"rollbackDeployment","summary":"Make a previous successful deployment live.","tags":["Deployments"],"responses":{"200":{"description":"Rollback completed.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/DeploymentResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"deployment","in":"path","required":true,"description":"Deployment record ID.","schema":{"type":"string"}}]}},"\/projects\/{project}\/environment-variables":{"get":{"operationId":"listEnvironmentVariables","summary":"List project environment variables.","tags":["Environment"],"responses":{"200":{"description":"Environment variables.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/EnvironmentVariableCollectionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}]},"post":{"operationId":"createEnvironmentVariable","summary":"Create or update one environment variable.","tags":["Environment"],"responses":{"200":{"description":"Environment variable updated.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/EnvironmentVariableResponse"}}}},"201":{"description":"Environment variable created.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/EnvironmentVariableResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/EnvironmentVariableRequest"}}}}},"put":{"operationId":"syncEnvironmentVariables","summary":"Replace\/sync project environment variables.","tags":["Environment"],"responses":{"200":{"description":"Environment variables synced.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/EnvironmentVariableCollectionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SyncEnvironmentVariablesRequest"}}}}}},"\/projects\/{project}\/environment-variables\/{environmentVariable}":{"delete":{"operationId":"deleteEnvironmentVariable","summary":"Delete one environment variable.","tags":["Environment"],"responses":{"204":{"description":"Environment variable deleted."},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"environmentVariable","in":"path","required":true,"description":"Environment variable ID.","schema":{"type":"string"}}]}},"\/projects\/{project}\/logs":{"get":{"operationId":"listProjectLogs","summary":"Read recent project activity logs.","tags":["Logs"],"responses":{"200":{"description":"Project activity logs.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ActivityLogCollectionResponse"}}}},"401":{"$ref":"#\/components\/responses\/Unauthorized"},"403":{"$ref":"#\/components\/responses\/Forbidden"},"404":{"$ref":"#\/components\/responses\/NotFound"},"422":{"$ref":"#\/components\/responses\/ValidationError"}},"parameters":[{"name":"project","in":"path","required":true,"description":"Project ID or accepted project identifier.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Number of log entries to return, from 1 to 100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"StaticX scoped API token","description":"Create a scoped API token in StaticX settings and send it as `Authorization: Bearer <token>`."}},"responses":{"Unauthorized":{"description":"Missing or invalid API token.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"Forbidden":{"description":"Token lacks the required ability or resource scope.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"NotFound":{"description":"Resource not found or outside token scope.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ErrorResponse"}}}},"ValidationError":{"description":"Request validation failed.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/ValidationErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"error_code":{"type":["string","null"]}},"additionalProperties":true},"ValidationErrorResponse":{"type":"object","required":["message","errors"],"properties":{"message":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"UserResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#\/components\/schemas\/User"}}},"User":{"type":"object","required":["id","name","email"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"token":{"$ref":"#\/components\/schemas\/TokenContext"},"current_token":{"$ref":"#\/components\/schemas\/TokenContext"}}},"TokenContext":{"type":["object","null"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"kind":{"type":"string"},"preset":{"type":"string"},"preset_label":{"type":"string"},"scope_type":{"type":["string","null"]},"scope_id":{"type":["integer","null"]},"scope_label":{"type":["string","null"]},"abilities":{"type":"array","items":{"type":"string"}},"expires_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"WorkspaceCollectionResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#\/components\/schemas\/Workspace"}}},"additionalProperties":false},"WorkspaceResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#\/components\/schemas\/Workspace"}},"additionalProperties":false},"Workspace":{"type":"object","required":["id","name","slug"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"},"role":{"type":["string","null"]},"projects_count":{"type":["integer","null"]},"members":{"type":"array","items":{"$ref":"#\/components\/schemas\/WorkspaceMember"}},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"WorkspaceMember":{"type":"object","required":["id","name","email","role"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"email":{"type":"string","format":"email"},"role":{"type":"string"}},"additionalProperties":false},"ProjectCollectionResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#\/components\/schemas\/Project"}}},"additionalProperties":false},"ProjectResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#\/components\/schemas\/Project"},"message":{"type":"string"}},"additionalProperties":false},"Project":{"type":"object","required":["id","name","host","public_url","status"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":["string","null"]},"host":{"type":["string","null"]},"public_url":{"type":["string","null"],"format":"uri"},"status":{"type":"string","enum":["active","pending"]},"workspace":{"$ref":"#\/components\/schemas\/ProjectWorkspace"},"subdomain":{"type":["string","null"]},"custom_domain":{"type":["string","null"]},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"ProjectWorkspace":{"type":["object","null"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"role":{"type":["string","null"]}},"additionalProperties":false},"DomainCollectionResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#\/components\/schemas\/DomainEntry"}}},"additionalProperties":false},"DomainEntry":{"type":"object","required":["id","host","type"],"properties":{"id":{"type":"integer"},"host":{"type":"string"},"type":{"type":"string","enum":["custom","free_subdomain"]},"project":{"$ref":"#\/components\/schemas\/DomainProjectSummary"},"created_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"DomainProjectSummary":{"type":["object","null"],"properties":{"id":{"type":"integer"},"name":{"type":"string"},"host":{"type":["string","null"]}},"additionalProperties":false},"ProjectDomainResponse":{"type":"object","required":["data"],"properties":{"message":{"type":"string"},"data":{"$ref":"#\/components\/schemas\/ProjectDomainSetup"}}},"ProjectDomainSetup":{"type":"object","required":["project","custom_domain","dns","steps","status"],"properties":{"project":{"$ref":"#\/components\/schemas\/Project"},"custom_domain":{"$ref":"#\/components\/schemas\/CustomDomainStatus"},"dns":{"$ref":"#\/components\/schemas\/DnsSetup"},"steps":{"type":"array","items":{"type":"string"}},"status":{"$ref":"#\/components\/schemas\/DomainStatusSummary"},"result_message":{"type":"string"}},"additionalProperties":false},"CustomDomainStatus":{"type":["object","null"],"properties":{"id":{"type":"integer"},"host":{"type":"string"},"validation_method":{"type":"string"},"validation_status":{"type":["string","null"]},"hostname_status":{"type":["string","null"]},"ssl_status":{"type":["string","null"]},"status_label":{"type":"string"},"status_message":{"type":"string"},"last_checked_at":{"type":["string","null"],"format":"date-time"},"verification_started_at":{"type":["string","null"],"format":"date-time"},"verification_completed_at":{"type":["string","null"],"format":"date-time"},"activation_seconds":{"type":["integer","null"]},"needs_attention":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"DnsSetup":{"type":"object","required":["records"],"properties":{"records":{"type":"array","items":{"$ref":"#\/components\/schemas\/DnsRecord"}},"error":{"type":["string","null"]}},"additionalProperties":false},"DnsRecord":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"additionalProperties":true},"DomainStatusSummary":{"type":"object","required":["label","message","needs_attention"],"properties":{"label":{"type":"string"},"message":{"type":"string"},"needs_attention":{"type":"boolean"}},"additionalProperties":false},"ProjectFilesResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["project","path","folders","files"],"properties":{"project":{"$ref":"#\/components\/schemas\/Project"},"path":{"type":"string"},"folders":{"type":"array","items":{"$ref":"#\/components\/schemas\/WorkspaceItem"}},"files":{"type":"array","items":{"$ref":"#\/components\/schemas\/WorkspaceItem"}}},"additionalProperties":false}}},"WorkspaceItem":{"type":"object","required":["key","name","type"],"properties":{"key":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"editable":{"type":"boolean"},"previewable":{"type":"boolean"},"size":{"type":["integer","null"]},"size_label":{"type":["string","null"]},"modified_at":{"type":["integer","null"]},"modified_label":{"type":["string","null"]}},"additionalProperties":false},"FileUploadResponse":{"type":"object","required":["message","data"],"properties":{"message":{"type":"string"},"data":{"type":"object","required":["project","path","mode"],"properties":{"project":{"$ref":"#\/components\/schemas\/Project"},"path":{"type":"string"},"mode":{"type":"string","enum":["files","zip","url"]},"status":{"type":"string"},"worker_pid":{"type":["integer","null"]}},"additionalProperties":false}}},"OverwriteConfirmationResponse":{"type":"object","properties":{"message":{"type":"string"},"key":{"type":"string","const":"confirm_overwrite"},"requires_confirmation":{"type":"boolean"},"conflicts":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"DeploymentCollectionResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#\/components\/schemas\/Deployment"}}},"additionalProperties":false},"DeploymentResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#\/components\/schemas\/Deployment"},"message":{"type":"string"},"error_code":{"type":"string"}},"additionalProperties":false},"Deployment":{"type":"object","required":["id","project_id","kind","status","is_active","is_versioned"],"properties":{"id":{"type":"integer"},"project_id":{"type":"integer"},"deployment_id":{"type":"string"},"version_name":{"type":["string","null"]},"version_summary":{"type":["string","null"]},"kind":{"type":"string","enum":["build","deploy"]},"status":{"type":"string"},"is_active":{"type":"boolean"},"is_versioned":{"type":"boolean"},"manifest_key":{"type":"string"},"size_bytes":{"type":["integer","null"]},"file_count":{"type":["integer","null"]},"trigger":{"type":["string","null"]},"message":{"type":["string","null"]},"metadata":{"type":"object","additionalProperties":true},"started_at":{"type":["string","null"],"format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"activated_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"BulkDeploymentDeletionResponse":{"type":"object","required":["message","data"],"properties":{"message":{"type":"string"},"data":{"type":"object","required":["deleted"],"properties":{"deleted":{"type":"integer"}},"additionalProperties":false}}},"EnvironmentVariableCollectionResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#\/components\/schemas\/EnvironmentVariable"}},"message":{"type":"string"}},"additionalProperties":false},"EnvironmentVariableResponse":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#\/components\/schemas\/EnvironmentVariable"},"message":{"type":"string"}},"additionalProperties":false},"EnvironmentVariable":{"type":"object","required":["id","project_id","key","value","is_secret"],"properties":{"id":{"type":"integer"},"project_id":{"type":"integer"},"key":{"type":"string"},"value":{"type":["string","null"]},"is_secret":{"type":"boolean"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"ActivityLogCollectionResponse":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#\/components\/schemas\/ActivityLog"}}},"additionalProperties":false},"ActivityLog":{"type":"object","required":["id","project_id","level","event","message","context"],"properties":{"id":{"type":"integer"},"project_id":{"type":"integer"},"level":{"type":"string"},"event":{"type":"string"},"message":{"type":"string"},"context":{"type":"object","additionalProperties":true},"created_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"CreateWorkspaceRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":120}},"additionalProperties":false},"DeleteWorkspaceRequest":{"type":"object","required":["site_action"],"properties":{"site_action":{"type":"string","enum":["move","delete"]},"target_workspace_id":{"type":["integer","null"]}},"additionalProperties":false},"CreateProjectRequest":{"type":"object","properties":{"workspace_id":{"type":["integer","null"]},"name":{"type":["string","null"],"maxLength":255},"description":{"type":["string","null"],"maxLength":1000},"archive":{"type":"string","format":"binary","description":"Optional ZIP archive. Do not send with source_url."},"source_url":{"type":["string","null"],"format":"uri","maxLength":1000}},"additionalProperties":false},"UpdateProjectRequest":{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":255},"description":{"type":["string","null"],"maxLength":1000}},"additionalProperties":false},"ConnectDomainRequest":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","maxLength":253,"pattern":"^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","examples":["example.com","app.example.com"]}},"additionalProperties":false},"UploadFilesRequest":{"type":"object","required":["mode"],"properties":{"mode":{"type":"string","enum":["files","zip","url"]},"path":{"type":["string","null"],"maxLength":1000},"overwrite_confirmed":{"type":"boolean"},"files":{"type":"array","items":{"type":"string","format":"binary"},"description":"Required when mode is files."},"archive":{"type":"string","format":"binary","description":"Required when mode is zip."},"source_url":{"type":"string","format":"uri","maxLength":1000,"description":"Required when mode is url."}},"additionalProperties":false},"CreateDeploymentRequest":{"type":"object","properties":{"build_id":{"type":["integer","null"]}},"additionalProperties":false},"BulkDeleteDeploymentsRequest":{"type":"object","required":["deployment_ids"],"properties":{"deployment_ids":{"type":"array","minItems":1,"items":{"type":"integer"}}},"additionalProperties":false},"EnvironmentVariableRequest":{"type":"object","required":["key"],"properties":{"key":{"type":"string","maxLength":255,"pattern":"^[A-Z0-9_]+$"},"value":{"type":["string","null"]},"is_secret":{"type":"boolean","default":true}},"additionalProperties":false},"SyncEnvironmentVariablesRequest":{"type":"object","required":["variables"],"properties":{"variables":{"type":"array","items":{"$ref":"#\/components\/schemas\/EnvironmentVariableRequest"}}},"additionalProperties":false}}},"externalDocs":{"description":"StaticX documentation","url":"https:\/\/staticx.site\/documentation"},"x-staticx":{"llms_txt":"https:\/\/staticx.site\/llms.txt","llms_full_txt":"https:\/\/staticx.site\/llms-full.txt","openapi_json":"https:\/\/staticx.site\/openapi.json","canonical_openapi_json":"https:\/\/staticx.site\/openapi.json","alias_openapi_json":"https:\/\/staticx.site\/api\/v1\/openapi.json","alias_is_byte_identical":true,"api_base_url":"https:\/\/staticx.site\/api\/v1","mcp":{"package":"staticx-mcp-server","github":"https:\/\/github.com\/madprodworks-coder\/staticx-mcp-server","npm":"https:\/\/www.npmjs.com\/package\/staticx-mcp-server"},"agent_rules":["Use scoped API tokens.","Never print or log token values.","Explain write actions before calling them.","Require explicit confirmation before rollback or deletion.","Deployable archives must contain index.html or index.htm plus 404.html at the archive root."]}}