{"components":{"schemas":{"ACLKey":{"properties":{"description":{"type":"string"},"group":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"}},"required":["description","group","key","label"],"type":"object"},"AcctPrefs":{"properties":{"contact_email":{"type":"string"},"contact_email2":{"type":"string"},"locale":{"type":"string"},"notifications":{"additionalProperties":{"type":"boolean"},"type":"object"}},"type":"object"},"AdminBrandingView":{"properties":{"colors":{"$ref":"#/components/schemas/BrandingColors"},"custom":{"type":"boolean"},"defaults":{"properties":{"colors":{"$ref":"#/components/schemas/BrandingColors"},"product_name":{"type":"string"}},"required":["colors","product_name"],"type":"object"},"favicon":{"type":"string"},"favicon_url":{"type":"string"},"links":{"items":{"$ref":"#/components/schemas/BrandingLink"},"type":"array"},"logo_dark_svg":{"type":"string"},"logo_svg":{"type":"string"},"product_name":{"type":"string"},"public_contact":{"$ref":"#/components/schemas/BrandingContact"},"scope":{"type":"string"},"updated_at":{"type":"integer"}},"required":["defaults","favicon","scope"],"type":"object"},"AgentprotoDiskUsage":{"properties":{"free_bytes":{"type":"integer"},"inodes_free":{"type":"integer"},"inodes_total":{"type":"integer"},"mount":{"type":"string"},"total_bytes":{"type":"integer"}},"required":["free_bytes","inodes_free","inodes_total","mount","total_bytes"],"type":"object"},"AgentprotoProcess":{"properties":{"command":{"type":"string"},"cpu":{"type":"number"},"elapsed_seconds":{"type":"integer"},"mem":{"type":"number"},"pid":{"type":"integer"},"rss_bytes":{"type":"integer"},"user":{"type":"string"}},"required":["command","cpu","elapsed_seconds","mem","pid","rss_bytes","user"],"type":"object"},"AgentprotoServiceStatus":{"properties":{"active":{"type":"string"},"enabled":{"type":"boolean"},"failed":{"items":{"type":"string"},"type":"array"},"group":{"type":"string"},"installed":{"type":"boolean"},"label":{"type":"string"},"main_pid":{"type":"integer"},"memory_bytes":{"type":"integer"},"name":{"type":"string"},"protected":{"type":"boolean"},"restarts":{"type":"integer"},"since":{"type":"integer"},"sub":{"type":"string"},"unit":{"type":"string"}},"required":["active","enabled","installed","main_pid","memory_bytes","restarts","sub"],"type":"object"},"AgentprotoSystemStats":{"properties":{"agent_version":{"type":"string"},"cgroup_v2":{"type":"boolean"},"cpu_model":{"type":"string"},"cpus":{"type":"integer"},"disks":{"items":{"$ref":"#/components/schemas/AgentprotoDiskUsage"},"type":"array"},"hostname":{"type":"string"},"kernel":{"type":"string"},"load1":{"type":"number"},"load15":{"type":"number"},"load5":{"type":"number"},"mem_available_bytes":{"type":"integer"},"mem_total_bytes":{"type":"integer"},"os_id":{"type":"string"},"os_pretty_name":{"type":"string"},"os_version":{"type":"string"},"selinux":{"type":"string"},"swap_free_bytes":{"type":"integer"},"swap_total_bytes":{"type":"integer"},"uptime_seconds":{"type":"integer"},"virtualization":{"type":"string"}},"required":["cpu_model","disks","load1","load15","load5","mem_available_bytes","swap_free_bytes","swap_total_bytes","uptime_seconds","virtualization"],"type":"object"},"AlertView":{"properties":{"description":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"priority":{"type":"string"}},"required":["priority"],"type":"object"},"AppView":{"properties":{"account_id":{"type":"string"},"branch":{"type":"string"},"created_at":{"type":"integer"},"current_release":{"type":"string"},"deploy_key_pub":{"type":"string"},"deploy_ready":{"type":"boolean"},"deploy_script":{"type":"string"},"deploy_timeout":{"type":"integer"},"domain":{"type":"string"},"domain_id":{"type":"string"},"git_connection_id":{"type":"string"},"has_composer_auth":{"type":"boolean"},"has_deploy_hook":{"type":"boolean"},"has_webhook_secret":{"type":"boolean"},"health_path":{"type":"string"},"host_key_fingerprints":{"items":{"type":"string"},"type":"array"},"id":{"type":"string"},"inject_env":{"type":"boolean"},"keep_releases":{"type":"integer"},"known_hosts":{"type":"string"},"last_deployment":{"$ref":"#/components/schemas/StoreDeployment"},"name":{"type":"string"},"php_version":{"type":"string"},"port":{"type":"integer"},"processes":{"items":{"$ref":"#/components/schemas/StoreAppProcess"},"type":"array"},"push_to_deploy":{"type":"boolean"},"repo_full_name":{"type":"string"},"repo_id":{"type":"integer"},"repo_url":{"type":"string"},"runtime_version":{"type":"string"},"scheduler":{"type":"boolean"},"shared_paths":{"items":{"type":"string"},"type":"array"},"start_command":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"updated_at":{"type":"integer"},"web_dir":{"type":"string"},"webhook_url":{"type":"string"}},"required":["deploy_ready","webhook_url"],"type":"object"},"BlockView":{"properties":{"country":{"type":"string"},"created_at":{"type":"integer"},"created_by":{"type":"string"},"expires_at":{"type":"integer"},"id":{"type":"string"},"kind":{"type":"string"},"list":{"type":"string"},"reason":{"type":"string"},"value":{"type":"string"}},"type":"object"},"BrandingColors":{"properties":{"accent":{"type":"string"},"accent_dark":{"type":"string"},"accent_strong":{"type":"string"}},"required":["accent","accent_dark","accent_strong"],"type":"object"},"BrandingContact":{"properties":{"company":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"url":{"type":"string"}},"required":["company","email","phone","url"],"type":"object"},"BrandingInput":{"properties":{"colors":{"$ref":"#/components/schemas/BrandingColors"},"favicon":{"type":"string"},"links":{"items":{"$ref":"#/components/schemas/BrandingLink"},"type":"array"},"logo_dark_svg":{"type":"string"},"logo_svg":{"type":"string"},"product_name":{"type":"string"},"public_contact":{"$ref":"#/components/schemas/BrandingContact"}},"type":"object"},"BrandingLink":{"properties":{"label":{"type":"string"},"url":{"type":"string"}},"required":["label","url"],"type":"object"},"BrandingView":{"properties":{"colors":{"$ref":"#/components/schemas/BrandingColors"},"custom":{"type":"boolean"},"favicon_url":{"type":"string"},"links":{"items":{"$ref":"#/components/schemas/BrandingLink"},"type":"array"},"logo_dark_svg":{"type":"string"},"logo_svg":{"type":"string"},"product_name":{"type":"string"},"public_contact":{"$ref":"#/components/schemas/BrandingContact"},"updated_at":{"type":"integer"}},"required":["colors","custom","favicon_url","links","logo_dark_svg","logo_svg","product_name","public_contact","updated_at"],"type":"object"},"CertPreview":{"properties":{"chain_certs":{"type":"integer"},"covers_domain":{"type":"boolean"},"domains":{"items":{"type":"string"},"type":"array"},"issuer":{"type":"string"},"key_match":{"type":"boolean"},"key_stored":{"type":"boolean"},"not_after":{"type":"integer"},"not_before":{"type":"integer"},"validation":{"type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"required":["chain_certs","domains","issuer","key_match","key_stored","not_after","not_before","validation","warnings"],"type":"object"},"CertReq":{"properties":{"ca_bundle":{"type":"string"},"cert_id":{"type":"string"},"certificate":{"type":"string"},"domain_id":{"type":"string"},"friendly_name":{"type":"string"},"private_key":{"type":"string"}},"type":"object"},"ChannelReq":{"properties":{"enabled":{"type":"boolean"},"min_priority":{"type":"string"},"target":{"type":"string"},"type":{"type":"string"}},"type":"object"},"ChannelView":{"properties":{"created_at":{"type":"integer"},"enabled":{"type":"boolean"},"has_secret":{"type":"boolean"},"id":{"type":"string"},"min_priority":{"type":"string"},"target":{"type":"string"},"type":{"type":"string"},"updated_at":{"type":"integer"}},"required":["type"],"type":"object"},"ClientSettings":{"properties":{"address":{"type":"string"},"autoconfig_url":{"type":"string"},"autodiscover_url":{"type":"string"},"plain":{"properties":{"imap":{"$ref":"#/components/schemas/ServerEndpoint"},"pop3":{"$ref":"#/components/schemas/ServerEndpoint"},"smtp":{"$ref":"#/components/schemas/ServerEndpoint"}},"required":["imap","pop3","smtp"],"type":"object"},"secure":{"properties":{"imap":{"$ref":"#/components/schemas/ServerEndpoint"},"pop3":{"$ref":"#/components/schemas/ServerEndpoint"},"smtp":{"$ref":"#/components/schemas/ServerEndpoint"}},"required":["imap","pop3","smtp"],"type":"object"},"username":{"type":"string"},"webmail_url":{"type":"string"}},"required":["address","autoconfig_url","autodiscover_url","plain","secure","username","webmail_url"],"type":"object"},"CloudflareConflict":{"properties":{"existing":{"items":{"$ref":"#/components/schemas/CloudflareRecord"},"type":"array"},"locked":{"type":"boolean"},"reason":{"type":"string"},"want":{"$ref":"#/components/schemas/CloudflareWant"}},"required":["existing","locked","reason","want"],"type":"object"},"CloudflarePlan":{"properties":{"add":{"items":{"$ref":"#/components/schemas/CloudflareRecord"},"type":"array"},"adopt":{"items":{"$ref":"#/components/schemas/CloudflareRecord"},"type":"array"},"conflicts":{"items":{"$ref":"#/components/schemas/CloudflareConflict"},"type":"array"},"remove":{"items":{"$ref":"#/components/schemas/CloudflareRecord"},"type":"array"},"shared":{"items":{"$ref":"#/components/schemas/CloudflareRecord"},"type":"array"},"theirs":{"items":{"$ref":"#/components/schemas/CloudflareRecord"},"type":"array"},"unchanged":{"type":"integer"},"update":{"items":{"$ref":"#/components/schemas/CloudflareRecord"},"type":"array"}},"required":["add","adopt","conflicts","remove","shared","theirs","unchanged","update"],"type":"object"},"CloudflareRecord":{"properties":{"comment":{"type":"string"},"content":{"type":"string"},"data":{},"id":{"type":"string"},"meta":{"additionalProperties":{},"type":"object"},"name":{"type":"string"},"priority":{"type":"integer"},"proxied":{"type":"boolean"},"ttl":{"type":"integer"},"type":{"type":"string"}},"required":["name","ttl","type"],"type":"object"},"CloudflareWant":{"properties":{"Key":{"type":"string"},"comment":{"type":"string"},"content":{"type":"string"},"data":{},"id":{"type":"string"},"meta":{"additionalProperties":{},"type":"object"},"name":{"type":"string"},"priority":{"type":"integer"},"proxied":{"type":"boolean"},"ttl":{"type":"integer"},"type":{"type":"string"}},"required":["Key"],"type":"object"},"CreateAccountReq":{"properties":{"cgi":{"type":"boolean"},"contact_email":{"type":"string"},"database_node":{"type":"string"},"domain":{"type":"string"},"ip_id":{"type":"string"},"locale":{"type":"string"},"mail_node":{"type":"string"},"mail_routing":{"type":"string"},"make_reseller":{"type":"boolean"},"owner_id":{"type":"string"},"owns_itself":{"type":"boolean"},"package_id":{"type":"string"},"password":{"type":"string"},"shell":{"type":"string"},"spam_box":{"type":"boolean"},"spam_filter":{"type":"boolean"},"username":{"type":"string"}},"type":"object"},"CreateForwarderReq":{"properties":{"dest_type":{"type":"string"},"destinations":{"items":{"type":"string"},"type":"array"},"domain_id":{"type":"string"},"fail_message":{"type":"string"},"local_part":{"type":"string"}},"type":"object"},"CreateMailReq":{"properties":{"domain_id":{"type":"string"},"local_part":{"type":"string"},"password":{"type":"string"},"quota_mb":{"type":"integer"}},"type":"object"},"DbRow":{"properties":{"account_id":{"type":"string"},"name":{"type":"string"},"size_bytes":{"type":"integer"},"tables":{"type":"integer"},"username":{"type":"string"}},"required":["name","size_bytes","tables"],"type":"object"},"DefaultAddressView":{"properties":{"action":{"type":"string"},"configured":{"type":"boolean"},"destination":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"fail_message":{"type":"string"}},"required":["action","configured","domain","domain_id"],"type":"object"},"DestReq":{"properties":{"config":{"$ref":"#/components/schemas/HostingDestConfig"},"enabled":{"type":"boolean"},"name":{"type":"string"},"new_key":{"type":"boolean"},"secret":{"type":"string"},"timeout_s":{"type":"integer"},"type":{"type":"string"}},"type":"object"},"DomainSSLView":{"properties":{"covered":{"type":"boolean"},"has_cert":{"type":"boolean"},"issuer":{"type":"string"},"not_after":{"type":"integer"},"problem":{"type":"string"}},"required":["covered","has_cert"],"type":"object"},"DomainView":{"properties":{"docroot":{"type":"string"},"force_https":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"parent_id":{"type":"string"},"parent_name":{"type":"string"},"php_ini_count":{"type":"integer"},"php_version":{"type":"string"},"redirect_count":{"type":"integer"},"redirect_to":{"type":"string"},"ssl":{"$ref":"#/components/schemas/DomainSSLView"},"status":{"type":"string"},"subdomains":{"type":"integer"},"type":{"type":"string"}},"required":["php_ini_count","redirect_count","subdomains"],"type":"object"},"Entry":{"properties":{"account_exists":{"type":"boolean"},"account_id":{"type":"string"},"destination_id":{"type":"string"},"format":{"type":"string"},"id":{"type":"string"},"layout":{"type":"string"},"location":{"type":"string"},"main_domain":{"type":"string"},"run_id":{"type":"string"},"schedule":{"type":"string"},"schedules":{"items":{"type":"string"},"type":"array"},"size_bytes":{"type":"integer"},"status":{"type":"string"},"taken_at":{"type":"integer"},"username":{"type":"string"}},"required":["schedules"],"type":"object"},"FeaturesFeature":{"properties":{"description":{"type":"string"},"future":{"type":"boolean"},"group":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"}},"required":["description","group","key","label"],"type":"object"},"FsResult":{"properties":{"conflict":{"type":"boolean"},"conflicts":{"items":{"type":"string"},"type":"array"},"content":{"type":"string"},"count":{"type":"integer"},"encoding":{"type":"string"},"etag":{"type":"string"},"items":{"items":{},"type":"array"},"line_ending":{"type":"string"},"modified":{"type":"integer"},"path":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"},"size":{"type":"integer"},"trash":{"items":{},"type":"array"},"truncated":{"type":"boolean"}},"type":"object"},"FtpInput":{"properties":{"domain_id":{"type":"string"},"home_dir":{"type":"string"},"login":{"type":"string"},"password":{"type":"string"},"quota_mb":{"type":"integer"}},"type":"object"},"FtpItem":{"properties":{"account_id":{"type":"string"},"created_at":{"type":"integer"},"dir_missing":{"type":"boolean"},"domain":{"type":"string"},"domain_id":{"type":"string"},"full_login":{"type":"string"},"has_password":{"type":"boolean"},"home_dir":{"type":"string"},"id":{"type":"string"},"kind":{"type":"string"},"login":{"type":"string"},"quota_mb":{"type":"integer"},"updated_at":{"type":"integer"},"used_bytes":{"type":"integer"}},"required":["dir_missing"],"type":"object"},"FwRuleView":{"properties":{"action":{"type":"string"},"comment":{"type":"string"},"created_at":{"type":"integer"},"enabled":{"type":"boolean"},"id":{"type":"string"},"ports":{"type":"string"},"position":{"type":"integer"},"protocol":{"type":"string"},"source":{"type":"string"}},"required":["action"],"type":"object"},"GithubRepo":{"properties":{"clone_url":{"type":"string"},"default_branch":{"type":"string"},"full_name":{"type":"string"},"html_url":{"type":"string"},"id":{"type":"integer"},"private":{"type":"boolean"},"pushed_at":{"type":"string"}},"required":["clone_url","default_branch","full_name","html_url","id","private","pushed_at"],"type":"object"},"GlobalcfgMail":{"properties":{"alt_port":{"type":"integer"},"message_size_mb":{"type":"integer"},"smarthost":{"$ref":"#/components/schemas/GlobalcfgSmarthost"}},"required":["alt_port","message_size_mb","smarthost"],"type":"object"},"GlobalcfgSmarthost":{"properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"port":{"type":"integer"},"user":{"type":"string"}},"required":["enabled","host","port","user"],"type":"object"},"GlobalcfgWeb":{"properties":{"cloudflare_ranges":{"items":{"type":"string"},"type":"array"},"keepalive":{"type":"boolean"},"timeout_seconds":{"type":"integer"},"tls_protocols":{"type":"string"},"worker_connections":{"type":"integer"}},"required":["keepalive","timeout_seconds","tls_protocols","worker_connections"],"type":"object"},"HostingAccountSettings":{"properties":{"bandwidth_exceeded_action":{"type":"string"},"bandwidth_page_html":{"type":"string"},"suspended_page_html":{"type":"string"}},"type":"object"},"HostingAppInput":{"properties":{"branch":{"type":"string"},"composer_auth":{"type":"string"},"create_database":{"type":"boolean"},"deploy_script":{"type":"string"},"deploy_timeout":{"type":"integer"},"domain_id":{"type":"string"},"git_connection_id":{"type":"string"},"health_path":{"type":"string"},"inject_env":{"type":"boolean"},"keep_releases":{"type":"integer"},"name":{"type":"string"},"php_version":{"type":"string"},"push_to_deploy":{"type":"boolean"},"repo_full_name":{"type":"string"},"repo_url":{"type":"string"},"runtime_version":{"type":"string"},"scheduler":{"type":"boolean"},"shared_paths":{"items":{"type":"string"},"type":"array"},"start_command":{"type":"string"},"type":{"type":"string"},"web_dir":{"type":"string"}},"type":"object"},"HostingCFDomain":{"properties":{"cf_status":{"type":"string"},"cf_zone_id":{"type":"string"},"link":{"$ref":"#/components/schemas/StoreCloudflareZone"},"name":{"type":"string"},"proxy":{"additionalProperties":{"type":"boolean"},"type":"object"},"state":{"type":"string"},"zone_id":{"type":"string"}},"required":["name","state","zone_id"],"type":"object"},"HostingCFOverview":{"properties":{"connection":{"$ref":"#/components/schemas/StoreCloudflareConnection"},"domains":{"items":{"$ref":"#/components/schemas/HostingCFDomain"},"type":"array"},"error":{"type":"string"}},"required":["domains"],"type":"object"},"HostingCFPreview":{"properties":{"cf_status":{"type":"string"},"cf_zone_id":{"type":"string"},"mail_at_cloudflare":{"type":"boolean"},"mail_note":{"type":"string"},"plan":{"$ref":"#/components/schemas/CloudflarePlan"},"proxied":{"type":"integer"},"skipped":{"items":{"type":"string"},"type":"array"},"zone":{"type":"string"}},"required":["cf_status","cf_zone_id","mail_at_cloudflare","plan","proxied","skipped","zone"],"type":"object"},"HostingCSRSubject":{"properties":{"country":{"type":"string"},"email":{"type":"string"},"locality":{"type":"string"},"org_unit":{"type":"string"},"organization":{"type":"string"},"state":{"type":"string"}},"required":["country","email","locality","org_unit","organization","state"],"type":"object"},"HostingDeliverabilityReport":{"properties":{"checked_at":{"type":"integer"},"domain":{"type":"string"},"domain_id":{"type":"string"},"ok":{"type":"boolean"},"records":{"items":{"$ref":"#/components/schemas/HostingRecordCheck"},"type":"array"},"spf_custom":{"$ref":"#/components/schemas/StoreSPFCustom"},"zone_local":{"type":"boolean"}},"required":["checked_at","domain","domain_id","ok","records","spf_custom","zone_local"],"type":"object"},"HostingDestConfig":{"properties":{"access_key":{"type":"string"},"auth":{"type":"string"},"bucket":{"type":"string"},"endpoint":{"type":"string"},"host":{"type":"string"},"host_key":{"type":"string"},"path":{"type":"string"},"path_style":{"type":"boolean"},"port":{"type":"integer"},"public_key":{"type":"string"},"region":{"type":"string"},"tls":{"type":"string"},"user":{"type":"string"}},"required":["path"],"type":"object"},"HostingDomainInput":{"properties":{"docroot":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"parent_id":{"type":"string"},"type":{"type":"string"}},"type":"object"},"HostingDomainPlan":{"properties":{"blockers":{"items":{"type":"string"},"type":"array"},"from":{"type":"string"},"ok":{"type":"boolean"},"renames":{"items":{"$ref":"#/components/schemas/StoreDomainRename"},"type":"array"},"steps":{"items":{"type":"string"},"type":"array"},"to":{"type":"string"}},"required":["blockers","from","ok","renames","steps","to"],"type":"object"},"HostingExportedFilter":{"properties":{"actions":{"items":{"$ref":"#/components/schemas/StoreFilterAction"},"type":"array"},"enabled":{"type":"boolean"},"mailbox":{"type":"string"},"match":{"type":"string"},"name":{"type":"string"},"rules":{"items":{"$ref":"#/components/schemas/StoreFilterRule"},"type":"array"}},"required":["actions","enabled","mailbox","match","name","rules"],"type":"object"},"HostingFTPSession":{"properties":{"file":{"type":"string"},"host":{"type":"string"},"login":{"type":"string"},"percent":{"type":"integer"},"pid":{"type":"integer"},"seconds":{"type":"integer"},"speed":{"type":"integer"},"state":{"type":"string"}},"required":["file","host","login","percent","pid","seconds","speed","state"],"type":"object"},"HostingFiltersExport":{"properties":{"filters":{"items":{"$ref":"#/components/schemas/HostingExportedFilter"},"type":"array"},"format":{"type":"string"},"version":{"type":"integer"}},"required":["filters","format","version"],"type":"object"},"HostingGitHubAppView":{"properties":{"configured":{"type":"boolean"},"connections":{"type":"integer"},"created_at":{"type":"integer"},"html_url":{"type":"string"},"name":{"type":"string"},"owner":{"type":"string"},"slug":{"type":"string"}},"required":["configured"],"type":"object"},"HostingHostnameReport":{"properties":{"checked_at":{"type":"integer"},"helo":{"type":"string"},"hostname":{"type":"string"},"ip":{"type":"string"},"ok":{"type":"boolean"},"records":{"items":{"$ref":"#/components/schemas/HostingRecordCheck"},"type":"array"},"zone_local":{"type":"string"}},"required":["checked_at","helo","hostname","ip","ok","records"],"type":"object"},"HostingImportDecisions":{"properties":{"auto_apply":{"type":"boolean"},"ip_id":{"type":"string"},"keep_dns_ip":{"type":"boolean"},"overwrite":{"type":"boolean"},"owner_id":{"type":"string"},"package_id":{"type":"string"},"skip_databases":{"type":"boolean"},"skip_dns":{"type":"boolean"},"skip_home":{"type":"boolean"},"skip_mail":{"type":"boolean"},"url":{"type":"string"},"username":{"type":"string"}},"type":"object"},"HostingImportResult":{"properties":{"dry_run":{"type":"boolean"},"records":{"type":"integer"},"soa_imported":{"type":"boolean"}},"required":["dry_run","records","soa_imported"],"type":"object"},"HostingLogSettings":{"properties":{"archive":{"type":"boolean"},"prune":{"type":"boolean"}},"type":"object"},"HostingMXEntry":{"properties":{"host":{"type":"string"},"local":{"type":"boolean"},"priority":{"type":"integer"}},"required":["host","local","priority"],"type":"object"},"HostingMailAdminSettings":{"properties":{"auto_hold":{"type":"boolean"},"default_max_per_hour":{"type":"integer"},"retention_days":{"type":"integer"},"unique_recipients_alert":{"type":"integer"}},"type":"object"},"HostingMassMail":{"properties":{"body":{"type":"string"},"from_email":{"type":"string"},"from_name":{"type":"string"},"hostname":{"type":"string"},"reseller_id":{"type":"string"},"resellers":{"type":"boolean"},"subject":{"type":"string"}},"type":"object"},"HostingOSUpdateOverview":{"properties":{"hour":{"type":"integer"},"running":{"type":"boolean"},"servers":{"items":{"$ref":"#/components/schemas/HostingOSUpdateServer"},"type":"array"}},"required":["hour","running","servers"],"type":"object"},"HostingOSUpdateServer":{"properties":{"enabled":{"type":"boolean"},"error":{"type":"string"},"last":{"$ref":"#/components/schemas/UpdateOSResult"},"name":{"type":"string"},"node_id":{"type":"string"},"role":{"type":"string"},"running":{"type":"boolean"}},"required":["enabled","name","role","running"],"type":"object"},"HostingPlanCheck":{"properties":{"detail":{"type":"string"},"ok":{"type":"boolean"},"step":{"type":"string"}},"required":["ok","step"],"type":"object"},"HostingRecordCheck":{"properties":{"expected":{"type":"string"},"kind":{"type":"string"},"local":{"items":{"type":"string"},"type":"array"},"local_status":{"type":"string"},"name":{"type":"string"},"problems":{"items":{"type":"string"},"type":"array"},"published":{"items":{"type":"string"},"type":"array"},"repairable":{"type":"boolean"},"status":{"type":"string"},"type":{"type":"string"}},"required":["expected","kind","name","problems","published","repairable","status","type"],"type":"object"},"HostingRecordInput":{"properties":{"content":{"type":"string"},"name":{"type":"string"},"priority":{"type":"integer"},"ttl":{"type":"integer"},"type":{"type":"string"}},"type":"object"},"HostingRemoteAccount":{"properties":{"conflicts":{"items":{"type":"string"},"type":"array"},"domain":{"type":"string"},"owner":{"type":"string"},"plan":{"type":"string"},"suspended":{"type":"boolean"},"user":{"type":"string"}},"required":["conflicts","domain","owner","plan","suspended","user"],"type":"object"},"HostingRemoteAnalysis":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/HostingRemoteAccount"},"type":"array"},"at":{"type":"integer"},"home_free_kb":{"type":"integer"},"type":{"type":"string"},"version":{"type":"string"}},"required":["accounts","at","home_free_kb","type","version"],"type":"object"},"HostingRenamePlan":{"properties":{"blockers":{"items":{"type":"string"},"type":"array"},"changes":{"items":{"$ref":"#/components/schemas/StoreNameChange"},"type":"array"},"checks":{"items":{"$ref":"#/components/schemas/HostingPlanCheck"},"type":"array"},"from":{"type":"string"},"ok":{"type":"boolean"},"steps":{"items":{"type":"string"},"type":"array"},"to":{"type":"string"}},"required":["blockers","changes","checks","from","ok","steps","to"],"type":"object"},"HostingRestoreOptions":{"properties":{"databases":{"type":"boolean"},"home":{"type":"boolean"},"ip_id":{"type":"string"},"mail":{"type":"boolean"},"overwrite":{"type":"boolean"},"trust_foreign":{"type":"boolean"}},"required":["databases","home","ip_id","mail","overwrite","trust_foreign"],"type":"object"},"HostingSSLSettings":{"properties":{"key_type":{"type":"string"},"profile":{"type":"string"}},"type":"object"},"HostingValkeyView":{"properties":{"enabled":{"type":"boolean"},"host":{"type":"string"},"maxmemory_mb":{"type":"integer"},"password":{"type":"string"},"port":{"type":"integer"},"status":{"type":"string"}},"required":["enabled"],"type":"object"},"HostingWorkerOptions":{"properties":{"backoff":{"type":"integer"},"connection":{"type":"string"},"force":{"type":"boolean"},"horizon":{"type":"boolean"},"max_time":{"type":"integer"},"memory":{"type":"integer"},"queue":{"type":"string"},"sleep":{"type":"integer"},"timeout":{"type":"integer"},"tries":{"type":"integer"}},"required":["backoff","connection","force","horizon","max_time","memory","queue","sleep","timeout","tries"],"type":"object"},"ImportReq":{"properties":{"decisions":{"$ref":"#/components/schemas/HostingImportDecisions"},"path":{"type":"string"},"url":{"type":"string"}},"type":"object"},"Item":{"properties":{"detected":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"effective":{"type":"string"},"mx":{"items":{"$ref":"#/components/schemas/HostingMXEntry"},"type":"array"},"routing":{"type":"string"}},"required":["detected","domain","domain_id","effective","mx","routing"],"type":"object"},"LicenseInfo":{"properties":{"grace_ends_at":{"type":"integer"},"ip":{"type":"string"},"last_checkin_at":{"type":"integer"},"last_checkin_error":{"type":"string"},"lease_expires_at":{"type":"integer"},"lease_issued_at":{"type":"integer"},"license_id":{"type":"string"},"license_server":{"type":"string"},"next_checkin_at":{"type":"integer"},"plan":{"type":"string"},"read_only":{"type":"boolean"},"readonly_since":{"type":"integer"},"register_url":{"type":"string"},"server_pub":{"type":"string"},"status":{"type":"string"},"trial_ends_at":{"type":"integer"}},"required":["ip","license_server","read_only","register_url","server_pub","status"],"type":"object"},"LimitView":{"properties":{"max":{"type":"integer"},"used":{"type":"integer"}},"required":["used"],"type":"object"},"LoginReq":{"properties":{"password":{"type":"string"},"username":{"type":"string"}},"type":"object"},"NodeVersion":{"properties":{"id":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"status":{"type":"string"},"version":{"type":"string"}},"required":["id","name","role","status","version"],"type":"object"},"PackageReq":{"properties":{"bw_limit_mb":{"type":"integer"},"cgi":{"type":"boolean"},"dedicated_ip":{"type":"boolean"},"default_email_quota_mb":{"type":"integer"},"digest_auth":{"type":"boolean"},"disk_quota_mb":{"type":"integer"},"feature_list_id":{"type":"string"},"isolation":{"$ref":"#/components/schemas/StoreIsolation"},"locale":{"type":"string"},"max_addon":{"type":"integer"},"max_email":{"type":"integer"},"max_email_per_hour":{"type":"integer"},"max_email_quota_mb":{"type":"integer"},"max_ftp":{"type":"integer"},"max_parked":{"type":"integer"},"max_sql":{"type":"integer"},"max_sub":{"type":"integer"},"name":{"type":"string"},"php_max_children":{"type":"integer"},"shell":{"type":"string"},"theme":{"type":"string"}},"type":"object"},"PoliciesView":{"properties":{"admin_allowed_ips":{"items":{"type":"string"},"type":"array"},"admin_password_max_age_days":{"type":"integer"},"my_ip":{"type":"string"},"password_strength":{"additionalProperties":{"type":"integer"},"type":"object"},"require_2fa_admins":{"type":"boolean"},"require_2fa_customers":{"type":"boolean"},"smtp_restriction":{"type":"boolean"}},"required":["admin_allowed_ips","admin_password_max_age_days","password_strength","require_2fa_admins","require_2fa_customers","smtp_restriction"],"type":"object"},"Problem":{"properties":{"detail":{"type":"string"},"fields":{"additionalProperties":{"type":"string"},"description":"Per-field messages (form validation)","type":"object"},"status":{"type":"integer"},"title":{"type":"string"},"type":{"description":"https://kypanel.com/problems/<code>","type":"string"}},"required":["type","title","status"],"type":"object"},"RedirectReq":{"properties":{"code":{"type":"integer"},"domain_id":{"type":"string"},"path":{"type":"string"},"target_url":{"type":"string"},"wildcard":{"type":"boolean"},"www_mode":{"type":"string"}},"type":"object"},"ResellerBrief":{"properties":{"id":{"type":"string"},"main_domain":{"type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"},"username":{"type":"string"}},"required":["id","main_domain","nameservers","username"],"type":"object"},"ResellerReq":{"properties":{"acl_list_id":{"type":"string"},"bw_limit_mb":{"type":"integer"},"disk_limit_mb":{"type":"integer"},"max_accounts":{"type":"integer"},"nameservers":{"items":{"type":"string"},"type":"array"},"oversell_bw":{"type":"boolean"},"oversell_disk":{"type":"boolean"},"owns_itself":{"type":"boolean"},"panel_hostname":{"type":"string"}},"type":"object"},"Result":{"properties":{"channel_id":{"type":"string"},"error":{"type":"string"},"ok":{"type":"boolean"},"target":{"type":"string"},"type":{"type":"string"}},"required":["channel_id","ok","target","type"],"type":"object"},"ServerEndpoint":{"properties":{"host":{"type":"string"},"port":{"type":"integer"},"security":{"type":"string"}},"required":["host","port","security"],"type":"object"},"ServiceView":{"properties":{"active":{"type":"string"},"auto_restarts_last_hour":{"type":"integer"},"enabled":{"type":"boolean"},"failed":{"items":{"type":"string"},"type":"array"},"group":{"type":"string"},"installed":{"type":"boolean"},"label":{"type":"string"},"last_restart_at":{"type":"integer"},"main_pid":{"type":"integer"},"memory_bytes":{"type":"integer"},"monitored":{"type":"boolean"},"name":{"type":"string"},"protected":{"type":"boolean"},"restarts":{"type":"integer"},"since":{"type":"integer"},"sub":{"type":"string"},"unit":{"type":"string"}},"required":["auto_restarts_last_hour","monitored"],"type":"object"},"SessionResp":{"properties":{"acl":{"items":{"type":"string"},"type":"array"},"acting_as":{"type":"boolean"},"authenticated":{"type":"boolean"},"csrf_token":{"type":"string"},"expires_at":{"type":"integer"},"force_password_change":{"type":"boolean"},"is_root":{"type":"boolean"},"mfa_required":{"type":"boolean"},"password_expired":{"type":"boolean"},"reseller":{"$ref":"#/components/schemas/ResellerBrief"},"role":{"type":"string"},"two_factor_enabled":{"type":"boolean"},"two_factor_setup_required":{"type":"boolean"},"username":{"type":"string"}},"required":["acting_as","authenticated","force_password_change","is_root","mfa_required","two_factor_enabled","two_factor_setup_required"],"type":"object"},"SettingsCategory":{"properties":{"key":{"type":"string"},"label":{"type":"string"}},"required":["key","label"],"type":"object"},"SettingsOption":{"properties":{"label":{"type":"string"},"value":{}},"required":["label","value"],"type":"object"},"SettingsView":{"properties":{"mail":{"$ref":"#/components/schemas/GlobalcfgMail"},"smarthost_password_set":{"type":"boolean"},"web":{"$ref":"#/components/schemas/GlobalcfgWeb"}},"required":["smarthost_password_set"],"type":"object"},"SshAddReq":{"properties":{"authorize":{"type":"boolean"},"bits":{"type":"integer"},"name":{"type":"string"},"passphrase":{"type":"string"},"private_key":{"type":"string"},"public_key":{"type":"string"},"type":{"type":"string"}},"type":"object"},"SsoReq":{"properties":{"goto":{"type":"string"},"panel":{"type":"string"}},"type":"object"},"StoreACLList":{"properties":{"id":{"type":"string"},"keys":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"resellers":{"type":"integer"},"updated_at":{"type":"integer"}},"required":["id","keys","name","resellers","updated_at"],"type":"object"},"StoreAPIToken":{"properties":{"allowed_ips":{"items":{"type":"string"},"type":"array"},"created_at":{"type":"integer"},"expires_at":{"type":"integer"},"id":{"type":"string"},"last_used_at":{"type":"integer"},"last_used_ip":{"type":"string"},"name":{"type":"string"},"prefix":{"type":"string"},"principal_id":{"type":"string"},"principal_type":{"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"}},"required":["allowed_ips","created_at","id","name","prefix","principal_id","principal_type","scopes"],"type":"object"},"StoreAccount":{"properties":{"bw_exceeded":{"type":"boolean"},"bw_limit_mb":{"type":"integer"},"bw_used_month_mb":{"type":"integer"},"cgi":{"type":"boolean"},"contact_email":{"type":"string"},"created_at":{"type":"integer"},"db_count":{"type":"integer"},"db_prefix":{"type":"string"},"db_used_bytes":{"type":"integer"},"default_email_quota_mb":{"type":"integer"},"disk_quota_mb":{"type":"integer"},"disk_used_mb":{"type":"integer"},"feature_list_id":{"type":"string"},"home_dir":{"type":"string"},"id":{"type":"string"},"inodes_limit":{"type":"integer"},"inodes_used":{"type":"integer"},"ip_address":{"type":"string"},"ip_id":{"type":"string"},"is_reseller":{"type":"boolean"},"locale":{"type":"string"},"main_domain":{"type":"string"},"make_reseller":{"type":"boolean"},"max_addon":{"type":"integer"},"max_email":{"type":"integer"},"max_email_per_hour":{"type":"integer"},"max_email_quota_mb":{"type":"integer"},"max_ftp":{"type":"integer"},"max_parked":{"type":"integer"},"max_sql":{"type":"integer"},"max_sub":{"type":"integer"},"owner_id":{"type":"string"},"owner_name":{"type":"string"},"package_id":{"type":"string"},"package_name":{"type":"string"},"php_max_children":{"type":"integer"},"shell":{"type":"string"},"status":{"type":"string"},"suspend_locked":{"type":"boolean"},"suspend_reason":{"type":"string"},"suspended_at":{"type":"integer"},"suspended_by":{"type":"string"},"theme":{"type":"string"},"uid":{"type":"integer"},"username":{"type":"string"}},"required":["bw_exceeded","bw_used_month_mb","cgi","contact_email","created_at","db_count","db_prefix","db_used_bytes","disk_used_mb","feature_list_id","home_dir","id","inodes_used","ip_address","ip_id","is_reseller","locale","main_domain","make_reseller","owner_id","owner_name","package_id","package_name","shell","status","suspend_locked","suspend_reason","theme","uid","username"],"type":"object"},"StoreAccountCounts":{"properties":{"active":{"type":"integer"},"disk_used_mb":{"type":"integer"},"over_bandwidth":{"type":"integer"},"over_quota":{"type":"integer"},"suspended":{"type":"integer"},"total":{"type":"integer"}},"required":["active","disk_used_mb","over_bandwidth","over_quota","suspended","total"],"type":"object"},"StoreAccountOwner":{"properties":{"accounts":{"type":"integer"},"id":{"type":"string"},"username":{"type":"string"}},"required":["accounts","id","username"],"type":"object"},"StoreAccountUsage":{"properties":{"bw_limit_mb":{"type":"integer"},"disk_quota_mb":{"type":"integer"},"max_addon":{"type":"integer"},"max_email":{"type":"integer"},"max_email_quota_mb":{"type":"integer"},"max_ftp":{"type":"integer"},"max_parked":{"type":"integer"},"max_sql":{"type":"integer"},"max_sub":{"type":"integer"}},"required":["bw_limit_mb","disk_quota_mb","max_addon","max_email","max_email_quota_mb","max_ftp","max_parked","max_sql","max_sub"],"type":"object"},"StoreAdminTwoFactor":{"properties":{"disabled":{"type":"boolean"},"enabled_at":{"type":"integer"},"id":{"type":"string"},"is_root":{"type":"boolean"},"issuer":{"type":"string"},"last_login_at":{"type":"integer"},"two_factor_enabled":{"type":"boolean"},"username":{"type":"string"}},"required":["disabled","id","is_root","two_factor_enabled","username"],"type":"object"},"StoreAppProcess":{"properties":{"account_id":{"type":"string"},"app_id":{"type":"string"},"command":{"type":"string"},"created_at":{"type":"integer"},"enabled":{"type":"boolean"},"id":{"type":"string"},"instances":{"type":"integer"},"kind":{"type":"string"},"name":{"type":"string"},"options":{},"stop_wait":{"type":"integer"},"updated_at":{"type":"integer"}},"required":["account_id","app_id","command","created_at","enabled","id","instances","kind","name","options","stop_wait","updated_at"],"type":"object"},"StoreAutoSSLAccount":{"properties":{"account_id":{"type":"string"},"last_run_at":{"type":"integer"},"next_run_at":{"type":"integer"},"problems":{"type":"integer"},"status":{"type":"string"},"username":{"type":"string"}},"required":["account_id","problems","status","username"],"type":"object"},"StoreBFEvent":{"properties":{"action":{"type":"string"},"at":{"type":"integer"},"by":{"type":"string"},"failures":{"type":"integer"},"id":{"type":"integer"},"kind":{"type":"string"},"reason":{"type":"string"},"service":{"type":"string"},"value":{"type":"string"}},"required":["action","at","by","failures","id","kind","value"],"type":"object"},"StoreBFRecord":{"properties":{"created_at":{"type":"integer"},"created_by":{"type":"string"},"expires_at":{"type":"integer"},"id":{"type":"string"},"kind":{"type":"string"},"list":{"type":"string"},"reason":{"type":"string"},"value":{"type":"string"}},"required":["created_at","created_by","id","kind","list","value"],"type":"object"},"StoreBackupConfig":{"properties":{"backup_dir":{"type":"string"},"db_mode":{"type":"string"},"enabled":{"type":"boolean"},"excludes":{"items":{"type":"string"},"type":"array"},"include":{"$ref":"#/components/schemas/StoreBackupInclude"},"min_free_pct":{"type":"integer"},"retain_local":{"type":"boolean"},"retention":{"$ref":"#/components/schemas/StoreBackupRetention"},"schedule":{"$ref":"#/components/schemas/StoreBackupSchedule"},"strict_retention":{"type":"boolean"},"type":{"type":"string"},"updated_at":{"type":"integer"}},"type":"object"},"StoreBackupDestination":{"properties":{"config":{},"created_at":{"type":"integer"},"enabled":{"type":"boolean"},"has_secret":{"type":"boolean"},"id":{"type":"string"},"last_error":{"type":"string"},"last_validated_at":{"type":"integer"},"last_validation_ok":{"type":"boolean"},"name":{"type":"string"},"timeout_s":{"type":"integer"},"type":{"type":"string"}},"required":["config","created_at","enabled","has_secret","id","name","timeout_s","type"],"type":"object"},"StoreBackupInclude":{"properties":{"accounts":{"type":"boolean"},"bandwidth":{"type":"boolean"},"logs":{"type":"boolean"},"suspended":{"type":"boolean"},"system":{"type":"boolean"}},"required":["accounts","bandwidth","logs","suspended","system"],"type":"object"},"StoreBackupRetention":{"properties":{"daily":{"type":"integer"},"monthly":{"type":"integer"},"weekly":{"type":"integer"}},"required":["daily","monthly","weekly"],"type":"object"},"StoreBackupRun":{"properties":{"accounts_failed":{"type":"integer"},"accounts_ok":{"type":"integer"},"accounts_total":{"type":"integer"},"bytes_total":{"type":"integer"},"finished_at":{"type":"integer"},"id":{"type":"string"},"job_id":{"type":"string"},"kind":{"type":"string"},"schedule":{"type":"string"},"started_at":{"type":"integer"},"status":{"type":"string"}},"required":["accounts_failed","accounts_ok","accounts_total","bytes_total","id","kind","started_at","status"],"type":"object"},"StoreBackupSchedule":{"properties":{"daily":{"items":{"type":"integer"},"type":"array"},"monthly":{"items":{"type":"integer"},"type":"array"},"weekly":{"type":"integer"}},"required":["daily","monthly"],"type":"object"},"StoreBackupSnapshot":{"properties":{"account_exists":{"type":"boolean"},"account_id":{"type":"string"},"destination_id":{"type":"string"},"format":{"type":"string"},"id":{"type":"string"},"layout":{"type":"string"},"location":{"type":"string"},"main_domain":{"type":"string"},"run_id":{"type":"string"},"schedule":{"type":"string"},"size_bytes":{"type":"integer"},"status":{"type":"string"},"taken_at":{"type":"integer"},"username":{"type":"string"}},"required":["account_exists","format","id","layout","location","schedule","size_bytes","status","taken_at","username"],"type":"object"},"StoreBandwidthMonthRow":{"properties":{"account_id":{"type":"string"},"by_protocol":{"additionalProperties":{"type":"integer"},"type":"object"},"bytes":{"type":"integer"},"limit_mb":{"type":"integer"},"main_domain":{"type":"string"},"status":{"type":"string"},"username":{"type":"string"}},"required":["account_id","by_protocol","bytes","main_domain","status","username"],"type":"object"},"StoreBandwidthRow":{"properties":{"bytes_in":{"type":"integer"},"bytes_out":{"type":"integer"},"day":{"type":"integer"},"domain":{"type":"string"},"protocol":{"type":"string"}},"required":["bytes_in","bytes_out","day","domain","protocol"],"type":"object"},"StoreCFAccount":{"properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"},"StoreCloudflareConnection":{"properties":{"account_id":{"type":"string"},"cf_accounts":{"items":{"$ref":"#/components/schemas/StoreCFAccount"},"type":"array"},"checked_at":{"type":"integer"},"created_at":{"type":"integer"},"created_by":{"type":"string"},"last_error":{"type":"string"},"permissions":{"additionalProperties":{"type":"boolean"},"type":"object"},"status":{"type":"string"},"token_hint":{"type":"string"}},"required":["account_id","cf_accounts","checked_at","created_at","created_by","permissions","status","token_hint"],"type":"object"},"StoreCloudflareZone":{"properties":{"account_id":{"type":"string"},"cf_status":{"type":"string"},"cf_zone_id":{"type":"string"},"created_at":{"type":"integer"},"last_error":{"type":"string"},"last_plan":{},"last_sync_at":{"type":"integer"},"name_servers":{"items":{"type":"string"},"type":"array"},"purge_on_deploy":{"type":"boolean"},"ssl_strict":{"type":"boolean"},"sync_status":{"type":"string"},"zone_id":{"type":"string"},"zone_name":{"type":"string"}},"required":["account_id","cf_status","cf_zone_id","created_at","last_plan","name_servers","purge_on_deploy","ssl_strict","sync_status","zone_id","zone_name"],"type":"object"},"StoreDBAccessHost":{"properties":{"comment":{"type":"string"},"created_at":{"type":"integer"},"host":{"type":"string"},"id":{"type":"string"}},"required":["comment","created_at","host","id"],"type":"object"},"StoreDBUser":{"properties":{"account_id":{"type":"string"},"auth_plugin":{"type":"string"},"created_at":{"type":"integer"},"grants":{"items":{"$ref":"#/components/schemas/StoreDatabaseGrant"},"type":"array"},"id":{"type":"string"},"name":{"type":"string"},"updated_at":{"type":"integer"}},"required":["account_id","auth_plugin","created_at","grants","id","name","updated_at"],"type":"object"},"StoreDNSRecord":{"properties":{"content":{"type":"string"},"disabled":{"type":"boolean"},"id":{"type":"string"},"managed_by":{"type":"string"},"name":{"type":"string"},"priority":{"type":"integer"},"proxied":{"type":"boolean"},"ttl":{"type":"integer"},"type":{"type":"string"},"zone_id":{"type":"string"}},"required":["content","disabled","id","managed_by","name","ttl","type","zone_id"],"type":"object"},"StoreDatabase":{"properties":{"account_id":{"type":"string"},"created_at":{"type":"integer"},"id":{"type":"string"},"name":{"type":"string"},"size_bytes":{"type":"integer"},"size_updated_at":{"type":"integer"},"users":{"items":{"$ref":"#/components/schemas/StoreDatabaseGrant"},"type":"array"}},"required":["account_id","created_at","id","name","size_bytes","users"],"type":"object"},"StoreDatabaseGrant":{"properties":{"database":{"type":"string"},"database_id":{"type":"string"},"privileges":{"items":{"type":"string"},"type":"array"},"user":{"type":"string"},"user_id":{"type":"string"}},"required":["database","database_id","privileges","user","user_id"],"type":"object"},"StoreDelivery":{"properties":{"attempt":{"type":"integer"},"body":{"type":"string"},"channel_id":{"type":"string"},"created_at":{"type":"integer"},"delivered_at":{"type":"integer"},"event_type":{"type":"string"},"id":{"type":"integer"},"last_error":{"type":"string"},"link":{"type":"string"},"next_attempt_at":{"type":"integer"},"priority":{"type":"string"},"status":{"type":"string"},"title":{"type":"string"}},"required":["attempt","channel_id","created_at","event_type","id","next_attempt_at","priority","status","title"],"type":"object"},"StoreDeployment":{"properties":{"account_id":{"type":"string"},"activated":{"type":"boolean"},"app_id":{"type":"string"},"branch":{"type":"string"},"commit_author":{"type":"string"},"commit_message":{"type":"string"},"commit_sha":{"type":"string"},"created_at":{"type":"integer"},"created_by":{"type":"string"},"error":{"type":"string"},"finished_at":{"type":"integer"},"id":{"type":"string"},"job_id":{"type":"string"},"release":{"type":"string"},"started_at":{"type":"integer"},"status":{"type":"string"},"trigger":{"type":"string"}},"required":["account_id","activated","app_id","branch","commit_author","commit_message","commit_sha","created_at","created_by","error","id","job_id","release","status","trigger"],"type":"object"},"StoreDomainForward":{"properties":{"domain":{"type":"string"},"domain_id":{"type":"string"},"to_domain":{"type":"string"}},"required":["domain","domain_id","to_domain"],"type":"object"},"StoreDomainPHPRow":{"properties":{"account_id":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"php_version":{"type":"string"},"type":{"type":"string"},"username":{"type":"string"}},"required":["account_id","domain","domain_id","php_version","type","username"],"type":"object"},"StoreDomainRename":{"properties":{"from":{"type":"string"},"id":{"type":"string"},"to":{"type":"string"},"type":{"type":"string"}},"required":["from","id","to","type"],"type":"object"},"StoreDomainRow":{"properties":{"docroot":{"type":"string"},"force_https":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"parent_id":{"type":"string"},"parent_name":{"type":"string"},"php_version":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"required":["force_https","id","name","status","type"],"type":"object"},"StoreDomainSSL":{"properties":{"autossl_excluded":{"type":"boolean"},"cert_id":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"force_https":{"type":"boolean"},"has_cert":{"type":"boolean"},"issuer":{"type":"string"},"names":{"items":{"type":"string"},"type":"array"},"not_after":{"type":"integer"},"not_before":{"type":"integer"},"problem":{"type":"string"},"source":{"type":"string"},"type":{"type":"string"}},"required":["autossl_excluded","domain","domain_id","force_https","has_cert","type"],"type":"object"},"StoreEnvVersion":{"properties":{"app_id":{"type":"string"},"created_at":{"type":"integer"},"created_by":{"type":"string"},"id":{"type":"string"}},"required":["app_id","created_at","created_by","id"],"type":"object"},"StoreErrorPageRow":{"properties":{"code":{"type":"integer"},"domain_id":{"type":"string"},"html":{"type":"string"},"updated_at":{"type":"integer"}},"required":["code","domain_id","html","updated_at"],"type":"object"},"StoreEvent":{"properties":{"account_id":{"type":"string"},"created_at":{"type":"integer"},"data":{},"id":{"type":"string"},"seq":{"type":"integer"},"type":{"type":"string"}},"required":["created_at","data","id","seq","type"],"type":"object"},"StoreFTPAccount":{"properties":{"account_id":{"type":"string"},"created_at":{"type":"integer"},"domain":{"type":"string"},"domain_id":{"type":"string"},"full_login":{"type":"string"},"has_password":{"type":"boolean"},"home_dir":{"type":"string"},"id":{"type":"string"},"kind":{"type":"string"},"login":{"type":"string"},"quota_mb":{"type":"integer"},"updated_at":{"type":"integer"}},"required":["account_id","created_at","full_login","has_password","home_dir","id","kind","login","updated_at"],"type":"object"},"StoreFeatureList":{"properties":{"accounts":{"type":"integer"},"created_at":{"type":"integer"},"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"off":{"items":{"type":"string"},"type":"array"},"owner_id":{"type":"string"},"packages":{"type":"integer"},"updated_at":{"type":"integer"}},"required":["accounts","created_at","id","kind","name","off","owner_id","packages","updated_at"],"type":"object"},"StoreFilterAction":{"properties":{"dest":{"type":"string"},"type":{"type":"string"}},"required":["type"],"type":"object"},"StoreFilterRule":{"properties":{"header":{"type":"string"},"op":{"type":"string"},"part":{"type":"string"},"value":{"type":"string"}},"required":["op","part","value"],"type":"object"},"StoreForwarder":{"properties":{"address":{"type":"string"},"created_at":{"type":"integer"},"dest_type":{"type":"string"},"destination":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"fail_message":{"type":"string"},"id":{"type":"string"},"local_part":{"type":"string"}},"required":["address","created_at","dest_type","domain","domain_id","id","local_part"],"type":"object"},"StoreGitConnection":{"properties":{"account_id":{"type":"string"},"account_login":{"type":"string"},"account_type":{"type":"string"},"apps":{"type":"integer"},"avatar_url":{"type":"string"},"created_at":{"type":"integer"},"github_user_id":{"type":"string"},"id":{"type":"string"},"installation_id":{"type":"integer"},"nickname":{"type":"string"},"provider":{"type":"string"},"status":{"type":"string"}},"required":["account_id","account_login","account_type","apps","avatar_url","created_at","github_user_id","id","installation_id","nickname","provider","status"],"type":"object"},"StoreHotlinkSettings":{"properties":{"allow_direct":{"type":"boolean"},"allowed":{"items":{"type":"string"},"type":"array"},"enabled":{"type":"boolean"},"extensions":{"items":{"type":"string"},"type":"array"},"redirect":{"type":"string"}},"type":"object"},"StoreIPAddress":{"properties":{"account_id":{"type":"string"},"accounts":{"type":"integer"},"address":{"type":"string"},"created_at":{"type":"integer"},"family":{"type":"integer"},"id":{"type":"string"},"interface":{"type":"string"},"kind":{"type":"string"},"nat_public":{"type":"string"},"prefix_len":{"type":"integer"},"username":{"type":"string"}},"required":["accounts","address","created_at","family","id","kind","prefix_len"],"type":"object"},"StoreIPBlock":{"properties":{"cidrs":{"items":{"type":"string"},"type":"array"},"entry":{"type":"string"}},"required":["cidrs","entry"],"type":"object"},"StoreIPChoice":{"properties":{"accounts":{"type":"integer"},"address":{"type":"string"},"free":{"type":"boolean"},"id":{"type":"string"},"kind":{"type":"string"},"owner":{"type":"string"}},"required":["accounts","address","free","id","kind"],"type":"object"},"StoreIncident":{"properties":{"account_id":{"type":"string"},"action":{"type":"string"},"details":{"additionalProperties":{},"type":"object"},"detected_at":{"type":"integer"},"id":{"type":"string"},"kind":{"type":"string"},"resolved_at":{"type":"integer"},"resolved_by":{"type":"string"},"username":{"type":"string"}},"required":["account_id","action","details","detected_at","id","kind","username"],"type":"object"},"StoreIndexSetting":{"properties":{"mode":{"type":"string"},"path":{"type":"string"}},"type":"object"},"StoreIsolation":{"properties":{"cpu_pct":{"type":"integer"},"ep":{"type":"integer"},"inodes":{"type":"integer"},"io_mbps":{"type":"integer"},"iops":{"type":"integer"},"mem_mb":{"type":"integer"},"nproc":{"type":"integer"}},"type":"object"},"StoreJob":{"properties":{"account_id":{"type":"string"},"attempts":{"type":"integer"},"created_at":{"type":"integer"},"error":{"type":"string"},"finished_at":{"type":"integer"},"id":{"type":"string"},"kind":{"type":"string"},"max_attempts":{"type":"integer"},"payload":{},"progress_pct":{"type":"integer"},"started_at":{"type":"integer"},"status":{"type":"string"}},"required":["attempts","created_at","id","kind","max_attempts","payload","progress_pct","status"],"type":"object"},"StoreJobLog":{"properties":{"at":{"type":"integer"},"level":{"type":"string"},"message":{"type":"string"}},"required":["at","level","message"],"type":"object"},"StoreJobRun":{"properties":{"account_id":{"type":"string"},"attempts":{"type":"integer"},"created_at":{"type":"integer"},"error":{"type":"string"},"finished_at":{"type":"integer"},"id":{"type":"string"},"kind":{"type":"string"},"max_attempts":{"type":"integer"},"payload":{},"progress_pct":{"type":"integer"},"started_at":{"type":"integer"},"status":{"type":"string"},"username":{"type":"string"}},"type":"object"},"StoreLoginAttempt":{"properties":{"at":{"type":"integer"},"ip":{"type":"string"},"reason":{"type":"string"},"service":{"type":"string"},"success":{"type":"boolean"},"username":{"type":"string"}},"required":["at","ip","service","success"],"type":"object"},"StoreMailAccount":{"properties":{"account_id":{"type":"string"},"address":{"type":"string"},"autoresponder":{"type":"boolean"},"created_at":{"type":"integer"},"domain":{"type":"string"},"domain_id":{"type":"string"},"filters_count":{"type":"integer"},"id":{"type":"string"},"is_system":{"type":"boolean"},"local_part":{"type":"string"},"login_state":{"type":"string"},"quota_mb":{"type":"integer"},"receive_state":{"type":"string"},"send_state":{"type":"string"},"used_bytes":{"type":"integer"},"used_updated_at":{"type":"integer"}},"required":["account_id","address","autoresponder","created_at","domain","domain_id","filters_count","id","is_system","local_part","login_state","receive_state","send_state","used_bytes"],"type":"object"},"StoreMailDelivery":{"properties":{"account_id":{"type":"string"},"at":{"type":"integer"},"auth_user":{"type":"string"},"detail":{"type":"string"},"event":{"type":"string"},"host":{"type":"string"},"id":{"type":"integer"},"message_id":{"type":"string"},"recipient":{"type":"string"},"sender":{"type":"string"},"server":{"type":"string"},"size_bytes":{"type":"integer"},"username":{"type":"string"}},"required":["at","auth_user","event","host","id","message_id","recipient","sender","size_bytes"],"type":"object"},"StoreMailRoutingRow":{"properties":{"account_id":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"routing":{"type":"string"},"type":{"type":"string"},"username":{"type":"string"}},"required":["account_id","domain","domain_id","routing","type","username"],"type":"object"},"StoreNameChange":{"properties":{"from":{"type":"string"},"kind":{"type":"string"},"to":{"type":"string"}},"required":["from","kind","to"],"type":"object"},"StoreNode":{"properties":{"accounts":{"type":"integer"},"address":{"type":"string"},"created_at":{"type":"integer"},"fingerprint":{"type":"string"},"hostname":{"type":"string"},"id":{"type":"string"},"is_default":{"type":"boolean"},"last_error":{"type":"string"},"last_seen_at":{"type":"integer"},"name":{"type":"string"},"os":{"type":"string"},"public_ip":{"type":"string"},"role":{"type":"string"},"status":{"type":"string"},"tunnel_index":{"type":"integer"},"version":{"type":"string"}},"required":["accounts","address","created_at","fingerprint","hostname","id","is_default","name","public_ip","role","status","tunnel_index"],"type":"object"},"StoreNotification":{"properties":{"body":{"type":"string"},"created_at":{"type":"integer"},"event_type":{"type":"string"},"id":{"type":"string"},"link":{"type":"string"},"priority":{"type":"string"},"read_at":{"type":"integer"},"title":{"type":"string"}},"required":["created_at","event_type","id","priority","title"],"type":"object"},"StorePackage":{"properties":{"account_count":{"type":"integer"},"bw_limit_mb":{"type":"integer"},"cgi":{"type":"boolean"},"created_at":{"type":"integer"},"dedicated_ip":{"type":"boolean"},"default_email_quota_mb":{"type":"integer"},"digest_auth":{"type":"boolean"},"disk_quota_mb":{"type":"integer"},"feature_list_id":{"type":"string"},"feature_list_name":{"type":"string"},"id":{"type":"string"},"isolation":{"$ref":"#/components/schemas/StoreIsolation"},"locale":{"type":"string"},"max_addon":{"type":"integer"},"max_email":{"type":"integer"},"max_email_per_hour":{"type":"integer"},"max_email_quota_mb":{"type":"integer"},"max_ftp":{"type":"integer"},"max_parked":{"type":"integer"},"max_sql":{"type":"integer"},"max_sub":{"type":"integer"},"name":{"type":"string"},"owner":{"type":"string"},"owner_id":{"type":"string"},"php_max_children":{"type":"integer"},"shell":{"type":"string"},"theme":{"type":"string"},"updated_at":{"type":"integer"}},"required":["account_count","cgi","created_at","dedicated_ip","digest_auth","feature_list_id","feature_list_name","id","isolation","locale","name","owner","owner_id","shell","theme","updated_at"],"type":"object"},"StoreProtectedDir":{"properties":{"account_id":{"type":"string"},"created_at":{"type":"integer"},"id":{"type":"string"},"path":{"type":"string"},"realm":{"type":"string"},"updated_at":{"type":"integer"},"users":{"items":{"$ref":"#/components/schemas/StoreProtectedUser"},"type":"array"}},"required":["account_id","created_at","id","path","realm","updated_at","users"],"type":"object"},"StoreProtectedUser":{"properties":{"created_at":{"type":"integer"},"username":{"type":"string"}},"required":["created_at","username"],"type":"object"},"StoreRedirectRow":{"properties":{"code":{"type":"integer"},"created_at":{"type":"integer"},"domain":{"type":"string"},"domain_id":{"type":"string"},"id":{"type":"string"},"path":{"type":"string"},"target_url":{"type":"string"},"wildcard":{"type":"boolean"},"www_mode":{"type":"string"}},"required":["code","created_at","domain","domain_id","id","path","target_url","wildcard","www_mode"],"type":"object"},"StoreReseller":{"properties":{"account_status":{"type":"string"},"acl_list_id":{"type":"string"},"acl_list_name":{"type":"string"},"bw_limit_mb":{"type":"integer"},"contact_email":{"type":"string"},"created_at":{"type":"integer"},"disk_limit_mb":{"type":"integer"},"id":{"type":"string"},"main_domain":{"type":"string"},"max_accounts":{"type":"integer"},"nameservers":{"items":{"type":"string"},"type":"array"},"oversell_bw":{"type":"boolean"},"oversell_disk":{"type":"boolean"},"owns_itself":{"type":"boolean"},"panel_hostname":{"type":"string"},"suspend_reason":{"type":"string"},"suspended_at":{"type":"integer"},"usage":{"$ref":"#/components/schemas/StoreResellerUsage"},"username":{"type":"string"}},"required":["account_status","acl_list_id","acl_list_name","contact_email","created_at","id","main_domain","nameservers","oversell_bw","oversell_disk","owns_itself","panel_hostname","usage","username"],"type":"object"},"StoreResellerUsage":{"properties":{"accounts":{"type":"integer"},"bw_allocated_mb":{"type":"integer"},"bw_unlimited_accounts":{"type":"integer"},"bw_used_mb":{"type":"integer"},"disk_allocated_mb":{"type":"integer"},"disk_unlimited_accounts":{"type":"integer"},"disk_used_mb":{"type":"integer"},"suspended":{"type":"integer"}},"required":["accounts","bw_allocated_mb","bw_unlimited_accounts","bw_used_mb","disk_allocated_mb","disk_unlimited_accounts","disk_used_mb","suspended"],"type":"object"},"StoreRestoreJob":{"properties":{"account_id":{"type":"string"},"created_at":{"type":"integer"},"created_by":{"type":"string"},"finished_at":{"type":"integer"},"id":{"type":"string"},"job_id":{"type":"string"},"mode":{"type":"string"},"progress":{"type":"integer"},"snapshot_id":{"type":"string"},"source":{"type":"string"},"started_at":{"type":"integer"},"status":{"type":"string"},"target_username":{"type":"string"}},"required":["created_at","created_by","id","mode","progress","source","status","target_username"],"type":"object"},"StoreSPFCustom":{"properties":{"all":{"type":"string"},"hosts":{"items":{"type":"string"},"type":"array"},"includes":{"items":{"type":"string"},"type":"array"},"ip4":{"items":{"type":"string"},"type":"array"},"ip6":{"items":{"type":"string"},"type":"array"}},"type":"object"},"StoreSSLCSR":{"properties":{"created_at":{"type":"integer"},"domains":{"items":{"type":"string"},"type":"array"},"friendly_name":{"type":"string"},"id":{"type":"string"},"key_id":{"type":"string"},"pem":{"type":"string"},"subject":{"additionalProperties":{"type":"string"},"type":"object"}},"required":["created_at","domains","friendly_name","id","key_id","pem","subject"],"type":"object"},"StoreSSLCert":{"properties":{"chain_pem":{"type":"string"},"created_at":{"type":"integer"},"domains":{"items":{"type":"string"},"type":"array"},"friendly_name":{"type":"string"},"id":{"type":"string"},"installed_on":{"items":{"type":"string"},"type":"array"},"issuer":{"type":"string"},"key_id":{"type":"string"},"not_after":{"type":"integer"},"not_before":{"type":"integer"},"pem":{"type":"string"},"serial":{"type":"string"},"sha256":{"type":"string"},"source":{"type":"string"},"validation":{"type":"string"}},"required":["created_at","domains","friendly_name","id","installed_on","issuer","not_after","not_before","serial","sha256","source","validation"],"type":"object"},"StoreSSLKey":{"properties":{"cert_count":{"type":"integer"},"created_at":{"type":"integer"},"csr_count":{"type":"integer"},"friendly_name":{"type":"string"},"id":{"type":"string"},"key_type":{"type":"string"},"pub_sha256":{"type":"string"}},"required":["cert_count","created_at","csr_count","friendly_name","id","key_type","pub_sha256"],"type":"object"},"StoreSenderVolume":{"properties":{"account_id":{"type":"string"},"deferred":{"type":"integer"},"failed":{"type":"integer"},"max_email_per_hour":{"type":"integer"},"messages":{"type":"integer"},"unique_recipients":{"type":"integer"},"username":{"type":"string"}},"required":["account_id","deferred","failed","messages","unique_recipients","username"],"type":"object"},"StoreServerDomain":{"properties":{"account_id":{"type":"string"},"docroot":{"type":"string"},"force_https":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"parent_id":{"type":"string"},"parent_name":{"type":"string"},"php_version":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"},"username":{"type":"string"}},"required":["account_id","username"],"type":"object"},"StoreSetupState":{"properties":{"completed":{"type":"boolean"},"contact_email":{"type":"string"},"hostname":{"type":"string"},"license_status":{"type":"string"},"main_ipv4":{"type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"},"terms_accepted":{"type":"boolean"},"trial_ends_at":{"type":"integer"}},"required":["completed","contact_email","hostname","license_status","main_ipv4","nameservers","terms_accepted"],"type":"object"},"StoreSpamSettings":{"properties":{"allow_list":{"items":{"type":"string"},"type":"array"},"auto_delete":{"type":"boolean"},"auto_delete_threshold":{"type":"number"},"block_list":{"items":{"type":"string"},"type":"array"},"enabled":{"type":"boolean"},"spam_box":{"type":"boolean"},"subject_prefix":{"type":"string"},"tag_subject":{"type":"boolean"},"threshold":{"type":"number"},"updated_at":{"type":"integer"}},"type":"object"},"StoreTransferSession":{"properties":{"auth_method":{"type":"string"},"created_at":{"type":"integer"},"finished_at":{"type":"integer"},"host_key_sha256":{"type":"string"},"id":{"type":"string"},"initiator":{"type":"string"},"last_activity_at":{"type":"integer"},"options":{},"remote_analysis":{},"source_host":{"type":"string"},"source_port":{"type":"integer"},"source_type":{"type":"string"},"state":{"type":"string"}},"required":["auth_method","created_at","id","initiator","last_activity_at","options","source_host","source_port","source_type","state"],"type":"object"},"StoreUsageSample":{"properties":{"at":{"type":"integer"},"cpu_throttled_usec":{"type":"integer"},"cpu_usec":{"type":"integer"},"ep_peak":{"type":"integer"},"faults_cpu":{"type":"integer"},"faults_ep":{"type":"integer"},"faults_io":{"type":"integer"},"faults_mem":{"type":"integer"},"faults_nproc":{"type":"integer"},"io_pressure_avg":{"type":"number"},"io_read_bytes":{"type":"integer"},"io_read_ops":{"type":"integer"},"io_write_bytes":{"type":"integer"},"io_write_ops":{"type":"integer"},"mem_avg_bytes":{"type":"integer"},"mem_peak_bytes":{"type":"integer"},"nproc_peak":{"type":"integer"}},"required":["at","cpu_throttled_usec","cpu_usec","ep_peak","faults_cpu","faults_ep","faults_io","faults_mem","faults_nproc","io_pressure_avg","io_read_bytes","io_read_ops","io_write_bytes","io_write_ops","mem_avg_bytes","mem_peak_bytes","nproc_peak"],"type":"object"},"StoreVhostCert":{"properties":{"account_id":{"type":"string"},"account_status":{"type":"string"},"autossl_excluded":{"type":"boolean"},"cert_id":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"force_https":{"type":"boolean"},"has_cert":{"type":"boolean"},"issuer":{"type":"string"},"key_type":{"type":"string"},"names":{"items":{"type":"string"},"type":"array"},"not_after":{"type":"integer"},"not_before":{"type":"integer"},"problem":{"type":"string"},"source":{"type":"string"},"type":{"type":"string"},"username":{"type":"string"}},"required":["account_id","account_status","username"],"type":"object"},"StoreWebOptions":{"properties":{"hotlink":{"$ref":"#/components/schemas/StoreHotlinkSettings"},"indexes":{"items":{"$ref":"#/components/schemas/StoreIndexSetting"},"type":"array"},"ip_blocks":{"items":{"$ref":"#/components/schemas/StoreIPBlock"},"type":"array"}},"required":["hotlink","indexes","ip_blocks"],"type":"object"},"StoreWebhookDelivery":{"properties":{"attempts":{"type":"integer"},"created_at":{"type":"integer"},"delivered_at":{"type":"integer"},"endpoint_id":{"type":"string"},"event_id":{"type":"string"},"event_type":{"type":"string"},"http_status":{"type":"integer"},"id":{"type":"integer"},"next_attempt_at":{"type":"integer"},"response":{"type":"string"},"status":{"type":"string"}},"required":["attempts","created_at","endpoint_id","event_id","event_type","id","status"],"type":"object"},"StoreWebhookEndpoint":{"properties":{"account_id":{"type":"string"},"consecutive_failures":{"type":"integer"},"created_at":{"type":"integer"},"description":{"type":"string"},"disabled_reason":{"type":"string"},"enabled":{"type":"boolean"},"events":{"items":{"type":"string"},"type":"array"},"id":{"type":"string"},"owner_type":{"type":"string"},"updated_at":{"type":"integer"},"url":{"type":"string"}},"required":["consecutive_failures","created_at","description","enabled","events","id","owner_type","updated_at","url"],"type":"object"},"StoreZone":{"properties":{"account_id":{"type":"string"},"default_ttl":{"type":"integer"},"id":{"type":"string"},"name":{"type":"string"},"serial":{"type":"integer"}},"required":["account_id","default_ttl","id","name","serial"],"type":"object"},"StoreZoneInfo":{"properties":{"account_id":{"type":"string"},"account_status":{"type":"string"},"default_ttl":{"type":"integer"},"domain_id":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"published":{"type":"boolean"},"published_at":{"type":"integer"},"record_count":{"type":"integer"},"serial":{"type":"integer"},"soa":{"$ref":"#/components/schemas/StoreZoneSOA"},"template_id":{"type":"string"},"updated_at":{"type":"integer"},"username":{"type":"string"}},"required":["published","record_count","soa","updated_at"],"type":"object"},"StoreZoneSOA":{"properties":{"expire":{"type":"integer"},"minimum":{"type":"integer"},"mname":{"type":"string"},"refresh":{"type":"integer"},"retry":{"type":"integer"},"rname":{"type":"string"},"ttl":{"type":"integer"}},"required":["expire","minimum","mname","refresh","retry","rname","ttl"],"type":"object"},"StoreZoneTemplate":{"properties":{"body":{"type":"string"},"builtin":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"updated_at":{"type":"integer"}},"required":["body","builtin","id","name","updated_at"],"type":"object"},"TokenReq":{"properties":{"allowed_ips":{"items":{"type":"string"},"type":"array"},"expires_at":{"type":"integer"},"name":{"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},"TokenScope":{"properties":{"key":{"type":"string"},"label":{"type":"string"}},"required":["key","label"],"type":"object"},"TweakItem":{"properties":{"category":{"type":"string"},"default":{},"help":{"type":"string"},"is_default":{"type":"boolean"},"key":{"type":"string"},"keywords":{"items":{"type":"string"},"type":"array"},"label":{"type":"string"},"linked":{"type":"string"},"max":{"type":"integer"},"max_length":{"type":"integer"},"min":{"type":"integer"},"options":{"items":{"$ref":"#/components/schemas/SettingsOption"},"type":"array"},"type":{"type":"string"},"unit":{"type":"string"},"updated_at":{"type":"integer"},"updated_by":{"type":"string"},"value":{}},"required":["is_default","value"],"type":"object"},"UpdateConfig":{"properties":{"auto":{"type":"boolean"},"channel":{"type":"string"},"os":{"type":"boolean"},"url":{"type":"string"}},"required":["auto","channel","os","url"],"type":"object"},"UpdateMailReq":{"properties":{"login_state":{"type":"string"},"quota_mb":{"type":"integer"},"receive_state":{"type":"string"},"send_state":{"type":"string"},"unlimited":{"type":"boolean"}},"type":"object"},"UpdateManifest":{"properties":{"build":{"type":"integer"},"channel":{"type":"string"},"notes":{"type":"string"},"package":{"type":"string"},"released_at":{"type":"integer"},"sha256":{"type":"string"},"size":{"type":"integer"},"version":{"type":"string"}},"required":["build","channel","package","released_at","sha256","size","version"],"type":"object"},"UpdateOSPackage":{"properties":{"from":{"type":"string"},"name":{"type":"string"},"to":{"type":"string"}},"required":["name","to"],"type":"object"},"UpdateOSResult":{"properties":{"changed":{"items":{"$ref":"#/components/schemas/UpdateOSPackage"},"type":"array"},"errors":{"items":{"type":"string"},"type":"array"},"finished_at":{"type":"integer"},"reboot_required":{"type":"boolean"},"restart_pending":{"items":{"type":"string"},"type":"array"},"restarted":{"items":{"type":"string"},"type":"array"},"started_at":{"type":"integer"},"steps":{"items":{"$ref":"#/components/schemas/UpdateOSStep"},"type":"array"}},"required":["changed","finished_at","reboot_required","restart_pending","restarted","started_at"],"type":"object"},"UpdateOSStep":{"properties":{"command":{"type":"string"},"ok":{"type":"boolean"},"output":{"type":"string"}},"required":["command","ok"],"type":"object"},"UpdateResult":{"properties":{"finished_at":{"type":"integer"},"message":{"type":"string"},"status":{"type":"string"},"version":{"type":"string"}},"required":["finished_at","message","status","version"],"type":"object"},"UsageItem":{"properties":{"feature":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"limit":{"type":"integer"},"unit":{"type":"string"},"used":{"type":"integer"}},"required":["key","label","unit","used"],"type":"object"},"UserRow":{"properties":{"account_id":{"type":"string"},"hosts":{"items":{"type":"string"},"type":"array"},"plugin":{"type":"string"},"system":{"type":"boolean"},"user":{"type":"string"},"username":{"type":"string"}},"required":["hosts","plugin","system","user"],"type":"object"},"UserSessionResp":{"properties":{"account":{"additionalProperties":{"type":"string"},"type":"object"},"authenticated":{"type":"boolean"},"csrf_token":{"type":"string"},"expires_at":{"type":"integer"},"features":{"items":{"type":"string"},"type":"array"},"impersonated":{"type":"boolean"},"mfa_required":{"type":"boolean"},"nameservers":{"items":{"type":"string"},"type":"array"},"read_only":{"type":"boolean"},"reseller":{"type":"boolean"},"two_factor_setup_required":{"type":"boolean"}},"required":["authenticated","impersonated","mfa_required","read_only","reseller","two_factor_setup_required"],"type":"object"},"UserView":{"properties":{"account_id":{"type":"string"},"avatar_url":{"type":"string"},"created_at":{"type":"integer"},"gh_user_id":{"type":"integer"},"id":{"type":"string"},"installations":{"items":{"$ref":"#/components/schemas/StoreGitConnection"},"type":"array"},"login":{"type":"string"},"nickname":{"type":"string"}},"required":["installations"],"type":"object"},"VerRow":{"properties":{"default":{"type":"boolean"},"domains":{"type":"integer"},"version":{"type":"string"}},"required":["default","domains","version"],"type":"object"},"Visitor":{"properties":{"bytes":{"type":"integer"},"ip":{"type":"string"},"referer":{"type":"string"},"request":{"type":"string"},"status":{"type":"integer"},"time":{"type":"string"},"user_agent":{"type":"string"}},"required":["bytes","ip","referer","request","status","time","user_agent"],"type":"object"},"WebDirective":{"properties":{"basic":{"type":"boolean"},"default":{"type":"string"},"help":{"type":"string"},"max":{"type":"integer"},"min":{"type":"integer"},"name":{"type":"string"},"options":{"items":{"type":"string"},"type":"array"},"type":{"type":"string"}},"required":["basic","default","help","name","type"],"type":"object"},"WebhookReq":{"properties":{"description":{"type":"string"},"enabled":{"type":"boolean"},"events":{"items":{"type":"string"},"type":"array"},"url":{"type":"string"}},"type":"object"},"WebhooksEventType":{"properties":{"account":{"type":"boolean"},"description":{"type":"string"},"type":{"type":"string"}},"required":["account","description","type"],"type":"object"}},"securitySchemes":{"adminSession":{"description":"Ky Admin session (plus X-CSRF-Token on writes)","in":"cookie","name":"kp_admin","type":"apiKey"},"token":{"description":"API token (kpt_…)","scheme":"bearer","type":"http"},"userSession":{"description":"Customer panel session (plus X-CSRF-Token on writes)","in":"cookie","name":"kp_user","type":"apiKey"}}},"info":{"contact":{"name":"KyPanel support","url":"https://my.kypanel.com/tickets/new"},"description":"The API the KyPanel screens use, open to scripts and billing systems with API tokens (`Authorization: Bearer kpt_…`). Admin tokens are created in Ky Admin › Security Center › API Tokens, account tokens in the customer panel. Browser sessions use cookies plus the `X-CSRF-Token` header on every request that isn't GET.\n\nErrors are `application/problem+json` (see the Problem schema). Long operations answer 202 with a `job_id`: poll `GET /api/v1/jobs/{id}`, or subscribe to the `job.completed` webhook.\n\nEvery operation lists who may call it in `x-kypanel-access`: `root` (server administrator), `reseller` with the ACL keys it needs, `customer` (the account's own session or token) and whether API tokens may use it (`x-kypanel-token`).","license":{"name":"Proprietary","url":"https://kypanel.com/terms/"},"title":"KyPanel API","version":"1"},"openapi":"3.1.0","paths":{"/api/v1/accounts":{"get":{"description":"Returns the accounts with filters, sorting and (with ?page=) pagination, plus the list totals.","operationId":"listAccounts","parameters":[{"in":"query","name":"dir","schema":{"type":"string"}},{"in":"query","name":"over_bandwidth","schema":{"type":"string"}},{"in":"query","name":"over_quota","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"package","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"string"}},{"in":"query","name":"per_page","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"counts":{"$ref":"#/components/schemas/StoreAccountCounts"},"items":{"items":{"$ref":"#/components/schemas/StoreAccount"},"type":"array"},"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List accounts","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: list-accts)","x-kypanel-token":"admin token area: accounts"},"post":{"operationId":"createAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountReq"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: reseller-limit"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: conflict"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create an account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: create-acct)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts-bandwidth":{"get":{"description":"Returns every account's traffic in ?month=YYYY-MM (default: this month, server time zone).","operationId":"bandwidthByMonth","parameters":[{"in":"query","name":"month","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"current":{"type":"boolean"},"items":{"items":{"$ref":"#/components/schemas/StoreBandwidthMonthRow"},"type":"array"},"month":{"type":"string"},"timezone":{"type":"string"},"total_bytes":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Bandwidth of every account in a month","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: show-bandwidth or list-accts)","x-kypanel-token":"admin token area: server"}},"/api/v1/accounts-check":{"get":{"operationId":"checkAccount","parameters":[{"in":"query","name":"domain","schema":{"type":"string"}},{"in":"query","name":"username","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Check a username or domain before creating an account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: create-acct)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts-owners":{"get":{"operationId":"accountOwners","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreAccountOwner"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the possible account owners (root and resellers)","tags":["Accounts"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/accounts/bulk-terminate":{"post":{"operationId":"bulkTerminate","requestBody":{"content":{"application/json":{"schema":{"properties":{"confirm":{"type":"string"},"ids":{"items":{"type":"string"},"type":"array"},"keep_dns":{"type":"boolean"},"keep_home":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Result"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: confirmation-required, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Terminate several accounts","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: kill-acct)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/export.csv":{"get":{"description":"Streams the filtered list as CSV (every match, no pagination).","operationId":"exportAccounts","parameters":[{"in":"query","name":"dir","schema":{"type":"string"}},{"in":"query","name":"over_bandwidth","schema":{"type":"string"}},{"in":"query","name":"over_quota","schema":{"type":"string"}},{"in":"query","name":"owner","schema":{"type":"string"}},{"in":"query","name":"package","schema":{"type":"string"}},{"in":"query","name":"page","schema":{"type":"string"}},{"in":"query","name":"per_page","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"sort","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Export the account list as CSV","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: list-accts)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}":{"delete":{"operationId":"deleteAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"confirm","schema":{"type":"string"}},{"in":"query","name":"keep_home","schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: confirmation-required"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-terminating, is-reseller"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Terminate an account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: kill-acct)","x-kypanel-token":"admin token area: accounts"},"get":{"operationId":"getAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreAccount"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get an account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: list-accts or create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/accounts/{id}/2fa":{"delete":{"description":"An admin turns a customer's 2FA off (lost phone and recovery codes).","operationId":"acct2FAReset","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn off the account's two-factor authentication (admin)","tags":["Authentication"],"x-kypanel-access":"root, reseller (ACL: passwd)","x-kypanel-token":"API tokens can't use this endpoint"},"get":{"operationId":"acct2FAStatus","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"},"enabled_at":{"type":"integer"},"recovery_codes_left":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Two-factor authentication status","tags":["Authentication"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/2fa/disable":{"post":{"operationId":"acct2FADisable","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: customer-only"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn off two-factor authentication","tags":["Authentication"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/2fa/enable":{"post":{"operationId":"acct2FAEnable","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"enroll_token":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"recovery_codes":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: invalid-enroll-token, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: customer-only"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn on two-factor authentication","tags":["Authentication"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/2fa/recovery-codes":{"post":{"operationId":"acct2FARecoveryCodes","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"recovery_codes":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: customer-only"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: no-2fa"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Generate new recovery codes","tags":["Authentication"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/2fa/setup":{"post":{"operationId":"acct2FASetup","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"enroll_token":{"type":"string"},"otpauth_uri":{"type":"string"},"secret":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: customer-only"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Start two-factor authentication setup","tags":["Authentication"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/apps":{"get":{"operationId":"appList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AppView"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List apps","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"},"post":{"operationId":"appCreate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingAppInput"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"app":{"$ref":"#/components/schemas/AppView"},"webhook_secret":{"type":"string"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit-reached, not-ready, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create an app","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/options":{"get":{"operationId":"appOptions","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"node_versions":{"items":{"type":"string"},"type":"array"},"php_versions":{"items":{"type":"string"},"type":"array"},"python_versions":{"items":{"type":"string"},"type":"array"},"types":{"items":{"additionalProperties":{},"type":"object"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Options for a new app (runtimes, domains, versions)","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}":{"delete":{"operationId":"appDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"query","name":"confirm","schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: confirmation-required"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete an app","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"},"get":{"operationId":"appGet","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"app":{"$ref":"#/components/schemas/AppView"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get an app","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"},"put":{"operationId":"appUpdate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingAppInput"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"app":{"$ref":"#/components/schemas/AppView"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update an app","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/command":{"post":{"operationId":"appCommand","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"command":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-deployed, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Run a command in the app's directory","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/ctl":{"post":{"operationId":"appControl","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"action":{"type":"string"},"proc":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: ctl-failed"}},"summary":"Start, stop or restart the app's processes","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/deploy":{"post":{"operationId":"appDeploy","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"commit":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"deployment":{"$ref":"#/components/schemas/StoreDeployment"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: deploy-busy, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Deploy the app","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/deploy-hook":{"delete":{"operationId":"appHookDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove the app's deploy hook URL","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"},"post":{"operationId":"appHookRotate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create or rotate the app's deploy hook URL","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/deployments":{"get":{"operationId":"appDeployments","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreDeployment"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List deployments","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/deployments/{did}":{"get":{"operationId":"appDeployment","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"deployment":{"$ref":"#/components/schemas/StoreDeployment"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a deployment","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/deployments/{did}/cancel":{"post":{"operationId":"appDeployCancel","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready, not-running"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Cancel a deployment","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/deployments/{did}/log":{"get":{"operationId":"appDeployLog","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}},{"in":"query","name":"offset","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"offset":{"type":"integer"},"size":{"type":"integer"},"status":{"type":"string"},"text":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Deployment log","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/env":{"get":{"operationId":"appEnvGet","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"content":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the app's environment file","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"},"put":{"operationId":"appEnvPut","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"config_cache":{"type":"boolean"},"content":{"type":"string"},"restart_queues":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"notes":{"items":{"type":"string"},"type":"array"},"saved":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the app's environment file","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/env/history":{"get":{"operationId":"appEnvHistory","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreEnvVersion"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List versions of the environment file","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/env/history/{vid}":{"get":{"operationId":"appEnvVersion","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"path","name":"vid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"content":{"type":"string"},"created_at":{"type":"integer"},"created_by":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a version of the environment file","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/known-hosts":{"post":{"description":"Reads the Git server's host keys again and pins them (after the server changed its keys).","operationId":"appKnownHosts","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"host_key_fingerprints":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: not-ssh"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: keyscan-failed"}},"summary":"Pin the Git server's host keys again","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/logs":{"get":{"operationId":"appLogs","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"query","name":"file","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"App logs","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/processes":{"get":{"operationId":"appProcesses","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreAppProcess"},"type":"array"},"status":{}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the app's processes (workers, queues, scheduler)","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"},"post":{"operationId":"postAccountsIdAppsAidProcesses","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"command":{"type":"string"},"enabled":{"type":"boolean"},"instances":{"type":"integer"},"kind":{"type":"string"},"name":{"type":"string"},"stop_wait":{"type":"integer"},"worker":{"$ref":"#/components/schemas/HostingWorkerOptions"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"process":{"$ref":"#/components/schemas/StoreAppProcess"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: apply-failed"}},"summary":"Add a process","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/processes/{pid}":{"delete":{"operationId":"appProcessDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a process","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"},"put":{"operationId":"putAccountsIdAppsAidProcessesPid","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}},{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"command":{"type":"string"},"enabled":{"type":"boolean"},"instances":{"type":"integer"},"kind":{"type":"string"},"name":{"type":"string"},"stop_wait":{"type":"integer"},"worker":{"$ref":"#/components/schemas/HostingWorkerOptions"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"process":{"$ref":"#/components/schemas/StoreAppProcess"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: apply-failed"}},"summary":"Update a process","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/releases":{"get":{"operationId":"appReleases","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List releases","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/rollback":{"post":{"operationId":"appRollback","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"release":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"deployment":{"$ref":"#/components/schemas/StoreDeployment"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-live, deploy-busy, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Roll back to a previous release","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/webhook":{"get":{"operationId":"appWebhookGet","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"},"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the app's push-to-deploy webhook","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/apps/{aid}/webhook/rotate":{"post":{"operationId":"appWebhookRotate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"},"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rotate the app's push-to-deploy webhook","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: apps"}},"/api/v1/accounts/{id}/autossl":{"post":{"operationId":"runAutoSSL","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-running"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Run AutoSSL for the account","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_status","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/backup-enabled":{"put":{"operationId":"backupAccountToggle","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Include or exclude the account from backups","tags":["Accounts"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/backups":{"get":{"operationId":"accountBackups","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Entry"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the account's backups","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/full":{"post":{"operationId":"userFullBackup","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"destination":{"type":"string"},"host":{"type":"string"},"password":{"type":"string"},"path":{"type":"string"},"port":{"type":"integer"},"tls":{"type":"string"},"user":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: busy, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a full backup of the account","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/partial/databases/{db}":{"get":{"operationId":"partialDB","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"db","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download a database backup","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/partial/filters":{"get":{"operationId":"partialFilters","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingFiltersExport"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download the email filters","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/partial/forwarders/{did}":{"get":{"operationId":"partialForwarders","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download a domain's forwarders","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/partial/home":{"get":{"operationId":"partialHome","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download a home directory backup","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/partial/restore":{"post":{"description":"Takes an uploaded partial backup: kind=home|database (restored by a job) or forwarders|filters (added right away). Multipart fields: kind, file, and database / domain_id / overwrite as needed.","operationId":"partialRestore","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"added":{"type":"integer"},"notes":{"items":{"type":"string"},"type":"array"},"skipped":{"type":"integer"}},"type":"object"}}},"description":"OK"},"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: invalid-body, invalid-file, upload, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: rejected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Restore a partial backup","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/{sid}/download":{"get":{"operationId":"accountBackupDownload","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"sid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download a backup","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/{sid}/files":{"get":{"operationId":"accountBackupFiles","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"sid","required":true,"schema":{"type":"string"}},{"in":"query","name":"path","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"path":{"type":"string"},"taken_at":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Browse the files of a backup","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/backups/{sid}/restore-files":{"post":{"operationId":"accountBackupRestoreFiles","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"sid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"overwrite":{"type":"boolean"},"path":{"type":"string"},"to":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Restore files from a backup","tags":["Backups"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"backups","x-kypanel-token":"admin token area: accounts; account token area: backups"}},"/api/v1/accounts/{id}/bandwidth":{"get":{"description":"Returns the account's traffic per day, domain and protocol for the last ?days= (default 31).","operationId":"accountBandwidth","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"days","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"exceeded":{"type":"boolean"},"from_day":{"type":"integer"},"items":{"items":{"$ref":"#/components/schemas/StoreBandwidthRow"},"type":"array"},"limit_mb":{"type":"integer"},"timezone":{"type":"string"},"used_month_mb":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Bandwidth of the account per day","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: show-bandwidth or list-accts); customer","x-kypanel-feature":"bandwidth","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/accounts/{id}/cgi":{"put":{"operationId":"setAccountCGI","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"cgi":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Allow or forbid CGI scripts","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/cloudflare":{"delete":{"operationId":"cfDisconnect","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Disconnect Cloudflare","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"},"get":{"operationId":"cfOverview","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingCFOverview"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Cloudflare connection and zones","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"},"put":{"operationId":"cfConnect","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"token":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingCFOverview"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Connect Cloudflare with an API token","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"}},"/api/v1/accounts/{id}/cloudflare/zones/{zid}":{"delete":{"operationId":"cfUnlink","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Unlink a domain from Cloudflare","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"},"post":{"operationId":"cfLink","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"mail_elsewhere":{"type":"boolean"},"replace":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"added":{"type":"integer"},"conflicts":{"items":{"$ref":"#/components/schemas/CloudflareConflict"},"type":"array"},"removed":{"type":"integer"},"updated":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Link a domain to its Cloudflare zone","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"}},"/api/v1/accounts/{id}/cloudflare/zones/{zid}/create":{"post":{"operationId":"cfCreate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"cf_account_id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCloudflareZone"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Create the Cloudflare zone for a domain","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"}},"/api/v1/accounts/{id}/cloudflare/zones/{zid}/options":{"put":{"operationId":"cfOptions","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"purge_on_deploy":{"type":"boolean"},"ssl_strict":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"purge_on_deploy":{"type":"boolean"},"ssl_strict":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change a zone's Cloudflare options","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"}},"/api/v1/accounts/{id}/cloudflare/zones/{zid}/preview":{"get":{"operationId":"cfPreview","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"query","name":"replace","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingCFPreview"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Preview the records a sync would change","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"}},"/api/v1/accounts/{id}/cloudflare/zones/{zid}/purge":{"post":{"operationId":"cfPurge","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"hosts":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Purge Cloudflare's cache","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"}},"/api/v1/accounts/{id}/cloudflare/zones/{zid}/sync":{"post":{"operationId":"cfSync","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"added":{"type":"integer"},"conflicts":{"items":{"$ref":"#/components/schemas/CloudflareConflict"},"type":"array"},"removed":{"type":"integer"},"updated":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Sync the zone's records to Cloudflare","tags":["Cloudflare"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: cloudflare"}},"/api/v1/accounts/{id}/contact-email":{"put":{"operationId":"setContactEmail","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"contact_email":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreAccount"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's contact email","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/cron":{"get":{"operationId":"cronList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List cron jobs","tags":["Cron Jobs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"cron","x-kypanel-token":"admin token area: accounts; account token area: cron"}},"/api/v1/accounts/{id}/cron/email":{"put":{"operationId":"cronEmail","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"email":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Set the cron output email","tags":["Cron Jobs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"cron","x-kypanel-token":"admin token area: accounts; account token area: cron"}},"/api/v1/accounts/{id}/cron/jobs":{"post":{"operationId":"postAccountsIdCronJobs","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"command":{"type":"string"},"comment":{"type":"string"},"day_of_month":{"type":"string"},"day_of_week":{"type":"string"},"enabled":{"type":"boolean"},"hour":{"type":"string"},"minute":{"type":"string"},"month":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a cron job","tags":["Cron Jobs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"cron","x-kypanel-token":"admin token area: accounts; account token area: cron"}},"/api/v1/accounts/{id}/cron/jobs/{cid}":{"delete":{"operationId":"cronDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a cron job","tags":["Cron Jobs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"cron","x-kypanel-token":"admin token area: accounts; account token area: cron"},"put":{"operationId":"putAccountsIdCronJobsCid","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"command":{"type":"string"},"comment":{"type":"string"},"day_of_month":{"type":"string"},"day_of_week":{"type":"string"},"enabled":{"type":"boolean"},"hour":{"type":"string"},"minute":{"type":"string"},"month":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a cron job","tags":["Cron Jobs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"cron","x-kypanel-token":"admin token area: accounts; account token area: cron"}},"/api/v1/accounts/{id}/directory-privacy":{"get":{"operationId":"privacyList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreProtectedDir"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List protected folders","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"directory_privacy","x-kypanel-token":"admin token area: accounts; account token area: directory-privacy"},"post":{"operationId":"privacyCreate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"path":{"type":"string"},"realm":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Password-protect a folder","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"directory_privacy","x-kypanel-token":"admin token area: accounts; account token area: directory-privacy"}},"/api/v1/accounts/{id}/directory-privacy/{pid}":{"delete":{"operationId":"privacyDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a folder's protection","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"directory_privacy","x-kypanel-token":"admin token area: accounts; account token area: directory-privacy"},"put":{"operationId":"privacyUpdate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"realm":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a protected folder","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"directory_privacy","x-kypanel-token":"admin token area: accounts; account token area: directory-privacy"}},"/api/v1/accounts/{id}/directory-privacy/{pid}/users/{user}":{"delete":{"operationId":"privacyDeleteUser","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"user","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a protected folder's user","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"directory_privacy","x-kypanel-token":"admin token area: accounts; account token area: directory-privacy"},"put":{"operationId":"privacySetUser","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"path","name":"user","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit-reached, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add or update a protected folder's user","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"directory_privacy","x-kypanel-token":"admin token area: accounts; account token area: directory-privacy"}},"/api/v1/accounts/{id}/dns/zones":{"get":{"operationId":"listZones","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreZone"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the account's DNS zones","tags":["DNS"],"x-kypanel-access":"root, reseller (ACL: edit-dns or create-user-session); customer","x-kypanel-feature":"zone_editor","x-kypanel-token":"admin token area: accounts; account token area: dns"}},"/api/v1/accounts/{id}/dns/zones/{zid}/records":{"get":{"operationId":"listRecords","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreDNSRecord"},"type":"array"},"zone":{"$ref":"#/components/schemas/StoreZone"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List a zone's records","tags":["DNS"],"x-kypanel-access":"root, reseller (ACL: edit-dns or create-user-session); customer","x-kypanel-feature":"zone_editor","x-kypanel-token":"admin token area: accounts; account token area: dns"},"post":{"operationId":"addRecord","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingRecordInput"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: duplicate, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Add a DNS record","tags":["DNS"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"zone_editor","x-kypanel-token":"admin token area: accounts; account token area: dns"}},"/api/v1/accounts/{id}/dns/zones/{zid}/records/{rid}":{"delete":{"operationId":"deleteRecord","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: duplicate, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Delete a DNS record","tags":["DNS"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"zone_editor","x-kypanel-token":"admin token area: accounts; account token area: dns"},"put":{"operationId":"updateRecord","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingRecordInput"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: duplicate, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Update a DNS record","tags":["DNS"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"zone_editor","x-kypanel-token":"admin token area: accounts; account token area: dns"}},"/api/v1/accounts/{id}/dns/zones/{zid}/records/{rid}/proxy":{"put":{"operationId":"cfRecordProxy","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"proxied":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: cloudflare-permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: cloudflare-zone-missing, not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: cloudflare-not-connected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: cloudflare"}},"summary":"Turn Cloudflare's proxy on or off for a record","tags":["DNS"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"cloudflare","x-kypanel-token":"admin token area: accounts; account token area: dns"}},"/api/v1/accounts/{id}/dns/zones/{zid}/reset":{"post":{"description":"Is the Zone Editor's Reset: the zone goes back to the records the panel creates.","operationId":"resetZone","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"records":{"type":"integer"},"zone":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Reset a zone to the template","tags":["DNS"],"x-kypanel-access":"root, reseller (ACL: edit-dns); customer","x-kypanel-feature":"zone_editor","x-kypanel-token":"admin token area: accounts; account token area: dns"}},"/api/v1/accounts/{id}/domain":{"post":{"operationId":"changeDomain","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"domain":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"plan":{"$ref":"#/components/schemas/HostingDomainPlan"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's main domain","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/domain-plan":{"post":{"operationId":"domainPlan","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"domain":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingDomainPlan"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Preview a main domain change","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/domains":{"get":{"operationId":"listDomains","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"home_dir":{"type":"string"},"items":{"items":{"$ref":"#/components/schemas/DomainView"},"type":"array"},"limits":{"properties":{"addon":{"$ref":"#/components/schemas/LimitView"},"alias":{"$ref":"#/components/schemas/LimitView"},"sub":{"$ref":"#/components/schemas/LimitView"}},"type":"object"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List domains","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: domains"},"post":{"operationId":"createDomain","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingDomainInput"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"domain":{"$ref":"#/components/schemas/StoreDomainRow"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-not-active, limit-reached, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a domain (addon, subdomain or alias)","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"domains","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/domains/{did}":{"delete":{"operationId":"deleteDomain","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}},{"in":"query","name":"confirm","schema":{"type":"string"}},{"in":"query","name":"remove_files","schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: confirmation-required"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-removing, has-subdomains, main-domain, still-provisioning"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a domain","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"domains","x-kypanel-token":"admin token area: accounts; account token area: domains"},"get":{"operationId":"getDomain","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainView"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a domain","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/domains/{did}/autossl":{"put":{"operationId":"sslAutoSSLExclude","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"excluded":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"excluded":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Include or exclude a domain from AutoSSL","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_status","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/domains/{did}/docroot":{"put":{"operationId":"setDocroot","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"docroot":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"docroot":{"type":"string"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: alias, already-removing"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change a domain's document root","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"domains","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/domains/{did}/force-https":{"put":{"operationId":"setForceHTTPS","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: no-certificate"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn HTTPS redirection on or off","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"domains","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/domains/{did}/php":{"put":{"operationId":"setDomainPHP","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"version":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change a domain's PHP version","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"php_version","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/domains/{did}/php-ini":{"get":{"operationId":"getPHPIni","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"directives":{"items":{"$ref":"#/components/schemas/WebDirective"},"type":"array"},"domain":{"type":"string"},"domain_id":{"type":"string"},"php_version":{"type":"string"},"values":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: alias"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a domain's PHP settings","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"php_ini","x-kypanel-token":"admin token area: accounts; account token area: domains"},"put":{"operationId":"setPHPIni","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"values":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"values":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: alias"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save a domain's PHP settings","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"php_ini","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/email/accounts":{"get":{"operationId":"listMail","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"refresh","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreMailAccount"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List mailboxes","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_accounts","x-kypanel-token":"admin token area: accounts; account token area: email"},"post":{"operationId":"createMail","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMailReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreMailAccount"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit-reached, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a mailbox","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_accounts","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/accounts/{mid}":{"delete":{"operationId":"deleteMail","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mid","required":true,"schema":{"type":"string"}},{"in":"query","name":"keep_data","schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: system-mailbox"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a mailbox","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_accounts","x-kypanel-token":"admin token area: accounts; account token area: email"},"put":{"description":"Changes quota and restrictions (suspend login / receiving / sending).","operationId":"updateMail","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMailReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreMailAccount"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change a mailbox's quota and restrictions","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_accounts","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/accounts/{mid}/client-settings":{"get":{"operationId":"clientSettings","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientSettings"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Mail client settings of a mailbox","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mail_client_config","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/accounts/{mid}/mobileconfig":{"get":{"operationId":"mobileConfig","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download the Apple mail profile","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mail_client_config","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/accounts/{mid}/password":{"put":{"operationId":"mailPassword","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change a mailbox's password","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_accounts","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/accounts/{mid}/webmail":{"post":{"description":"Creates a direct sign-in link to the webmail (single use, 60 s).","operationId":"webmailSSO","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"mid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"expires_in":{"type":"string"},"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: login-suspended"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Open the webmail signed in","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/email/autoresponders":{"get":{"operationId":"getAccountsIdEmailAutoresponders","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"List autoresponders","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"admin token area: accounts; account token area: email"},"post":{"operationId":"postAccountsIdEmailAutoresponders","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Create an autoresponder","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/autoresponders/{aid}":{"delete":{"operationId":"deleteAccountsIdEmailAutorespondersAid","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Delete an autoresponder","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"admin token area: accounts; account token area: email"},"put":{"operationId":"putAccountsIdEmailAutorespondersAid","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Update an autoresponder","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/default-addresses":{"get":{"operationId":"listDefaultAddresses","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DefaultAddressView"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List default addresses (catch-all)","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"default_address","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/default-addresses/{did}":{"put":{"operationId":"setDefaultAddress","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"action":{"type":"string"},"destination":{"type":"string"},"fail_message":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultAddressView"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: rejected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Set a domain's default address","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"default_address","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/deliverability":{"get":{"operationId":"listDeliverability","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/HostingDeliverabilityReport"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Email deliverability of every domain","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_deliverability","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/deliverability/{did}":{"get":{"operationId":"getDeliverability","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingDeliverabilityReport"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Email deliverability of a domain (SPF, DKIM, DMARC, PTR)","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_deliverability","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/deliverability/{did}/repair":{"post":{"description":"Installs the suggested records the domain's local zone is missing (or has wrong). Body {records:[\"spf\",\"dkim\",\"dmarc\"]}; empty = every record that isn't valid in the zone.","operationId":"repairDeliverability","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"records":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"changed":{"items":{"type":"string"},"type":"array"},"report":{"$ref":"#/components/schemas/HostingDeliverabilityReport"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: zone-not-local"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Install the suggested email DNS records","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_deliverability","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/deliverability/{did}/spf":{"put":{"description":"Saves the SPF customizer and, when the zone is local, installs the resulting record.","operationId":"putSPF","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreSPFCustom"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"changed":{"items":{"type":"string"},"type":"array"},"report":{"$ref":"#/components/schemas/HostingDeliverabilityReport"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Customize and install the SPF record","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_deliverability","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/deliveries":{"get":{"description":"Is the customer's Track Delivery: mail the account sent, and mail to or from its domains.","operationId":"accountDeliveries","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"event","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreMailDelivery"},"type":"array"},"retention_days":{"type":"integer"},"total":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Track delivery of the account's mail","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_trace","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/domain-forwarders/{did}":{"delete":{"operationId":"deleteDomainForwarder","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a domain forwarder","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_forwarders","x-kypanel-token":"admin token area: accounts; account token area: email"},"put":{"operationId":"setDomainForwarder","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"to_domain":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDomainForward"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: rejected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Forward a whole domain","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_forwarders","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/filters":{"get":{"operationId":"getAccountsIdEmailFilters","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"List the account's email filters","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_filters","x-kypanel-token":"admin token area: accounts; account token area: email"},"post":{"operationId":"postAccountsIdEmailFilters","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Create an account email filter","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_filters","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/filters-order":{"put":{"operationId":"putAccountsIdEmailFiltersOrder","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Reorder the account's email filters","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_filters","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/filters/{fid}":{"delete":{"operationId":"deleteAccountsIdEmailFiltersFid","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Delete an account email filter","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_filters","x-kypanel-token":"admin token area: accounts; account token area: email"},"put":{"operationId":"putAccountsIdEmailFiltersFid","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Update an account email filter","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_filters","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/forwarders":{"get":{"operationId":"listForwarders","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"domain_forwarders":{"items":{"$ref":"#/components/schemas/StoreDomainForward"},"type":"array"},"items":{"items":{"$ref":"#/components/schemas/StoreForwarder"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List forwarders","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_forwarders","x-kypanel-token":"admin token area: accounts; account token area: email"},"post":{"operationId":"createForwarder","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateForwarderReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreForwarder"},"type":"array"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: rejected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a forwarder","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_forwarders","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/forwarders/{fid}":{"delete":{"operationId":"deleteForwarder","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a forwarder","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"email_forwarders","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/routing":{"get":{"operationId":"listRouting","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Item"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Email routing of every domain","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: edit-mx or create-user-session); customer","x-kypanel-feature":"email_routing","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/routing/{did}":{"put":{"operationId":"setRouting","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"routing":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"domain":{"type":"string"},"domain_id":{"type":"string"},"routing":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Set a domain's email routing","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: edit-mx or create-user-session); customer","x-kypanel-feature":"email_routing","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/email/spam":{"get":{"operationId":"getSpam","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreSpamSettings"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the spam filter settings","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"spam_filters","x-kypanel-token":"admin token area: accounts; account token area: email"},"put":{"operationId":"putSpam","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreSpamSettings"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreSpamSettings"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: rejected"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the spam filter settings","tags":["Email"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"spam_filters","x-kypanel-token":"admin token area: accounts; account token area: email"}},"/api/v1/accounts/{id}/error-pages":{"get":{"operationId":"errorPagesList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"codes":{"items":{"type":"integer"},"type":"array"},"items":{"items":{"$ref":"#/components/schemas/StoreErrorPageRow"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List custom error pages","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"error_pages","x-kypanel-token":"admin token area: accounts; account token area: error-pages"}},"/api/v1/accounts/{id}/error-pages/{did}/{code}":{"put":{"operationId":"errorPageSave","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}},{"in":"path","name":"code","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"html":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save a custom error page","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"error_pages","x-kypanel-token":"admin token area: accounts; account token area: error-pages"}},"/api/v1/accounts/{id}/events":{"get":{"description":"GET /events?after=<seq>&type=a,b&limit=n — the outbox as a feed, for integrations that poll.","operationId":"listEventsForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"string"}},{"in":"query","name":"type","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreEvent"},"type":"array"},"next":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Account event feed","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: events"}},"/api/v1/accounts/{id}/features":{"get":{"description":"Returns the features the account gets (and the catalog), for the customer panel and admins.","operationId":"accountFeatures","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"catalog":{"items":{"$ref":"#/components/schemas/FeaturesFeature"},"type":"array"},"enabled":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Features the account can use","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: list-accts); customer","x-kypanel-token":"admin token area: accounts; account token area: features"}},"/api/v1/accounts/{id}/files":{"get":{"operationId":"filesList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"path","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{},"type":"array"},"path":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List a folder","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/chmod":{"post":{"operationId":"filesChmod","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dir_mode":{"type":"string"},"file_mode":{"type":"string"},"mode":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"},"recursive":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"count":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change permissions","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/compress":{"post":{"operationId":"filesCompress","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dest":{"type":"string"},"format":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Compress files","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/content":{"get":{"description":"Opens a file in the code editor. The text travels through a staging file (it can be larger than one agent message).","operationId":"filesRead","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"path","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"content":{"type":"string"},"encoding":{"type":"string"},"etag":{"type":"string"},"line_ending":{"type":"string"},"modified":{"type":"integer"},"path":{"type":"string"},"size":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Read a file","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"},"put":{"operationId":"filesWrite","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"content":{"type":"string"},"encoding":{"type":"string"},"etag":{"type":"string"},"line_ending":{"type":"string"},"path":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"etag":{"type":"string"},"modified":{"type":"integer"},"path":{"type":"string"},"size":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Write a file","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/copy":{"post":{"operationId":"postAccountsIdFilesCopy","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dest":{"type":"string"},"overwrite":{"type":"boolean"},"paths":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"count":{"type":"integer"},"paths":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Copy files","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/delete":{"post":{"operationId":"postAccountsIdFilesDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"from":{"type":"string"},"path":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"},"to":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FsResult"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete files permanently","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/download":{"get":{"operationId":"filesDownload","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download a file","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/extract":{"post":{"operationId":"filesExtract","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"path":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Extract an archive","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/mkdir":{"post":{"operationId":"postAccountsIdFilesMkdir","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"from":{"type":"string"},"path":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"},"to":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FsResult"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a folder","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/move":{"post":{"operationId":"postAccountsIdFilesMove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dest":{"type":"string"},"overwrite":{"type":"boolean"},"paths":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"count":{"type":"integer"},"paths":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Move files","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/rename":{"post":{"operationId":"postAccountsIdFilesRename","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"from":{"type":"string"},"path":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"},"to":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FsResult"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rename a file or folder","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/search":{"get":{"operationId":"filesSearch","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"hidden","schema":{"type":"string"}},{"in":"query","name":"path","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{},"type":"array"},"path":{"type":"string"},"scanned":{"type":"integer"},"truncated":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Search files","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/trash":{"get":{"operationId":"trashList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{},"type":"array"},"retention_days":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the trash","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"},"post":{"operationId":"postAccountsIdFilesTrash","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"from":{"type":"string"},"path":{"type":"string"},"paths":{"items":{"type":"string"},"type":"array"},"to":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FsResult"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Move files to the trash","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/trash/empty":{"post":{"operationId":"trashEmpty","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"count":{"type":"integer"},"size":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Empty the trash","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/trash/restore":{"post":{"operationId":"trashRestore","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"count":{"type":"integer"},"paths":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Restore files from the trash","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/upload":{"post":{"operationId":"filesUpload","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"path","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"uploaded":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, invalid-body, upload"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Upload files","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"file_manager","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/files/usage":{"get":{"description":"Returns the cached disk usage report of a folder (\"report\": null when it was never measured).","operationId":"filesUsage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"path","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"computed_at":{"type":"integer"},"path":{"type":"string"},"report":{}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Disk usage of a folder","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"disk_usage","x-kypanel-token":"admin token area: accounts; account token area: files"},"post":{"description":"Measures a folder in the background (as the account's user) and caches the report.","operationId":"filesUsageRefresh","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"path":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Measure a folder's disk usage again","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"disk_usage","x-kypanel-token":"admin token area: accounts; account token area: files"}},"/api/v1/accounts/{id}/ftp":{"get":{"operationId":"ftpList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FtpItem"},"type":"array"},"limit":{"type":"integer"},"server":{"properties":{"host":{"type":"string"},"passive_ports":{"type":"string"},"port":{"type":"integer"},"tls":{"type":"string"}},"type":"object"},"used":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List FTP accounts","tags":["FTP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ftp_accounts","x-kypanel-token":"admin token area: accounts; account token area: ftp"},"post":{"operationId":"ftpCreate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FtpInput"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreFTPAccount"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit-reached, not-ready, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create an FTP account","tags":["FTP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ftp_accounts","x-kypanel-token":"admin token area: accounts; account token area: ftp"}},"/api/v1/accounts/{id}/ftp-sessions":{"get":{"operationId":"ftpSessions","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/HostingFTPSession"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List FTP sessions","tags":["FTP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ftp_accounts","x-kypanel-token":"admin token area: accounts; account token area: ftp-sessions"}},"/api/v1/accounts/{id}/ftp-sessions/{pid}/kill":{"post":{"operationId":"ftpKill","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"pid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"login":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Disconnect an FTP session","tags":["FTP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ftp_accounts","x-kypanel-token":"admin token area: accounts; account token area: ftp-sessions"}},"/api/v1/accounts/{id}/ftp/{fid}":{"delete":{"operationId":"ftpDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: primary-ftp"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete an FTP account","tags":["FTP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ftp_accounts","x-kypanel-token":"admin token area: accounts; account token area: ftp"},"put":{"operationId":"ftpUpdate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"home_dir":{"type":"string"},"quota_mb":{"type":"integer"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreFTPAccount"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: primary-ftp, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update an FTP account","tags":["FTP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ftp_accounts","x-kypanel-token":"admin token area: accounts; account token area: ftp"}},"/api/v1/accounts/{id}/ftp/{fid}/password":{"put":{"operationId":"ftpPassword","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change an FTP account's password","tags":["FTP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ftp_accounts","x-kypanel-token":"admin token area: accounts; account token area: ftp"}},"/api/v1/accounts/{id}/git/connections":{"get":{"operationId":"gitConnections","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"github_app":{"type":"string"},"github_available":{"type":"boolean"},"items":{"items":{"$ref":"#/components/schemas/StoreGitConnection"},"type":"array"},"users":{"items":{"$ref":"#/components/schemas/UserView"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List Git connections","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"}},"/api/v1/accounts/{id}/git/connections/github":{"post":{"operationId":"gitConnectGitHub","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"mode":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: github-off, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Connect a GitHub account or organization","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"}},"/api/v1/accounts/{id}/git/connections/{cid}":{"delete":{"operationId":"gitConnectionDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a Git connection","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"},"put":{"operationId":"gitConnectionRename","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"nickname":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"connection":{"$ref":"#/components/schemas/StoreGitConnection"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rename a Git connection","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"}},"/api/v1/accounts/{id}/git/connections/{cid}/branches":{"get":{"operationId":"gitConnectionBranches","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}},{"in":"query","name":"repo","schema":{"type":"string"}},{"in":"query","name":"repo_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: github-failed"}},"summary":"List a repository's branches","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"}},"/api/v1/accounts/{id}/git/connections/{cid}/php":{"get":{"operationId":"gitConnectionPHP","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}},{"in":"query","name":"branch","schema":{"type":"string"}},{"in":"query","name":"repo","schema":{"type":"string"}},{"in":"query","name":"repo_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"constraint":{"type":"string"},"version":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: github-failed"}},"summary":"Detect the PHP version a repository needs","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"}},"/api/v1/accounts/{id}/git/connections/{cid}/repos":{"get":{"operationId":"gitConnectionRepos","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GithubRepo"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: github-failed"}},"summary":"List repositories","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"}},"/api/v1/accounts/{id}/git/users/{uid}":{"delete":{"operationId":"gitUserDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a GitHub user and its connections","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"},"put":{"operationId":"gitUserRename","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"nickname":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rename a GitHub user","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: git"}},"/api/v1/accounts/{id}/hotlink":{"put":{"operationId":"hotlinkSave","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreHotlinkSettings"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"options":{"$ref":"#/components/schemas/StoreWebOptions"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save hotlink protection","tags":["Security"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"hotlink","x-kypanel-token":"admin token area: accounts; account token area: hotlink"}},"/api/v1/accounts/{id}/indexes":{"put":{"operationId":"indexSave","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreIndexSetting"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"options":{"$ref":"#/components/schemas/StoreWebOptions"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save a folder's directory index setting","tags":["Files"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"indexes","x-kypanel-token":"admin token area: accounts; account token area: indexes"}},"/api/v1/accounts/{id}/ip":{"put":{"operationId":"setAccountIP","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"ip_id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: package-privileges"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's IP address","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/ip-blocks":{"delete":{"operationId":"ipBlockRemove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"entry","schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"options":{"$ref":"#/components/schemas/StoreWebOptions"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Unblock an IP address from the account's sites","tags":["Security"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ip_blocker","x-kypanel-token":"admin token area: accounts; account token area: ip-blocks"},"post":{"operationId":"ipBlockAdd","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"entry":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"options":{"$ref":"#/components/schemas/StoreWebOptions"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Block an IP address from the account's sites","tags":["Security"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ip_blocker","x-kypanel-token":"admin token area: accounts; account token area: ip-blocks"}},"/api/v1/accounts/{id}/limits":{"put":{"description":"Overrides the account's limits (the package stays; the account becomes \"customized\").","operationId":"setAccountLimits","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"bw_limit_mb":{"type":"integer"},"disk_quota_mb":{"type":"integer"},"max_addon":{"type":"integer"},"max_email":{"type":"integer"},"max_email_per_hour":{"type":"integer"},"max_email_quota_mb":{"type":"integer"},"max_ftp":{"type":"integer"},"max_parked":{"type":"integer"},"max_sql":{"type":"integer"},"max_sub":{"type":"integer"},"php_max_children":{"type":"integer"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"},"warnings":{"items":{"additionalProperties":{},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: package-privileges, reseller-limit"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Override the account's limits","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/locale":{"put":{"operationId":"setAccountLocale","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"locale":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's language","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/login-as":{"post":{"description":"Generates a single-use link (60 s) for the admin to open the customer's panel.","operationId":"loginAs","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Open the customer panel as the account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: create-user-session)","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/logs/errors":{"get":{"operationId":"logsErrors","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"domain","schema":{"type":"string"}},{"in":"query","name":"lines","schema":{"type":"string"}},{"in":"query","name":"source","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"domain":{},"lines":{"items":{"type":"string"},"type":"array"},"source":{}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Recent web server errors","tags":["Logs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"error_log","x-kypanel-token":"admin token area: accounts; account token area: logs"}},"/api/v1/accounts/{id}/logs/raw":{"get":{"operationId":"logsRaw","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List raw access logs","tags":["Logs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"raw_access","x-kypanel-token":"admin token area: accounts; account token area: logs"}},"/api/v1/accounts/{id}/logs/raw/download":{"get":{"operationId":"logsRawDownload","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"domain","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Download a raw access log","tags":["Logs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"raw_access","x-kypanel-token":"admin token area: accounts; account token area: logs"}},"/api/v1/accounts/{id}/logs/settings":{"put":{"operationId":"logsSettings","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingLogSettings"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"settings":{"$ref":"#/components/schemas/HostingLogSettings"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the access log settings","tags":["Logs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"raw_access","x-kypanel-token":"admin token area: accounts; account token area: logs"}},"/api/v1/accounts/{id}/logs/visitors":{"get":{"operationId":"logsVisitors","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"domain","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"domain":{"type":"string"},"items":{"items":{"$ref":"#/components/schemas/Visitor"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Latest visitors of a domain","tags":["Logs"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"visitors","x-kypanel-token":"admin token area: accounts; account token area: logs"}},"/api/v1/accounts/{id}/mysql":{"get":{"operationId":"mysqlOverview","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"refresh","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"databases":{"items":{"$ref":"#/components/schemas/StoreDatabase"},"type":"array"},"host":{"type":"string"},"limit":{"type":"integer"},"max_name_length":{"type":"integer"},"max_user_length":{"type":"integer"},"prefix":{"type":"string"},"privileges":{"items":{"type":"string"},"type":"array"},"remote":{"type":"boolean"},"used_bytes":{"type":"integer"},"users":{"items":{"$ref":"#/components/schemas/StoreDBUser"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Databases, users and privileges","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/databases":{"post":{"operationId":"mysqlCreateDB","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDatabase"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit-reached, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a database","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/databases/{did}":{"delete":{"operationId":"mysqlDeleteDB","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}},{"in":"query","name":"confirm","schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: confirmation-required, rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a database","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/remote-hosts":{"get":{"operationId":"mysqlHosts","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreDBAccessHost"},"type":"array"},"server_listens_remote":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List remote database hosts","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"remote_mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"},"post":{"operationId":"mysqlAddHost","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"comment":{"type":"string"},"host":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDBAccessHost"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit-reached, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Allow a remote database host","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"remote_mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/remote-hosts/{hid}":{"delete":{"operationId":"mysqlDeleteHost","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"hid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a remote database host","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"remote_mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/users":{"post":{"operationId":"mysqlCreateUser","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"},"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDBUser"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a database user","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/users/{uid}":{"delete":{"operationId":"mysqlDeleteUser","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a database user","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/users/{uid}/grants/{did}":{"delete":{"operationId":"mysqlRevoke","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a user's privileges on a database","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"},"put":{"operationId":"mysqlSetGrant","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"privileges":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDBUser"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Set a user's privileges on a database","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/users/{uid}/name":{"put":{"operationId":"mysqlRenameUser","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreDBUser"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rename a database user","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/users/{uid}/password":{"put":{"operationId":"mysqlUserPassword","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change a database user's password","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/mysql/wizard":{"post":{"description":"Creates a database, a user and the user's privileges on it in one step. Each part is undone if a later one fails, so the customer never ends up with half of it.","operationId":"mysqlWizard","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"database":{"type":"string"},"password":{"type":"string"},"privileges":{"items":{"type":"string"},"type":"array"},"user":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"database":{"$ref":"#/components/schemas/StoreDatabase"},"user":{"$ref":"#/components/schemas/StoreDBUser"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: limit-reached, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a database, a user and its privileges in one step","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"mysql","x-kypanel-token":"admin token area: accounts; account token area: mysql"}},"/api/v1/accounts/{id}/notifications":{"get":{"operationId":"acctNotifications","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreNotification"},"type":"array"},"unread":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the account's notifications","tags":["Notifications"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/accounts/{id}/notifications/read":{"post":{"operationId":"acctReadNotifications","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Mark the account's notifications as read","tags":["Notifications"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/accounts/{id}/owner":{"put":{"operationId":"setAccountOwner","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"owner_id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreAccount"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's owner","tags":["Accounts"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/package":{"put":{"description":"Moves the account to a package: every limit, the PHP-FPM children and the shell follow it. Going under the current usage needs \"force\" (nothing is deleted; the account just can't create more).","operationId":"setAccountPackage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"force":{"type":"boolean"},"package_id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"},"warnings":{"items":{"additionalProperties":{},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: reseller-limit"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Move the account to another package","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: upgrade-acct)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/package-check":{"get":{"operationId":"packageCheck","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"package_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"package":{"$ref":"#/components/schemas/StorePackage"},"usage":{"$ref":"#/components/schemas/StoreAccountUsage"},"warnings":{"items":{"additionalProperties":{},"type":"object"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Check whether the account fits a package","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: upgrade-acct)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/password":{"post":{"operationId":"acctPassword","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"current_password":{"type":"string"},"new_password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's password","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: passwd); customer","x-kypanel-token":"admin token area: accounts; account tokens: not allowed"}},"/api/v1/accounts/{id}/phpmyadmin":{"post":{"description":"Creates a direct sign-in link to phpMyAdmin (single use, 60 s).","operationId":"phpMyAdminSSO","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"expires_in":{"type":"string"},"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-inactive"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Open phpMyAdmin signed in","tags":["Databases"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/preferences":{"get":{"operationId":"acctPreferences","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"locales":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"preferences":{"$ref":"#/components/schemas/AcctPrefs"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the account's preferences","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"},"put":{"operationId":"acctSavePreferences","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcctPrefs"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"locales":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"preferences":{"$ref":"#/components/schemas/AcctPrefs"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the account's preferences","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/accounts/{id}/quota":{"put":{"operationId":"setAccountQuota","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"disk_quota_mb":{"type":"integer"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: reseller-limit"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's disk quota","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: quota or edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/redirects":{"get":{"operationId":"listRedirects","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreRedirectRow"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List redirects","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"redirects","x-kypanel-token":"admin token area: accounts; account token area: domains"},"post":{"operationId":"createRedirect","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectReq"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a redirect","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"redirects","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/redirects/{rid}":{"delete":{"operationId":"deleteRedirect","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a redirect","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"redirects","x-kypanel-token":"admin token area: accounts; account token area: domains"},"put":{"operationId":"updateRedirect","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectReq"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a redirect","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"redirects","x-kypanel-token":"admin token area: accounts; account token area: domains"}},"/api/v1/accounts/{id}/rename":{"post":{"operationId":"renameAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"username":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy, not-active, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's username","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/rename-plan":{"post":{"operationId":"renamePlan","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"username":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingRenamePlan"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Preview a username change","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/repair":{"post":{"operationId":"repairAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Repair the account's configuration","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/accounts/{id}/reseller":{"put":{"operationId":"setMakeReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"make_reseller":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreAccount"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Make the account a reseller, or stop","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/resource-usage":{"get":{"description":"The account's limits and its CPU/memory/I/O/process samples with faults (limits hit).","operationId":"accountResourceUsage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"range","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"bucket":{"type":"string"},"faults":{"properties":{"cpu":{"type":"integer"},"ep":{"type":"integer"},"io":{"type":"integer"},"mem":{"type":"integer"},"nproc":{"type":"integer"}},"type":"object"},"limits":{"$ref":"#/components/schemas/StoreIsolation"},"range":{"type":"string"},"samples":{"items":{"$ref":"#/components/schemas/StoreUsageSample"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"CPU, memory, I/O and process usage of the account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: list-accts); customer","x-kypanel-feature":"resource_usage","x-kypanel-token":"admin token area: accounts; account token area: resource-usage"}},"/api/v1/accounts/{id}/shell":{"put":{"operationId":"setAccountShell","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"shell":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: package-privileges"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the account's shell access","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: edit-account)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/ssh/keys":{"get":{"operationId":"sshList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List SSH keys","tags":["SSH"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ssh_keys","x-kypanel-token":"admin token area: accounts; account token area: ssh"}},"/api/v1/accounts/{id}/ssh/keys/generate":{"post":{"operationId":"sshGenerate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshAddReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Generate an SSH key","tags":["SSH"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ssh_keys","x-kypanel-token":"admin token area: accounts; account token area: ssh"}},"/api/v1/accounts/{id}/ssh/keys/import":{"post":{"operationId":"sshImport","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshAddReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Import an SSH key","tags":["SSH"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ssh_keys","x-kypanel-token":"admin token area: accounts; account token area: ssh"}},"/api/v1/accounts/{id}/ssh/keys/{kid}":{"delete":{"operationId":"sshDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"kid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete an SSH key","tags":["SSH"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ssh_keys","x-kypanel-token":"admin token area: accounts; account token area: ssh"}},"/api/v1/accounts/{id}/ssh/keys/{kid}/authorization":{"put":{"operationId":"sshAuthorize","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"kid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"authorized":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Authorize or deauthorize an SSH key","tags":["SSH"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"ssh_keys","x-kypanel-token":"admin token area: accounts; account token area: ssh"}},"/api/v1/accounts/{id}/ssl":{"get":{"operationId":"accountSSL","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreDomainSSL"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"SSL status of every domain","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/certs":{"get":{"operationId":"sslCerts","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreSSLCert"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List certificates","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"},"post":{"operationId":"sslUploadCert","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"cert":{"$ref":"#/components/schemas/StoreSSLCert"},"preview":{"$ref":"#/components/schemas/CertPreview"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Upload a certificate","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/certs/{cid}":{"delete":{"operationId":"sslDeleteCert","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a certificate","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"},"get":{"operationId":"sslGetCert","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"cert":{"$ref":"#/components/schemas/StoreSSLCert"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a certificate","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/check":{"post":{"operationId":"sslCheck","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertPreview"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Check a certificate, key and CA bundle","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_status","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/csrs":{"get":{"operationId":"sslCSRs","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreSSLCSR"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List certificate signing requests","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"},"post":{"operationId":"sslAddCSR","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"domains":{"items":{"type":"string"},"type":"array"},"friendly_name":{"type":"string"},"key_id":{"type":"string"},"key_type":{"type":"string"},"subject":{"$ref":"#/components/schemas/HostingCSRSubject"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"csr":{"$ref":"#/components/schemas/StoreSSLCSR"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a certificate signing request","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/csrs/{cid}":{"delete":{"operationId":"sslDeleteCSR","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"cid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a certificate signing request","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/install":{"post":{"operationId":"sslInstall","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertReq"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"cert_id":{"type":"string"},"job_id":{"type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Install a certificate on a domain","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/installs/{did}":{"delete":{"operationId":"sslUninstall","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Uninstall a domain's certificate","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/keys":{"get":{"operationId":"sslKeys","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreSSLKey"},"type":"array"},"types":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List private keys","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"},"post":{"operationId":"sslAddKey","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"friendly_name":{"type":"string"},"pem":{"type":"string"},"type":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"key":{"$ref":"#/components/schemas/StoreSSLKey"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Generate or upload a private key","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/ssl/keys/{kid}":{"delete":{"operationId":"sslDeleteKey","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"kid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a private key","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"},"get":{"operationId":"sslGetKey","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"kid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"key":{"$ref":"#/components/schemas/StoreSSLKey"},"pem":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a private key","tags":["SSL/TLS"],"x-kypanel-access":"root, reseller (ACL: ssl or create-user-session); customer","x-kypanel-feature":"ssl_manager","x-kypanel-token":"admin token area: accounts; account token area: ssl"}},"/api/v1/accounts/{id}/sso":{"post":{"description":"Issues a single-use sign-in link (60 s) for billing systems and other integrations: the customer opens it and lands in their panel (or a reseller in Ky Admin) without a password.","operationId":"accountSSO","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SsoReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"expires_in":{"type":"integer"},"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-reseller, suspended"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: invalid-goto, invalid-panel"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a single sign-on link for the account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: create-user-session)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/suspend":{"post":{"operationId":"suspendAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"locked":{"type":"boolean"},"reason":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: suspension-locked"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: account-busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Suspend an account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: suspend-acct)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/terminal":{"get":{"operationId":"terminalWS","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"cols","schema":{"type":"string"}},{"in":"query","name":"rows","schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: bad-origin"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: no-shell, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Open a terminal session (WebSocket)","tags":["Terminal"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"terminal","x-kypanel-token":"admin token area: accounts; account token area: terminal"}},"/api/v1/accounts/{id}/tokens":{"get":{"operationId":"listTokensForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"areas":{"items":{"$ref":"#/components/schemas/TokenScope"},"type":"array"},"items":{"items":{"$ref":"#/components/schemas/StoreAPIToken"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the account's API tokens","tags":["API Tokens"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"},"post":{"operationId":"createTokenForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"},"token":{"$ref":"#/components/schemas/StoreAPIToken"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create an account API token","tags":["API Tokens"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/tokens/{tid}":{"delete":{"operationId":"revokeTokenForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"tid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Revoke an account API token","tags":["API Tokens"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/accounts/{id}/unsuspend":{"post":{"operationId":"unsuspendAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account":{"$ref":"#/components/schemas/StoreAccount"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: suspension-locked"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-suspended"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Unsuspend an account","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: suspend-acct)","x-kypanel-token":"admin token area: accounts"}},"/api/v1/accounts/{id}/usage":{"get":{"description":"Returns usage against limits for every limited resource (customer Home stats bar).","operationId":"accountUsage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"db_used_bytes":{"type":"integer"},"default_email_quota_mb":{"type":"integer"},"items":{"items":{"$ref":"#/components/schemas/UsageItem"},"type":"array"},"max_email_per_hour":{"type":"integer"},"max_email_quota_mb":{"type":"integer"},"warn_pct":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Usage against the account's limits","tags":["Accounts"],"x-kypanel-access":"root, reseller (ACL: list-accts); customer","x-kypanel-token":"admin token area: accounts; account token area: usage"}},"/api/v1/accounts/{id}/valkey":{"delete":{"operationId":"valkeyDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn off Redis (Valkey)","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: valkey"},"get":{"operationId":"valkeyGet","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingValkeyView"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the Redis (Valkey) instance","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: valkey"},"put":{"operationId":"valkeyPut","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"maxmemory_mb":{"type":"integer"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingValkeyView"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: valkey-failed"}},"summary":"Turn on or resize Redis (Valkey)","tags":["Apps"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"apps","x-kypanel-token":"admin token area: accounts; account token area: valkey"}},"/api/v1/accounts/{id}/web-options":{"get":{"operationId":"webOptionsGet","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreWebOptions"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Directory indexes, hotlink protection and IP blocks","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: web-options"}},"/api/v1/accounts/{id}/webhooks":{"get":{"operationId":"listWebhooksForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreWebhookEndpoint"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the account's webhooks","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"},"post":{"operationId":"createWebhookForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"},"webhook":{"$ref":"#/components/schemas/StoreWebhookEndpoint"}},"type":"object"}}},"description":"Created"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: too-many"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: invalid-description, invalid-events, invalid-url"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add an account webhook","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"}},"/api/v1/accounts/{id}/webhooks/events":{"get":{"operationId":"webhookCatalogForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhooksEventType"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Events an account webhook can receive","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"}},"/api/v1/accounts/{id}/webhooks/{wid}":{"delete":{"operationId":"deleteWebhookForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete an account webhook","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"},"get":{"operationId":"getWebhookForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreWebhookEndpoint"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get an account webhook","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"},"patch":{"operationId":"updateWebhookForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreWebhookEndpoint"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: invalid-description, invalid-events, invalid-url"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update an account webhook","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"}},"/api/v1/accounts/{id}/webhooks/{wid}/deliveries":{"get":{"operationId":"webhookDeliveriesForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"wid","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreWebhookDelivery"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List an account webhook's deliveries","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"}},"/api/v1/accounts/{id}/webhooks/{wid}/deliveries/{did}/redeliver":{"post":{"operationId":"redeliverWebhookForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"wid","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Redeliver an account webhook delivery","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"}},"/api/v1/accounts/{id}/webhooks/{wid}/rotate-secret":{"post":{"operationId":"rotateWebhookSecretForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rotate an account webhook's secret","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"}},"/api/v1/accounts/{id}/webhooks/{wid}/test":{"post":{"description":"Queues a webhook.ping to this endpoint only, whatever its event list.","operationId":"testWebhookForAccount","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"event_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Send a test event to an account webhook","tags":["Webhooks"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"api_tokens","x-kypanel-token":"admin token area: accounts; account token area: webhooks"}},"/api/v1/acl-keys":{"get":{"operationId":"aclKeys","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ACLKey"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Reseller privilege catalog","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/acl-lists":{"get":{"operationId":"listACLLists","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreACLList"},"type":"array"},"keys":{"items":{"$ref":"#/components/schemas/ACLKey"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List privilege lists","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"postAclLists","requestBody":{"content":{"application/json":{"schema":{"properties":{"keys":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a privilege list","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/acl-lists/{lid}":{"delete":{"operationId":"deleteACLList","parameters":[{"in":"path","name":"lid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a privilege list","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"putAclListsLid","parameters":[{"in":"path","name":"lid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"keys":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a privilege list","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/auth/act-as/exit":{"post":{"operationId":"exitActAs","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"redirect":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no-session"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: csrf"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-acting"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Stop acting as a reseller","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/auth/login":{"post":{"operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResp"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: invalid-credentials"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: admin-ip-not-allowed, suspended"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Sign in to Ky Admin","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/auth/logout":{"post":{"operationId":"logout","responses":{"204":{"description":"Done, no content"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: csrf"}},"security":[],"summary":"Sign out of Ky Admin","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/auth/mfa":{"post":{"operationId":"mfa","requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResp"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: no-2fa"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: invalid-code, no-session"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: csrf"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Ky Admin second sign-in step","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/auth/session":{"get":{"operationId":"sessionInfo","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResp"}}},"description":"OK"}},"security":[],"summary":"Ky Admin session","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/auth/sso":{"get":{"description":"Redeems a Ky Admin link and opens the reseller's admin session.","operationId":"adminSSO","parameters":[{"in":"query","name":"token","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Redeem a Ky Admin sign-in link","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/backup/accounts":{"get":{"operationId":"backupAccounts","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{},"type":"object"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Backup status of every account","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/backup/config":{"get":{"operationId":"backupConfigGet","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/StoreBackupConfig"},"disk":{"properties":{"free":{"type":"integer"},"total":{"type":"integer"}},"required":["free","total"],"type":"object"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the backup configuration","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"backupConfigPut","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreBackupConfig"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"config":{"$ref":"#/components/schemas/StoreBackupConfig"},"disk":{"properties":{"free":{"type":"integer"},"total":{"type":"integer"}},"required":["free","total"],"type":"object"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the backup configuration","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/backup/destinations":{"get":{"operationId":"destList","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreBackupDestination"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List backup destinations","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"postBackupDestinations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestReq"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a backup destination","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/backup/destinations/{did}":{"delete":{"operationId":"destDelete","parameters":[{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a backup destination","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"putBackupDestinationsDid","parameters":[{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestReq"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a backup destination","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/backup/destinations/{did}/validate":{"post":{"operationId":"destValidate","parameters":[{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"destination":{"$ref":"#/components/schemas/StoreBackupDestination"},"ok":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Test a backup destination","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/backup/run":{"post":{"operationId":"backupRunNow","requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: not-found"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Run the backup now","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/backup/runs":{"get":{"operationId":"backupRuns","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreBackupRun"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List backup runs","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/backup/snapshots":{"get":{"description":"By day (?date=2026-10-15, server time) or by account (?username=), for the restore screens.","operationId":"backupSnapshots","parameters":[{"in":"query","name":"date","schema":{"type":"string"}},{"in":"query","name":"username","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"dates":{"items":{"type":"string"},"type":"array"},"items":{"items":{"$ref":"#/components/schemas/StoreBackupSnapshot"},"type":"array"},"timezone":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: invalid-date"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List backups by day or account","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/branding":{"get":{"operationId":"publicBranding","parameters":[{"in":"query","name":"surface","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingView"}}},"description":"OK"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Public branding (logo, colors) of the sign-in pages","tags":["Branding"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/branding/favicon":{"get":{"operationId":"brandingFavicon","parameters":[{"in":"query","name":"surface","schema":{"type":"string"}},{"in":"query","name":"v","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Favicon","tags":["Branding"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/events":{"get":{"description":"GET /events?after=<seq>&type=a,b&limit=n — the outbox as a feed, for integrations that poll.","operationId":"listEvents","parameters":[{"in":"query","name":"after","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"string"}},{"in":"query","name":"type","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreEvent"},"type":"array"},"next":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Server event feed","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/feature-lists":{"get":{"operationId":"listFeatureLists","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreFeatureList"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List feature lists","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: add-pkg or edit-pkg)","x-kypanel-token":"admin token area: server"},"post":{"operationId":"createFeatureList","requestBody":{"content":{"application/json":{"schema":{"properties":{"copy_from":{"type":"string"},"name":{"type":"string"},"off":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreFeatureList"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a feature list","tags":["Packages"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/feature-lists/{id}":{"delete":{"operationId":"deleteFeatureList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: built-in, in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a feature list","tags":["Packages"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"get":{"operationId":"getFeatureList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreFeatureList"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a feature list","tags":["Packages"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"description":"Replaces the list's switched-off features. Takes effect on the next customer request (the customer panel re-reads its session within a minute).","operationId":"updateFeatureList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"off":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreFeatureList"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save a feature list","tags":["Packages"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/features":{"get":{"operationId":"featureCatalog","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FeaturesFeature"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Feature catalog","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: add-pkg or edit-pkg)","x-kypanel-token":"admin token area: server"}},"/api/v1/github/app":{"delete":{"operationId":"githubAppDelete","responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete the server's GitHub App","tags":["Apps"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"get":{"operationId":"githubAppGet","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"app":{"$ref":"#/components/schemas/HostingGitHubAppView"},"panel_url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the server's GitHub App","tags":["Apps"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/github/app/created":{"get":{"operationId":"githubAppCreated","parameters":[{"in":"query","name":"code","schema":{"type":"string"}},{"in":"query","name":"state","schema":{"type":"string"}}],"responses":{"303":{"description":"Redirect"}},"security":[],"summary":"Finish creating the GitHub App (GitHub redirect)","tags":["Apps"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/github/app/manifest":{"post":{"description":"Returns the form the browser posts to GitHub (\"Create GitHub App\" page, back to /created).","operationId":"githubAppManifest","requestBody":{"content":{"application/json":{"schema":{"properties":{"org":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"action":{"type":"string"},"manifest":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Start creating the GitHub App","tags":["Apps"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/github/callback":{"get":{"description":"Is where GitHub sends a customer after installing or authorizing the app.","operationId":"githubCallback","parameters":[{"in":"query","name":"code","schema":{"type":"string"}},{"in":"query","name":"installation_id","schema":{"type":"string"}},{"in":"query","name":"state","schema":{"type":"string"}}],"responses":{"303":{"description":"Redirect"}},"security":[],"summary":"GitHub installation callback","tags":["Apps"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/imports":{"get":{"operationId":"importList","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{},"type":"object"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List imports","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"importCreate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportReq"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"restore_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Import a backup file on the server","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/imports/batch":{"post":{"description":"Queues every cPanel backup in a folder of the server; with auto_apply the ones without conflicts are applied right after their analysis.","operationId":"importBatch","requestBody":{"content":{"application/json":{"schema":{"properties":{"auto_apply":{"type":"boolean"},"dir":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: file-operation, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Import every backup in a folder","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/imports/upload":{"post":{"description":"Takes a cpmove file as multipart (field \"file\"; optional \"username\").","operationId":"importUpload","responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"restore_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: invalid-body, upload, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Upload a backup file to import","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/imports/{rid}":{"get":{"operationId":"importGet","parameters":[{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get an import and its analysis","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/imports/{rid}/apply":{"post":{"operationId":"importApply","parameters":[{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: conflicts, not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Run an import","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/imports/{rid}/cancel":{"post":{"operationId":"importCancel","parameters":[{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Cancel an import","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/imports/{rid}/decisions":{"put":{"operationId":"importDecisions","parameters":[{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingImportDecisions"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: busy"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Resolve an import's conflicts","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/ips/choices":{"get":{"operationId":"ipChoices","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreIPChoice"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"IP addresses an account can use","tags":["IP Addresses"],"x-kypanel-access":"root, reseller (ACL: create-acct or edit-account)","x-kypanel-token":"admin token area: server"}},"/api/v1/jobs":{"get":{"operationId":"listJobs","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreJob"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List background jobs","tags":["Jobs"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: accounts"}},"/api/v1/jobs/{id}":{"get":{"operationId":"getJob","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"log_after","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"job":{"$ref":"#/components/schemas/StoreJob"},"log":{"items":{"$ref":"#/components/schemas/StoreJobLog"},"type":"array"},"log_cursor":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a background job and its log","tags":["Jobs"],"x-kypanel-access":"root, reseller (ACL: list-accts or create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/jobs/{id}/cancel":{"post":{"operationId":"cancelJob","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-cancellable"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Cancel a background job","tags":["Jobs"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: accounts"}},"/api/v1/license":{"get":{"operationId":"licenseInfo","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseInfo"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"503 Service Unavailable: license-off"}},"summary":"License status","tags":["License"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/license/check":{"post":{"operationId":"licenseCheck","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseInfo"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-soon"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"503 Service Unavailable: license-off"}},"summary":"Check the license now","tags":["License"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/mailbox/auth/logout":{"post":{"operationId":"mailboxLogout","responses":{"204":{"description":"Done, no content"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: csrf"}},"security":[],"summary":"Sign out of the mail tools","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/mailbox/auth/session":{"get":{"operationId":"mailboxSession","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"authenticated":{"type":"boolean"},"csrf_token":{"type":"string"},"expires_at":{"type":"integer"},"mailbox":{"properties":{"address":{"type":"string"},"domain":{"type":"string"},"id":{"type":"string"},"is_system":{"type":"boolean"}},"type":"object"},"read_only":{"type":"boolean"}},"type":"object"}}},"description":"OK"}},"security":[],"summary":"Mail tools session","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/mailbox/auth/sso":{"get":{"operationId":"mailboxSSO","parameters":[{"in":"query","name":"page","schema":{"type":"string"}},{"in":"query","name":"token","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Redeem a mail tools sign-in link","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/mailbox/autoresponders":{"get":{"operationId":"getMailboxAutoresponders","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Get your autoresponder","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"account token area: account"},"post":{"operationId":"postMailboxAutoresponders","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Create your autoresponder","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"account token area: account"}},"/api/v1/mailbox/autoresponders/{aid}":{"delete":{"operationId":"deleteMailboxAutorespondersAid","parameters":[{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Delete your autoresponder","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"account token area: account"},"put":{"operationId":"putMailboxAutorespondersAid","parameters":[{"in":"path","name":"aid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Update your autoresponder","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"autoresponders","x-kypanel-token":"account token area: account"}},"/api/v1/mailbox/client-settings":{"get":{"operationId":"getMailboxClientSettings","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Your mail client settings","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"mail_client_config","x-kypanel-token":"account token area: account"}},"/api/v1/mailbox/filters":{"get":{"operationId":"getMailboxFilters","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"List your email filters","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"email_filters","x-kypanel-token":"account token area: account"},"post":{"operationId":"postMailboxFilters","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Create an email filter","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"email_filters","x-kypanel-token":"account token area: account"}},"/api/v1/mailbox/filters-order":{"put":{"operationId":"putMailboxFiltersOrder","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Reorder your email filters","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"email_filters","x-kypanel-token":"account token area: account"}},"/api/v1/mailbox/filters/{fid}":{"delete":{"operationId":"deleteMailboxFiltersFid","parameters":[{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Delete an email filter","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"email_filters","x-kypanel-token":"account token area: account"},"put":{"operationId":"putMailboxFiltersFid","parameters":[{"in":"path","name":"fid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Update an email filter","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-feature":"email_filters","x-kypanel-token":"account token area: account"}},"/api/v1/mailbox/password":{"put":{"operationId":"putMailboxPassword","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Change your mailbox password","tags":["Mailbox (Mail tools)"],"x-kypanel-access":"public; customer","x-kypanel-token":"account token area: account"}},"/api/v1/me/2fa/disable":{"post":{"operationId":"twoFactorDisable","requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn off your two-factor authentication","tags":["Authentication"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/me/2fa/enable":{"post":{"operationId":"twoFactorEnable","requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"enroll_token":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: invalid-enroll-token, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn on your two-factor authentication","tags":["Authentication"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/me/2fa/setup":{"post":{"operationId":"twoFactorSetup","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"enroll_token":{"type":"string"},"otpauth_uri":{"type":"string"},"secret":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Start your two-factor authentication setup","tags":["Authentication"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/me/password":{"post":{"operationId":"changePassword","requestBody":{"content":{"application/json":{"schema":{"properties":{"current_password":{"type":"string"},"new_password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change your admin password","tags":["Authentication"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/nodes":{"get":{"operationId":"nodeList","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"panel_hostname":{"type":"string"},"panel_version":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List nodes","tags":["Nodes"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"nodePair","requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Pair a node","tags":["Nodes"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/nodes/{nid}":{"delete":{"operationId":"nodeDelete","parameters":[{"in":"path","name":"nid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove a node","tags":["Nodes"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"nodeUpdate","parameters":[{"in":"path","name":"nid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"is_default":{"type":"boolean"},"name":{"type":"string"},"public_ip":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"node":{"$ref":"#/components/schemas/StoreNode"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a node","tags":["Nodes"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/nodes/{nid}/check":{"post":{"operationId":"nodeCheck","parameters":[{"in":"path","name":"nid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"node":{"$ref":"#/components/schemas/StoreNode"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Check a node's connection and services","tags":["Nodes"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/nodes/{nid}/firewall":{"get":{"operationId":"getNodesNidFirewall","parameters":[{"in":"path","name":"nid","required":true,"schema":{"type":"string"}},{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a node's firewall","tags":["Nodes"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/nodes/{nid}/firewall/ports":{"put":{"operationId":"putNodesNidFirewallPorts","parameters":[{"in":"path","name":"nid","required":true,"schema":{"type":"string"}},{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"open":{"type":"boolean"},"port":{"type":"integer"},"protocol":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Open or close ports on a node","tags":["Nodes"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/notifications":{"get":{"operationId":"listNotifications","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreNotification"},"type":"array"},"unread":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List your notifications","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/notifications/read":{"post":{"operationId":"readNotifications","requestBody":{"content":{"application/json":{"schema":{"properties":{"id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Mark notifications as read","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/packages":{"get":{"operationId":"listPackages","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StorePackage"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List packages","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: create-acct or upgrade-acct or add-pkg or edit-pkg)","x-kypanel-token":"admin token area: packages"},"post":{"operationId":"createPackage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorePackage"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: package-privileges"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create a package","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: add-pkg)","x-kypanel-token":"admin token area: packages"}},"/api/v1/packages-options":{"get":{"description":"Returns what the package editor offers: themes, languages, the assignable feature lists, whether CGI can run on this server and whether the signed-in admin may set unlimited values.","operationId":"packageOptions","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"can_set_unlimited":{"additionalProperties":{"type":"boolean"},"type":"object"},"cgi_available":{"type":"boolean"},"feature_lists":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"locales":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"shells":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"themes":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Options for the package editor","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: add-pkg or edit-pkg)","x-kypanel-token":"admin token area: server"}},"/api/v1/packages/{id}":{"delete":{"description":"Deletes a package. A package in use needs ?move_to=<package id>: its accounts move there first (taking all of that package's settings), in the same request.","operationId":"deletePackage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"move_to","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"job_ids":{"items":{"type":"string"},"type":"array"},"moved":{"items":{"type":"string"},"type":"array"},"over_limit":{"items":{"additionalProperties":{},"type":"object"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a package","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: edit-pkg)","x-kypanel-token":"admin token area: packages"},"get":{"operationId":"getPackage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorePackage"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a package","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: create-acct or upgrade-acct or add-pkg or edit-pkg)","x-kypanel-token":"admin token area: packages"},"put":{"description":"Saves the package, copies what changed to every account on it (same transaction) and queues the job that applies it on the system. The answer lists the accounts now over a lower limit.","operationId":"updatePackage","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackageReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"accounts":{"type":"integer"},"changed":{"items":{"type":"string"},"type":"array"},"job_id":{"type":"string"},"over_limit":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"package":{"$ref":"#/components/schemas/StorePackage"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: package-privileges"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a package and its accounts","tags":["Packages"],"x-kypanel-access":"root, reseller (ACL: edit-pkg)","x-kypanel-token":"admin token area: packages"}},"/api/v1/password-policy":{"get":{"description":"Tells password forms the minimum strength per kind of password (not secret: it is enforced anyway).","operationId":"passwordPolicy","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"min_length":{"type":"integer"},"minimums":{"additionalProperties":{"type":"integer"},"type":"object"}},"type":"object"}}},"description":"OK"}},"security":[],"summary":"Minimum password strength","tags":["Security"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/php/ini-directives":{"get":{"operationId":"phpIniDirectives","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebDirective"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"PHP settings that can be changed per domain","tags":["PHP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-feature":"php_ini","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/php/versions":{"get":{"operationId":"phpVersions","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"default":{"type":"string"},"versions":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Installed PHP versions","tags":["PHP"],"x-kypanel-access":"root, reseller (ACL: create-user-session); customer","x-kypanel-token":"admin token area: accounts; account token area: account"}},"/api/v1/reseller":{"get":{"description":"Is the signed-in reseller's overview: limits, usage, nameservers and privileges.","operationId":"resellerSelf","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"acl":{"items":{"type":"string"},"type":"array"},"effective_nameservers":{"items":{"type":"string"},"type":"array"},"privileges":{"items":{"$ref":"#/components/schemas/ACLKey"},"type":"array"},"reseller":{"$ref":"#/components/schemas/StoreReseller"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-reseller"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Your reseller overview","tags":["Resellers"],"x-kypanel-access":"root, reseller","x-kypanel-token":"admin token area: server"}},"/api/v1/reseller/branding":{"delete":{"operationId":"deleteBrandingOwn","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Reset your reseller branding","tags":["Resellers"],"x-kypanel-access":"root, reseller (ACL: branding)","x-kypanel-token":"admin token area: server"},"get":{"operationId":"getBrandingOwn","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminBrandingView"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get your reseller branding","tags":["Resellers"],"x-kypanel-access":"root, reseller (ACL: branding)","x-kypanel-token":"admin token area: server"},"put":{"operationId":"putBrandingOwn","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingInput"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save your reseller branding","tags":["Resellers"],"x-kypanel-access":"root, reseller (ACL: branding)","x-kypanel-token":"admin token area: server"}},"/api/v1/resellers":{"get":{"operationId":"listResellers","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreReseller"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List resellers","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"description":"Grants reseller status to an existing account (\"Make an account a reseller\").","operationId":"createReseller","requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"type":"string"},"acl_list_id":{"type":"string"},"username":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreReseller"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-reseller, not-ready, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Make an account a reseller","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/resellers/{id}":{"delete":{"description":"Takes reseller status away; the account keeps its hosting, its accounts and packages pass to root.","operationId":"removeReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"accounts_moved":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove reseller status","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"get":{"operationId":"getReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreReseller"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a reseller","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"updateReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResellerReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreReseller"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a reseller's limits and privileges","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/resellers/{id}/accounts":{"get":{"operationId":"resellerAccounts","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreAccount"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List a reseller's accounts","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/resellers/{id}/branding":{"delete":{"operationId":"deleteBrandingForReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Reset a reseller's branding","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"get":{"operationId":"getBrandingForReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminBrandingView"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a reseller's branding","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"putBrandingForReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingInput"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save a reseller's branding","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/resellers/{id}/login-as":{"post":{"description":"Makes root's session show Ky Admin as the reseller sees it, until /auth/act-as/exit.","operationId":"actAsReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"redirect":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: session-only"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"See Ky Admin as a reseller","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/resellers/{id}/suspend":{"post":{"operationId":"suspendReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"reason":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"accounts_suspended":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-suspended"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Suspend a reseller and its accounts","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/resellers/{id}/terminate":{"post":{"description":"Removes the reseller's accounts, its packages and the reseller's own account.","operationId":"terminateReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"query","name":"confirm","schema":{"type":"string"}},{"in":"query","name":"keep_home","schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: confirmation-required"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Terminate a reseller and its accounts","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/resellers/{id}/unsuspend":{"post":{"operationId":"unsuspendReseller","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"accounts_unsuspended":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Unsuspend a reseller and its accounts","tags":["Resellers"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/restores":{"get":{"operationId":"restoreList","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreRestoreJob"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List restores","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"restoreCreate","requestBody":{"content":{"application/json":{"schema":{"properties":{"options":{"$ref":"#/components/schemas/HostingRestoreOptions"},"snapshot_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: not-found, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Restore accounts from a backup","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/restores/{rid}":{"get":{"operationId":"restoreGet","parameters":[{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreRestoreJob"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a restore","tags":["Backups"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/2fa":{"get":{"operationId":"twoFAOverview","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"admins":{"items":{"$ref":"#/components/schemas/StoreAdminTwoFactor"},"type":"array"},"customers":{"properties":{"total":{"type":"integer"},"with_2fa":{"type":"integer"}},"type":"object"},"issuer":{"type":"string"},"issuer_effective":{"type":"string"},"me":{"type":"string"},"require_2fa_admins":{"type":"boolean"},"require_2fa_customers":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Two-factor authentication overview","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/security/2fa/admins/{id}":{"delete":{"operationId":"twoFAResetAdmin","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: root-only"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: self"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Turn off an admin's two-factor authentication","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/security/blocks":{"get":{"operationId":"bfBlocks","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BlockView"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List blocked addresses","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"bfBlock","requestBody":{"content":{"application/json":{"schema":{"properties":{"hours":{"type":"integer"},"ip":{"type":"string"},"reason":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BlockView"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Block an address","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/blocks/{id}":{"delete":{"operationId":"bfUnblock","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Unblock an address","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/brute-force":{"get":{"operationId":"bfGet","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"geo":{"additionalProperties":{},"type":"object"},"my_country":{"type":"string"},"my_ip":{"type":"string"},"my_ip_trusted":{"type":"boolean"},"settings":{"additionalProperties":{},"type":"object"},"stats":{"properties":{"failures_24h":{"type":"integer"},"ip_blocks":{"type":"integer"},"user_locks":{"type":"integer"}},"type":"object"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the brute force protection settings","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"bfPut","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"geo":{"additionalProperties":{},"type":"object"},"my_country":{"type":"string"},"my_ip":{"type":"string"},"my_ip_trusted":{"type":"boolean"},"settings":{"additionalProperties":{},"type":"object"},"stats":{"properties":{"failures_24h":{"type":"integer"},"ip_blocks":{"type":"integer"},"user_locks":{"type":"integer"}},"type":"object"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the brute force protection settings","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/geo/update":{"post":{"operationId":"geoUpdate","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: geo-download"}},"summary":"Update the country database","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/history":{"get":{"operationId":"bfHistory","parameters":[{"in":"query","name":"all","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"attempts":{"items":{"$ref":"#/components/schemas/StoreLoginAttempt"},"type":"array"},"events":{"items":{"$ref":"#/components/schemas/StoreBFEvent"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Brute force history","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/lists":{"get":{"operationId":"bfLists","parameters":[{"in":"query","name":"list","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreBFRecord"},"type":"array"},"my_country":{"type":"string"},"my_ip":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List allowed and blocked addresses and countries","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"bfListAdd","requestBody":{"content":{"application/json":{"schema":{"properties":{"list":{"type":"string"},"reason":{"type":"string"},"value":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreBFRecord"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add to the allow or block list","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/lists/{id}":{"delete":{"operationId":"bfListDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: lockout"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove from the allow or block list","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/security/policies":{"get":{"operationId":"policiesGet","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"my_ip":{"type":"string"},"password_features":{"items":{"$ref":"#/components/schemas/SettingsOption"},"type":"array"},"policies":{"$ref":"#/components/schemas/PoliciesView"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Get the security policies","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"policiesPut","requestBody":{"content":{"application/json":{"schema":{"properties":{"admin_allowed_ips":{"items":{"type":"string"},"type":"array"},"admin_password_max_age_days":{"type":"integer"},"my_ip":{"type":"string"},"password_strength":{"additionalProperties":{"type":"integer"},"type":"object"},"require_2fa_admins":{"type":"boolean"},"require_2fa_customers":{"type":"boolean"},"smtp_restriction":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"my_ip":{"type":"string"},"password_features":{"items":{"$ref":"#/components/schemas/SettingsOption"},"type":"array"},"policies":{"$ref":"#/components/schemas/PoliciesView"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the security policies","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/account-settings":{"get":{"operationId":"getAccountSettings","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"default_bandwidth_page":{"type":"string"},"default_suspended_page":{"type":"string"},"settings":{"$ref":"#/components/schemas/HostingAccountSettings"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the defaults for new accounts","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"putAccountSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingAccountSettings"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"},"settings":{"$ref":"#/components/schemas/HostingAccountSettings"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the defaults for new accounts","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/apache":{"get":{"operationId":"adminApache","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Web server status","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/basic":{"get":{"operationId":"adminBasic","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"contact_email":{"type":"string"},"contact_email2":{"type":"string"},"default_home_root":{"type":"string"},"hostname":{"type":"string"},"main_ipv4":{"type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"},"shared_ip":{"type":"string"},"shared_ip_id":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the basic setup (contact, nameservers)","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"adminSetBasic","requestBody":{"content":{"application/json":{"schema":{"properties":{"contact_email":{"type":"string"},"contact_email2":{"type":"string"},"default_home_root":{"type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"contact_email":{"type":"string"},"contact_email2":{"type":"string"},"default_home_root":{"type":"string"},"hostname":{"type":"string"},"main_ipv4":{"type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"},"shared_ip":{"type":"string"},"shared_ip_id":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the basic setup","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/branding":{"delete":{"operationId":"deleteBranding","responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Reset the server's branding","tags":["Branding"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"get":{"operationId":"getBranding","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminBrandingView"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the server's branding","tags":["Branding"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"putBranding","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandingInput"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the server's branding","tags":["Branding"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/contacts":{"get":{"operationId":"contactsGet","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"alerts":{"items":{"$ref":"#/components/schemas/AlertView"},"type":"array"},"channels":{"items":{"$ref":"#/components/schemas/ChannelView"},"type":"array"},"contact_email":{"type":"string"},"deliveries":{"items":{"$ref":"#/components/schemas/StoreDelivery"},"type":"array"},"webhook_timeout_seconds":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Contact channels and alert priorities","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/contacts/alerts":{"put":{"operationId":"contactAlerts","requestBody":{"content":{"application/json":{"schema":{"properties":{"priorities":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"alerts":{"items":{"$ref":"#/components/schemas/AlertView"},"type":"array"},"channels":{"items":{"$ref":"#/components/schemas/ChannelView"},"type":"array"},"contact_email":{"type":"string"},"deliveries":{"items":{"$ref":"#/components/schemas/StoreDelivery"},"type":"array"},"webhook_timeout_seconds":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Set alert priorities","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/contacts/channels":{"post":{"operationId":"contactCreate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a contact channel (email or webhook)","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/contacts/channels/{id}":{"delete":{"operationId":"contactDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a contact channel","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"contactUpdate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelView"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a contact channel","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/contacts/channels/{id}/rotate-secret":{"post":{"operationId":"contactRotate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-webhook"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rotate a webhook channel's secret","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/contacts/test":{"post":{"operationId":"contactTest","requestBody":{"content":{"application/json":{"schema":{"properties":{"channel_id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"results":{"items":{"$ref":"#/components/schemas/Result"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: no-channels"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Send a test notification","tags":["Notifications"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/databases":{"get":{"operationId":"adminDatabases","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"databases":{"items":{"$ref":"#/components/schemas/DbRow"},"type":"array"},"users":{"items":{"$ref":"#/components/schemas/UserRow"},"type":"array"},"version":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Database server overview","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/databases/processes":{"get":{"operationId":"adminDBProcesses","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List database processes","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/databases/processes/{pid}/kill":{"post":{"operationId":"adminDBKill","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"query_only":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Kill a database process","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/databases/root":{"get":{"operationId":"adminDBRoot","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Database root access status","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/databases/root/repair":{"post":{"operationId":"adminDBRootRepair","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Repair database root access","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/disk-io":{"get":{"operationId":"adminDiskIO","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Disk I/O per device","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/default-template":{"put":{"operationId":"adminDefaultTemplate","requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"default":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Choose the default zone template","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/hostname-record":{"post":{"operationId":"adminHostnameRecord","requestBody":{"content":{"application/json":{"schema":{"properties":{"ip":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"hostname":{"type":"string"},"ip":{"type":"string"},"zone":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: no-zone"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: hostname-record"}},"summary":"Add the A record of the server's hostname","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/templates":{"get":{"operationId":"adminTemplates","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"default":{"type":"string"},"items":{"items":{"$ref":"#/components/schemas/StoreZoneTemplate"},"type":"array"},"variables":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List zone templates","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/templates/{name}":{"delete":{"operationId":"adminDeleteTemplate","parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a zone template","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"adminSaveTemplate","parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"body":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreZoneTemplate"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save a zone template","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/templates/{name}/reset":{"post":{"operationId":"adminResetTemplate","parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreZoneTemplate"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Reset a zone template to the default","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones":{"get":{"operationId":"adminZones","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"dns_enabled":{"type":"boolean"},"hostname":{"type":"string"},"hostname_zone":{"type":"string"},"items":{"items":{"$ref":"#/components/schemas/StoreZoneInfo"},"type":"array"},"main_ip":{"type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List every DNS zone","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"adminCreateZone","requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"type":"string"},"ip":{"type":"string"},"name":{"type":"string"},"template":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreZoneInfo"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Create a DNS zone","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}":{"delete":{"operationId":"adminDeleteZone","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-delete-failed"}},"summary":"Delete a DNS zone","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"get":{"operationId":"adminZone","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreDNSRecord"},"type":"array"},"nameservers":{"items":{"type":"string"},"type":"array"},"zone":{"$ref":"#/components/schemas/StoreZoneInfo"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a DNS zone with its records","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}/file":{"get":{"operationId":"adminZoneFile","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"query","name":"download","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"text":{"type":"string"},"zone":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Export a zone file","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"adminImportZone","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"dry_run":{"type":"boolean"},"text":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingImportResult"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Import a zone file","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}/publish":{"post":{"operationId":"adminPublishZone","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreZoneInfo"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Publish a zone again (bump the serial)","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}/records":{"post":{"operationId":"adminAddRecord","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingRecordInput"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: duplicate, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Add a record to any zone","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}/records/{rid}":{"delete":{"operationId":"adminDeleteRecord","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: duplicate, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Delete a record from any zone","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"adminUpdateRecord","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingRecordInput"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: duplicate, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Update a record in any zone","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}/records/{rid}/disabled":{"put":{"operationId":"adminDisableRecord","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}},{"in":"path","name":"rid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"disabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: duplicate, validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Disable or enable a record","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}/reset":{"post":{"operationId":"adminResetZone","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"records":{"type":"integer"},"zone":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Reset any zone to the template","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/dns/zones/{zid}/soa":{"put":{"operationId":"adminSetSOA","parameters":[{"in":"path","name":"zid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"default_ttl":{"type":"integer"},"expire":{"type":"integer"},"minimum":{"type":"integer"},"mname":{"type":"string"},"refresh":{"type":"integer"},"retry":{"type":"integer"},"rname":{"type":"string"},"serial":{"type":"integer"},"ttl":{"type":"integer"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreZoneInfo"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: dns-publish-failed"}},"summary":"Change a zone's SOA","tags":["DNS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/domains":{"get":{"description":"List Subdomains (?type=sub) and List Parked Domains (?type=alias), or addon domains.","operationId":"serverDomains","parameters":[{"in":"query","name":"type","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreServerDomain"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the server's domains by type","tags":["Domains"],"x-kypanel-access":"root, reseller (ACL: list-accts)","x-kypanel-token":"admin token area: server"}},"/api/v1/server/firewall":{"get":{"operationId":"getServerFirewall","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Firewall status and open ports","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/firewall/ports":{"put":{"operationId":"putServerFirewallPorts","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"open":{"type":"boolean"},"port":{"type":"integer"},"protocol":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Open or close firewall ports","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/firewall/rules":{"get":{"operationId":"fwRules","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"kernel":{"additionalProperties":{},"type":"object"},"lists":{"additionalProperties":{"type":"integer"},"type":"object"},"my_ip":{"type":"string"},"rules":{"items":{"$ref":"#/components/schemas/FwRuleView"},"type":"array"},"smtp_restriction":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List firewall rules","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"fwRuleCreate","requestBody":{"content":{"application/json":{"schema":{"properties":{"action":{"type":"string"},"comment":{"type":"string"},"ports":{"type":"string"},"protocol":{"type":"string"},"source":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FwRuleView"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a firewall rule","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/firewall/rules/{id}":{"delete":{"operationId":"fwRuleDelete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: lockout"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a firewall rule","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"patch":{"operationId":"fwRulePatch","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FwRuleView"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: lockout"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a firewall rule","tags":["Security"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/hardware":{"get":{"operationId":"adminHardware","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Hardware (CPU, memory, disks)","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/hostname":{"put":{"operationId":"setHostname","requestBody":{"content":{"application/json":{"schema":{"properties":{"hostname":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"certificate_job_id":{"type":"string"},"hostname":{"type":"string"},"message":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the server's hostname","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ips":{"get":{"operationId":"adminIPs","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreIPAddress"},"type":"array"},"shared_id":{"type":"string"},"system":{"additionalProperties":{},"type":"object"},"system_error":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the server's IP addresses","tags":["IP Addresses"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"adminAddIPs","requestBody":{"content":{"application/json":{"schema":{"properties":{"input":{"type":"string"},"interface":{"type":"string"},"kind":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"added":{"items":{"$ref":"#/components/schemas/StoreIPAddress"},"type":"array"},"skipped":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Add IP addresses","tags":["IP Addresses"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ips/shared":{"put":{"operationId":"adminSharedIP","requestBody":{"content":{"application/json":{"schema":{"properties":{"ip_id":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"address":{"type":"string"},"shared_id":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Choose the shared IP address","tags":["IP Addresses"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ips/{iid}":{"delete":{"operationId":"adminDeleteIP","parameters":[{"in":"path","name":"iid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Remove an IP address","tags":["IP Addresses"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ips/{iid}/bind":{"post":{"operationId":"adminBindIP","parameters":[{"in":"path","name":"iid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"action":{"type":"string"},"dry_run":{"type":"boolean"},"interface":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use, main-ip"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Bind an IP address to the network interface","tags":["IP Addresses"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ips/{iid}/kind":{"put":{"operationId":"adminIPKind","parameters":[{"in":"path","name":"iid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"kind":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreIPAddress"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: in-use"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Make an IP address shared or dedicated","tags":["IP Addresses"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/deliverability":{"get":{"operationId":"adminHostDeliverability","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingHostnameReport"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Email deliverability of the server's hostname","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/deliverability/repair":{"post":{"operationId":"adminHostDeliverabilityRepair","requestBody":{"content":{"application/json":{"schema":{"properties":{"kinds":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"repaired":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: repair-failed"}},"summary":"Install the hostname's suggested email DNS records","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/deliveries":{"get":{"operationId":"adminDeliveries","parameters":[{"in":"query","name":"account_id","schema":{"type":"string"}},{"in":"query","name":"event","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreMailDelivery"},"type":"array"},"retention_days":{"type":"integer"},"stats_24h":{"additionalProperties":{"type":"integer"},"type":"object"},"total":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Track delivery on the whole server","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/deliveries/refresh":{"post":{"operationId":"adminDeliveriesRefresh","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"new_rows":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Read new entries of the mail log now","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/holds":{"post":{"operationId":"adminHold","requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"type":"string"},"reason":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"incident_id":{"type":"string"},"username":{"type":"string"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Hold outgoing mail of a domain or account","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/holds/{id}":{"delete":{"operationId":"adminRelease","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"resolved":{"type":"integer"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Release held mail","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/limits":{"get":{"operationId":"adminMailLimits","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"held":{"items":{"type":"string"},"type":"array"},"incidents":{"items":{"$ref":"#/components/schemas/StoreIncident"},"type":"array"},"last_hour":{"items":{"$ref":"#/components/schemas/StoreSenderVolume"},"type":"array"},"queue_count":{"type":"integer"},"settings":{"$ref":"#/components/schemas/HostingMailAdminSettings"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Outgoing mail limits and current counts","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/queue":{"get":{"operationId":"adminQueue","parameters":[{"in":"query","name":"q","schema":{"type":"string"}},{"in":"query","name":"server","schema":{"type":"string"}},{"in":"query","name":"state","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"total":{"type":"integer"},"truncated":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List the mail queue","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/queue/action":{"post":{"operationId":"adminQueueAction","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"action":{"type":"string"},"ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Deliver, freeze or delete queued messages","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/queue/{mid}":{"get":{"operationId":"adminQueueMessage","parameters":[{"in":"path","name":"mid","required":true,"schema":{"type":"string"}},{"in":"query","name":"part","schema":{"type":"string"}},{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a queued message","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/routing":{"get":{"operationId":"adminMailRouting","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreMailRoutingRow"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Mail routing of the server and its email nodes","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/settings":{"put":{"operationId":"adminMailSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingMailAdminSettings"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingMailAdminSettings"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the mail server settings","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mail/troubleshoot":{"post":{"operationId":"mailTroubleshoot","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"address":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Trace how an address would be delivered","tags":["Email"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/mass-mail":{"get":{"description":"How many addresses Email All Users (or ?resellers=1) reaches.","operationId":"massMailCount","parameters":[{"in":"query","name":"resellers","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"default_from":{"type":"string"},"recipients":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Count the recipients of a message to all users","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"description":"Email All Users / Email All Resellers (a task: one message per address).","operationId":"massMailSend","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingMassMail"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Email all users or resellers","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/php":{"get":{"operationId":"adminPHP","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"default":{"type":"string"},"directives":{"items":{"$ref":"#/components/schemas/WebDirective"},"type":"array"},"versions":{"items":{"$ref":"#/components/schemas/VerRow"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"PHP versions and the default","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/php/default":{"put":{"operationId":"adminPHPDefault","requestBody":{"content":{"application/json":{"schema":{"properties":{"version":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"default":{"type":"string"},"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Set the default PHP version","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/php/domains":{"get":{"operationId":"adminPHPDomains","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreDomainPHPRow"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"PHP version of every domain","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"description":"Sets one PHP version (\"\" = inherit the default) on many domains at once.","operationId":"adminPHPBulk","requestBody":{"content":{"application/json":{"schema":{"properties":{"domain_ids":{"items":{"type":"string"},"type":"array"},"version":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"changed":{"type":"integer"},"job_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Set the PHP version of many domains","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/php/{ver}/extensions":{"get":{"operationId":"adminPHPExtensions","parameters":[{"in":"path","name":"ver","required":true,"schema":{"type":"string"}},{"in":"query","name":"available","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List a PHP version's extensions","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"adminPHPExtensionSet","parameters":[{"in":"path","name":"ver","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"action":{"type":"string"},"extension":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Install or remove a PHP extension","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/php/{ver}/ini":{"get":{"operationId":"adminPHPIni","parameters":[{"in":"path","name":"ver","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"directives":{"items":{"$ref":"#/components/schemas/WebDirective"},"type":"array"},"values":{"additionalProperties":{"type":"string"},"type":"object"},"version":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a PHP version's global settings","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"adminPHPSetIni","parameters":[{"in":"path","name":"ver","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"values":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"values":{"additionalProperties":{"type":"string"},"type":"object"},"version":{"type":"string"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save a PHP version's global settings","tags":["PHP"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/processes":{"get":{"operationId":"serverProcesses","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AgentprotoProcess"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List processes","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/processes/kill-user":{"post":{"operationId":"adminKillUser","requestBody":{"content":{"application/json":{"schema":{"properties":{"signal":{"type":"string"},"user":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Kill every process of a user","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/processes/{pid}/kill":{"post":{"operationId":"killProcess","parameters":[{"in":"path","name":"pid","required":true,"schema":{"type":"string"}},{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"signal":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Kill a process","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/reboot":{"post":{"operationId":"serverReboot","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"confirm":{"type":"string"},"mode":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: confirmation-required, rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Reboot the server","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/resolvers":{"get":{"operationId":"getResolvers","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the DNS resolvers","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"setResolvers","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"resolvers":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the DNS resolvers","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/resource-usage":{"get":{"description":"Every account's last-24h use and faults, heaviest CPU first (admin overview).","operationId":"serverResourceUsage","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"range":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Resource usage of every account","tags":["Server"],"x-kypanel-access":"root, reseller (ACL: list-accts)","x-kypanel-token":"admin token area: server"}},"/api/v1/server/root-password":{"post":{"operationId":"adminRootPassword","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"confirm":{"type":"string"},"password":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Change the system root password","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/server/services":{"get":{"operationId":"serverServices","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ServiceView"},"type":"array"},"monitor":{"type":"boolean"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List services","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/services/{name}/monitor":{"put":{"operationId":"serviceMonitor","parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Monitor a service or stop monitoring it","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/services/{name}/{action}":{"post":{"operationId":"serviceAction","parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"action","required":true,"schema":{"type":"string"}},{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentprotoServiceStatus"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Start, stop or restart a service","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/settings":{"get":{"operationId":"getSettings","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsView"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get the server settings","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"putSettings","requestBody":{"content":{"application/json":{"schema":{"properties":{"mail":{"$ref":"#/components/schemas/GlobalcfgMail"},"smarthost_password":{"type":"string"},"smarthost_password_set":{"type":"boolean"},"web":{"$ref":"#/components/schemas/GlobalcfgWeb"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettingsView"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the server settings","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/autossl":{"get":{"operationId":"adminAutoSSL","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"accounts":{"items":{"$ref":"#/components/schemas/StoreAutoSSLAccount"},"type":"array"},"interval_hours":{"type":"integer"},"key_types":{"items":{"type":"string"},"type":"array"},"profiles":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"provider":{"type":"string"},"queue":{"items":{"$ref":"#/components/schemas/StoreJobRun"},"type":"array"},"settings":{"$ref":"#/components/schemas/HostingSSLSettings"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"AutoSSL settings and status","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/autossl/run":{"post":{"operationId":"adminAutoSSLRun","requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"type":"string"},"hostname":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_ids":{"items":{"type":"string"},"type":"array"},"queued":{"type":"integer"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Run AutoSSL for every account","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/autossl/runs":{"get":{"operationId":"adminAutoSSLRuns","parameters":[{"in":"query","name":"limit","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreJobRun"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List AutoSSL runs","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/autossl/runs/{jid}/log":{"get":{"operationId":"adminAutoSSLLog","parameters":[{"in":"path","name":"jid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"job":{"$ref":"#/components/schemas/StoreJob"},"lines":{"items":{"$ref":"#/components/schemas/StoreJobLog"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"AutoSSL run log","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/autossl/settings":{"put":{"operationId":"adminAutoSSLSettings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingSSLSettings"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingSSLSettings"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save the AutoSSL settings","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/certificates":{"get":{"operationId":"adminCerts","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreVhostCert"},"type":"array"},"now":{"type":"integer"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List every installed certificate","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/hostname":{"post":{"operationId":"hostnameCert","responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-running"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Request a certificate for the server's hostname","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/ssl/install":{"post":{"description":"Installs a pasted certificate (with its key) on any site, by domain name.","operationId":"adminInstallCert","requestBody":{"content":{"application/json":{"schema":{"properties":{"ca_bundle":{"type":"string"},"cert_id":{"type":"string"},"certificate":{"type":"string"},"domain":{"type":"string"},"domain_id":{"type":"string"},"friendly_name":{"type":"string"},"private_key":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"account_id":{"type":"string"},"cert_id":{"type":"string"},"job_id":{"type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Install a certificate on any domain","tags":["SSL/TLS"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/status":{"get":{"operationId":"serverStatus","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentprotoSystemStats"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, wrong-server"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Server status (load, memory, disks, services)","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/tweak-settings":{"get":{"operationId":"tweakList","parameters":[{"in":"query","name":"category","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/SettingsCategory"},"type":"array"},"items":{"items":{"$ref":"#/components/schemas/TweakItem"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List tweak settings","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"tweakPut","parameters":[{"in":"query","name":"category","schema":{"type":"string"}},{"in":"query","name":"q","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"values":{"additionalProperties":{},"type":"object"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"categories":{"items":{"$ref":"#/components/schemas/SettingsCategory"},"type":"array"},"items":{"items":{"$ref":"#/components/schemas/TweakItem"},"type":"array"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Save tweak settings","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/tweak-settings/{key}":{"delete":{"operationId":"tweakReset","parameters":[{"in":"path","name":"key","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: rejected, validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Reset a tweak setting to its default","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/updates":{"get":{"operationId":"updateStatus","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"applying":{"type":"string"},"available":{"type":"boolean"},"config":{"$ref":"#/components/schemas/UpdateConfig"},"current_build":{"type":"integer"},"current_version":{"type":"string"},"last_check_at":{"type":"integer"},"last_check_error":{"type":"string"},"last_result":{"$ref":"#/components/schemas/UpdateResult"},"latest":{"$ref":"#/components/schemas/UpdateManifest"},"nodes":{"items":{"$ref":"#/components/schemas/NodeVersion"},"type":"array"}},"required":["nodes"],"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"503 Service Unavailable: updates-off"}},"summary":"Panel update status","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/updates/apply":{"post":{"operationId":"updateApply","responses":{"202":{"content":{"application/json":{"schema":{"properties":{"message":{"type":"string"},"version":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: up-to-date"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: update-failed"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"503 Service Unavailable: updates-off"}},"summary":"Install the available panel update","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/updates/channel":{"put":{"operationId":"updateSetChannel","requestBody":{"content":{"application/json":{"schema":{"properties":{"auto":{"type":"boolean"},"channel":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"applying":{"type":"string"},"available":{"type":"boolean"},"config":{"$ref":"#/components/schemas/UpdateConfig"},"current_build":{"type":"integer"},"current_version":{"type":"string"},"last_check_at":{"type":"integer"},"last_check_error":{"type":"string"},"last_result":{"$ref":"#/components/schemas/UpdateResult"},"latest":{"$ref":"#/components/schemas/UpdateManifest"},"nodes":{"items":{"$ref":"#/components/schemas/NodeVersion"},"type":"array"}},"required":["nodes"],"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: nodes-unreachable"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"503 Service Unavailable: updates-off"}},"summary":"Change the update channel","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/updates/check":{"post":{"operationId":"updateCheck","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"applying":{"type":"string"},"available":{"type":"boolean"},"config":{"$ref":"#/components/schemas/UpdateConfig"},"current_build":{"type":"integer"},"current_version":{"type":"string"},"last_check_at":{"type":"integer"},"last_check_error":{"type":"string"},"last_result":{"$ref":"#/components/schemas/UpdateResult"},"latest":{"$ref":"#/components/schemas/UpdateManifest"},"nodes":{"items":{"$ref":"#/components/schemas/NodeVersion"},"type":"array"}},"required":["nodes"],"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: update-check-failed"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"503 Service Unavailable: updates-off"}},"summary":"Check for panel updates now","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/updates/os":{"get":{"operationId":"osUpdateStatus","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingOSUpdateOverview"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Operating system update settings and status","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"put":{"operationId":"osUpdateSet","requestBody":{"content":{"application/json":{"schema":{"properties":{"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingOSUpdateOverview"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: nodes-unreachable"}},"summary":"Save the operating system update settings","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/server/updates/os/run":{"post":{"operationId":"osUpdateRun","parameters":[{"in":"query","name":"server","schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: already-running"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update the operating system now","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/setup":{"get":{"operationId":"getSetup","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreSetupState"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"First-run setup status","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"postSetup","requestBody":{"content":{"application/json":{"schema":{"properties":{"accept_terms":{"type":"boolean"},"contact_email":{"type":"string"},"nameservers":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"setup":{"$ref":"#/components/schemas/StoreSetupState"},"warnings":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Finish the first-run setup","tags":["Server"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/token":{"get":{"description":"Tells an API client about the token it calls with: whose it is (the admin, or the account and its username) and what it may do. The ky CLI reads it at login.","operationId":"tokenSelf","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: invalid-token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: token-ip"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[{"token":[]}],"summary":"Who the calling API token belongs to","tags":["API Tokens"],"x-kypanel-access":"public","x-kypanel-token":"any valid token"}},"/api/v1/tokens":{"get":{"operationId":"listTokens","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"areas":{"items":{"$ref":"#/components/schemas/TokenScope"},"type":"array"},"items":{"items":{"$ref":"#/components/schemas/StoreAPIToken"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List your admin API tokens","tags":["API Tokens"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"},"post":{"operationId":"createToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"},"token":{"$ref":"#/components/schemas/StoreAPIToken"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: validation"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Create an admin API token","tags":["API Tokens"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/tokens/{tid}":{"delete":{"operationId":"revokeToken","parameters":[{"in":"path","name":"tid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Revoke an admin API token","tags":["API Tokens"],"x-kypanel-access":"root","x-kypanel-token":"API tokens can't use this endpoint"}},"/api/v1/transfers":{"get":{"operationId":"transferList","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreTransferSession"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List transfers from remote servers","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"transferCreate","requestBody":{"content":{"application/json":{"schema":{"properties":{"auth_method":{"type":"string"},"host":{"type":"string"},"password":{"type":"string"},"port":{"type":"integer"},"private_key":{"type":"string"},"user":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"host_key":{"properties":{"sha256":{"type":"string"},"type":{"type":"string"}},"type":"object"},"session":{"$ref":"#/components/schemas/StoreTransferSession"}},"type":"object"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Start a transfer from a remote server","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/transfers/{tid}":{"get":{"operationId":"transferGet","parameters":[{"in":"path","name":"tid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"additionalProperties":{},"type":"object"},"type":"array"},"session":{"$ref":"#/components/schemas/StoreTransferSession"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a transfer","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/transfers/{tid}/abort":{"post":{"operationId":"transferAbort","parameters":[{"in":"path","name":"tid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Abort a transfer","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/transfers/{tid}/analyze":{"post":{"operationId":"transferAnalyze","parameters":[{"in":"path","name":"tid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostingRemoteAnalysis"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: analysis"}},"summary":"Analyze the remote server's accounts","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/transfers/{tid}/host-key":{"post":{"operationId":"transferHostKey","parameters":[{"in":"path","name":"tid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"sha256":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"host_key":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: host-key"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"502 Bad Gateway: unreachable"}},"summary":"Trust the remote server's SSH host key","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/transfers/{tid}/start":{"post":{"operationId":"transferStart","parameters":[{"in":"path","name":"tid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"accounts":{"items":{"properties":{"overwrite":{"type":"boolean"},"target":{"type":"string"},"user":{"type":"string"}},"required":["overwrite","target","user"],"type":"object"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"job_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"400 Bad Request: validation"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Copy the chosen accounts","tags":["Import Tools"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/user/admin-link":{"post":{"description":"A reseller in its customer panel switches to Ky Admin (single-use link, 60 s).","operationId":"userAdminLink","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"url":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no-session"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: csrf, impersonated, not-reseller, suspended"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Switch from the customer panel to Ky Admin (resellers)","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/user/auth/login":{"post":{"operationId":"userLogin","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionResp"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: invalid-credentials"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: suspended"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: not-ready"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Sign in to the customer panel","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/user/auth/logout":{"post":{"operationId":"userLogout","responses":{"204":{"description":"Done, no content"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: csrf"}},"security":[],"summary":"Sign out of the customer panel","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/user/auth/mfa":{"post":{"operationId":"userMFA","requestBody":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionResp"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: invalid-code, no-session"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: csrf"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"429 Too Many Requests: too-many-attempts"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Customer panel second sign-in step","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/user/auth/session":{"get":{"operationId":"userSession","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSessionResp"}}},"description":"OK"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Customer panel session","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/user/auth/sso":{"get":{"operationId":"userSSO","parameters":[{"in":"query","name":"token","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"security":[],"summary":"Redeem a customer panel sign-in link","tags":["Authentication"],"x-kypanel-access":"public","x-kypanel-token":"not needed"}},"/api/v1/webhooks":{"get":{"operationId":"listWebhooks","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreWebhookEndpoint"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List server webhooks","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"post":{"operationId":"createWebhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookReq"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"},"webhook":{"$ref":"#/components/schemas/StoreWebhookEndpoint"}},"type":"object"}}},"description":"Created"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"409 Conflict: too-many"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: invalid-description, invalid-events, invalid-url"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Add a server webhook","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/webhooks/events":{"get":{"operationId":"webhookCatalog","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhooksEventType"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"}},"summary":"Event catalog","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/webhooks/{wid}":{"delete":{"operationId":"deleteWebhook","parameters":[{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Done, no content"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Delete a server webhook","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"get":{"operationId":"getWebhook","parameters":[{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreWebhookEndpoint"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Get a server webhook","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"},"patch":{"operationId":"updateWebhook","parameters":[{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookReq"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreWebhookEndpoint"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"422 Unprocessable Entity: invalid-description, invalid-events, invalid-url"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Update a server webhook","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/webhooks/{wid}/deliveries":{"get":{"operationId":"webhookDeliveries","parameters":[{"in":"path","name":"wid","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoreWebhookDelivery"},"type":"array"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"List a server webhook's deliveries","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/webhooks/{wid}/deliveries/{did}/redeliver":{"post":{"operationId":"redeliverWebhook","parameters":[{"in":"path","name":"wid","required":true,"schema":{"type":"string"}},{"in":"path","name":"did","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Redeliver a server webhook delivery","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/webhooks/{wid}/rotate-secret":{"post":{"operationId":"rotateWebhookSecret","parameters":[{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"secret":{"type":"string"}},"type":"object"}}},"description":"OK"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Rotate a server webhook's secret","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}},"/api/v1/webhooks/{wid}/test":{"post":{"description":"Queues a webhook.ping to this endpoint only, whatever its event list.","operationId":"testWebhook","parameters":[{"in":"path","name":"wid","required":true,"schema":{"type":"string"}}],"responses":{"202":{"content":{"application/json":{"schema":{"properties":{"event_id":{"type":"string"}},"type":"object"}}},"description":"Accepted (runs in the background)"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"401 Unauthorized: no session, or an invalid or expired token"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"403 Forbidden: the caller can't use this (privileges, token scope, feature turned off)"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"404 Not Found: not-found"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"500 Internal Server Error: internal"}},"summary":"Send a test event to a server webhook","tags":["Webhooks"],"x-kypanel-access":"root","x-kypanel-token":"admin token area: server"}}},"security":[{"token":[]},{"adminSession":[]},{"userSession":[]}],"servers":[{"url":"https://{hostname}:7711","variables":{"hostname":{"default":"server.example.com"}}}],"tags":[{"description":"Keys for scripts and billing systems: admin tokens (ACL areas, allowed IPs, expiry) and account tokens.","name":"API Tokens"},{"description":"Hosting accounts: create, suspend, terminate, change package, limits, owner, password; single sign-on links.","name":"Accounts"},{"description":"Git-deployed apps (PHP, Node.js, Python), releases, processes, environment, Redis, GitHub connections.","name":"Apps"},{"description":"Sign-in for Ky Admin and the customer panel, sessions, two-factor authentication.","name":"Authentication"},{"description":"Scheduled backups, destinations, restores and the customer's own backups.","name":"Backups"},{"description":"Logo, colors and names shown on the panels, per server and per reseller.","name":"Branding"},{"description":"Cloudflare connection of an account: zones, record sync, proxy, cache purge.","name":"Cloudflare"},{"description":"Scheduled commands of an account.","name":"Cron Jobs"},{"description":"DNS zones and records, zone templates.","name":"DNS"},{"description":"MariaDB/MySQL databases, users, privileges, remote hosts, phpMyAdmin.","name":"Databases"},{"description":"Main, addon, subdomain and alias domains; document roots, PHP version and settings, redirects, error pages.","name":"Domains"},{"description":"Mailboxes, forwarders, autoresponders, filters, routing, spam, deliverability; the mail server and its queue.","name":"Email"},{"description":"FTP accounts and sessions.","name":"FTP"},{"description":"File manager: list, read, write, upload, move, compress, trash, disk usage; protected folders.","name":"Files"},{"description":"The server's IP addresses, shared and dedicated.","name":"IP Addresses"},{"description":"Account imports from backup files and transfers from remote servers.","name":"Import Tools"},{"description":"Background jobs: long operations answer 202 with a job_id.","name":"Jobs"},{"description":"The server's KyPanel license.","name":"License"},{"description":"Error and access logs, visitors.","name":"Logs"},{"description":"Tools a mailbox owner uses from the webmail: password, filters, autoresponder, client settings.","name":"Mailbox (Mail tools)"},{"description":"Email and database nodes paired with this server.","name":"Nodes"},{"description":"Panel notifications and the contact channels (email, webhook) alerts go to.","name":"Notifications"},{"description":"Installed PHP versions, extensions and global settings.","name":"PHP"},{"description":"Hosting packages and feature lists.","name":"Packages"},{"description":"Resellers, their limits, privileges and accounts.","name":"Resellers"},{"description":"SSH keys of an account.","name":"SSH"},{"description":"Certificates, keys, CSRs and AutoSSL.","name":"SSL/TLS"},{"description":"Brute force protection, allow and block lists, firewall, security policies, hotlink protection.","name":"Security"},{"description":"Server status, services, processes, settings, hostname, updates.","name":"Server"},{"description":"Browser terminal (WebSocket).","name":"Terminal"},{"description":"Outgoing webhooks and the event feed.","name":"Webhooks"}]}