{"consumes":["application/json"],"definitions":{"AddDomainRequest":{"description":"AddDomainRequest represents a request to add a domain","properties":{"domain":{"description":"The domain name to add (e.g., \"example.com\")","type":"string","x-go-name":"Domain"}},"required":["domain"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains"},"AddDomainResponse":{"description":"AddDomainResponse represents the response after adding a domain","properties":{"domain":{"description":"The domain that was added","type":"string","x-go-name":"Domain"},"status":{"description":"Status of the operation","type":"string","x-go-name":"Status"}},"required":["status","domain"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains"},"AddOrganizationMemberRequest":{"properties":{"email":{"description":"User email address","example":"user@example.com","type":"string","x-go-name":"Email"},"role":{"description":"User role (unprivileged, developer, team_member, or admin)","example":"developer","type":"string","x-go-name":"Role"}},"required":["email","role"],"title":"AddOrganizationMemberRequest represents a request to add a member to an organization.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/memberships/users"},"AddOrganizationRequest":{"properties":{"organization_id":{"description":"Organization ID to add to the site","example":"org-uuid-456","type":"string","x-go-name":"OrganizationID"},"role":{"description":"Role for the organization","example":"team_member","type":"string","x-go-name":"Role"}},"required":["organization_id","role"],"title":"AddOrganizationRequest represents the request to add an organization to a site.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/organizations"},"AddPaymentMethodRequest":{"properties":{"payment_method_id":{"description":"Payment method ID to associate with the site","type":"string","x-go-name":"PaymentMethodID"}},"title":"AddPaymentMethodRequest represents the request to add a payment method.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/payment-method"},"AddPrimaryDomainRequest":{"properties":{"domain":{"description":"Domain name to set as primary","type":"string","x-go-name":"Domain"}},"title":"AddPrimaryDomainRequest represents the request to set a primary domain.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains/primary"},"AddSSHKeyRequest":{"properties":{"key":{"description":"SSH public key content","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... user@example.com","type":"string","x-go-name":"Key"}},"required":["key"],"title":"AddSSHKeyRequest represents a request to add an SSH public key.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/keys"},"AddSSHKeyResponse":{"properties":{"id":{"description":"SSH key ID","example":"c7f1788ebc84f3d366a748e2d2aa5a1a","type":"string","x-go-name":"ID"}},"required":["id"],"title":"AddSSHKeyResponse represents the response from adding an SSH key.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/keys"},"AddTeamMemberRequest":{"properties":{"email":{"description":"User email address","example":"user@example.com","type":"string","x-go-name":"Email"},"role":{"description":"User role (team_member, developer, or admin)","example":"developer","type":"string","x-go-name":"Role"}},"required":["email","role"],"title":"AddTeamMemberRequest represents a request to add a team member to a site.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/users"},"ApplyUpdatesRequest":{"properties":{"updatedb":{"description":"Run update.php after applying updates (Drupal)","example":false,"type":"boolean","x-go-name":"UpdateDB"},"xoption":{"description":"Accept upstream updates with merge conflicts (force theirs)","example":false,"type":"boolean","x-go-name":"XOption"}},"title":"ApplyUpdatesRequest represents a request to apply upstream updates.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/upstream"},"AppserverRuntime":{"description":"AppserverRuntime represents appserver runtime configuration","properties":{"drush_version":{"description":"Drush version","example":8,"format":"int64","type":"integer","x-go-name":"DrushVersion"},"php_runtime_generation":{"description":"PHP runtime generation","example":2,"format":"int64","type":"integer","x-go-name":"PHPRuntimeGeneration"}},"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments"},"AvailablePlan":{"properties":{"billing_cycle":{"description":"Billing cycle (monthly/annual)","example":"annual","type":"string","x-go-name":"BillingCycle"},"id":{"description":"Plan ID","example":"plan-performance_small-contract-annual-1","type":"string","x-go-name":"ID"},"name":{"description":"Plan display name","example":"Performance Small","type":"string","x-go-name":"Name"},"sku":{"description":"Plan SKU identifier","example":"plan-performance_small-contract-annual-1","type":"string","x-go-name":"SKU"}},"required":["id","sku","name","billing_cycle"],"title":"AvailablePlan represents a plan available for a site to upgrade/downgrade to.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/available-plans"},"AvailablePlanList":{"properties":{"plans":{"description":"List of available plans","items":{"$ref":"#/definitions/AvailablePlan"},"type":"array","x-go-name":"Plans"}},"required":["plans"],"title":"AvailablePlanList represents a list of available plans for a site.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/available-plans"},"Backup":{"properties":{"filename":{"description":"Backup file name","example":"mysite_dev_2024-01-15T10-30-00_UTC_code.tar.gz","type":"string","x-go-name":"Filename"},"finish_time":{"description":"Finish time timestamp (seconds since epoch)","example":1705315800,"format":"double","type":"number","x-go-name":"FinishTime"},"folder":{"description":"Backup folder path","example":"mysite_dev_2024-01-15T10-30-00_UTC_automated","type":"string","x-go-name":"Folder"},"size":{"description":"Size in bytes","example":1048576,"format":"int64","type":"integer","x-go-name":"Size"},"timestamp":{"description":"Timestamp (alternative to finish_time, seconds since epoch)","example":1705315800,"format":"int64","type":"integer","x-go-name":"Timestamp"},"ttl":{"description":"Time to live in seconds","example":2592000,"format":"int64","type":"integer","x-go-name":"TTL"}},"title":"Backup represents a single backup in the catalog.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups/catalog"},"BackupCatalogResponse":{"additionalProperties":{"$ref":"#/definitions/Backup"},"description":"The response is a map where keys are backup IDs and values are Backup objects.","title":"BackupCatalogResponse represents the catalog of backups for an environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups/catalog"},"BackupCreationRequest":{"properties":{"element":{"description":"Backup element type","enum":["all","code","database","files"],"example":"all","type":"string","x-go-name":"Element"},"keep_for":{"description":"Number of days to keep the backup","example":365,"format":"int64","minimum":1,"type":"integer","x-go-name":"KeepFor"}},"required":["element","keep_for"],"title":"BackupCreationRequest represents a request to create a new backup.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups"},"BackupRestoreRequest":{"properties":{"element":{"description":"Backup element type to restore","enum":["code","database","files"],"example":"database","type":"string","x-go-name":"Element"}},"required":["element"],"title":"BackupRestoreRequest represents a request to restore a backup.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups"},"BackupScheduleRequest":{"items":{"$ref":"#/definitions/DaySchedule"},"title":"BackupScheduleRequest represents the request to set the backup schedule for all days of the week.","type":"array","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups/schedule"},"BackupScheduleResponse":{"additionalProperties":{"$ref":"#/definitions/DaySchedule"},"description":"Array indices 0-6 represent Sunday through Saturday.","title":"BackupScheduleResponse represents the backup schedule for all days of the week.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups/schedule"},"BackupScheduleUpdateResponse":{"properties":{"status":{"description":"Status of the operation","example":"success","type":"string","x-go-name":"Status"}},"required":["status"],"title":"BackupScheduleUpdateResponse represents the response when updating backup schedule.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups/schedule"},"BranchListResponse":{"additionalProperties":{"type":"string"},"description":"This is a map where keys are branch names and values are commit SHAs.","title":"BranchListResponse represents the list of branches for a site.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/branches"},"BuildUpdates":{"description":"BuildUpdates represents composer dependency updates for an environment","properties":{"added_dependencies":{"description":"Dependencies that have been added","example":["drupal/core:^9.0"],"items":{"type":"string"},"type":"array","x-go-name":"AddedDependencies"},"removed_dependencies":{"description":"Dependencies that have been removed","example":["old/package:^1.0"],"items":{"type":"string"},"type":"array","x-go-name":"RemovedDependencies"},"updated_dependencies":{"description":"Dependencies that have been updated","example":["symfony/http-foundation:^5.0"],"items":{"type":"string"},"type":"array","x-go-name":"UpdatedDependencies"}},"required":["added_dependencies","updated_dependencies","removed_dependencies"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/build"},"ChangeOrganizationMemberRoleRequest":{"properties":{"role":{"description":"User role (unprivileged, developer, team_member, or admin)","example":"admin","type":"string","x-go-name":"Role"}},"required":["role"],"title":"ChangeOrganizationMemberRoleRequest represents a request to change an organization member's role.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/memberships/users"},"ChangeTeamMemberRoleRequest":{"properties":{"role":{"description":"User role (team_member, developer, or admin)","example":"admin","type":"string","x-go-name":"Role"}},"required":["role"],"title":"ChangeTeamMemberRoleRequest represents a request to change a team member's role.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/users"},"ClearCacheRequest":{"properties":{"framework_cache":{"description":"Whether to clear the framework cache","example":true,"type":"boolean","x-go-name":"FrameworkCache"}},"required":["framework_cache"],"title":"ClearCacheRequest represents a request to clear environment cache.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/cache"},"CloneDatabaseRequest":{"properties":{"clear_cache":{"description":"Whether to clear cache after cloning","example":false,"type":"boolean","x-go-name":"ClearCache"},"from_environment":{"description":"Source environment to clone from","example":"live","type":"string","x-go-name":"FromEnvironment"},"from_url":{"description":"Source URL for WordPress search-replace (optional, for WordPress sites)","example":"https://live-example.pantheonsite.io","type":"string","x-go-name":"FromURL"},"to_url":{"description":"Target URL for WordPress search-replace (optional, for WordPress sites)","example":"https://dev-example.pantheonsite.io","type":"string","x-go-name":"ToURL"},"updatedb":{"description":"Whether to run database updates after cloning","example":false,"type":"boolean","x-go-name":"Updatedb"}},"required":["from_environment"],"title":"CloneDatabaseRequest represents a request to clone a database from another environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/database"},"CloneFilesRequest":{"properties":{"from_environment":{"description":"Source environment to clone from","example":"live","type":"string","x-go-name":"FromEnvironment"}},"required":["from_environment"],"title":"CloneFilesRequest represents a request to clone files from another environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/files"},"Commit":{"description":"Commit represents a Git commit in an environment","properties":{"author":{"description":"Commit author name","type":"string","x-go-name":"Author"},"datetime":{"description":"Commit timestamp","type":"string","x-go-name":"Datetime"},"hash":{"description":"Git commit SHA","type":"string","x-go-name":"Hash"},"labels":{"description":"Environment labels where this commit exists","items":{"type":"string"},"type":"array","x-go-name":"Labels"},"message":{"description":"Commit message","type":"string","x-go-name":"Message"}},"required":["datetime","author","labels","hash","message"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/commits"},"CommitRequest":{"properties":{"committer_email":{"description":"Committer email","example":"developer@example.com","type":"string","x-go-name":"CommitterEmail"},"committer_name":{"description":"Committer name","example":"Developer Name","type":"string","x-go-name":"CommitterName"},"message":{"description":"Commit message","example":"Commit changes from SFTP","type":"string","x-go-name":"Message"}},"required":["message","committer_name","committer_email"],"title":"CommitRequest represents a request to commit environment changes.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/code"},"CommitsResponse":{"description":"CommitsResponse represents a list of commits","items":{"$ref":"#/definitions/Commit"},"type":"array","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/commits"},"CreateMultidevRequest":{"properties":{"clone_database":{"description":"Whether to clone the database from source environment","example":true,"type":"boolean","x-go-name":"CloneDatabase"},"clone_files":{"description":"Whether to clone files from source environment","example":true,"type":"boolean","x-go-name":"CloneFiles"},"environment_name":{"description":"Name of the new multidev environment","example":"feature-branch","type":"string","x-go-name":"EnvironmentName"},"from_environment":{"description":"Source environment to clone from","example":"dev","type":"string","x-go-name":"FromEnvironment"}},"required":["environment_name","from_environment"],"title":"CreateMultidevRequest represents a request to create a new multidev environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments"},"CreateSiteRequest":{"properties":{"label":{"description":"Site display label","example":"My Awesome Site","type":"string","x-go-name":"Label"},"organization_id":{"description":"Organization UUID to associate the site with","example":"org-uuid-123","type":"string","x-go-name":"OrganizationID"},"region":{"description":"Geographic region where the site should be hosted","example":"us-east-1","type":"string","x-go-name":"Region"},"site_name":{"description":"Site machine name (unique identifier)","example":"my-awesome-site","type":"string","x-go-name":"SiteName"},"upstream_id":{"description":"Upstream ID (product ID) to deploy","example":"e8fe8550-1ab9-4964-8838-2b9abdccf4bf","type":"string","x-go-name":"UpstreamID"}},"required":["site_name","label","upstream_id"],"title":"CreateSiteRequest represents a request to create a new site.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites"},"DNSRecommendationsResponse":{"description":"DNSRecommendationsResponse represents DNS recommendations for custom domains","items":{"$ref":"#/definitions/DNSRecord"},"type":"array","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains"},"DNSRecord":{"description":"DNSRecord represents a DNS record recommendation","properties":{"detected_value":{"description":"Currently detected DNS value","type":"string","x-go-name":"DetectedValue"},"domain":{"description":"Domain identifier this record belongs to","type":"string","x-go-name":"Domain"},"status":{"description":"DNS record status","type":"string","x-go-name":"Status"},"status_message":{"description":"DNS record status message","type":"string","x-go-name":"StatusMessage"},"type":{"description":"DNS record type (A, AAAA, CNAME, etc.)","type":"string","x-go-name":"Type"},"value":{"description":"Recommended DNS value","type":"string","x-go-name":"Value"}},"required":["domain","type","value","status"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains"},"DaySchedule":{"properties":{"hour":{"description":"Hour when backups run (24-hour format, e.g., \"03:00\")","example":3,"format":"int64","type":"integer","x-go-name":"Hour"},"ttl":{"description":"Time to live in seconds for backups created on this day","example":2764800,"format":"int64","type":"integer","x-go-name":"TTL"}},"title":"DaySchedule represents backup schedule for a single day.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups/schedule"},"DeleteMultidevRequest":{"properties":{"delete_branch":{"description":"Whether to also delete the Git branch","example":true,"type":"boolean","x-go-name":"DeleteBranch"}},"title":"DeleteMultidevRequest represents a request to delete a multidev environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments"},"DeployRequest":{"properties":{"clear_cache":{"description":"Whether to clear cache after deployment","example":false,"type":"boolean","x-go-name":"ClearCache"},"note":{"description":"Deployment note/annotation","example":"Deploy from API","type":"string","x-go-name":"Note"},"sync_content":{"description":"Whether to sync content from Live (for Test environment only)","example":false,"type":"boolean","x-go-name":"SyncContent"},"updatedb":{"description":"Whether to run database updates after deployment","example":false,"type":"boolean","x-go-name":"Updatedb"}},"title":"DeployRequest represents a request to deploy an environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/deploy"},"DiffStatResponse":{"description":"DiffStatResponse represents the diff statistics for uncommitted changes","properties":{"files":{"additionalProperties":{"$ref":"#/definitions/FileDiffStat"},"description":"Map of filename to diff statistics","example":{"README.md":{"additions":"14","deletions":"0","status":"M"},"config/settings.php":{"additions":"42","deletions":"0","status":"A"}},"type":"object","x-go-name":"Files"}},"required":["files"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/diffstat"},"Domain":{"description":"Domain represents a domain associated with an environment","properties":{"deletable":{"description":"Whether the domain can be deleted","type":"boolean","x-go-name":"Deletable"},"id":{"description":"The domain identifier","type":"string","x-go-name":"ID"},"primary":{"description":"Whether this is the primary domain","type":"boolean","x-go-name":"Primary"},"status":{"description":"Domain status (OK, error, etc.)","type":"string","x-go-name":"Status"},"status_message":{"description":"Human-readable status message","type":"string","x-go-name":"StatusMessage"},"type":{"description":"The domain type (platform or custom)","type":"string","x-go-name":"Type"}},"required":["id","type","status","primary","deletable"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains"},"DomainsResponse":{"description":"DomainsResponse represents a list of domains","items":{"$ref":"#/definitions/Domain"},"type":"array","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains"},"DownloadURLResponse":{"properties":{"url":{"description":"Signed download URL for the backup file","example":"https://storage.googleapis.com/gcs-pantheon-backups/...","type":"string","x-go-name":"URL"}},"required":["url"],"title":"DownloadURLResponse represents the response containing a signed download URL for a backup.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/backups/download"},"EnableLockRequest":{"properties":{"password":{"description":"Password for the environment lock","type":"string","x-go-name":"Password"},"username":{"description":"Username for the environment lock","type":"string","x-go-name":"Username"}},"title":"EnableLockRequest represents the request to enable environment lock.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/lock"},"EnvironmentInfo":{"description":"EnvironmentInfo represents information about a site environment","properties":{"appserver_runtime":{"$ref":"#/definitions/AppserverRuntime"},"connection_mode":{"description":"Connection mode (sftp or git) - derived from on_server_development if not provided directly","example":"sftp","type":"string","x-go-name":"ConnectionMode"},"created":{"description":"Environment creation timestamp","example":1234567890,"format":"int64","type":"integer","x-go-name":"Created"},"dns_zone":{"description":"DNS zone for the environment","example":"pantheonsite.io","type":"string","x-go-name":"DNSZone"},"id":{"description":"Environment ID","example":"dev","type":"string","x-go-name":"ID"},"initialized":{"description":"Whether the environment is initialized","example":true,"type":"boolean","x-go-name":"Initialized"},"lock":{"$ref":"#/definitions/EnvironmentLock"},"on_server_development":{"description":"Whether server-side development mode is enabled (SFTP mode)","example":true,"type":"boolean","x-go-name":"OnServerDevelopment"},"php_version":{"description":"PHP version","example":"8.1","type":"string","x-go-name":"PHPVersion"}},"required":["id","created"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments"},"EnvironmentLock":{"description":"EnvironmentLock represents lock status information for an environment","properties":{"locked":{"description":"Whether the environment is locked","example":false,"type":"boolean","x-go-name":"Locked"},"password":{"description":"Basic auth password for locked environment (only present if locked)","example":"secret123","type":"string","x-go-name":"Password"},"username":{"description":"Basic auth username for locked environment (only present if locked)","example":"pantheon","type":"string","x-go-name":"Username"}},"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments"},"EnvironmentMap":{"additionalProperties":{"$ref":"#/definitions/EnvironmentInfo"},"description":"EnvironmentMap represents site environments as a map keyed by environment ID\nThis format matches the old API and is required for Terminus compatibility","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments"},"EnvironmentSettings":{"description":"Primarily used for WordPress URL replacement during content cloning.","properties":{"domain":{"description":"Primary domain for the environment","example":"dev-sitename.pantheonsite.io","type":"string","x-go-name":"Domain"},"domains":{"description":"List of all domains associated with the environment (for WordPress multisite)","example":["dev-sitename.pantheonsite.io","www.example.com"],"items":{"type":"string"},"type":"array","x-go-name":"Domains"}},"required":["domain"],"title":"EnvironmentSettings represents configuration settings for an environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/settings"},"EnvironmentUpstreamStatus":{"properties":{"is_up_to_date_with_upstream":{"description":"Whether the environment is up to date with upstream","example":false,"type":"boolean","x-go-name":"IsUpToDateWithUpstream"}},"required":["is_up_to_date_with_upstream"],"title":"EnvironmentUpstreamStatus represents upstream status for a specific environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/upstream"},"EnvironmentVariables":{"description":"Only exposes fields that are actually used by Terminus commands.","properties":{"CACHE_BINDING_ID":{"description":"Cache binding ID","type":"string","x-go-name":"CacheBindingID"},"CACHE_HOST":{"description":"Cache host","type":"string","x-go-name":"CacheHost"},"CACHE_PASSWORD":{"description":"Cache (Redis) password","type":"string","x-go-name":"CachePassword"},"CACHE_PORT":{"description":"Cache (Redis) port","example":"10695","type":"string","x-go-name":"CachePort"},"DB_NAME":{"description":"Database name","example":"pantheon","type":"string","x-go-name":"DBName"},"DB_PASSWORD":{"description":"Database password","type":"string","x-go-name":"DBPassword"},"DB_PORT":{"description":"Database port","example":"10692","type":"string","x-go-name":"DBPort"},"DB_USER":{"description":"Database username","example":"pantheon","type":"string","x-go-name":"DBUser"}},"title":"EnvironmentVariables represents environment variables for an environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/variables"},"ErrorDetail":{"description":"ErrorDetail represents a single error with optional context","properties":{"context":{"additionalProperties":{},"description":"Optional context providing additional information about the error","example":{"field":"Authorization","type":"header"},"type":"object","x-go-name":"Context"},"message":{"description":"Error message describing what went wrong","example":"Missing required header: Authorization","type":"string","x-go-name":"Message"}},"required":["message"],"type":"object","x-go-name":"ErrorDetailSwagger","x-go-package":"github.com/pantheon-systems/pantheonapi-public/internal/errors"},"ErrorResponse":{"description":"ErrorResponse represents the standardized error response structure","properties":{"errors":{"description":"Array of errors (typically contains a single error)","items":{"$ref":"#/definitions/ErrorDetail"},"type":"array","x-go-name":"Errors"}},"required":["errors"],"type":"object","x-go-name":"ErrorResponseSwagger","x-go-package":"github.com/pantheon-systems/pantheonapi-public/internal/errors"},"FileDiffStat":{"description":"FileDiffStat represents diff statistics for a single file","properties":{"additions":{"description":"Number of lines added","example":"14","type":"string","x-go-name":"Additions"},"deletions":{"description":"Number of lines deleted","example":"0","type":"string","x-go-name":"Deletions"},"status":{"description":"Git status (A=Added, M=Modified, D=Deleted)","example":"M","type":"string","x-go-name":"Status"}},"required":["status","additions","deletions"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/diffstat"},"FinalTask":{"properties":{"messages":{"additionalProperties":{"$ref":"#/definitions/FinalTaskMessage"},"description":"Detailed messages from the task","example":{"location":{"level":"info","message":"/backups/archive_123.tar.gz"},"success":{"level":"info","message":"Database backup created"}},"type":"object","x-go-name":"Messages"},"reason":{"description":"Reason for task completion or failure","example":"Backup completed successfully","type":"string","x-go-name":"Reason"}},"title":"FinalTask represents the final task information for a workflow.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"},"FinalTaskMessage":{"properties":{"level":{"description":"Severity level of the message","example":"info","type":"string","x-go-name":"Level"},"message":{"description":"Message content","example":"Database backup created","type":"string","x-go-name":"Message"}},"required":["message","level"],"title":"FinalTaskMessage represents a message within the final task.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"},"ImportDatabaseRequest":{"properties":{"url":{"description":"URL of the database file to import","example":"https://example.com/database.sql.gz","type":"string","x-go-name":"URL"}},"required":["url"],"title":"ImportDatabaseRequest represents a request to import a database.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/import"},"ImportFilesRequest":{"properties":{"url":{"description":"URL of the files archive to import","example":"https://example.com/files.tar.gz","type":"string","x-go-name":"URL"}},"required":["url"],"title":"ImportFilesRequest represents a request to import files.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/import"},"ImportSiteRequest":{"properties":{"url":{"description":"URL of the site archive to import","example":"https://example.com/site-archive.tar.gz","type":"string","x-go-name":"URL"}},"required":["url"],"title":"ImportSiteRequest represents a request to import a complete site.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/import"},"ListSSHKeysResponse":{"additionalProperties":{"type":"string"},"description":"Example response:\n\n{\n\"28107bd5a8612555538bfa962bc64e20\": \"ssh-rsa AAAAB3... user@example.com\",\n\"a3c4f8b9d2e1a5c6b7d8e9f0a1b2c3d4\": \"ssh-ed25519 AAAAC3... admin@host.com\"\n}","title":"ListSSHKeysResponse represents the response from listing SSH keys.\nThe old API returns a map of UUID to SSH key string.\nThis matches the format Terminus expects.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/keys"},"MachineToken":{"description":"MachineToken represents a machine token for authentication","properties":{"device_name":{"description":"Human-readable name for the token","example":"Pantheon Mac 2023-01-09","type":"string","x-go-name":"DeviceName"},"id":{"description":"Machine token identifier","example":"dcr_aALXf3Rho1EmPj7A","type":"string","x-go-name":"ID"}},"required":["id","device_name"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/machine-tokens"},"MachineTokenList":{"description":"MachineTokenList represents a list of machine tokens","properties":{"tokens":{"description":"List of machine tokens","items":{"$ref":"#/definitions/MachineToken"},"type":"array","x-go-name":"Tokens"}},"required":["tokens"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/machine-tokens"},"MachineTokenRequest":{"properties":{"client":{"description":"Client identifier","example":"terminus","type":"string","x-go-name":"Client"},"machine_token":{"description":"Machine token for authentication","example":"dcr_aALXf3Rho1EmPj7A","type":"string","x-go-name":"MachineToken"}},"required":["machine_token","client"],"title":"MachineTokenRequest represents a request to authenticate with a machine token.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/auth"},"MembershipSite":{"properties":{"created":{"description":"Site creation timestamp (Unix epoch)","example":1683057804,"format":"int64","type":"integer","x-go-name":"Created"},"framework":{"description":"Site framework","example":"drupal8","type":"string","x-go-name":"Framework"},"frozen":{"description":"Whether the site is frozen","example":false,"type":"boolean","x-go-name":"Frozen"},"id":{"description":"Site UUID","example":"12345678-1234-1234-1234-123456789012","type":"string","x-go-name":"ID"},"label":{"description":"Site human-readable label","example":"My Awesome Site","type":"string","x-go-name":"Label"},"name":{"description":"Site machine name","example":"my-awesome-site","type":"string","x-go-name":"Name"},"owner":{"description":"Site owner UUID","example":"12345678-1234-1234-1234-123456789012","type":"string","x-go-name":"Owner"},"plan_name":{"description":"Site plan name","example":"Performance Small","type":"string","x-go-name":"PlanName"}},"required":["id","name"],"title":"SiteInfo represents the nested site information in a membership.","type":"object","x-go-name":"SiteInfo","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/memberships"},"MergeFromDevRequest":{"properties":{"updatedb":{"description":"Run update.php after merging (Drupal)","example":false,"type":"boolean","x-go-name":"UpdateDB"}},"title":"MergeFromDevRequest represents a request to merge dev into a multidev environment.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/merge"},"MergeToDevRequest":{"properties":{"from_environment":{"description":"The multidev environment to merge from","example":"feature-branch","type":"string","x-go-name":"FromEnvironment"},"updatedb":{"description":"Run update.php after merging (Drupal)","example":false,"type":"boolean","x-go-name":"UpdateDB"}},"required":["from_environment"],"title":"MergeToDevRequest represents a request to merge a multidev environment into dev.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/merge"},"Metric":{"properties":{"cache_hits":{"description":"Number of cache hits","format":"int64","type":"integer","x-go-name":"CacheHits"},"cache_misses":{"description":"Number of cache misses","format":"int64","type":"integer","x-go-name":"CacheMisses"},"datetime":{"description":"ISO 8601 datetime for this metric data point","type":"string","x-go-name":"Datetime"},"pages_served":{"description":"Number of pages served","format":"int64","type":"integer","x-go-name":"PagesServed"},"timestamp":{"description":"Unix timestamp for this metric data point","format":"int64","type":"integer","x-go-name":"Timestamp"},"visits":{"description":"Number of unique visits","format":"int64","type":"integer","x-go-name":"Visits"}},"title":"Metric represents a single data point in the timeseries metrics data.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/metrics"},"MetricsResponse":{"description":"Returns an array of metrics, each with a timestamp field.\nThis format matches the old API for Terminus compatibility.","properties":{"timeseries":{"description":"Timeseries data as an array of metric objects","example":[{"cache_hits":890,"cache_misses":123,"datetime":"2024-01-15T10:30:00Z","pages_served":1234,"timestamp":1705315800,"visits":567},{"cache_hits":1234,"cache_misses":234,"datetime":"2024-01-15T11:30:00Z","pages_served":2345,"timestamp":1705319400,"visits":678}],"items":{"$ref":"#/definitions/Metric"},"type":"array","x-go-name":"Timeseries"}},"title":"MetricsResponse contains timeseries metrics data.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/metrics"},"Organization":{"description":"Organization represents organization details","properties":{"id":{"description":"Organization UUID","example":"org-uuid-456","type":"string","x-go-name":"ID"},"profile":{"$ref":"#/definitions/OrganizationProfile"}},"required":["id","profile"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/organizations"},"OrganizationData":{"properties":{"id":{"description":"Organization UUID","example":"a1b2c3d4-5678-90ab-cdef-1234567890ab","type":"string","x-go-name":"ID"},"profile":{"$ref":"#/definitions/UserOrganizationProfile"}},"required":["id","profile"],"title":"OrganizationData represents the nested organization data.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/memberships"},"OrganizationMembership":{"description":"Matches the old API format with organization.profile.{machine_name, name} structure.","properties":{"id":{"description":"Membership UUID","example":"a1b2c3d4-5678-90ab-cdef-1234567890ab","type":"string","x-go-name":"ID"},"organization":{"$ref":"#/definitions/OrganizationData"}},"required":["id","organization"],"title":"OrganizationMembership represents an organization membership with nested structure.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/memberships"},"OrganizationMembershipSite":{"description":"Includes all fields used by Terminus for site listings.","properties":{"created":{"description":"Creation timestamp","example":1639686766,"format":"int64","type":"integer","x-go-name":"Created"},"framework":{"description":"Framework type","example":"drupal8","type":"string","x-go-name":"Framework"},"frozen":{"description":"Is site frozen","example":false,"type":"boolean","x-go-name":"Frozen"},"id":{"description":"Site ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"ID"},"label":{"description":"Site label (display name)","example":"My Awesome Site","type":"string","x-go-name":"Label"},"name":{"description":"Site name","example":"my-awesome-site","type":"string","x-go-name":"Name"},"owner":{"description":"Owner user ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"Owner"},"plan_name":{"description":"Plan name","example":"Sandbox","type":"string","x-go-name":"PlanName"}},"required":["id","name"],"title":"Site represents site information within an organization membership.","type":"object","x-go-name":"Site","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/memberships/sites"},"OrganizationProfile":{"description":"OrganizationProfile represents the organization profile data","properties":{"machine_name":{"description":"Organization machine name","example":"my-organization","type":"string","x-go-name":"MachineName"},"name":{"description":"Organization display name","example":"My Organization","type":"string","x-go-name":"Name"}},"required":["machine_name"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/organizations"},"OrganizationSiteMembership":{"properties":{"id":{"description":"Membership ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"ID"},"site":{"$ref":"#/definitions/OrganizationMembershipSite"}},"required":["id","site"],"title":"SiteMembership represents a site's membership in an organization.","type":"object","x-go-name":"SiteMembership","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/memberships/sites"},"OrganizationSiteMembershipDetail":{"description":"Only exposes the tags field (99.2% data reduction from 122 fields).\nUsed by tag:list command.","properties":{"id":{"description":"Membership UUID","example":"12345678-1234-1234-1234-123456789012","type":"string","x-go-name":"ID"},"organization_id":{"description":"Organization UUID","example":"98765432-1234-5678-9012-345678901234","type":"string","x-go-name":"OrganizationID"},"site_id":{"description":"Site UUID","example":"abcdef12-3456-7890-abcd-ef1234567890","type":"string","x-go-name":"SiteID"},"tags":{"description":"Tags associated with the site","items":{"type":"string"},"type":"array","x-go-name":"Tags"}},"required":["id","organization_id","site_id","tags"],"title":"OrganizationSiteMembership represents a site's membership in an organization.","type":"object","x-go-name":"OrganizationSiteMembership","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/sites"},"OrganizationUpstream":{"properties":{"framework":{"description":"Framework type","enum":["drupal","drupal8","wordpress","nodejs"],"example":"wordpress","type":"string","x-go-name":"Framework"},"id":{"description":"Upstream UUID","example":"e8fe8550-1ab9-4964-8838-2b9abdccf4bf","type":"string","x-go-name":"ID"},"label":{"description":"Upstream name","example":"WordPress","type":"string","x-go-name":"Label"},"machine_name":{"description":"Machine-readable name","example":"wordpress","type":"string","x-go-name":"MachineName"},"type":{"description":"Upstream type","enum":["core","custom","product"],"example":"core","type":"string","x-go-name":"Type"}},"required":["id"],"title":"OrganizationUpstream represents an upstream repository belonging to an organization.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/upstreams"},"OrganizationUpstreamList":{"properties":{"upstreams":{"description":"List of upstreams","items":{"$ref":"#/definitions/OrganizationUpstream"},"type":"array","x-go-name":"Upstreams"}},"required":["upstreams"],"title":"OrganizationUpstreamList represents a list of organization upstreams.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/upstreams"},"OrganizationUserMembership":{"description":"UserMembership represents a user's membership in an organization","properties":{"email":{"description":"User email address","example":"user@example.com","type":"string","x-go-name":"Email"},"firstname":{"description":"User's first name","example":"Jane","type":"string","x-go-name":"Firstname"},"id":{"description":"User identifier (alias for user_id, for backwards compatibility)","example":"11111111-1111-1111-1111-111111111111","type":"string","x-go-name":"ID"},"lastname":{"description":"User's last name","example":"Doe","type":"string","x-go-name":"Lastname"},"role":{"description":"User's role in the organization","enum":["unprivileged","admin","team_member","developer"],"example":"team_member","type":"string","x-go-name":"Role"},"user_id":{"description":"User identifier","example":"11111111-1111-1111-1111-111111111111","type":"string","x-go-name":"UserID"}},"required":["id","user_id","email","role"],"type":"object","x-go-name":"UserMembership","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/memberships/users"},"OrganizationWorkflowCreationRequest":{"properties":{"params":{"additionalProperties":{},"description":"Workflow parameters","example":{"role":"team_member","user_email":"user@example.com"},"type":"object","x-go-name":"Params"},"type":{"description":"Workflow type","example":"add_organization_user_membership","type":"string","x-go-name":"Type"}},"required":["type"],"title":"WorkflowCreationRequest represents the request body for creating an organization workflow.","type":"object","x-go-name":"WorkflowCreationRequest","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/workflows"},"OrganizationWorkflowCreationResponse":{"properties":{"created_at":{"description":"Workflow creation timestamp","example":1234567890,"format":"double","type":"number","x-go-name":"CreatedAt"},"id":{"description":"Workflow ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"ID"},"type":{"description":"Workflow type","example":"add_organization_user_membership","type":"string","x-go-name":"Type"}},"required":["id"],"title":"WorkflowCreationResponse represents the response after creating an organization workflow.","type":"object","x-go-name":"WorkflowCreationResponse","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/workflows"},"OrganizationWorkflowFinalTask":{"properties":{"messages":{"description":"Messages from the final task","items":{"$ref":"#/definitions/OrganizationWorkflowFinalTaskMessage"},"type":"array","x-go-name":"Messages"},"reason":{"description":"Reason for workflow completion (error message if failed)","example":"User already exists in organization","type":"string","x-go-name":"Reason"}},"title":"FinalTask represents the final task from a workflow.","type":"object","x-go-name":"FinalTask","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/workflows"},"OrganizationWorkflowFinalTaskMessage":{"properties":{"message":{"description":"Message text","example":"User added successfully","type":"string","x-go-name":"Message"}},"required":["message"],"title":"FinalTaskMessage represents a message from the workflow's final task.","type":"object","x-go-name":"FinalTaskMessage","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/workflows"},"OrganizationWorkflowStatusResponse":{"properties":{"final_task":{"$ref":"#/definitions/OrganizationWorkflowFinalTask"},"result":{"description":"Workflow result status","enum":["succeeded","failed","running","aborted"],"example":"succeeded","type":"string","x-go-name":"Result"}},"required":["result"],"title":"WorkflowStatusResponse represents the status of an organization workflow.","type":"object","x-go-name":"WorkflowStatusResponse","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/workflows"},"RemoveDomainResponse":{"description":"RemoveDomainResponse represents the response after removing a domain","properties":{"domain":{"description":"The domain that was removed","type":"string","x-go-name":"Domain"},"status":{"description":"Status of the operation","type":"string","x-go-name":"Status"}},"required":["status","domain"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/domains"},"RemoveTagRequest":{"description":"Contains the list of site UUIDs to remove the tag from.","properties":{"sites":{"description":"List of site UUIDs to remove the tag from","example":["12345678-1234-1234-1234-123456789012"],"items":{"type":"string"},"type":"array","x-go-name":"Sites"}},"required":["sites"],"title":"RemoveTagRequest represents the request body for removing a tag from sites.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/tags"},"SessionResponse":{"properties":{"expires_at":{"description":"Session expiration timestamp (Unix timestamp)","example":1735689600,"format":"int64","type":"integer","x-go-name":"ExpiresAt"},"session":{"description":"Session token for subsequent API calls","example":"abc123sessiontoken","type":"string","x-go-name":"Session"},"user_id":{"description":"Authenticated user identifier","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"UserID"}},"required":["session","expires_at","user_id"],"title":"SessionResponse represents the session token response after authentication.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/auth"},"SetConnectionModeRequest":{"properties":{"mode":{"description":"Mode to set - either \"git\" or \"sftp\"","type":"string","x-go-name":"Mode"}},"title":"SetConnectionModeRequest represents the request to set environment connection mode.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/connection"},"SetOwnerRequest":{"properties":{"user_id":{"description":"User ID to promote to owner","type":"string","x-go-name":"UserID"}},"title":"SetOwnerRequest represents the request to set a site owner.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/owner"},"SetSiteLabelRequest":{"properties":{"label":{"description":"Label to set for the site","type":"string","x-go-name":"Label"}},"title":"SetSiteLabelRequest represents the request to set a site label.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/label"},"SetSitePlanRequest":{"properties":{"plan_id":{"description":"Plan SKU identifier","example":"plan-performance_small-contract-annual-1","type":"string","x-go-name":"PlanID"}},"required":["plan_id"],"title":"SetSitePlanRequest represents a request to set a site's plan.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/plan"},"SetSiteUpstreamRequest":{"properties":{"upstream_id":{"description":"Upstream ID to set for the site","type":"string","x-go-name":"UpstreamID"}},"title":"SetSiteUpstreamRequest represents the request to set a site upstream.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/upstream-switch"},"Site":{"description":"SiteInfo represents detailed information about a Pantheon site","properties":{"created":{"description":"Unix timestamp when site was created","example":1234567890,"format":"int64","type":"integer","x-go-name":"Created"},"framework":{"description":"Framework used by the site","example":"drupal8","type":"string","x-go-name":"Framework"},"frozen":{"description":"Whether the site is frozen","example":false,"type":"boolean","x-go-name":"Frozen"},"holder_id":{"description":"UUID of the holder entity","example":"holder-uuid-456","type":"string","x-go-name":"HolderID"},"holder_type":{"description":"Type of entity holding the site (user or organization)","example":"organization","type":"string","x-go-name":"HolderType"},"id":{"description":"Site UUID","example":"99f1ccb6-4827-4787-ba84-c2af3ed45cf7","type":"string","x-go-name":"ID"},"label":{"description":"Site display label","example":"My Awesome Site","type":"string","x-go-name":"Label"},"last_frozen_at":{"description":"Unix timestamp when site was last frozen","example":1234567890,"format":"int64","type":"integer","x-go-name":"LastFrozenAt"},"max_num_multidevs":{"description":"Maximum number of multidev environments allowed","example":10,"format":"int64","type":"integer","x-go-name":"MaxNumMultidevs"},"name":{"description":"Site machine name","example":"my-site","type":"string","x-go-name":"Name"},"organization":{"description":"Organization UUID that owns the site","example":"org-uuid-123","type":"string","x-go-name":"Organization"},"owner":{"description":"UUID of the site owner","example":"owner-uuid-789","type":"string","x-go-name":"Owner"},"plan_name":{"description":"Site's service plan name","example":"free","type":"string","x-go-name":"PlanName"},"region":{"description":"Geographic region where the site is hosted","example":"United States","type":"string","x-go-name":"Region"},"upstream":{"$ref":"#/definitions/SiteUpstream"}},"required":["id","name","label","created","framework"],"type":"object","x-go-name":"SiteInfo","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites"},"SiteAuthorizations":{"description":"SiteAuthorizations represents the permissions a user has on a site","properties":{"can_switch_upstream":{"description":"Whether the user can switch the site's upstream","example":true,"type":"boolean","x-go-name":"CanSwitchUpstream"}},"required":["can_switch_upstream"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/authorizations"},"SiteMembership":{"description":"Matches old API structure with id at top level and nested site object.","properties":{"id":{"description":"Membership/Site UUID (used as collection item ID by Terminus)","example":"12345678-1234-1234-1234-123456789012","type":"string","x-go-name":"ID"},"site":{"$ref":"#/definitions/MembershipSite"}},"required":["id","site"],"title":"SiteMembership represents a minimal site membership for alias generation.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/memberships"},"SiteNameLookup":{"properties":{"id":{"description":"Site UUID","example":"11111111-1111-1111-1111-111111111111","type":"string","x-go-name":"ID"},"name":{"description":"Site name","example":"my-awesome-site","type":"string","x-go-name":"Name"}},"title":"SiteNameLookup represents the response from looking up a site by name.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sitenames"},"SiteOrganizationMembership":{"description":"SiteOrganizationMembership represents an organization's association with a site","properties":{"id":{"description":"Unique identifier for this membership","example":"mem-123abc","type":"string","x-go-name":"ID"},"organization":{"$ref":"#/definitions/Organization"},"role":{"description":"Role of the organization in relation to the site","example":"team_member","type":"string","x-go-name":"Role"}},"required":["id","organization"],"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/organizations"},"SitePlan":{"properties":{"billing_cycle":{"description":"Billing cycle (monthly/annual)","example":"annual","type":"string","x-go-name":"BillingCycle"},"name":{"description":"Plan display name","example":"Performance Small","type":"string","x-go-name":"Name"},"price":{"description":"Plan price in cents","example":0,"format":"int64","type":"integer","x-go-name":"Price"},"sku":{"description":"Plan SKU identifier","example":"plan-performance_small-contract-annual-1","type":"string","x-go-name":"SKU"}},"required":["name"],"title":"SitePlan represents a site's plan information.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/plan"},"SiteUpstream":{"description":"SiteUpstream represents upstream repository information","properties":{"id":{"description":"Upstream repository ID or product ID","example":"drupal-recommended","type":"string","x-go-name":"ID"},"label":{"description":"Human-readable upstream label","example":"Drupal (Latest Version)","type":"string","x-go-name":"Label"},"url":{"description":"Upstream repository URL","example":"https://github.com/pantheon-upstreams/drupal-recommended","type":"string","x-go-name":"URL"}},"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites"},"SiteUserMembership":{"description":"SiteUserMembership represents a team member's relationship to a site\nThis is the public API model with strict field minimization","properties":{"email":{"description":"User's email address","example":"user@example.com","type":"string","x-go-name":"Email"},"full_name":{"description":"User's full name","example":"John Doe","type":"string","x-go-name":"FullName"},"id":{"description":"Membership identifier (same as user_id for collection lookups)","example":"17f91e87-3807-4c93-837a-78f388bfbb5c","type":"string","x-go-name":"ID"},"is_owner":{"description":"Whether this user is the site owner\nThis is computed server-side by comparing user_id to site owner_id","example":false,"type":"boolean","x-go-name":"IsOwner"},"profile":{"$ref":"#/definitions/SiteUserProfile"},"role":{"description":"User's role on the site","example":"team_member","type":"string","x-go-name":"Role"},"user_id":{"description":"User's unique identifier (UUID)","example":"17f91e87-3807-4c93-837a-78f388bfbb5c","type":"string","x-go-name":"UserID"}},"type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/users"},"SiteUserProfile":{"description":"The model name is qualified because pkg/api/v0/users declares a UserProfile too,\nand go-swagger keys definitions by bare name: sharing one makes generation pick a\ndifferent winner each run.","properties":{"firstname":{"description":"User's first name","example":"Jane","type":"string","x-go-name":"FirstName"},"lastname":{"description":"User's last name","example":"Doe","type":"string","x-go-name":"LastName"}},"title":"UserProfile contains the minimal user profile information needed for team listing","type":"object","x-go-name":"UserProfile","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/memberships/users"},"SiteWorkflowCreationRequest":{"properties":{"params":{"additionalProperties":{},"description":"Workflow parameters (varies by workflow type)","type":"object","x-go-name":"Params"},"type":{"description":"Workflow type (e.g., add_site_user_membership, remove_site_user_membership)","example":"add_site_user_membership","type":"string","x-go-name":"Type"}},"required":["type"],"title":"WorkflowCreationRequest represents a request to create a new site workflow.","type":"object","x-go-name":"WorkflowCreationRequest","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"},"SiteWorkflowCreationResponse":{"properties":{"active_description":{"description":"Active description of current workflow step","example":"Starting workflow","type":"string","x-go-name":"ActiveDescription"},"created_at":{"description":"Creation timestamp","example":1234567890,"format":"double","type":"number","x-go-name":"CreatedAt"},"id":{"description":"Workflow ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"ID"},"number_of_tasks":{"description":"Number of tasks in the workflow","example":5,"format":"int64","type":"integer","x-go-name":"NumberOfTasks"},"type":{"description":"Workflow type","example":"add_site_user_membership","type":"string","x-go-name":"Type"}},"required":["id"],"title":"WorkflowCreationResponse represents the response from creating a new site workflow.","type":"object","x-go-name":"WorkflowCreationResponse","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"},"TagAssignment":{"description":"Used in the request body for updating organization tags.","properties":{"sites":{"description":"List of site UUIDs to assign this tag to","example":["12345678-1234-1234-1234-123456789012"],"items":{"type":"string"},"type":"array","x-go-name":"Sites"}},"required":["sites"],"title":"TagAssignment represents a tag with its associated site IDs.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/tags"},"UpdateTagsRequest":{"additionalProperties":{"$ref":"#/definitions/TagAssignment"},"description":"The map key is the tag name, and the value contains the sites to assign to that tag.","title":"UpdateTagsRequest represents the request body for updating organization tags.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/organizations/tags"},"Upstream":{"properties":{"description":{"description":"Upstream description","example":"WordPress on Pantheon","type":"string","x-go-name":"Description"},"framework":{"description":"Framework type","enum":["drupal","drupal8","wordpress","nodejs"],"example":"wordpress","type":"string","x-go-name":"Framework"},"id":{"description":"Upstream UUID","example":"e8fe8550-1ab9-4964-8838-2b9abdccf4bf","type":"string","x-go-name":"ID"},"label":{"description":"Upstream name","example":"WordPress","type":"string","x-go-name":"Label"},"machine_name":{"description":"Machine-readable name","example":"wordpress","type":"string","x-go-name":"MachineName"},"organization_id":{"description":"Organization ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"OrganizationID"},"repository_url":{"description":"Repository URL","example":"https://github.com/pantheon-systems/WordPress","type":"string","x-go-name":"RepositoryURL"},"type":{"description":"Upstream type","enum":["core","custom"],"example":"core","type":"string","x-go-name":"Type"}},"required":["id"],"title":"Upstream represents an upstream repository.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/upstreams"},"UpstreamCommit":{"properties":{"author":{"description":"Commit author","example":"Jane Developer","type":"string","x-go-name":"Author"},"datetime":{"description":"Commit timestamp","example":"2025-01-15 14:30:00","type":"string","x-go-name":"Datetime"},"hash":{"description":"Commit SHA hash","example":"abc123def456","type":"string","x-go-name":"Hash"},"message":{"description":"Commit message","example":"Update dependencies","type":"string","x-go-name":"Message"}},"required":["hash","datetime","message","author"],"title":"UpstreamCommit represents a single upstream update commit.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/upstream"},"UpstreamList":{"properties":{"upstreams":{"description":"List of upstreams","items":{"$ref":"#/definitions/Upstream"},"type":"array","x-go-name":"Upstreams"}},"required":["upstreams"],"title":"UpstreamList represents a list of upstreams.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/upstreams"},"UpstreamUpdatesList":{"properties":{"behind":{"description":"Number of commits behind the upstream","example":4,"format":"int64","type":"integer","x-go-name":"Behind"},"commits":{"description":"List of upstream commits available for update","items":{"$ref":"#/definitions/UpstreamCommit"},"type":"array","x-go-name":"Commits"},"environments":{"additionalProperties":{"$ref":"#/definitions/EnvironmentUpstreamStatus"},"description":"Per-environment upstream status","example":{"dev":{"is_up_to_date_with_upstream":true},"live":{"is_up_to_date_with_upstream":false},"test":{"is_up_to_date_with_upstream":false}},"type":"object","x-go-name":"Environments"},"has_code":{"description":"Whether the site has code (vs empty repository)","example":true,"type":"boolean","x-go-name":"HasCode"}},"required":["commits","has_code","behind"],"title":"UpstreamUpdatesList represents the list of available upstream updates.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/upstream"},"UserOrganizationProfile":{"description":"The model name is qualified because pkg/api/v0/sites/memberships/organizations\ndeclares an OrganizationProfile too, and go-swagger keys definitions by bare\nname: sharing one makes generation pick a different winner each run.","properties":{"machine_name":{"description":"Organization machine name (slugified)","example":"my-organization","type":"string","x-go-name":"MachineName"},"name":{"description":"Organization human-readable name","example":"My Organization","type":"string","x-go-name":"Name"}},"required":["machine_name","name"],"title":"OrganizationProfile represents the organization profile information.","type":"object","x-go-name":"OrganizationProfile","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/memberships"},"UserProfile":{"description":"Only includes fields actively used by Terminus commands.","properties":{"firstname":{"description":"First name","example":"John","type":"string","x-go-name":"Firstname"},"lastname":{"description":"Last name","example":"Doe","type":"string","x-go-name":"Lastname"}},"required":["firstname","lastname"],"title":"UserProfile represents profile fields in the user response.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users"},"UserResponse":{"description":"Only includes fields actively used by Terminus commands (auth:whoami).","properties":{"email":{"description":"Email address","example":"user@example.com","type":"string","x-go-name":"Email"},"id":{"description":"User ID","example":"17f91e87-3807-4c93-837a-78f388bfbb5c","type":"string","x-go-name":"ID"},"profile":{"$ref":"#/definitions/UserProfile"}},"required":["id","email","profile"],"title":"UserResponse represents the public API response for a user.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users"},"UserWorkflowCreationRequest":{"properties":{"params":{"additionalProperties":{},"description":"Optional workflow parameters","type":"object","x-go-name":"Params"},"type":{"description":"Type of workflow to create","example":"create_site","type":"string","x-go-name":"Type"}},"required":["type"],"title":"WorkflowCreationRequest represents a request to create a new user workflow.","type":"object","x-go-name":"WorkflowCreationRequest","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/workflows"},"UserWorkflowCreationResponse":{"properties":{"active_description":{"description":"Active description of current workflow step","example":"Creating site","type":"string","x-go-name":"ActiveDescription"},"id":{"description":"Workflow ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"ID"},"number_of_tasks":{"description":"Number of tasks in the workflow","example":5,"format":"int64","type":"integer","x-go-name":"NumberOfTasks"}},"required":["id"],"title":"WorkflowCreationResponse represents the response after creating a user workflow.","type":"object","x-go-name":"WorkflowCreationResponse","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/workflows"},"UserWorkflowFinalTask":{"properties":{"messages":{"additionalProperties":{"$ref":"#/definitions/UserWorkflowFinalTaskMessage"},"description":"Detailed messages from the final task","type":"object","x-go-name":"Messages"},"reason":{"description":"Reason for failure (if workflow failed)","example":"Site deletion failed","type":"string","x-go-name":"Reason"}},"title":"FinalTask represents the final task details when a workflow completes.","type":"object","x-go-name":"FinalTask","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/workflows"},"UserWorkflowFinalTaskMessage":{"properties":{"level":{"description":"Message level (info, warning, error)","example":"info","type":"string","x-go-name":"Level"},"message":{"description":"Message content","example":"Site has been deleted successfully","type":"string","x-go-name":"Message"}},"required":["message","level"],"title":"FinalTaskMessage represents a message from the final task.","type":"object","x-go-name":"FinalTaskMessage","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/workflows"},"UserWorkflowStatusResponse":{"properties":{"active_description":{"description":"Active description of the workflow","example":"Deleting site","type":"string","x-go-name":"ActiveDescription"},"final_task":{"$ref":"#/definitions/UserWorkflowFinalTask"},"result":{"description":"Result of the workflow (succeeded, failed, or null if still running)","example":"succeeded","type":"string","x-go-name":"Result"},"step":{"description":"Current step number in the workflow","example":3,"format":"int64","type":"integer","x-go-name":"Step"}},"title":"WorkflowStatusResponse represents the status information for a user workflow.","type":"object","x-go-name":"WorkflowStatusResponse","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/users/workflows"},"WorkflowCreationRequest":{"properties":{"params":{"additionalProperties":{},"description":"Workflow parameters","type":"object","x-go-name":"Params"},"type":{"description":"Workflow type (e.g., \"do_backup\")","example":"do_backup","type":"string","x-go-name":"Type"}},"required":["type"],"title":"WorkflowCreationRequest represents the request body for creating a workflow.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/internal/handlers/v0/sites/environments/workflows"},"WorkflowCreationResponse":{"properties":{"active_description":{"description":"Active description of the workflow","example":"Creating database backup","type":"string","x-go-name":"ActiveDescription"},"id":{"description":"Workflow ID","example":"12345678-1234-1234-1234-123456789012","type":"string","x-go-name":"ID"},"number_of_tasks":{"description":"Number of tasks in the workflow","example":5,"format":"int64","type":"integer","x-go-name":"NumberOfTasks"}},"required":["id"],"title":"WorkflowCreationResponse represents the response after creating a workflow.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/environments/workflows"},"WorkflowInfo":{"properties":{"created_at":{"description":"Workflow creation timestamp","example":1234567890,"format":"double","type":"number","x-go-name":"CreatedAt"},"description":{"description":"Workflow description","example":"Automated backup for the \"dev\" environment","type":"string","x-go-name":"Description"},"environment":{"description":"Environment name","example":"dev","type":"string","x-go-name":"Environment"},"finished_at":{"description":"Workflow completion timestamp","example":1234567900,"format":"double","type":"number","x-go-name":"FinishedAt"},"id":{"description":"Workflow ID","example":"12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"ID"},"result":{"description":"Workflow result status","enum":["succeeded","failed","running"],"example":"succeeded","type":"string","x-go-name":"Result"},"started_at":{"description":"Workflow start timestamp","example":1234567891,"format":"double","type":"number","x-go-name":"StartedAt"},"total_time":{"description":"Total elapsed time in seconds","example":123.45,"format":"double","type":"number","x-go-name":"TotalTime"},"type":{"description":"Workflow type identifier","example":"automated_backup","type":"string","x-go-name":"Type"},"user_email":{"description":"Email of user who initiated the workflow","example":"user@example.com","type":"string","x-go-name":"UserEmail"}},"required":["id"],"title":"WorkflowInfo represents information about a workflow.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"},"WorkflowList":{"properties":{"workflows":{"description":"List of workflows","items":{"$ref":"#/definitions/WorkflowInfo"},"type":"array","x-go-name":"Workflows"}},"required":["workflows"],"title":"WorkflowList represents a list of workflows.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"},"WorkflowLogOperation":{"description":"Only exposes fields actually used by workflow:info:logs command (4 fields).","properties":{"description":{"description":"Operation description","example":"Quicksilver script execution","type":"string","x-go-name":"Description"},"environment":{"description":"Environment where operation ran","example":"dev","type":"string","x-go-name":"Environment"},"log_output":{"description":"Log output from the operation","example":"Script output here...","type":"string","x-go-name":"LogOutput"},"run_time":{"description":"Operation execution time in seconds","example":2.5,"format":"double","type":"number","x-go-name":"RunTime"}},"required":["description","environment","log_output"],"title":"WorkflowOperation represents a Quicksilver operation with log output.","type":"object","x-go-name":"WorkflowOperation","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows/logs"},"WorkflowLogsResponse":{"properties":{"has_logs":{"description":"Indicates whether any logs exist for this workflow","example":true,"type":"boolean","x-go-name":"HasLogs"},"operations":{"description":"List of operations that have log output","items":{"$ref":"#/definitions/WorkflowLogOperation"},"type":"array","x-go-name":"Operations"}},"required":["has_logs","operations"],"title":"WorkflowLogsResponse represents the response for workflow operations with logs.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows/logs"},"WorkflowOperation":{"properties":{"description":{"description":"Operation description","example":"Deploy pantheon.yml","type":"string","x-go-name":"Description"},"id":{"description":"Operation ID","example":"op-12345678-90ab-cdef-1234-567890abcdef","type":"string","x-go-name":"ID"},"log_output":{"description":"Log output from the operation (when available)","example":"Successfully deployed configuration","type":"string","x-go-name":"LogOutput"},"result":{"description":"Operation result","enum":["succeeded","failed","running"],"example":"succeeded","type":"string","x-go-name":"Result"},"run_time":{"description":"Operation runtime in seconds","example":12.34,"format":"double","type":"number","x-go-name":"RunTime"},"type":{"description":"Operation type","example":"platform","type":"string","x-go-name":"Type"}},"required":["id"],"title":"WorkflowOperation represents a single operation within a workflow.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"},"WorkflowStatusResponse":{"properties":{"active_description":{"description":"Active description of current workflow step","example":"Backing up database","type":"string","x-go-name":"ActiveDescription"},"final_task":{"$ref":"#/definitions/FinalTask"},"operations":{"description":"List of operations within the workflow","items":{"$ref":"#/definitions/WorkflowOperation"},"type":"array","x-go-name":"Operations"},"result":{"description":"Workflow result status","enum":["succeeded","failed","running"],"example":"succeeded","type":"string","x-go-name":"Result"},"step":{"description":"Current step number in workflow execution","example":3,"format":"int64","type":"integer","x-go-name":"Step"}},"title":"WorkflowStatusResponse represents the current status of a workflow.","type":"object","x-go-package":"github.com/pantheon-systems/pantheonapi-public/pkg/api/v0/sites/workflows"}},"host":"api.pantheon.io","info":{"contact":{"email":"support@pantheon.io","name":"Pantheon Platform Team"},"description":"This service provides public-facing API endpoints for Pantheon.","termsOfService":"https://pantheon.io/terms-service","title":"Pantheon Public API Service.","version":"0.12.1"},"paths":{"/v0/authorize/machine-token":{"post":{"description":"Exchanges a machine token for a session token.\nThis endpoint does not require an Authorization header.\nReturns a session token that can be used as a Bearer token in subsequent API calls.","operationId":"AuthorizeMachineToken","parameters":[{"description":"Machine token authentication request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/MachineTokenRequest"}}],"responses":{"200":{"$ref":"#/responses/SessionResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"Authorize Machine Token","tags":["auth"]}},"/v0/organizations/{org_id}/memberships/sites":{"get":{"description":"Returns a list of all site memberships for the specified organization.\n\nPagination is handled via query parameters (limit and start).","operationId":"GetOrganizationSiteMemberships","parameters":[{"description":"Organization ID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Maximum number of results to return (1-100)","format":"int64","in":"query","name":"limit","type":"integer","x-go-name":"Limit"},{"description":"Pagination cursor. Use the lowercase site UUID of the last item on the\nprevious page. Cursors expire five minutes after the page that produced\nthem; an expired or unrecognized cursor returns the first page.","in":"query","name":"start","type":"string","x-go-name":"Start"}],"responses":{"200":{"$ref":"#/responses/OrganizationSiteMembershipsArrayResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"Get Organization Site Memberships","tags":["organizations"]}},"/v0/organizations/{org_id}/memberships/sites/{site_id}":{"delete":{"description":"Removes a site from an organization by creating a remove_organization_site_membership workflow.","operationId":"RemoveOrganizationSite","parameters":[{"description":"Organization ID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Site ID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/RemoveOrganizationSiteWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Site from Organization","tags":["organizations"]},"get":{"description":"Returns information about a specific site's membership in an organization, including tags.","operationId":"GetOrganizationSiteMembership","parameters":[{"description":"Organization ID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Site ID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/OrganizationSiteMembershipResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"Get Organization Site Membership","tags":["organizations"]}},"/v0/organizations/{org_id}/memberships/users":{"get":{"description":"Returns a list of user memberships for the specified organization.","operationId":"getOrganizationUserMemberships","parameters":[{"description":"Organization identifier","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"}],"responses":{"200":{"$ref":"#/responses/OrganizationUserMembershipsArrayResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"List organization user memberships","tags":["organizations"]},"post":{"description":"Adds a member to an organization by creating an add_organization_user_membership workflow.","operationId":"AddOrganizationMember","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Add organization member request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/AddOrganizationMemberRequest"}}],"responses":{"200":{"$ref":"#/responses/AddOrganizationMemberWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Add Organization Member","tags":["organizations"]}},"/v0/organizations/{org_id}/memberships/users/{user_id}":{"delete":{"description":"Removes a member from an organization by creating a remove_organization_user_membership workflow.","operationId":"RemoveOrganizationMember","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"User UUID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"}],"responses":{"200":{"$ref":"#/responses/RemoveOrganizationMemberWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Organization Member","tags":["organizations"]}},"/v0/organizations/{org_id}/memberships/users/{user_id}/role":{"put":{"description":"Changes an organization member's role by creating an update_organization_user_membership workflow.","operationId":"ChangeOrganizationMemberRole","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"User UUID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"Change organization member role request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/ChangeOrganizationMemberRoleRequest"}}],"responses":{"200":{"$ref":"#/responses/ChangeOrganizationMemberRoleWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Change Organization Member Role","tags":["organizations"]}},"/v0/organizations/{org_id}/tags":{"put":{"description":"Updates tag assignments for sites within an organization.","operationId":"UpdateOrganizationTags","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Tag assignments mapping tag names to site UUIDs","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/UpdateTagsRequest"}}],"responses":{"204":{"$ref":"#/responses/noContentResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Update Organization Tags","tags":["organizations"]}},"/v0/organizations/{org_id}/tags/{tag}/sites":{"delete":{"description":"Removes a specific tag from specified sites within an organization.","operationId":"RemoveTagFromSites","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Tag name to remove","in":"path","name":"tag","required":true,"type":"string","x-go-name":"Tag"},{"description":"Sites to remove the tag from","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/RemoveTagRequest"}}],"responses":{"204":{"$ref":"#/responses/noContentResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Tag from Sites","tags":["organizations"]}},"/v0/organizations/{org_id}/upstreams":{"get":{"description":"Lists all upstreams belonging to a specific organization.\nReturns information about upstream repositories owned by the organization.","operationId":"ListOrganizationUpstreams","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"}],"responses":{"200":{"$ref":"#/responses/OrganizationUpstreamListResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Organization Upstreams","tags":["organizations"]}},"/v0/organizations/{org_id}/workflows":{"post":{"description":"Creates a new workflow for an organization (e.g., add/remove user).\nReturns the workflow ID for status polling.","operationId":"CreateOrganizationWorkflow","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Workflow creation request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/OrganizationWorkflowCreationRequest"}}],"responses":{"201":{"$ref":"#/responses/OrganizationWorkflowCreationResponseWrapper"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Create Organization Workflow","tags":["organizations"]}},"/v0/organizations/{org_id}/workflows/{workflow_id}":{"get":{"description":"Returns the status of an organization workflow.\nUsed to poll workflow completion after creation.","operationId":"GetOrganizationWorkflowStatus","parameters":[{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"},{"description":"Workflow UUID","in":"path","name":"workflow_id","required":true,"type":"string","x-go-name":"WorkflowID"}],"responses":{"200":{"$ref":"#/responses/OrganizationWorkflowStatusResponseWrapper"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Organization Workflow Status","tags":["organizations"]}},"/v0/site-names/{site_name}":{"get":{"description":"Resolves a site name to its UUID.","operationId":"getSiteByName","parameters":[{"description":"Site name","in":"path","name":"site_name","required":true,"type":"string","x-go-name":"SiteName"}],"produces":["application/json"],"responses":{"200":{"$ref":"#/responses/siteNameLookupResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get site ID by name","tags":["sites"]}},"/v0/sites":{"post":{"description":"Creates a new site by creating a create_site workflow with deploy_product parameter.\nThis triggers a single workflow that creates the site and deploys the specified upstream.","operationId":"CreateSite","parameters":[{"description":"Create site request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/CreateSiteRequest"}}],"responses":{"200":{"$ref":"#/responses/CreateSiteWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Create Site","tags":["sites"]}},"/v0/sites/{site_id}":{"delete":{"description":"Deletes a site by creating a delete_site workflow.","operationId":"DeleteSite","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/DeleteSiteWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Delete Site","tags":["sites"]},"get":{"description":"Retrieves detailed information about a specific Pantheon site.","operationId":"GetSite","parameters":[{"description":"Site UUID or machine name","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/SiteInfoResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Site Information","tags":["sites"]}},"/v0/sites/{site_id}/addons/redis":{"delete":{"description":"Disables Redis for a site by creating a disable_addon workflow.","operationId":"DisableRedis","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/DisableRedisWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Disable Redis","tags":["sites"]},"put":{"description":"Enables Redis for a site by creating an enable_addon workflow.","operationId":"EnableRedis","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/EnableRedisWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Enable Redis","tags":["sites"]}},"/v0/sites/{site_id}/addons/solr":{"delete":{"description":"Disables Solr for a site by creating a disable_addon workflow.","operationId":"DisableSolr","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/DisableSolrWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Disable Solr","tags":["sites"]},"put":{"description":"Enables Solr for a site by creating an enable_addon workflow.","operationId":"EnableSolr","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/EnableSolrWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Enable Solr","tags":["sites"]}},"/v0/sites/{site_id}/authorizations":{"get":{"description":"Returns the authorizations (permissions) the authenticated user has on a specific site.","operationId":"getSiteAuthorizations","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"$ref":"#/responses/siteAuthorizationsResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"schemes":["https"],"security":[{"bearer":[]}],"summary":"Get Site Authorizations","tags":["sites"]}},"/v0/sites/{site_id}/available-plans":{"get":{"description":"Retrieves all plans available for a site to upgrade or downgrade to.\n\nThis endpoint returns only the fields actively used by Terminus commands (plan:list)\nto minimize data exposure and protect internal billing information.","operationId":"SiteAvailablePlansGet","parameters":[{"description":"Site ID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/AvailablePlanListResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Available Plans for Site","tags":["sites"]}},"/v0/sites/{site_id}/code-tips":{"get":{"description":"Retrieves the list of Git branches for a site.\nReturns a map where keys are branch names and values are commit SHAs.","operationId":"ListBranches","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/BranchListResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Git Branches","tags":["sites"]}},"/v0/sites/{site_id}/environments":{"get":{"description":"Lists all environments for a specific Pantheon site.\n\nReturns a map of environments keyed by environment ID (e.g., \"dev\", \"test\", \"live\").\nThis format matches the old API for Terminus compatibility.","operationId":"ListEnvironments","parameters":[{"description":"The ID of the site","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/EnvironmentMapResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Site Environments","tags":["sites"]},"post":{"description":"Creates a new multidev environment for a site.","operationId":"CreateMultidev","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Create multidev request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/CreateMultidevRequest"}}],"responses":{"200":{"$ref":"#/responses/CreateMultidevWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Create Multidev Environment","tags":["sites"]}},"/v0/sites/{site_id}/environments/dev/merge":{"post":{"description":"Merges a multidev environment into the dev environment.","operationId":"MergeToDev","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Merge to dev request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/MergeToDevRequest"}}],"responses":{"200":{"$ref":"#/responses/MergeToDevWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Merge Multidev to Dev","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}":{"delete":{"description":"Deletes a multidev environment.","operationId":"DeleteMultidev","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Delete multidev request","in":"body","name":"Body","schema":{"$ref":"#/definitions/DeleteMultidevRequest"}}],"responses":{"200":{"$ref":"#/responses/DeleteMultidevWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Delete Multidev Environment","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/backups":{"post":{"description":"Creates a new backup for an environment.","operationId":"CreateBackup","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Backup creation request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/BackupCreationRequest"}}],"responses":{"200":{"$ref":"#/responses/BackupWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Create Backup","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/backups/catalog":{"get":{"description":"Returns the catalog of all backups for the specified environment.\nThe response is a map where keys are backup IDs and values contain backup metadata.","operationId":"getBackupCatalog","parameters":[{"description":"Site ID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"produces":["application/json"],"responses":{"200":{"$ref":"#/responses/backupCatalogResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get backup catalog","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/backups/schedule":{"get":{"description":"Retrieves the backup schedule configuration for an environment.\nReturns an array of 7 day objects (index 0=Sunday through 6=Saturday),\neach containing the hour and TTL for backups on that day.","operationId":"GetBackupSchedule","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"responses":{"200":{"$ref":"#/responses/BackupScheduleResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Backup Schedule","tags":["sites"]},"put":{"description":"Sets the backup schedule for all days of the week.\nAccepts an array of 7 day objects (index 0=Sunday through 6=Saturday),\neach containing the hour and TTL for backups on that day.\nThis creates a workflow to update the backup schedule configuration.","operationId":"UpdateBackupSchedule","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Backup schedule for all 7 days (Sunday=0 through Saturday=6)","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/BackupScheduleRequest"}}],"responses":{"200":{"$ref":"#/responses/updateBackupScheduleResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Update Backup Schedule","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/backups/schedule/{day}":{"delete":{"description":"Deletes the backup schedule for a specific day of the week.\nDay parameter should be 0-6 where 0=Sunday, 1=Monday, ..., 6=Saturday.","operationId":"DeleteBackupScheduleDay","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Day of week (0=Sunday, 6=Saturday)","in":"path","name":"day","required":true,"type":"string","x-go-name":"Day"}],"responses":{"204":{"description":" Backup schedule day deleted successfully"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Delete Backup Schedule Day","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/backups/{backup_id}/restore":{"post":{"description":"Restores a backup for an environment.","operationId":"RestoreBackup","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Backup ID","in":"path","name":"backup_id","required":true,"type":"string","x-go-name":"BackupID"},{"description":"Backup restore request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/BackupRestoreRequest"}}],"responses":{"200":{"$ref":"#/responses/RestoreBackupWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Restore Backup","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/backups/{backup_id}/{element}/download-url":{"post":{"description":"Generates a signed download URL for a specific backup file.\nThe URL is time-limited and can be used to download the backup directly.","operationId":"GetBackupDownloadURL","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Backup ID (folder name from catalog)","in":"path","name":"backup_id","required":true,"type":"string","x-go-name":"BackupID"},{"description":"Backup element type","enum":["code","files","database"],"in":"path","name":"element","required":true,"type":"string","x-go-name":"Element"}],"responses":{"200":{"$ref":"#/responses/DownloadURLResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Backup Download URL","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/build/updates":{"get":{"description":"Returns the list of composer dependencies that have been added, updated, or removed.","operationId":"getBuildUpdates","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID (e.g., dev, test, live, or multidev name)","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"responses":{"200":{"$ref":"#/responses/buildUpdatesResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"Get composer build updates for an environment","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/cache/clear":{"post":{"description":"Clears the cache for an environment.","operationId":"ClearCache","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Cache clear request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/ClearCacheRequest"}}],"responses":{"200":{"$ref":"#/responses/ClearCacheWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Clear Environment Cache","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/code/commit":{"post":{"description":"Commits changes made via SFTP to the git repository.","operationId":"Commit","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Commit request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/CommitRequest"}}],"responses":{"200":{"$ref":"#/responses/CommitWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Commit Environment Changes","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/code/rebuild":{"post":{"description":"Rebuilds environment code by creating a sync_code_with_build workflow. This is an advanced troubleshooting operation.","operationId":"RebuildCode","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"}],"responses":{"200":{"$ref":"#/responses/RebuildCodeWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Rebuild Environment Code","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/commits":{"get":{"description":"Retrieves Git commit history for an environment.","operationId":"GetCommits","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"responses":{"200":{"$ref":"#/responses/CommitsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Commits","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/connection-mode":{"put":{"description":"Sets the connection mode by creating either enable_git_mode or enable_on_server_development workflow.","operationId":"SetConnectionMode","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"},{"in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/SetConnectionModeRequest"}}],"responses":{"200":{"$ref":"#/responses/SetConnectionModeWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Set Connection Mode","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/database/clone":{"post":{"description":"Clones the database from another environment.","operationId":"CloneDatabase","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Clone database request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/CloneDatabaseRequest"}}],"responses":{"200":{"$ref":"#/responses/CloneDatabaseWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Clone Environment Database","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/deploy":{"post":{"description":"Deploys code to an environment.","operationId":"DeployEnvironment","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Deploy request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/DeployRequest"}}],"responses":{"200":{"$ref":"#/responses/DeployWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Deploy Environment","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/diffstat":{"get":{"description":"Retrieves git diff statistics for uncommitted changes in SFTP mode.\nReturns a map of filenames to their diff statistics (status, additions, deletions).\nOnly works on development environments in SFTP mode.\nReturns empty response when no uncommitted changes exist.","operationId":"GetDiffStat","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"responses":{"200":{"$ref":"#/responses/DiffStatResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Git Diff Statistics","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/domains":{"get":{"description":"Retrieves all domains associated with an environment.","operationId":"GetDomains","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"responses":{"200":{"$ref":"#/responses/DomainsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Domains","tags":["sites"]},"post":{"description":"Adds a custom domain to an environment.","operationId":"AddDomain","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Request body containing the domain to add","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/AddDomainRequest"}}],"responses":{"200":{"$ref":"#/responses/AddDomainResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Add Domain","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/domains/dns":{"get":{"description":"Retrieves DNS recommendations for custom domains in an environment.","operationId":"GetDNSRecommendations","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"responses":{"200":{"$ref":"#/responses/DNSRecommendationsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get DNS Recommendations","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/domains/primary":{"delete":{"description":"Removes the primary domain by creating a set_primary_domain workflow with null value.","operationId":"RemovePrimaryDomain","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"}],"responses":{"200":{"$ref":"#/responses/RemovePrimaryDomainWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Primary Domain","tags":["sites"]},"put":{"description":"Sets the primary domain by creating a set_primary_domain workflow.","operationId":"AddPrimaryDomain","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"},{"in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/AddPrimaryDomainRequest"}}],"responses":{"200":{"$ref":"#/responses/AddPrimaryDomainWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Add Primary Domain","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/domains/{domain}":{"delete":{"description":"Removes a domain from an environment.","operationId":"RemoveDomain","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Domain name to remove (e.g., \"example.com\")","in":"path","name":"domain","required":true,"type":"string","x-go-name":"Domain"}],"responses":{"200":{"$ref":"#/responses/RemoveDomainResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Domain","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/files/clone":{"post":{"description":"Clones files from another environment.","operationId":"CloneFiles","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Clone files request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/CloneFilesRequest"}}],"responses":{"200":{"$ref":"#/responses/CloneFilesWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Clone Environment Files","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/import/database":{"post":{"description":"Imports a database from a URL.","operationId":"ImportDatabase","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Import database request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/ImportDatabaseRequest"}}],"responses":{"200":{"$ref":"#/responses/ImportDatabaseWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Import Database","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/import/files":{"post":{"description":"Imports files from a URL.","operationId":"ImportFiles","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Import files request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/ImportFilesRequest"}}],"responses":{"200":{"$ref":"#/responses/ImportFilesWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Import Files","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/lock":{"delete":{"description":"Disables environment lock by creating an unlock_environment workflow.","operationId":"DisableEnvironmentLock","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"}],"responses":{"200":{"$ref":"#/responses/DisableEnvironmentLockWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Disable Environment Lock","tags":["sites"]},"put":{"description":"Enables environment lock by creating a lock_environment workflow.","operationId":"EnableEnvironmentLock","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"},{"in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/EnableLockRequest"}}],"responses":{"200":{"$ref":"#/responses/EnableEnvironmentLockWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Enable Environment Lock","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/merge-from-dev":{"post":{"description":"Merges the dev environment into a multidev environment.","operationId":"MergeFromDev","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID (multidev)","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Merge from dev request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/MergeFromDevRequest"}}],"responses":{"200":{"$ref":"#/responses/MergeFromDevWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Merge Dev into Multidev","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/metrics":{"get":{"description":"Retrieves traffic metrics (pages served, visits, cache performance) for an environment.\nReturns timeseries data showing daily metrics over the specified duration.\nThe response includes cache hit/miss data for performance analysis.","operationId":"GetMetrics","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"default":"28d","description":"Duration for metrics data (e.g., \"28d\", \"12w\", \"12m\")","in":"query","name":"duration","type":"string","x-go-name":"Duration"}],"responses":{"200":{"$ref":"#/responses/MetricsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Environment Metrics","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/random-seed/rotate":{"post":{"description":"Rotates the environment random seed by creating a rotate_environment_randseed workflow. This is a security maintenance operation.","operationId":"RotateRandomSeed","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"}],"responses":{"200":{"$ref":"#/responses/RotateRandomSeedWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Rotate Environment Random Seed","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/settings":{"get":{"description":"Returns environment settings for the specified environment.","operationId":"GetEnvironmentSettings","parameters":[{"description":"Site ID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"}],"responses":{"200":{"$ref":"#/responses/EnvironmentSettingsResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"Get Environment Settings","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/upstream/updates":{"post":{"description":"Applies available upstream updates to the environment.","operationId":"ApplyUpstreamUpdates","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Apply updates request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/ApplyUpdatesRequest"}}],"responses":{"200":{"$ref":"#/responses/ApplyUpstreamUpdatesWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Apply Upstream Updates","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/variables":{"get":{"description":"Retrieves environment variables for an environment.","operationId":"GetEnvironmentVariables","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"}],"responses":{"200":{"$ref":"#/responses/EnvironmentVariablesResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Environment Variables","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/wipe":{"post":{"description":"Wipes an environment by creating a wipe workflow. This is a destructive operation that removes all files and database content.","operationId":"WipeEnvironment","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvironmentID"}],"responses":{"200":{"$ref":"#/responses/WipeEnvironmentWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Wipe Environment","tags":["sites"]}},"/v0/sites/{site_id}/environments/{env_id}/workflows":{"post":{"description":"Creates a new workflow for an environment (e.g., backup, code deployment).","operationId":"CreateWorkflow","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Environment ID","in":"path","name":"env_id","required":true,"type":"string","x-go-name":"EnvID"},{"description":"Workflow creation request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/WorkflowCreationRequest"}}],"responses":{"200":{"$ref":"#/responses/WorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Create Workflow","tags":["sites"]}},"/v0/sites/{site_id}/import/site":{"post":{"description":"Imports a complete site from a URL to the dev environment.\nThis endpoint always targets the dev environment.","operationId":"ImportSiteAtSiteLevel","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Import site request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/ImportSiteRequest"}}],"responses":{"200":{"$ref":"#/responses/ImportSiteAtSiteLevelWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Import Site","tags":["sites"]}},"/v0/sites/{site_id}/label":{"put":{"description":"Sets the site label by creating a set_site_label workflow.","operationId":"SetSiteLabel","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/SetSiteLabelRequest"}}],"responses":{"200":{"$ref":"#/responses/SetSiteLabelWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Set Site Label","tags":["sites"]}},"/v0/sites/{site_id}/memberships/organizations":{"get":{"description":"Retrieves the list of organizations associated with a specific site.","operationId":"getSiteOrganizationMemberships","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/SiteOrganizationMembershipsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Site Organization Memberships","tags":["sites"]},"post":{"description":"Adds an organization to a site by creating an add_site_organization_membership workflow.","operationId":"addOrganization","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Add organization request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/AddOrganizationRequest"}}],"responses":{"200":{"$ref":"#/responses/AddOrganizationWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Add Organization","tags":["sites"]}},"/v0/sites/{site_id}/memberships/organizations/{org_id}":{"delete":{"description":"Removes an organization from a site by creating a remove_site_organization_membership workflow.","operationId":"removeOrganization","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Organization UUID","in":"path","name":"org_id","required":true,"type":"string","x-go-name":"OrgID"}],"responses":{"200":{"$ref":"#/responses/RemoveOrganizationWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Organization","tags":["sites"]}},"/v0/sites/{site_id}/memberships/users":{"get":{"description":"Retrieves the list of team members (user memberships) for a specific site.\n\nThe is_owner field is computed server-side by comparing user_id to site owner_id.","operationId":"getSiteUserMemberships","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/SiteUserMembershipsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Site Team Members","tags":["sites"]},"post":{"description":"Adds a team member to a site by creating an add_site_user_membership workflow.","operationId":"addTeamMember","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Add team member request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/AddTeamMemberRequest"}}],"responses":{"200":{"$ref":"#/responses/AddTeamMemberWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Add Team Member","tags":["sites"]}},"/v0/sites/{site_id}/memberships/users/{user_id}":{"delete":{"description":"Removes a team member from a site by creating a remove_site_user_membership workflow.","operationId":"removeTeamMember","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"User UUID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"}],"responses":{"200":{"$ref":"#/responses/RemoveTeamMemberWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Team Member","tags":["sites"]}},"/v0/sites/{site_id}/memberships/users/{user_id}/role":{"put":{"description":"Changes a team member's role by creating an update_site_user_membership workflow.","operationId":"changeTeamMemberRole","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"User UUID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"Change team member role request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/ChangeTeamMemberRoleRequest"}}],"responses":{"200":{"$ref":"#/responses/ChangeTeamMemberRoleWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Change Team Member Role","tags":["sites"]}},"/v0/sites/{site_id}/migration/complete":{"post":{"description":"Completes a site migration by creating a complete_migration workflow.","operationId":"CompleteSiteMigration","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/CompleteSiteMigrationWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Complete Site Migration","tags":["sites"]}},"/v0/sites/{site_id}/owner":{"put":{"description":"Sets the site owner by creating a promote_site_user_to_owner workflow. This transfers site ownership.","operationId":"SetSiteOwner","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/SetOwnerRequest"}}],"responses":{"200":{"$ref":"#/responses/SetSiteOwnerWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Set Site Owner","tags":["sites"]}},"/v0/sites/{site_id}/payment-method":{"delete":{"description":"Removes a payment method by creating a disassociate_site_instrument workflow.","operationId":"RemovePaymentMethod","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/RemovePaymentMethodWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove Payment Method","tags":["sites"]},"put":{"description":"Adds a payment method by creating an associate_site_instrument workflow.","operationId":"AddPaymentMethod","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/AddPaymentMethodRequest"}}],"responses":{"200":{"$ref":"#/responses/AddPaymentMethodWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Add Payment Method","tags":["sites"]}},"/v0/sites/{site_id}/plan":{"get":{"description":"Retrieves detailed plan information for a site including pricing,\nbilling cycle, and feature availability.","operationId":"GetSitePlan","parameters":[{"description":"Site ID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/GetSitePlanResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Site Plan Information","tags":["sites"]},"put":{"description":"Sets the plan for a site by creating a change_site_service_level workflow.","operationId":"SetSitePlan","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Set site plan request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/SetSitePlanRequest"}}],"responses":{"200":{"$ref":"#/responses/SetSitePlanWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Set Site Plan","tags":["sites"]}},"/v0/sites/{site_id}/upstream":{"put":{"description":"Sets the site upstream by creating a switch_upstream workflow. This is a potentially destructive operation that can affect site functionality.","operationId":"SetSiteUpstream","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/SetSiteUpstreamRequest"}}],"responses":{"200":{"$ref":"#/responses/SetSiteUpstreamWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Set Site Upstream","tags":["sites"]}},"/v0/sites/{site_id}/upstream-updates":{"get":{"description":"Lists available upstream update commits for a site.\nReturns commits that are available from the upstream but not yet applied to the site.","operationId":"ListUpstreamUpdates","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"default":"refs/heads/master","description":"Base branch reference for comparison","in":"query","name":"base_branch","type":"string","x-go-name":"BaseBranch"}],"responses":{"200":{"$ref":"#/responses/UpstreamUpdatesListResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Upstream Updates","tags":["sites"]}},"/v0/sites/{site_id}/upstream/cache/clear":{"post":{"description":"Clears the site upstream cache by creating a clear_code_cache workflow. This is a troubleshooting tool.","operationId":"ClearUpstreamCache","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/ClearUpstreamCacheWorkflowCreationResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Clear Site Upstream Cache","tags":["sites"]}},"/v0/sites/{site_id}/workflows":{"get":{"description":"Lists all workflows for a specific site.\nReturns the most recent workflows ordered by creation time.","operationId":"ListWorkflows","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"}],"responses":{"200":{"$ref":"#/responses/WorkflowListResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Workflows","tags":["sites"]},"post":{"description":"Creates a new site-level workflow.","operationId":"CreateSiteWorkflow","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Workflow creation request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/SiteWorkflowCreationRequest"}}],"responses":{"200":{"$ref":"#/responses/SiteWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Create Site Workflow","tags":["sites"]}},"/v0/sites/{site_id}/workflows/{workflow_id}":{"get":{"description":"Retrieves the current status of a workflow.\nUseful for polling workflow progress until completion.","operationId":"GetWorkflowStatus","parameters":[{"description":"Site UUID","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Workflow ID","in":"path","name":"workflow_id","required":true,"type":"string","x-go-name":"WorkflowID"}],"responses":{"200":{"$ref":"#/responses/WorkflowStatusResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Workflow Status","tags":["sites"]}},"/v0/sites/{site_id}/workflows/{workflow_id}/logs":{"get":{"description":"Retrieves Quicksilver operation logs for a specific workflow.","operationId":"WorkflowLogsGet","parameters":[{"description":"Site UUID or name","in":"path","name":"site_id","required":true,"type":"string","x-go-name":"SiteID"},{"description":"Workflow UUID","in":"path","name":"workflow_id","required":true,"type":"string","x-go-name":"WorkflowID"}],"responses":{"200":{"$ref":"#/responses/WorkflowLogsResponse"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get Workflow Quicksilver Logs","tags":["sites"]}},"/v0/users/{user_id}":{"get":{"description":"Retrieves a user by their ID from the Pantheon system.\n\nThis endpoint forwards the request to the backend API and returns the user details.","operationId":"UserGet","parameters":[{"description":"User ID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"}],"responses":{"200":{"$ref":"#/responses/UserResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Get User by ID","tags":["users"]}},"/v0/users/{user_id}/keys":{"get":{"description":"Lists all SSH public keys associated with the authenticated user's account.\nThese keys can be used for Git operations and SFTP access.\n\nReturns a map where keys are SSH key UUIDs (fingerprints without colons)\nand values are the full SSH public key strings in standard format:\n\"ssh-rsa AAAAB3... comment\" or \"ssh-ed25519 AAAAC3... comment\"","operationId":"ListSSHKeys","parameters":[{"description":"User ID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"}],"responses":{"200":{"$ref":"#/responses/ListSSHKeysResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List SSH Public Keys","tags":["users"]},"post":{"description":"Adds an SSH public key to the authenticated user's account.\nThe key can be used for Git operations and SFTP access.","operationId":"AddSSHKey","parameters":[{"description":"User ID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"SSH public key to add","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/AddSSHKeyRequest"}}],"responses":{"201":{"$ref":"#/responses/AddSSHKeyResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Add SSH Public Key","tags":["users"]}},"/v0/users/{user_id}/keys/{key_id}":{"delete":{"description":"Removes an SSH public key from the authenticated user's account.\nThe key will no longer be usable for Git operations or SFTP access.","operationId":"RemoveSSHKey","parameters":[{"description":"User ID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"SSH key ID to remove","in":"path","name":"key_id","required":true,"type":"string","x-go-name":"KeyID"}],"responses":{"204":{"$ref":"#/responses/noContentResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"Remove SSH Public Key","tags":["users"]}},"/v0/users/{user_id}/machine-tokens":{"get":{"description":"Lists all machine tokens for the authenticated user.","operationId":"listMachineTokens","parameters":[{"description":"User ID","in":"path","name":"user_id","required":true,"type":"string"}],"responses":{"200":{"$ref":"#/responses/MachineTokenListResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Machine Tokens","tags":["users"]}},"/v0/users/{user_id}/memberships/organizations":{"get":{"description":"Retrieves a list of organizations where the user has membership.\n\nReturns an array of organization memberships. Each membership contains the organization ID and nested organization information.\nPagination is handled via query parameters (limit and start).","operationId":"OrganizationMembershipsGet","parameters":[{"description":"User UUID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"Maximum number of results per page (1-100). Validated but not currently\napplied by this endpoint, which returns every membership.","format":"int64","in":"query","name":"limit","type":"integer","x-go-name":"Limit"},{"description":"Pagination cursor. Must be a lowercase organization UUID, though this\nendpoint does not currently page: it returns every membership whatever\nlimit and start are set to.","in":"query","name":"start","type":"string","x-go-name":"Start"}],"responses":{"200":{"$ref":"#/responses/OrganizationMembershipsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Organization Memberships","tags":["users"]}},"/v0/users/{user_id}/memberships/sites":{"get":{"description":"Retrieves a list of sites where the user has membership.\n\nReturns an array of site memberships. Each membership contains the site ID and nested site information.\nPagination is handled via query parameters (limit and start).","operationId":"SiteMembershipsGet","parameters":[{"description":"User UUID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"Maximum number of results per page (1-100)","format":"int64","in":"query","name":"limit","type":"integer","x-go-name":"Limit"},{"description":"Pagination cursor. Use the lowercase site UUID of the last item on the\nprevious page. Cursors expire five minutes after the page that produced\nthem; an expired or unrecognized cursor returns the first page.","in":"query","name":"start","type":"string","x-go-name":"Start"}],"responses":{"200":{"$ref":"#/responses/SiteMembershipsResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Site Memberships","tags":["users"]}},"/v0/users/{user_id}/upstreams":{"get":{"description":"Lists all upstreams available to a specific user.\nReturns information about upstream repositories.","operationId":"ListUpstreams","parameters":[{"description":"User UUID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"}],"responses":{"200":{"$ref":"#/responses/UpstreamListResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"security":[{"bearer":[]}],"summary":"List Upstreams","tags":["users"]}},"/v0/users/{user_id}/workflows":{"post":{"description":"Creates a new workflow owned by the user.","operationId":"CreateUserWorkflow","parameters":[{"description":"User ID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"Workflow creation request","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/UserWorkflowCreationRequest"}}],"responses":{"200":{"$ref":"#/responses/UserWorkflowCreationResponse"},"400":{"$ref":"#/responses/errorResponse400"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"Create User Workflow","tags":["users"]}},"/v0/users/{user_id}/workflows/{workflow_id}":{"get":{"description":"Returns the current status of a workflow owned by a user.","operationId":"GetUserWorkflowStatus","parameters":[{"description":"User ID","in":"path","name":"user_id","required":true,"type":"string","x-go-name":"UserID"},{"description":"Workflow ID","in":"path","name":"workflow_id","required":true,"type":"string","x-go-name":"WorkflowID"}],"responses":{"200":{"$ref":"#/responses/UserWorkflowStatusResponse"},"401":{"$ref":"#/responses/errorResponse401"},"403":{"$ref":"#/responses/errorResponse403"},"404":{"$ref":"#/responses/errorResponse404"},"500":{"$ref":"#/responses/errorResponse500"},"503":{"$ref":"#/responses/errorResponse503"}},"summary":"Get User Workflow Status","tags":["users"]}}},"produces":["application/json"],"responses":{"AddDomainResponse":{"description":"","schema":{"$ref":"#/definitions/AddDomainResponse"}},"AddOrganizationMemberWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"AddOrganizationWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"AddPaymentMethodWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"AddPrimaryDomainWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"AddSSHKeyResponse":{"description":"","schema":{"$ref":"#/definitions/AddSSHKeyResponse"}},"AddTeamMemberWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"ApplyUpstreamUpdatesWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"AvailablePlanListResponse":{"description":"","schema":{"$ref":"#/definitions/AvailablePlanList"}},"BackupScheduleResponse":{"description":"","schema":{"$ref":"#/definitions/BackupScheduleResponse"}},"BackupWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"BranchListResponse":{"description":"","schema":{"$ref":"#/definitions/BranchListResponse"}},"ChangeOrganizationMemberRoleWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"ChangeTeamMemberRoleWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"ClearCacheWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"ClearUpstreamCacheWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"CloneDatabaseWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"CloneFilesWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"CommitWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"CommitsResponse":{"description":"","schema":{"$ref":"#/definitions/CommitsResponse"}},"CompleteSiteMigrationWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"CreateMultidevWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"CreateSiteWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"DNSRecommendationsResponse":{"description":"","schema":{"$ref":"#/definitions/DNSRecommendationsResponse"}},"DeleteMultidevWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"DeleteSiteWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"DeployWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"DiffStatResponse":{"description":"","schema":{"$ref":"#/definitions/DiffStatResponse"}},"DisableEnvironmentLockWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"DisableRedisWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"DisableSolrWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"DomainsResponse":{"description":"","schema":{"$ref":"#/definitions/DomainsResponse"}},"DownloadURLResponse":{"description":"","schema":{"$ref":"#/definitions/DownloadURLResponse"}},"EnableEnvironmentLockWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"EnableRedisWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"EnableSolrWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"EnvironmentMapResponse":{"description":"EnvironmentMapResponse represents a successful response containing environment map","schema":{"$ref":"#/definitions/EnvironmentMap"}},"EnvironmentSettingsResponse":{"description":"","schema":{"$ref":"#/definitions/EnvironmentSettings"}},"EnvironmentVariablesResponse":{"description":"","schema":{"$ref":"#/definitions/EnvironmentVariables"}},"GetSitePlanResponse":{"description":"","schema":{"$ref":"#/definitions/SitePlan"}},"ImportDatabaseWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"ImportFilesWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"ImportSiteAtSiteLevelWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"ListSSHKeysResponse":{"description":"","schema":{"$ref":"#/definitions/ListSSHKeysResponse"}},"MachineTokenListResponse":{"description":"","schema":{"$ref":"#/definitions/MachineTokenList"}},"MergeFromDevWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"MergeToDevWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"MetricsResponse":{"description":"","schema":{"$ref":"#/definitions/MetricsResponse"}},"OrganizationMembershipsResponse":{"description":"","schema":{"items":{"$ref":"#/definitions/OrganizationMembership"},"type":"array"}},"OrganizationSiteMembershipResponse":{"description":"","schema":{"$ref":"#/definitions/OrganizationSiteMembershipDetail"}},"OrganizationSiteMembershipsArrayResponse":{"description":"","schema":{"items":{"$ref":"#/definitions/OrganizationSiteMembership"},"type":"array"}},"OrganizationUpstreamListResponse":{"description":"","schema":{"$ref":"#/definitions/OrganizationUpstreamList"}},"OrganizationUserMembershipsArrayResponse":{"description":"","schema":{"items":{"$ref":"#/definitions/OrganizationUserMembership"},"type":"array"}},"OrganizationWorkflowCreationResponseWrapper":{"description":"","schema":{"$ref":"#/definitions/OrganizationWorkflowCreationResponse"}},"OrganizationWorkflowStatusResponseWrapper":{"description":"","schema":{"$ref":"#/definitions/OrganizationWorkflowStatusResponse"}},"RebuildCodeWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"RemoveDomainResponse":{"description":"","schema":{"$ref":"#/definitions/RemoveDomainResponse"}},"RemoveOrganizationMemberWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"RemoveOrganizationSiteWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"RemoveOrganizationWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"RemovePaymentMethodWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"RemovePrimaryDomainWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"RemoveTeamMemberWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"RestoreBackupWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"RotateRandomSeedWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"SessionResponse":{"description":"","schema":{"$ref":"#/definitions/SessionResponse"}},"SetConnectionModeWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"SetSiteLabelWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"SetSiteOwnerWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"SetSitePlanWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"SetSiteUpstreamWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"SiteInfoResponse":{"description":"","schema":{"$ref":"#/definitions/Site"}},"SiteMembershipsResponse":{"description":"","schema":{"items":{"$ref":"#/definitions/SiteMembership"},"type":"array"}},"SiteOrganizationMembershipsResponse":{"description":"","schema":{"items":{"$ref":"#/definitions/SiteOrganizationMembership"},"type":"array"}},"SiteUserMembershipsResponse":{"description":"","schema":{"additionalProperties":{"$ref":"#/definitions/SiteUserMembership"},"type":"object"}},"SiteWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"UpstreamListResponse":{"description":"","schema":{"$ref":"#/definitions/UpstreamList"}},"UpstreamUpdatesListResponse":{"description":"","schema":{"$ref":"#/definitions/UpstreamUpdatesList"}},"UserResponse":{"description":"","schema":{"$ref":"#/definitions/UserResponse"}},"UserWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/UserWorkflowCreationResponse"}},"UserWorkflowStatusResponse":{"description":"","schema":{"$ref":"#/definitions/UserWorkflowStatusResponse"}},"WipeEnvironmentWorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/SiteWorkflowCreationResponse"}},"WorkflowCreationResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowCreationResponse"}},"WorkflowListResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowList"}},"WorkflowLogsResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowLogsResponse"}},"WorkflowStatusResponse":{"description":"","schema":{"$ref":"#/definitions/WorkflowStatusResponse"}},"backupCatalogResponse":{"description":"","schema":{"$ref":"#/definitions/BackupCatalogResponse"}},"buildUpdatesResponse":{"description":"","schema":{"$ref":"#/definitions/BuildUpdates"}},"errorResponse400":{"description":"Bad Request","schema":{"$ref":"#/definitions/ErrorResponse"}},"errorResponse401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/ErrorResponse"}},"errorResponse403":{"description":"Forbidden","schema":{"$ref":"#/definitions/ErrorResponse"}},"errorResponse404":{"description":"Not Found","schema":{"$ref":"#/definitions/ErrorResponse"}},"errorResponse500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/ErrorResponse"}},"errorResponse503":{"description":"Service Unavailable","schema":{"$ref":"#/definitions/ErrorResponse"}},"noContentResponse":{"description":""},"siteAuthorizationsResponse":{"description":"","schema":{"$ref":"#/definitions/SiteAuthorizations"}},"siteNameLookupResponse":{"description":"","schema":{"$ref":"#/definitions/SiteNameLookup"}},"updateBackupScheduleResponse":{"description":"","schema":{"$ref":"#/definitions/BackupScheduleUpdateResponse"}}},"schemes":["https"],"security":[{"bearer":[]}],"securityDefinitions":{"bearer":{"description":"Bearer token authentication. Format: \"Bearer {token}\"","in":"header","name":"Authorization","type":"apiKey"}},"swagger":"2.0"}