{"openapi":"3.1.0","info":{"title":"Strata Hostings API","version":"1.0.0","description":"API de tu hosting en Strata Hostings (planes Plus e Ilimitado). Autenticación: Authorization: Bearer <llave>. Límite: 90 peticiones por minuto por llave. Las rutas de archivos son relativas a la carpeta del sitio (public_html, private…). Servidor MCP para IA en /mcp con la misma llave."},"servers":[{"url":"https://api.stratahostings.com"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Llave sth_… creada en Mi cuenta → Accesos. Se muestra una sola vez."}}},"paths":{"/v1/account":{"get":{"tags":["Cuenta"],"summary":"Datos de tu cuenta, uso y accesos","operationId":"get_v1_account","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites":{"get":{"tags":["Sitios"],"summary":"Lista tus sitios","operationId":"get_v1_websites","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["Sitios"],"summary":"Crea un sitio (dentro del límite de tu plan)","operationId":"post_v1_websites","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"description":"Dominio o subdominio nuevo, p. ej. tienda.midominio.com"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}":{"get":{"tags":["Sitios"],"summary":"Detalle de un sitio","operationId":"get_v1_websites_domain","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"delete":{"tags":["Sitios"],"summary":"Borra un sitio y sus archivos (pide confirm=true)","operationId":"delete_v1_websites_domain","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"confirm","in":"query","required":false,"description":"true para confirmar","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/php":{"put":{"tags":["Sitios"],"summary":"Cambia la versión de PHP (8.3 u 8.4)","operationId":"put_v1_websites_domain_php","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"version":{"description":"8.3 | 8.4"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/aliases":{"post":{"tags":["Sitios"],"summary":"Agrega un alias o dominio estacionado","operationId":"post_v1_websites_domain_aliases","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alias":{"description":"www.midominio.com o dominio estacionado"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/aliases/{alias}":{"delete":{"tags":["Sitios"],"summary":"Quita un alias","operationId":"delete_v1_websites_domain_aliases_alias","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"alias","in":"path","required":true,"description":"Alias a quitar","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/redirect":{"put":{"tags":["Sitios"],"summary":"Redirige todo el sitio a otra URL (301/302)","operationId":"put_v1_websites_domain_redirect","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"description":"Destino"},"code":{"description":"301 | 302"}}}}}},"security":[{"bearer":[]}]},"delete":{"tags":["Sitios"],"summary":"Quita la redirección","operationId":"delete_v1_websites_domain_redirect","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/ssl":{"get":{"tags":["SSL"],"summary":"Estado del certificado","operationId":"get_v1_websites_domain_ssl","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["SSL"],"summary":"Instala un certificado gratuito de Let's Encrypt (tarea)","operationId":"post_v1_websites_domain_ssl","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."},"202":{"description":"Tarea iniciada: {\"job_id\": \"job_…\"}. Consulta GET /v1/jobs/{id} hasta status done o failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"force_https":{"description":"true (predeterminado) para mandar todo a https"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/ssl/force-https":{"put":{"tags":["SSL"],"summary":"Activa o quita la redirección a https","operationId":"put_v1_websites_domain_ssl_force_https","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"description":"true | false"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/ftp":{"post":{"tags":["FTP"],"summary":"Crea una cuenta FTP limitada a una carpeta del sitio","operationId":"post_v1_websites_domain_ftp","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"description":"Sufijo del usuario FTP"},"password":{"description":"Opcional; si falta se genera"},"path":{"description":"Carpeta dentro del sitio, p. ej. public_html/fotos"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/ftp/{ftp_user}":{"delete":{"tags":["FTP"],"summary":"Borra una cuenta FTP","operationId":"delete_v1_websites_domain_ftp_ftp_user","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"ftp_user","in":"path","required":true,"description":"Usuario FTP completo (usuario_sufijo)","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/files":{"get":{"tags":["Archivos"],"summary":"Lista archivos y carpetas del sitio","operationId":"get_v1_websites_domain_files","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"path","in":"query","required":false,"description":"Carpeta relativa al sitio (public_html, private…)","schema":{"type":"string"}},{"name":"depth","in":"query","required":false,"description":"1-5","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"delete":{"tags":["Archivos"],"summary":"Borra un archivo o carpeta","operationId":"delete_v1_websites_domain_files","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"path","in":"query","required":false,"description":"Archivo o carpeta","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/files/content":{"get":{"tags":["Archivos"],"summary":"Lee un archivo de texto","operationId":"get_v1_websites_domain_files_content","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"path","in":"query","required":false,"description":"Archivo, p. ej. public_html/index.html","schema":{"type":"string"}},{"name":"from_line","in":"query","required":false,"description":"Primera línea","schema":{"type":"string"}},{"name":"max_lines","in":"query","required":false,"description":"Máx. 5000","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"put":{"tags":["Archivos"],"summary":"Crea o reemplaza un archivo (cuerpo crudo, máx. 50 MB)","operationId":"put_v1_websites_domain_files_content","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"path","in":"query","required":false,"description":"Archivo destino","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/files/upload-url":{"post":{"tags":["Archivos"],"summary":"URL firmada para subir un archivo grande con PUT (1 h, máx. 512 MB)","operationId":"post_v1_websites_domain_files_upload_url","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"path":{"description":"Destino, p. ej. private/sitio.zip"}}}}}},"security":[{"bearer":[]}]}},"/v1/uploads/{token}":{"put":{"tags":["Archivos"],"summary":"Sube el archivo a una URL firmada (sin llave; la URL es la autorización)","operationId":"put_v1_uploads_token","parameters":[{"name":"token","in":"path","required":true,"description":"Parte final de upload_url","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"security":[]}},"/v1/websites/{domain}/files/directory":{"post":{"tags":["Archivos"],"summary":"Crea una carpeta","operationId":"post_v1_websites_domain_files_directory","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"path":{"description":"Carpeta nueva"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/files/move":{"post":{"tags":["Archivos"],"summary":"Mueve o renombra un archivo o carpeta","operationId":"post_v1_websites_domain_files_move","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"description":"Origen"},"to":{"description":"Destino"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/files/copy":{"post":{"tags":["Archivos"],"summary":"Copia un archivo o carpeta","operationId":"post_v1_websites_domain_files_copy","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"description":"Origen"},"to":{"description":"Destino"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/files/extract":{"post":{"tags":["Archivos"],"summary":"Descomprime .zip/.tar.* en una carpeta","operationId":"post_v1_websites_domain_files_extract","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"archive":{"description":"Archivo comprimido"},"destination":{"description":"Carpeta destino"},"clean":{"description":"true = vaciar el destino antes"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/files/archive":{"post":{"tags":["Archivos"],"summary":"Comprime un archivo o carpeta en .zip","operationId":"post_v1_websites_domain_files_archive","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"description":"Qué comprimir"},"archive":{"description":"Destino .zip"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/deploy":{"post":{"tags":["Despliegues"],"summary":"Publica un sitio estático desde un archivo (reemplaza public_html)","operationId":"post_v1_websites_domain_deploy","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"archive_path":{"description":"Archivo ya subido, p. ej. private/sitio.zip"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/git/deploy":{"post":{"tags":["Despliegues"],"summary":"Publica o actualiza el sitio desde un repositorio git (tarea)","operationId":"post_v1_websites_domain_git_deploy","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."},"202":{"description":"Tarea iniciada: {\"job_id\": \"job_…\"}. Consulta GET /v1/jobs/{id} hasta status done o failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"description":"https://… o git@…"},"branch":{"description":"main"},"directory":{"description":"public_html"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress":{"get":{"tags":["WordPress"],"summary":"Estado de WordPress en el sitio","operationId":"get_v1_websites_domain_wordpress","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["WordPress"],"summary":"Instala WordPress (tarea; la contraseña de admin viene en el resultado)","operationId":"post_v1_websites_domain_wordpress","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."},"202":{"description":"Tarea iniciada: {\"job_id\": \"job_…\"}. Consulta GET /v1/jobs/{id} hasta status done o failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"description":"Nombre del sitio"},"admin_user":{"description":"Usuario administrador"},"admin_email":{"description":"Correo"},"locale":{"description":"es_MX"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/import":{"post":{"tags":["WordPress"],"summary":"Importa un WordPress (archivo + .sql) y reemplaza el sitio (tarea)","operationId":"post_v1_websites_domain_wordpress_import","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."},"202":{"description":"Tarea iniciada: {\"job_id\": \"job_…\"}. Consulta GET /v1/jobs/{id} hasta status done o failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"archive_path":{"description":"private/sitio.zip"},"sql_path":{"description":"private/base.sql"},"old_url":{"description":"URL anterior para reemplazar (opcional)"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/plugins":{"get":{"tags":["WordPress"],"summary":"Lista los plugins instalados","operationId":"get_v1_websites_domain_wordpress_plugins","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["WordPress"],"summary":"Instala un plugin de wordpress.org","operationId":"post_v1_websites_domain_wordpress_plugins","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"description":"Slug de wordpress.org"},"activate":{"description":"true para activar"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/plugins/{slug}/{action}":{"post":{"tags":["WordPress"],"summary":"Activa, desactiva o actualiza un plugin","operationId":"post_v1_websites_domain_wordpress_plugins_slug_action","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"description":"Slug","schema":{"type":"string"}},{"name":"action","in":"path","required":true,"description":"activate | deactivate | update","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/plugins/{slug}":{"delete":{"tags":["WordPress"],"summary":"Desinstala un plugin","operationId":"delete_v1_websites_domain_wordpress_plugins_slug","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"description":"Slug","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/themes":{"get":{"tags":["WordPress"],"summary":"Lista los themes instalados","operationId":"get_v1_websites_domain_wordpress_themes","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["WordPress"],"summary":"Instala un theme de wordpress.org","operationId":"post_v1_websites_domain_wordpress_themes","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"description":"Slug de wordpress.org"},"activate":{"description":"true para activar"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/themes/{slug}/{action}":{"post":{"tags":["WordPress"],"summary":"Activa, desactiva o actualiza un theme","operationId":"post_v1_websites_domain_wordpress_themes_slug_action","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"description":"Slug","schema":{"type":"string"}},{"name":"action","in":"path","required":true,"description":"activate | update","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/themes/{slug}":{"delete":{"tags":["WordPress"],"summary":"Desinstala un theme","operationId":"delete_v1_websites_domain_wordpress_themes_slug","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"description":"Slug","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/deploy":{"post":{"tags":["WordPress"],"summary":"Despliega un tema o plugin propio desde una carpeta subida","operationId":"post_v1_websites_domain_wordpress_deploy","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"description":"theme | plugin"},"directory":{"description":"Carpeta subida, p. ej. private/mi-tema"},"slug":{"description":"mi-tema"},"activate":{"description":"true para activar"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/core/update":{"post":{"tags":["WordPress"],"summary":"Actualiza WordPress a la última versión (tarea)","operationId":"post_v1_websites_domain_wordpress_core_update","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."},"202":{"description":"Tarea iniciada: {\"job_id\": \"job_…\"}. Consulta GET /v1/jobs/{id} hasta status done o failed."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/login-link":{"post":{"tags":["WordPress"],"summary":"Enlace de acceso a wp-admin de un solo uso (10 min)","operationId":"post_v1_websites_domain_wordpress_login_link","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user":{"description":"Usuario de WordPress (opcional; por defecto el primer administrador)"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/maintenance":{"put":{"tags":["WordPress"],"summary":"Activa o quita el modo mantenimiento","operationId":"put_v1_websites_domain_wordpress_maintenance","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"description":"true | false"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/cache/flush":{"post":{"tags":["WordPress"],"summary":"Vacía la caché de objetos de WordPress","operationId":"post_v1_websites_domain_wordpress_cache_flush","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/wordpress/cli":{"post":{"tags":["WordPress"],"summary":"Ejecuta un comando de WP-CLI permitido (plugin, theme, core, option get, user list…)","operationId":"post_v1_websites_domain_wordpress_cli","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"args":{"description":"[\"plugin\",\"list\",\"--format=json\"]"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs":{"get":{"tags":["Node.js"],"summary":"Estado de la app de Node.js","operationId":"get_v1_websites_domain_nodejs","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["Node.js"],"summary":"Convierte el sitio en app de Node.js (puerto propio, reinicio automático)","operationId":"post_v1_websites_domain_nodejs","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start_command":{"description":"Comando de inicio (predeterminado: npm start). La app escucha en process.env.PORT."}}}}}},"security":[{"bearer":[]}]},"delete":{"tags":["Node.js"],"summary":"Quita la app (los archivos se quedan)","operationId":"delete_v1_websites_domain_nodejs","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs/start-command":{"put":{"tags":["Node.js"],"summary":"Cambia el comando de inicio","operationId":"put_v1_websites_domain_nodejs_start_command","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"command":{"description":"p. ej. node server.js"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs/env":{"get":{"tags":["Node.js"],"summary":"Variables de entorno de la app","operationId":"get_v1_websites_domain_nodejs_env","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"put":{"tags":["Node.js"],"summary":"Reemplaza las variables de entorno (reinicia la app)","operationId":"put_v1_websites_domain_nodejs_env","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"variables":{"description":"{\"DATABASE_URL\":\"…\"}"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs/deploy":{"post":{"tags":["Node.js"],"summary":"Despliega desde un archivo subido o desde git, compila y reinicia (tarea)","operationId":"post_v1_websites_domain_nodejs_deploy","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."},"202":{"description":"Tarea iniciada: {\"job_id\": \"job_…\"}. Consulta GET /v1/jobs/{id} hasta status done o failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"description":"archive | git"},"archive_path":{"description":"private/app.zip (sin node_modules)"},"repository":{"description":"https://github.com/…"},"branch":{"description":"main"},"install_command":{"description":"Opcional (npm ci)"},"build_command":{"description":"Opcional (npm run build)"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs/build":{"post":{"tags":["Node.js"],"summary":"Recompila la app con el código actual (tarea)","operationId":"post_v1_websites_domain_nodejs_build","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."},"202":{"description":"Tarea iniciada: {\"job_id\": \"job_…\"}. Consulta GET /v1/jobs/{id} hasta status done o failed."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"install_command":{"description":"Opcional"},"build_command":{"description":"Opcional"}}}}}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs/build-log":{"get":{"tags":["Node.js"],"summary":"Registro de la última compilación","operationId":"get_v1_websites_domain_nodejs_build_log","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs/logs":{"get":{"tags":["Node.js"],"summary":"Salida reciente de la app","operationId":"get_v1_websites_domain_nodejs_logs","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"lines","in":"query","required":false,"description":"Líneas (máx. 5000)","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/websites/{domain}/nodejs/{action}":{"post":{"tags":["Node.js"],"summary":"Inicia, detiene o reinicia la app","operationId":"post_v1_websites_domain_nodejs_action","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio del sitio (debe estar en tu cuenta).","schema":{"type":"string"}},{"name":"action","in":"path","required":true,"description":"start | stop | restart","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/databases":{"get":{"tags":["Bases de datos"],"summary":"Lista tus bases de datos","operationId":"get_v1_databases","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["Bases de datos"],"summary":"Crea una base de datos MySQL (MariaDB)","operationId":"post_v1_databases","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Se antepone tu usuario: usuario_nombre"},"user":{"description":"Opcional"},"password":{"description":"Opcional; si falta se genera"}}}}}},"security":[{"bearer":[]}]}},"/v1/databases/{name}":{"delete":{"tags":["Bases de datos"],"summary":"Borra una base de datos (pide confirm=true)","operationId":"delete_v1_databases_name","parameters":[{"name":"name","in":"path","required":true,"description":"Nombre completo (usuario_nombre)","schema":{"type":"string"}},{"name":"confirm","in":"query","required":false,"description":"true","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/databases/{name}/password":{"put":{"tags":["Bases de datos"],"summary":"Cambia la contraseña del usuario de la base","operationId":"put_v1_databases_name_password","parameters":[{"name":"name","in":"path","required":true,"description":"Base","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"description":"Opcional; si falta se genera"}}}}}},"security":[{"bearer":[]}]}},"/v1/cron-jobs":{"get":{"tags":["Cron"],"summary":"Lista tus tareas programadas","operationId":"get_v1_cron_jobs","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["Cron"],"summary":"Crea una tarea programada","operationId":"post_v1_cron_jobs","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"minute":{"description":"*/15"},"hour":{"description":"*"},"day":{"description":"*"},"month":{"description":"*"},"weekday":{"description":"*"},"command":{"description":"php /home/usuario/web/sitio/public_html/cron.php"}}}}}},"security":[{"bearer":[]}]}},"/v1/cron-jobs/{id}":{"delete":{"tags":["Cron"],"summary":"Borra una tarea programada","operationId":"delete_v1_cron_jobs_id","parameters":[{"name":"id","in":"path","required":true,"description":"Número de la tarea","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/mail/domains":{"get":{"tags":["Correo"],"summary":"Dominios de correo","operationId":"get_v1_mail_domains","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["Correo"],"summary":"Activa el correo para un dominio (con DKIM)","operationId":"post_v1_mail_domains","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"description":"midominio.com"}}}}}},"security":[{"bearer":[]}]}},"/v1/mail/domains/{domain}/accounts":{"get":{"tags":["Correo"],"summary":"Buzones de un dominio","operationId":"get_v1_mail_domains_domain_accounts","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio de correo","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["Correo"],"summary":"Crea un buzón (dentro del límite de tu plan)","operationId":"post_v1_mail_domains_domain_accounts","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"description":"contacto"},"password":{"description":"Opcional"},"quota_mb":{"description":"Opcional"}}}}}},"security":[{"bearer":[]}]}},"/v1/mail/domains/{domain}/accounts/{account}":{"delete":{"tags":["Correo"],"summary":"Borra un buzón y su correo","operationId":"delete_v1_mail_domains_domain_accounts_account","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio","schema":{"type":"string"}},{"name":"account","in":"path","required":true,"description":"Buzón","schema":{"type":"string"}},{"name":"confirm","in":"query","required":false,"description":"true","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/mail/domains/{domain}/accounts/{account}/password":{"put":{"tags":["Correo"],"summary":"Cambia la contraseña de un buzón","operationId":"put_v1_mail_domains_domain_accounts_account_password","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio","schema":{"type":"string"}},{"name":"account","in":"path","required":true,"description":"Buzón","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"description":"Opcional"}}}}}},"security":[{"bearer":[]}]}},"/v1/mail/domains/{domain}/accounts/{account}/forwards":{"post":{"tags":["Correo"],"summary":"Reenvía el buzón a otra dirección","operationId":"post_v1_mail_domains_domain_accounts_account_forwards","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio","schema":{"type":"string"}},{"name":"account","in":"path","required":true,"description":"Buzón","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"description":"otra@direccion.com"}}}}}},"security":[{"bearer":[]}]}},"/v1/mail/domains/{domain}/accounts/{account}/autoreply":{"put":{"tags":["Correo"],"summary":"Activa la respuesta automática","operationId":"put_v1_mail_domains_domain_accounts_account_autoreply","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio","schema":{"type":"string"}},{"name":"account","in":"path","required":true,"description":"Buzón","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"description":"Texto de la respuesta"}}}}}},"security":[{"bearer":[]}]},"delete":{"tags":["Correo"],"summary":"Quita la respuesta automática","operationId":"delete_v1_mail_domains_domain_accounts_account_autoreply","parameters":[{"name":"domain","in":"path","required":true,"description":"Dominio","schema":{"type":"string"}},{"name":"account","in":"path","required":true,"description":"Buzón","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/backups":{"get":{"tags":["Respaldos"],"summary":"Lista tus respaldos","operationId":"get_v1_backups","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]},"post":{"tags":["Respaldos"],"summary":"Programa un respaldo completo de tu cuenta","operationId":"post_v1_backups","parameters":[],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}},"/v1/jobs/{id}":{"get":{"tags":["Tareas"],"summary":"Estado de una tarea larga","operationId":"get_v1_jobs_id","parameters":[{"name":"id","in":"path","required":true,"description":"job_…","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto (JSON)."},"4XX":{"description":"Error. Cuerpo: {\"error\": \"mensaje en español\"}."}},"security":[{"bearer":[]}]}}}}