[{"data":1,"prerenderedAt":2298},["ShallowReactive",2],{"nav-docs-es":3,"page-/es/docs/webspace/api-overview":1156,"surround-/es/docs/webspace/api-overview":2292,"raw-/es/docs/webspace/api-overview":2295},[4,67,374,775,902,1074,1084,1109],{"title":5,"tags":6,"slug":6,"path":7,"stem":8,"children":9,"page":66,"sourcePath":7},"Primeros pasos con SpaceBuilder",null,"/getting-started","00.getting-started",[10,15,20,27,34,39,45,50,55,60],{"title":11,"path":12,"stem":13,"tags":6,"slug":14,"sourcePath":12},"Introducción a SpaceBuilder","/getting-started/overview","00.getting-started/00.overview","/getting-started/overview/",{"title":16,"path":17,"stem":18,"tags":6,"slug":19,"sourcePath":17},"Crear una cuenta de SetFN","/getting-started/create-setfn-account","00.getting-started/05.create-setfn-account","/getting-started/create-setfn-account/",{"title":21,"path":22,"stem":23,"tags":24,"slug":26,"sourcePath":22},"Instalación en Linux","/getting-started/install-linux","00.getting-started/10.install-linux",[25],"recommended","/getting-started/install-linux/",{"title":28,"path":29,"stem":30,"tags":31,"slug":33,"sourcePath":29},"Instalación con Docker","/getting-started/install-docker","00.getting-started/12.install-docker",[32],"preparing","/getting-started/install-docker/",{"title":35,"path":36,"stem":37,"tags":6,"slug":38,"sourcePath":36},"Instalación en Windows","/getting-started/install-windows","00.getting-started/14.install-windows","/getting-started/install-windows/",{"title":40,"path":41,"stem":42,"tags":43,"slug":44,"sourcePath":41},"Instalación en macOS","/getting-started/install-macos","00.getting-started/16.install-macos",[32],"/getting-started/install-macos/",{"title":46,"path":47,"stem":48,"tags":6,"slug":49,"sourcePath":47},"Configuración inicial","/getting-started/initial-setup","00.getting-started/20.initial-setup","/getting-started/initial-setup/",{"title":51,"path":52,"stem":53,"tags":6,"slug":54,"sourcePath":52},"Activar la licencia","/getting-started/license-activation","00.getting-started/30.license-activation","/getting-started/license-activation/",{"title":56,"path":57,"stem":58,"tags":6,"slug":59,"sourcePath":57},"Consultar la dirección de acceso (red local/interna)","/getting-started/access-url","00.getting-started/35.access-url","/getting-started/access-url/",{"title":61,"path":62,"stem":63,"tags":64,"slug":65,"sourcePath":62},"Elegir un método de acceso externo","/getting-started/access-domain","00.getting-started/40.access-domain",[25],"/getting-started/access-domain/",false,{"title":68,"tags":6,"slug":6,"path":69,"stem":70,"children":71,"page":66,"sourcePath":69},"Administración del espacio","/admin","10.admin",[72,92,162,197,249,274,289,299,339],{"title":73,"tags":6,"slug":6,"path":74,"stem":75,"children":76,"page":66,"sourcePath":74},"Inicio del administrador","/admin/home","10.admin/00.home",[77,82,87],{"title":78,"path":79,"stem":80,"tags":6,"slug":81,"sourcePath":79},"Acceder a la página de administración","/admin/home/admin-page-access","10.admin/00.home/00.admin-page-access","/admin/home/admin-page-access/",{"title":83,"path":69,"stem":84,"tags":6,"slug":85,"sourcePath":86},"Recorrer los menús de administración","10.admin/00.home/00.overview","/admin/","/admin/home/overview",{"title":88,"path":89,"stem":90,"tags":6,"slug":91,"sourcePath":89},"Gestión de licencias","/admin/home/license","10.admin/00.home/20.license","/admin/home/license/",{"title":93,"tags":6,"slug":6,"path":94,"stem":95,"children":96,"page":66,"sourcePath":94},"Gestión de usuarios","/admin/user-management","10.admin/10.user-management",[97,102,107,112,117,122,127,132,137,142,147,152,157],{"title":98,"path":99,"stem":100,"tags":6,"slug":101,"sourcePath":99},"Configurar la política de registro y los permisos predeterminados","/admin/user-management/signup-policy","10.admin/10.user-management/02.signup-policy","/admin/user-management/signup-policy/",{"title":103,"path":104,"stem":105,"tags":6,"slug":106,"sourcePath":104},"Registrar los términos de registro","/admin/user-management/signup-terms","10.admin/10.user-management/04.signup-terms","/admin/user-management/signup-terms/",{"title":108,"path":109,"stem":110,"tags":6,"slug":111,"sourcePath":109},"Crear una cuenta de usuario","/admin/user-management/invite-new-member","10.admin/10.user-management/10.invite-new-member","/admin/user-management/invite-new-member/",{"title":113,"path":114,"stem":115,"tags":6,"slug":116,"sourcePath":114},"Modificar una cuenta de usuario","/admin/user-management/edit-member","10.admin/10.user-management/11.edit-member","/admin/user-management/edit-member/",{"title":118,"path":119,"stem":120,"tags":6,"slug":121,"sourcePath":119},"Añadir un administrador","/admin/user-management/add-new-admin","10.admin/10.user-management/12.add-new-admin","/admin/user-management/add-new-admin/",{"title":123,"path":124,"stem":125,"tags":6,"slug":126,"sourcePath":124},"Gestión de equipos","/admin/user-management/team","10.admin/10.user-management/22.team","/admin/user-management/team/",{"title":128,"path":129,"stem":130,"tags":6,"slug":131,"sourcePath":129},"Gestión de niveles","/admin/user-management/level","10.admin/10.user-management/24.level","/admin/user-management/level/",{"title":133,"path":134,"stem":135,"tags":6,"slug":136,"sourcePath":134},"Consultar los registros de acceso","/admin/user-management/access-log","10.admin/10.user-management/30.access-log","/admin/user-management/access-log/",{"title":138,"path":139,"stem":140,"tags":6,"slug":141,"sourcePath":139},"Administrar dispositivos activos","/admin/user-management/active-devices","10.admin/10.user-management/31.active-devices","/admin/user-management/active-devices/",{"title":143,"path":144,"stem":145,"tags":6,"slug":146,"sourcePath":144},"Configurar las políticas de cuenta y seguridad","/admin/user-management/account-security","10.admin/10.user-management/32.account-security","/admin/user-management/account-security/",{"title":148,"path":149,"stem":150,"tags":6,"slug":151,"sourcePath":149},"Configurar CAPTCHA","/admin/user-management/captcha","10.admin/10.user-management/33.captcha","/admin/user-management/captcha/",{"title":153,"path":154,"stem":155,"tags":6,"slug":156,"sourcePath":154},"Configurar avisos a miembros","/admin/user-management/notice-settings","10.admin/10.user-management/34.notice-settings","/admin/user-management/notice-settings/",{"title":158,"path":159,"stem":160,"tags":6,"slug":161,"sourcePath":159},"Enviar un correo colectivo a los miembros","/admin/user-management/bulk-mail","10.admin/10.user-management/36.bulk-mail","/admin/user-management/bulk-mail/",{"title":163,"tags":6,"slug":6,"path":164,"stem":165,"children":166,"page":66,"sourcePath":164},"Configuración de servicios","/admin/service-config","10.admin/20.service-config",[167,172,177,182,187,192],{"title":168,"path":169,"stem":170,"tags":6,"slug":171,"sourcePath":169},"Configuración del área de archivos","/admin/service-config/file-area","10.admin/20.service-config/10.file-area","/admin/service-config/file-area/",{"title":173,"path":174,"stem":175,"tags":6,"slug":176,"sourcePath":174},"Configuración de webhooks","/admin/service-config/webhook-settings","10.admin/20.service-config/16.webhook-settings","/admin/service-config/webhook-settings/",{"title":178,"path":179,"stem":180,"tags":6,"slug":181,"sourcePath":179},"Configuración de la comunidad","/admin/service-config/community-space","10.admin/20.service-config/22.community-space","/admin/service-config/community-space/",{"title":183,"path":184,"stem":185,"tags":6,"slug":186,"sourcePath":184},"Configurar la política del chatbot de IA","/admin/service-config/community-ai-chatbot","10.admin/20.service-config/24.community-ai-chatbot","/admin/service-config/community-ai-chatbot/",{"title":188,"path":189,"stem":190,"tags":6,"slug":191,"sourcePath":189},"Configuración de correo","/admin/service-config/email-settings","10.admin/20.service-config/30.email-settings","/admin/service-config/email-settings/",{"title":193,"path":194,"stem":195,"tags":6,"slug":196,"sourcePath":194},"Configuración de marca","/admin/service-config/brand","10.admin/20.service-config/40.brand","/admin/service-config/brand/",{"title":198,"tags":6,"slug":6,"path":199,"stem":200,"children":201,"page":66,"sourcePath":199},"Servicios de conocimiento","/admin/knowledge","10.admin/30.knowledge",[202,207,214,219,224,229,234,239,244],{"title":203,"path":199,"stem":204,"tags":6,"slug":205,"sourcePath":206},"Introducción a los servicios de conocimiento","10.admin/30.knowledge/00.overview","/admin/knowledge/","/admin/knowledge/overview",{"title":208,"path":209,"stem":210,"children":211,"tags":6,"slug":213,"sourcePath":209},"Recopilación e indexación","/admin/knowledge/indexing","10.admin/30.knowledge/10.indexing",[212],{"title":208,"path":209,"stem":210,"tags":6,"slug":213,"sourcePath":209},"/admin/knowledge/indexing/",{"title":215,"path":216,"stem":217,"tags":6,"slug":218,"sourcePath":216},"Calidad e idioma de búsqueda","/admin/knowledge/search","10.admin/30.knowledge/20.search","/admin/knowledge/search/",{"title":220,"path":221,"stem":222,"tags":6,"slug":223,"sourcePath":221},"Almacenamiento de conocimiento","/admin/knowledge/storage","10.admin/30.knowledge/30.storage","/admin/knowledge/storage/",{"title":225,"path":226,"stem":227,"tags":6,"slug":228,"sourcePath":226},"Operar el almacenamiento de conocimiento","/admin/knowledge/storage-operations","10.admin/30.knowledge/32.storage-operations","/admin/knowledge/storage-operations/",{"title":230,"path":231,"stem":232,"tags":6,"slug":233,"sourcePath":231},"Conectar Qdrant","/admin/knowledge/qdrant","10.admin/30.knowledge/34.qdrant","/admin/knowledge/qdrant/",{"title":235,"path":236,"stem":237,"tags":6,"slug":238,"sourcePath":236},"Preparar un servidor Qdrant","/admin/knowledge/qdrant-server-setup","10.admin/30.knowledge/35.qdrant-server-setup","/admin/knowledge/qdrant-server-setup/",{"title":240,"path":241,"stem":242,"tags":6,"slug":243,"sourcePath":241},"Conectar Milvus","/admin/knowledge/milvus","10.admin/30.knowledge/36.milvus","/admin/knowledge/milvus/",{"title":245,"path":246,"stem":247,"tags":6,"slug":248,"sourcePath":246},"Búsqueda externa y fuentes","/admin/knowledge/web-search","10.admin/30.knowledge/40.web-search","/admin/knowledge/web-search/",{"title":250,"tags":6,"slug":6,"path":251,"stem":252,"children":253,"page":66,"sourcePath":251},"Servicios de IA","/admin/ai","10.admin/35.ai",[254,259,264,269],{"title":255,"path":251,"stem":256,"tags":6,"slug":257,"sourcePath":258},"Administrar los servicios de IA","10.admin/35.ai/00.overview","/admin/ai/","/admin/ai/overview",{"title":260,"path":261,"stem":262,"tags":6,"slug":263,"sourcePath":261},"Configurar modelos y entornos de ejecución","/admin/ai/models","10.admin/35.ai/10.models","/admin/ai/models/",{"title":265,"path":266,"stem":267,"tags":6,"slug":268,"sourcePath":266},"Configurar herramientas e integraciones","/admin/ai/integrations","10.admin/35.ai/20.integrations","/admin/ai/integrations/",{"title":270,"path":271,"stem":272,"tags":6,"slug":273,"sourcePath":271},"Administrar servidores MCP","/admin/ai/mcp","10.admin/35.ai/30.mcp","/admin/ai/mcp/",{"title":275,"tags":6,"slug":6,"path":276,"stem":277,"children":278,"page":66,"sourcePath":276},"Plugins","/admin/plugin","10.admin/40.plugin",[279,284],{"title":280,"path":281,"stem":282,"tags":6,"slug":283,"sourcePath":281},"Administrar plugins","/admin/plugin/overview","10.admin/40.plugin/00.overview","/admin/plugin/overview/",{"title":285,"path":286,"stem":287,"tags":6,"slug":288,"sourcePath":286},"Configurar plugins de extensión","/admin/plugin/settings","10.admin/40.plugin/10.settings","/admin/plugin/settings/",{"title":290,"path":291,"stem":292,"children":293,"page":66,"sourcePath":291},"Operations","/admin/operations","10.admin/45.operations",[294],{"title":295,"path":291,"stem":296,"tags":6,"slug":297,"sourcePath":298},"Consultar los registros de operaciones y auditoría","10.admin/45.operations/00.overview","/admin/operations/","/admin/operations/overview",{"title":300,"tags":6,"slug":6,"path":301,"stem":302,"children":303,"page":66,"sourcePath":301},"Seguridad","/admin/security","10.admin/50.security",[304,309,314,319,324,329,334],{"title":305,"path":306,"stem":307,"tags":6,"slug":308,"sourcePath":306},"Resumen de seguridad","/admin/security/overview","10.admin/50.security/00.overview","/admin/security/overview/",{"title":310,"path":311,"stem":312,"tags":6,"slug":313,"sourcePath":311},"Consultar el registro de actividad","/admin/security/audit-log","10.admin/50.security/05.audit-log","/admin/security/audit-log/",{"title":315,"path":316,"stem":317,"tags":6,"slug":318,"sourcePath":316},"Gestionar bloqueos","/admin/security/block-management","10.admin/50.security/10.block-management","/admin/security/block-management/",{"title":320,"path":321,"stem":322,"tags":6,"slug":323,"sourcePath":321},"Configurar la seguridad","/admin/security/security-setting","10.admin/50.security/12.security-setting","/admin/security/security-setting/",{"title":325,"path":326,"stem":327,"tags":6,"slug":328,"sourcePath":326},"Procesar dispositivos pendientes de aprobación","/admin/security/device-approvals","10.admin/50.security/14.device-approvals","/admin/security/device-approvals/",{"title":330,"path":331,"stem":332,"tags":6,"slug":333,"sourcePath":331},"Restringir el acceso por IP","/admin/security/ip-restriction","10.admin/50.security/16.ip-restriction","/admin/security/ip-restriction/",{"title":335,"path":336,"stem":337,"tags":6,"slug":338,"sourcePath":336},"Configurar la verificación en dos pasos para administradores","/admin/security/two-factor-auth","10.admin/50.security/18.two-factor-auth","/admin/security/two-factor-auth/",{"title":340,"tags":6,"slug":6,"path":341,"stem":342,"children":343,"page":66,"sourcePath":341},"Administración del sistema","/admin/system-admin","10.admin/60.system-admin",[344,349,354,359,364,369],{"title":345,"path":346,"stem":347,"tags":6,"slug":348,"sourcePath":346},"Consultar la información del dispositivo","/admin/system-admin/device-info","10.admin/60.system-admin/10.device-info","/admin/system-admin/device-info/",{"title":350,"path":351,"stem":352,"tags":6,"slug":353,"sourcePath":351},"Reiniciar y mantener el servidor","/admin/system-admin/server-restart","10.admin/60.system-admin/12.server-restart","/admin/system-admin/server-restart/",{"title":355,"path":356,"stem":357,"tags":6,"slug":358,"sourcePath":356},"Gestionar servicios en segundo plano","/admin/system-admin/background-service","10.admin/60.system-admin/14.background-service","/admin/system-admin/background-service/",{"title":360,"path":361,"stem":362,"tags":6,"slug":363,"sourcePath":361},"Actualizar SpaceBuilder","/admin/system-admin/update","10.admin/60.system-admin/16.update","/admin/system-admin/update/",{"title":365,"path":366,"stem":367,"tags":6,"slug":368,"sourcePath":366},"Desinstalar SpaceBuilder","/admin/system-admin/uninstall","10.admin/60.system-admin/18.uninstall","/admin/system-admin/uninstall/",{"title":370,"path":371,"stem":372,"tags":6,"slug":373,"sourcePath":371},"Migrar a otro servidor","/admin/system-admin/server-migration","10.admin/60.system-admin/20.server-migration","/admin/system-admin/server-migration/",{"title":375,"tags":6,"slug":6,"path":376,"stem":377,"children":378,"page":66,"sourcePath":376},"Uso de Workspace","/workspace","20.workspace",[379,419,439,523,662,718,754],{"title":380,"tags":6,"slug":6,"path":381,"stem":382,"children":383,"page":66,"sourcePath":381},"Menú","/workspace/menu","20.workspace/05.menu",[384,389,394,399,404,409,414],{"title":385,"path":386,"stem":387,"tags":6,"slug":388,"sourcePath":386},"Introducción al espacio de trabajo","/workspace/menu/overview","20.workspace/05.menu/00.overview","/workspace/menu/overview/",{"title":390,"path":391,"stem":392,"tags":6,"slug":393,"sourcePath":391},"Espacio de equipo","/workspace/menu/team-space","20.workspace/05.menu/05.team-space","/workspace/menu/team-space/",{"title":395,"path":396,"stem":397,"tags":6,"slug":398,"sourcePath":396},"Espacio de cliente","/workspace/menu/client-space","20.workspace/05.menu/06.client-space","/workspace/menu/client-space/",{"title":400,"path":401,"stem":402,"tags":6,"slug":403,"sourcePath":401},"Favoritos","/workspace/menu/favorites","20.workspace/05.menu/10.favorites","/workspace/menu/favorites/",{"title":405,"path":406,"stem":407,"tags":6,"slug":408,"sourcePath":406},"Documentos recientes","/workspace/menu/recent","20.workspace/05.menu/20.recent","/workspace/menu/recent/",{"title":410,"path":411,"stem":412,"tags":6,"slug":413,"sourcePath":411},"Uso compartido externo","/workspace/menu/external-share","20.workspace/05.menu/30.external-share","/workspace/menu/external-share/",{"title":415,"path":416,"stem":417,"tags":6,"slug":418,"sourcePath":416},"Papelera","/workspace/menu/trash","20.workspace/05.menu/40.trash","/workspace/menu/trash/",{"title":420,"tags":6,"slug":6,"path":421,"stem":422,"children":423,"page":66,"sourcePath":421},"Cuenta","/workspace/account","20.workspace/10.account",[424,429,434],{"title":425,"path":426,"stem":427,"tags":6,"slug":428,"sourcePath":426},"Registrarse e iniciar sesión","/workspace/account/signup","20.workspace/10.account/10.signup","/workspace/account/signup/",{"title":430,"path":431,"stem":432,"tags":6,"slug":433,"sourcePath":431},"Restablecer la contraseña","/workspace/account/reset-password","20.workspace/10.account/20.reset-password","/workspace/account/reset-password/",{"title":435,"path":436,"stem":437,"tags":6,"slug":438,"sourcePath":436},"Configuración de la cuenta","/workspace/account/account-settings","20.workspace/10.account/30.account-settings","/workspace/account/account-settings/",{"title":440,"tags":6,"slug":6,"path":441,"stem":442,"children":443,"page":66,"sourcePath":441},"Carpetas","/workspace/folder","20.workspace/20.folder",[444,449,454,459,464,471,476,481,486,491,496,501,506,511,518],{"title":445,"path":446,"stem":447,"tags":6,"slug":448,"sourcePath":446},"Funciones básicas de las carpetas","/workspace/folder/basic","20.workspace/20.folder/10.basic","/workspace/folder/basic/",{"title":450,"path":451,"stem":452,"tags":6,"slug":453,"sourcePath":451},"Crear varias carpetas a la vez","/workspace/folder/bulk-folder-creation","20.workspace/20.folder/12.bulk-folder-creation","/workspace/folder/bulk-folder-creation/",{"title":455,"path":456,"stem":457,"tags":6,"slug":458,"sourcePath":456},"Filtro","/workspace/folder/filter","20.workspace/20.folder/13.filter","/workspace/folder/filter/",{"title":460,"path":461,"stem":462,"tags":6,"slug":463,"sourcePath":461},"Configurar las opciones de vista de una carpeta","/workspace/folder/folder-view-options","20.workspace/20.folder/14.folder-view-options","/workspace/folder/folder-view-options/",{"title":465,"path":466,"stem":467,"tags":468,"slug":470,"sourcePath":466},"Usar una carpeta como tablón de anuncios","/workspace/folder/board-view","20.workspace/20.folder/15.board-view",[469],"hot","/workspace/folder/board-view/",{"title":472,"path":473,"stem":474,"tags":6,"slug":475,"sourcePath":473},"Vista web de una carpeta","/workspace/folder/folder-web-view","20.workspace/20.folder/16.folder-web-view","/workspace/folder/folder-web-view/",{"title":477,"path":478,"stem":479,"tags":6,"slug":480,"sourcePath":478},"Organizar carpetas","/workspace/folder/folder-organize","20.workspace/20.folder/17.folder-organize","/workspace/folder/folder-organize/",{"title":482,"path":483,"stem":484,"tags":6,"slug":485,"sourcePath":483},"Aviso de carpeta (README)","/workspace/folder/folder-readme","20.workspace/20.folder/18.folder-readme","/workspace/folder/folder-readme/",{"title":487,"path":488,"stem":489,"tags":6,"slug":490,"sourcePath":488},"Exportar listas de carpetas y archivos","/workspace/folder/folder-export","20.workspace/20.folder/20.folder-export","/workspace/folder/folder-export/",{"title":492,"path":493,"stem":494,"tags":6,"slug":495,"sourcePath":493},"Configurar permisos de acceso por nivel","/workspace/folder/level-access-permissions","20.workspace/20.folder/24.level-access-permissions","/workspace/folder/level-access-permissions/",{"title":497,"path":498,"stem":499,"tags":6,"slug":500,"sourcePath":498},"Configurar permisos de acceso por equipo","/workspace/folder/team-access-permissions","20.workspace/20.folder/26.team-access-permissions","/workspace/folder/team-access-permissions/",{"title":502,"path":503,"stem":504,"tags":6,"slug":505,"sourcePath":503},"Configurar reglas de archivos","/workspace/folder/file-rules","20.workspace/20.folder/28.file-rules","/workspace/folder/file-rules/",{"title":507,"path":508,"stem":509,"tags":6,"slug":510,"sourcePath":508},"Webhooks de carpeta","/workspace/folder/webhook","20.workspace/20.folder/30.webhook","/workspace/folder/webhook/",{"title":512,"path":513,"stem":514,"children":515,"tags":6,"slug":517,"sourcePath":513},"Configurar el índice de conocimiento de una carpeta","/workspace/folder/knowledge-index","20.workspace/20.folder/32.knowledge-index",[516],{"title":512,"path":513,"stem":514,"tags":6,"slug":517,"sourcePath":513},"/workspace/folder/knowledge-index/",{"title":519,"path":520,"stem":521,"tags":6,"slug":522,"sourcePath":520},"Carpeta de automatización del trabajo","/workspace/folder/automation","20.workspace/20.folder/40.automation","/workspace/folder/automation/",{"title":524,"tags":6,"slug":6,"path":525,"stem":526,"children":527,"page":66,"sourcePath":525},"Archivos","/workspace/file","20.workspace/30.file",[528,533,538,543,548,553,558,563,568,573,578,583,588,593,598,603,608,613,618,623,628,633,637,642,647,652,657],{"title":529,"path":530,"stem":531,"tags":6,"slug":532,"sourcePath":530},"Funciones básicas de gestión de archivos","/workspace/file/overview","20.workspace/30.file/00.overview","/workspace/file/overview/",{"title":534,"path":535,"stem":536,"tags":6,"slug":537,"sourcePath":535},"Consultar la lista mientras ve un archivo","/workspace/file/list-in-file","20.workspace/30.file/05.list-in-file","/workspace/file/list-in-file/",{"title":539,"path":540,"stem":541,"tags":6,"slug":542,"sourcePath":540},"Ver y editar archivos Markdown y de texto","/workspace/file/text-file-viewer","20.workspace/30.file/10.text-file-viewer","/workspace/file/text-file-viewer/",{"title":544,"path":545,"stem":546,"tags":6,"slug":547,"sourcePath":545},"Ver archivos HTML","/workspace/file/html-viewer","20.workspace/30.file/11.html-viewer","/workspace/file/html-viewer/",{"title":549,"path":550,"stem":551,"tags":6,"slug":552,"sourcePath":550},"Ver y editar archivos CSV","/workspace/file/csv-viewer","20.workspace/30.file/12.csv-viewer","/workspace/file/csv-viewer/",{"title":554,"path":555,"stem":556,"tags":6,"slug":557,"sourcePath":555},"Ver archivos de imagen y vídeo","/workspace/file/image-file-viewer","20.workspace/30.file/13.image-file-viewer","/workspace/file/image-file-viewer/",{"title":559,"path":560,"stem":561,"tags":6,"slug":562,"sourcePath":560},"Ver archivos de Office y PDF","/workspace/file/office-viewer","20.workspace/30.file/14.office-viewer","/workspace/file/office-viewer/",{"title":564,"path":565,"stem":566,"tags":6,"slug":567,"sourcePath":565},"Pegar páginas web (HTML)","/workspace/file/paste-html","20.workspace/30.file/20.paste-html","/workspace/file/paste-html/",{"title":569,"path":570,"stem":571,"tags":6,"slug":572,"sourcePath":570},"Pegar capturas de pantalla","/workspace/file/paste-screenshot","20.workspace/30.file/21.paste-screenshot","/workspace/file/paste-screenshot/",{"title":574,"path":575,"stem":576,"tags":6,"slug":577,"sourcePath":575},"Pegar Markdown (MD)","/workspace/file/paste-md","20.workspace/30.file/22.paste-md","/workspace/file/paste-md/",{"title":579,"path":580,"stem":581,"tags":6,"slug":582,"sourcePath":580},"Grabar la pantalla","/workspace/file/screen-recording","20.workspace/30.file/23.screen-recording","/workspace/file/screen-recording/",{"title":584,"path":585,"stem":586,"tags":6,"slug":587,"sourcePath":585},"Nota rápida","/workspace/file/quick-note","20.workspace/30.file/24.quick-note","/workspace/file/quick-note/",{"title":589,"path":590,"stem":591,"tags":6,"slug":592,"sourcePath":590},"Etiquetas de archivo","/workspace/file/file-tag","20.workspace/30.file/33.file-tag","/workspace/file/file-tag/",{"title":594,"path":595,"stem":596,"tags":6,"slug":597,"sourcePath":595},"Cambiar nombres de archivos en bloque","/workspace/file/bulk-name-revise","20.workspace/30.file/34.bulk-name-revise","/workspace/file/bulk-name-revise/",{"title":599,"path":600,"stem":601,"tags":6,"slug":602,"sourcePath":600},"Conversión de archivos","/workspace/file/file-convert-overview","20.workspace/30.file/40.file-convert-overview","/workspace/file/file-convert-overview/",{"title":604,"path":605,"stem":606,"tags":6,"slug":607,"sourcePath":605},"Archivos de plantilla","/workspace/file/templates","20.workspace/30.file/41.templates","/workspace/file/templates/",{"title":609,"path":610,"stem":611,"tags":6,"slug":612,"sourcePath":610},"Lista de tareas (Todo)","/workspace/file/template-todo","20.workspace/30.file/42.template-todo","/workspace/file/template-todo/",{"title":614,"path":615,"stem":616,"tags":6,"slug":617,"sourcePath":615},"Formulario de aprobación","/workspace/file/template-approval","20.workspace/30.file/43.template-approval","/workspace/file/template-approval/",{"title":619,"path":620,"stem":621,"tags":6,"slug":622,"sourcePath":620},"Tablero Kanban","/workspace/file/template-kanban","20.workspace/30.file/44.template-kanban","/workspace/file/template-kanban/",{"title":624,"path":625,"stem":626,"tags":6,"slug":627,"sourcePath":625},"Cronología","/workspace/file/template-timeline","20.workspace/30.file/45.template-timeline","/workspace/file/template-timeline/",{"title":629,"path":630,"stem":631,"tags":6,"slug":632,"sourcePath":630},"Bloc de notas","/workspace/file/template-memo","20.workspace/30.file/46.template-memo","/workspace/file/template-memo/",{"title":634,"path":635,"stem":636,"tags":6,"slug":635,"sourcePath":635},"Archivo de chat con AI","/workspace/file/ai-chat-file","20.workspace/30.file/47.ai-chat-file",{"title":638,"path":639,"stem":640,"tags":6,"slug":641,"sourcePath":639},"Consultar el registro de cambios del archivo","/workspace/file/audit-trail","20.workspace/30.file/50.audit-trail","/workspace/file/audit-trail/",{"title":643,"path":644,"stem":645,"tags":6,"slug":646,"sourcePath":644},"Control de versiones de archivos","/workspace/file/version-trail","20.workspace/30.file/51.version-trail","/workspace/file/version-trail/",{"title":648,"path":649,"stem":650,"tags":6,"slug":651,"sourcePath":649},"Bloqueo de edición","/workspace/file/file-lock","20.workspace/30.file/52.file-lock","/workspace/file/file-lock/",{"title":653,"path":654,"stem":655,"tags":6,"slug":656,"sourcePath":654},"Cifrado de archivos","/workspace/file/file-encrypt","20.workspace/30.file/53.file-encrypt","/workspace/file/file-encrypt/",{"title":658,"path":659,"stem":660,"tags":6,"slug":661,"sourcePath":659},"Registrar archivos del disco","/workspace/file/disk-file-registration","20.workspace/30.file/60.disk-file-registration","/workspace/file/disk-file-registration/",{"title":663,"tags":6,"slug":6,"path":664,"stem":665,"children":666,"page":66,"sourcePath":664},"Colaboración","/workspace/cooperation","20.workspace/35.cooperation",[667,672,677,682,687,692,697,702,707,713],{"title":668,"path":669,"stem":670,"tags":6,"slug":671,"sourcePath":669},"Comentarios en archivos y carpetas","/workspace/cooperation/file-comments","20.workspace/35.cooperation/00.file-comments","/workspace/cooperation/file-comments/",{"title":673,"path":674,"stem":675,"tags":6,"slug":676,"sourcePath":674},"Chat","/workspace/cooperation/chat","20.workspace/35.cooperation/10.chat","/workspace/cooperation/chat/",{"title":678,"path":679,"stem":680,"tags":6,"slug":681,"sourcePath":679},"Chat colaborativo y bloqueo de edición","/workspace/cooperation/collaboration-chat","20.workspace/35.cooperation/11.collaboration-chat","/workspace/cooperation/collaboration-chat/",{"title":683,"path":684,"stem":685,"tags":6,"slug":686,"sourcePath":684},"Seguir la ubicación de un miembro del equipo","/workspace/cooperation/follow-team-location","20.workspace/35.cooperation/12.follow-team-location","/workspace/cooperation/follow-team-location/",{"title":688,"path":689,"stem":690,"tags":6,"slug":691,"sourcePath":689},"Menciones","/workspace/cooperation/mention","20.workspace/35.cooperation/14.mention","/workspace/cooperation/mention/",{"title":693,"path":694,"stem":695,"tags":6,"slug":696,"sourcePath":694},"Mensajes directos","/workspace/cooperation/dm","20.workspace/35.cooperation/16.dm","/workspace/cooperation/dm/",{"title":698,"path":699,"stem":700,"tags":6,"slug":701,"sourcePath":699},"Archivo de notificaciones","/workspace/cooperation/notification-inbox","20.workspace/35.cooperation/18.notification-inbox","/workspace/cooperation/notification-inbox/",{"title":703,"path":704,"stem":705,"tags":6,"slug":706,"sourcePath":704},"Consultar la actividad del equipo","/workspace/cooperation/file-activity","20.workspace/35.cooperation/30.file-activity","/workspace/cooperation/file-activity/",{"title":708,"path":709,"stem":710,"tags":711,"slug":712,"sourcePath":709},"Crear un enlace para compartir externamente","/workspace/cooperation/share-link-creation","20.workspace/35.cooperation/40.share-link-creation",[469],"/workspace/cooperation/share-link-creation/",{"title":714,"path":715,"stem":716,"tags":6,"slug":717,"sourcePath":715},"Enviar un enlace compartido por correo","/workspace/cooperation/share-link-email","20.workspace/35.cooperation/42.share-link-email","/workspace/cooperation/share-link-email/",{"title":719,"tags":6,"slug":6,"path":720,"stem":721,"children":722,"page":66,"sourcePath":720},"Búsqueda","/workspace/search","20.workspace/40.search",[723,728,734,739,744,749],{"title":724,"path":725,"stem":726,"tags":6,"slug":727,"sourcePath":725},"Buscar archivos","/workspace/search/search","20.workspace/40.search/00.search","/workspace/search/search/",{"title":729,"path":730,"stem":731,"tags":732,"slug":733,"sourcePath":730},"Búsqueda contextual (búsqueda con AI)","/workspace/search/context-search","20.workspace/40.search/10.context-search",[469],"/workspace/search/context-search/",{"title":735,"path":736,"stem":737,"tags":6,"slug":738,"sourcePath":736},"Buscar imágenes","/workspace/search/image-search","20.workspace/40.search/20.image-search","/workspace/search/image-search/",{"title":740,"path":741,"stem":742,"tags":6,"slug":743,"sourcePath":741},"Buscar en el chat","/workspace/search/chat-search","20.workspace/40.search/30.chat-search","/workspace/search/chat-search/",{"title":745,"path":746,"stem":747,"tags":6,"slug":748,"sourcePath":746},"Buscar comentarios","/workspace/search/comment-search","20.workspace/40.search/40.comment-search","/workspace/search/comment-search/",{"title":750,"path":751,"stem":752,"tags":6,"slug":753,"sourcePath":751},"Buscar sinónimos","/workspace/search/synonym-search","20.workspace/40.search/50.synonym-search","/workspace/search/synonym-search/",{"title":755,"tags":6,"slug":6,"path":756,"stem":757,"children":758,"page":66,"sourcePath":756},"IA","/workspace/ai","20.workspace/50.ai",[759,764,770],{"title":760,"path":761,"stem":762,"tags":6,"slug":763,"sourcePath":761},"Resumen de funciones de AI","/workspace/ai/overview","20.workspace/50.ai/00.overview","/workspace/ai/overview/",{"title":765,"path":766,"stem":767,"tags":768,"slug":769,"sourcePath":766},"Solicitar tareas a la AI local","/workspace/ai/ai-work","20.workspace/50.ai/10.ai-work",[469],"/workspace/ai/ai-work/",{"title":771,"path":772,"stem":773,"tags":6,"slug":774,"sourcePath":772},"Usar una AI externa","/workspace/ai/external-ai","20.workspace/50.ai/20.external-ai","/workspace/ai/external-ai/",{"title":776,"tags":6,"slug":6,"path":777,"stem":778,"children":779,"page":66,"sourcePath":777},"Webspace","/webspace","40.webspace",[780,785,790,795,800,805,811,816,821,826,831,866],{"title":781,"path":782,"stem":783,"tags":6,"slug":784,"sourcePath":782},"¿Qué es Webspace?","/webspace/overview","40.webspace/00.overview","/webspace/overview/",{"title":786,"path":787,"stem":788,"tags":6,"slug":789,"sourcePath":787},"Desplegar un sitio web","/webspace/website-release","40.webspace/10.website-release","/webspace/website-release/",{"title":791,"path":792,"stem":793,"tags":6,"slug":794,"sourcePath":792},"Crear un archivo de esquema (.sfn)","/webspace/create-database","40.webspace/20.create-database","/webspace/create-database/",{"title":796,"path":797,"stem":798,"tags":6,"slug":799,"sourcePath":797},"Crear API y desplegar una base de datos","/webspace/api-overview","40.webspace/24.api-overview","/webspace/api-overview/",{"title":801,"path":802,"stem":803,"tags":6,"slug":804,"sourcePath":802},"Consultar el ejemplo de frontend","/webspace/frontend-example","40.webspace/26.frontend-example","/webspace/frontend-example/",{"title":806,"path":807,"stem":808,"tags":809,"slug":810,"sourcePath":807},"Crear un servicio web interno para el equipo","/webspace/internal-webservice","40.webspace/32.internal-webservice",[469],"/webspace/internal-webservice/",{"title":812,"path":813,"stem":814,"tags":6,"slug":815,"sourcePath":813},"Crear un servicio web de acceso público","/webspace/external-webservice","40.webspace/34.external-webservice","/webspace/external-webservice/",{"title":817,"path":818,"stem":819,"tags":6,"slug":820,"sourcePath":818},"Importar y exportar SQL","/webspace/sql-converter","40.webspace/42.sql-converter","/webspace/sql-converter/",{"title":822,"path":823,"stem":824,"tags":6,"slug":825,"sourcePath":823},"Convertir un esquema en código","/webspace/code-converter","40.webspace/44.code-converter","/webspace/code-converter/",{"title":827,"path":828,"stem":829,"tags":6,"slug":830,"sourcePath":828},"Rendimiento y escalado","/webspace/performance","40.webspace/48.performance","/webspace/performance/",{"title":832,"tags":6,"slug":6,"path":833,"stem":834,"children":835,"page":66,"sourcePath":833},"Administración de Webspace","/webspace/admin","40.webspace/50.admin",[836,841,846,851,856,861],{"title":837,"path":838,"stem":839,"tags":6,"slug":840,"sourcePath":838},"Empezar a administrar Webspace","/webspace/admin/overview","40.webspace/50.admin/00.overview","/webspace/admin/overview/",{"title":842,"path":843,"stem":844,"tags":6,"slug":845,"sourcePath":843},"Operaciones","/webspace/admin/operations","40.webspace/50.admin/10.operations","/webspace/admin/operations/",{"title":847,"path":848,"stem":849,"tags":6,"slug":850,"sourcePath":848},"Acceso al espacio de trabajo","/webspace/admin/workspace-access","40.webspace/50.admin/20.workspace-access","/webspace/admin/workspace-access/",{"title":852,"path":853,"stem":854,"tags":6,"slug":855,"sourcePath":853},"Seguridad de API y sitios","/webspace/admin/api-site-security","40.webspace/50.admin/30.api-site-security","/webspace/admin/api-site-security/",{"title":857,"path":858,"stem":859,"tags":6,"slug":860,"sourcePath":858},"Servicios y capacidad","/webspace/admin/service-capacity","40.webspace/50.admin/40.service-capacity","/webspace/admin/service-capacity/",{"title":862,"path":863,"stem":864,"tags":6,"slug":865,"sourcePath":863},"Gestión de despliegues y versiones de frontend","/webspace/admin/deployments","40.webspace/50.admin/50.deployments","/webspace/admin/deployments/",{"title":867,"tags":868,"slug":6,"path":869,"stem":870,"children":871,"page":66,"sourcePath":869},"Ejemplos de Webspace",[469],"/webspace/examples","40.webspace/60.examples",[872,876,881,887,892,897],{"title":867,"path":869,"stem":873,"tags":6,"slug":874,"sourcePath":875},"40.webspace/60.examples/00.overview","/webspace/examples/","/webspace/examples/overview",{"title":877,"path":878,"stem":879,"tags":6,"slug":880,"sourcePath":878},"Crear su propio sistema empresarial","/webspace/examples/my-own-system","40.webspace/60.examples/10.my-own-system","/webspace/examples/my-own-system/",{"title":882,"path":883,"stem":884,"tags":885,"slug":886,"sourcePath":883},"Crear un juego de Gomoku en tiempo real","/webspace/examples/realtime-gomoku","40.webspace/60.examples/20.realtime-gomoku",[469],"/webspace/examples/realtime-gomoku/",{"title":888,"path":889,"stem":890,"tags":6,"slug":891,"sourcePath":889},"Crear un tablón de recursos con archivos de una carpeta","/webspace/examples/folder-board","40.webspace/60.examples/30.folder-board","/webspace/examples/folder-board/",{"title":893,"path":894,"stem":895,"tags":6,"slug":896,"sourcePath":894},"Crear una incursión cooperativa contra un monstruo","/webspace/examples/monster-raid","40.webspace/60.examples/40.monster-raid","/webspace/examples/monster-raid/",{"title":898,"path":899,"stem":900,"tags":6,"slug":901,"sourcePath":899},"Desplegar un ejemplo de chat de asistencia con AI","/webspace/examples/ai-support-chat","40.webspace/60.examples/50.ai-support-chat","/webspace/examples/ai-support-chat/",{"title":903,"tags":6,"slug":6,"path":904,"stem":905,"children":906,"page":66,"sourcePath":904},"Uso de plugins","/plugin","50.plugin",[907,912,932,993,1014,1049],{"title":908,"path":909,"stem":910,"tags":6,"slug":911,"sourcePath":909},"Introducción a los plugins","/plugin/overview","50.plugin/00.overview","/plugin/overview/",{"title":913,"tags":6,"slug":6,"path":914,"stem":915,"children":916,"page":66,"sourcePath":914},"Calendario","/plugin/calendar","50.plugin/10.calendar",[917,922,927],{"title":918,"path":919,"stem":920,"tags":6,"slug":921,"sourcePath":919},"Introducción a Calendar","/plugin/calendar/overview","50.plugin/10.calendar/00.overview","/plugin/calendar/overview/",{"title":923,"path":924,"stem":925,"tags":6,"slug":926,"sourcePath":924},"Crear, editar y eliminar eventos","/plugin/calendar/create-event","50.plugin/10.calendar/10.create-event","/plugin/calendar/create-event/",{"title":928,"path":929,"stem":930,"tags":6,"slug":931,"sourcePath":929},"Consultar el historial de actividad","/plugin/calendar/file-activity","50.plugin/10.calendar/40.file-activity","/plugin/calendar/file-activity/",{"title":933,"tags":6,"slug":6,"path":934,"stem":935,"children":936,"page":66,"sourcePath":934},"Correo electrónico","/plugin/email","50.plugin/20.email",[937,942,947,952,957,963,968,973,978,983,988],{"title":938,"path":939,"stem":940,"tags":6,"slug":941,"sourcePath":939},"Introducción a Email","/plugin/email/overview","50.plugin/20.email/00.overview","/plugin/email/overview/",{"title":943,"path":944,"stem":945,"tags":6,"slug":946,"sourcePath":944},"Configurar Email","/plugin/email/setfn-email-setting","50.plugin/20.email/05.setfn-email-setting","/plugin/email/setfn-email-setting/",{"title":948,"path":949,"stem":950,"tags":6,"slug":951,"sourcePath":949},"Conectar una cuenta de correo externa","/plugin/email/external-email","50.plugin/20.email/07.external-email","/plugin/email/external-email/",{"title":953,"path":954,"stem":955,"tags":6,"slug":956,"sourcePath":954},"Funciones básicas de Email","/plugin/email/email-basic","50.plugin/20.email/10.email-basic","/plugin/email/email-basic/",{"title":958,"path":959,"stem":960,"tags":6,"slug":961,"sourcePath":962},"Usar Email AI Assistant","/plugin/email/ai-assistant","50.plugin/20.email/15.email-ai-assistant","/plugin/email/ai-assistant/","/plugin/email/email-ai-assistant",{"title":964,"path":965,"stem":966,"tags":6,"slug":967,"sourcePath":965},"Redactar y enviar mensajes","/plugin/email/email-compose","50.plugin/20.email/20.email-compose","/plugin/email/email-compose/",{"title":969,"path":970,"stem":971,"tags":6,"slug":972,"sourcePath":970},"Adjuntar archivos","/plugin/email/email-attachment","50.plugin/20.email/30.email-attachment","/plugin/email/email-attachment/",{"title":974,"path":975,"stem":976,"tags":6,"slug":977,"sourcePath":975},"Gestionar carpetas de correo","/plugin/email/email-folders","50.plugin/20.email/40.email-folders","/plugin/email/email-folders/",{"title":979,"path":980,"stem":981,"tags":6,"slug":982,"sourcePath":980},"Clasificar mensajes automáticamente","/plugin/email/email-auto-classify","50.plugin/20.email/50.email-auto-classify","/plugin/email/email-auto-classify/",{"title":984,"path":985,"stem":986,"tags":6,"slug":987,"sourcePath":985},"Archivar y compartir mensajes en File Space","/plugin/email/email-open-in-space","50.plugin/20.email/60.email-open-in-space","/plugin/email/email-open-in-space/",{"title":989,"path":990,"stem":991,"tags":6,"slug":992,"sourcePath":990},"Seguridad de Email","/plugin/email/email-security","50.plugin/20.email/70.email-security","/plugin/email/email-security/",{"title":994,"tags":6,"slug":6,"path":995,"stem":996,"children":997,"page":66,"sourcePath":995},"Flujos de trabajo (automatización)","/plugin/workflow","50.plugin/30.workflow",[998,1003,1009],{"title":999,"path":1000,"stem":1001,"tags":6,"slug":1002,"sourcePath":1000},"Introducción a Workflow","/plugin/workflow/overview","50.plugin/30.workflow/00.overview","/plugin/workflow/overview/",{"title":1004,"path":1005,"stem":1006,"tags":1007,"slug":1008,"sourcePath":1005},"Crear un workflow","/plugin/workflow/new-workflow","50.plugin/30.workflow/10.new-workflow",[469],"/plugin/workflow/new-workflow/",{"title":1010,"path":1011,"stem":1012,"tags":6,"slug":1013,"sourcePath":1011},"Consultar el historial de ejecución","/plugin/workflow/execution-history","50.plugin/30.workflow/20.execution-history","/plugin/workflow/execution-history/",{"title":1015,"tags":6,"slug":6,"path":1016,"stem":1017,"children":1018,"page":66,"sourcePath":1016},"Fine-Tuning (entrenamiento de IA)","/plugin/fine-tuning","50.plugin/40.fine-tuning",[1019,1024,1029,1034,1039,1044],{"title":1020,"path":1021,"stem":1022,"tags":6,"slug":1023,"sourcePath":1021},"Introducción a Fine-tuning","/plugin/fine-tuning/overview","50.plugin/40.fine-tuning/00.overview","/plugin/fine-tuning/overview/",{"title":1025,"path":1026,"stem":1027,"tags":6,"slug":1028,"sourcePath":1026},"Preprocesar datos de entrenamiento","/plugin/fine-tuning/pre-processing","50.plugin/40.fine-tuning/10.pre-processing","/plugin/fine-tuning/pre-processing/",{"title":1030,"path":1031,"stem":1032,"tags":6,"slug":1033,"sourcePath":1031},"Entrenar","/plugin/fine-tuning/training","50.plugin/40.fine-tuning/20.training","/plugin/fine-tuning/training/",{"title":1035,"path":1036,"stem":1037,"tags":6,"slug":1038,"sourcePath":1036},"Evaluar","/plugin/fine-tuning/evaluation","50.plugin/40.fine-tuning/30.evaluation","/plugin/fine-tuning/evaluation/",{"title":1040,"path":1041,"stem":1042,"tags":6,"slug":1043,"sourcePath":1041},"Probar el chat","/plugin/fine-tuning/chat-test","50.plugin/40.fine-tuning/40.chat-test","/plugin/fine-tuning/chat-test/",{"title":1045,"path":1046,"stem":1047,"tags":6,"slug":1048,"sourcePath":1046},"Exportar","/plugin/fine-tuning/export","50.plugin/40.fine-tuning/50.export","/plugin/fine-tuning/export/",{"title":1050,"tags":6,"slug":6,"path":1051,"stem":1052,"children":1053,"page":66,"sourcePath":1051},"EDC (recopilación de datos)","/plugin/edc","50.plugin/50.edc",[1054,1059,1064,1069],{"title":1055,"path":1056,"stem":1057,"tags":6,"slug":1058,"sourcePath":1056},"Introducción a EDC","/plugin/edc/overview","50.plugin/50.edc/00.overview","/plugin/edc/overview/",{"title":1060,"path":1061,"stem":1062,"tags":6,"slug":1063,"sourcePath":1061},"Introducir datos y consultar Audit Trail","/plugin/edc/data-entry","50.plugin/50.edc/10.data-entry","/plugin/edc/data-entry/",{"title":1065,"path":1066,"stem":1067,"tags":6,"slug":1068,"sourcePath":1066},"Builder","/plugin/edc/builder","50.plugin/50.edc/20.builder","/plugin/edc/builder/",{"title":1070,"path":1071,"stem":1072,"tags":6,"slug":1073,"sourcePath":1071},"Configurar usuarios y centros","/plugin/edc/account","50.plugin/50.edc/30.account","/plugin/edc/account/",{"title":1075,"tags":6,"slug":6,"path":1076,"stem":1077,"children":1078,"page":66,"sourcePath":1076},"Herramienta de línea de comandos","/cli","90.cli",[1079],{"title":1080,"path":1081,"stem":1082,"tags":6,"slug":1083,"sourcePath":1081},"Administrar el servidor mediante comandos","/cli/commands","90.cli/10.commands","/cli/commands/",{"title":1085,"tags":6,"slug":6,"path":1086,"stem":1087,"children":1088,"page":66,"sourcePath":1086},"Actualizaciones de seguridad","/security-updates","95.security-updates",[1089,1094,1099,1104],{"title":1090,"path":1091,"stem":1092,"tags":6,"slug":1093,"sourcePath":1091},"Conocer las revisiones de seguridad y el método de actualización","/security-updates/overview","95.security-updates/00.overview","/security-updates/overview/",{"title":1095,"path":1096,"stem":1097,"tags":6,"slug":1098,"sourcePath":1096},"Registro de revisiones de seguridad","/security-updates/review-log","95.security-updates/10.review-log","/security-updates/review-log/",{"title":1100,"path":1101,"stem":1102,"tags":6,"slug":1103,"sourcePath":1101},"Estado de revisión de las principales vulnerabilidades","/security-updates/vulnerability-status","95.security-updates/20.vulnerability-status","/security-updates/vulnerability-status/",{"title":1105,"path":1106,"stem":1107,"tags":6,"slug":1108,"sourcePath":1106},"Comprobar las actualizaciones de seguridad del servidor","/security-updates/server-checklist","95.security-updates/30.server-checklist","/security-updates/server-checklist/",{"title":1110,"tags":6,"slug":6,"path":1111,"stem":1112,"children":1113,"page":66,"sourcePath":1111},"Preguntas frecuentes","/faq","99.FAQ",[1114,1120,1126,1132,1138,1144,1150],{"title":1115,"path":1116,"stem":1117,"tags":6,"slug":1118,"sourcePath":1119},"Comparación entre SetFN y los servicios en la nube","/FAQ/comparison-cloud","99.FAQ/10.comparison-cloud","/FAQ/comparison-cloud/","/faq/comparison-cloud",{"title":1121,"path":1122,"stem":1123,"tags":6,"slug":1124,"sourcePath":1125},"Comparación entre SetFN y NAS","/FAQ/comparison-nas","99.FAQ/20.comparison-nas","/FAQ/comparison-nas/","/faq/comparison-nas",{"title":1127,"path":1128,"stem":1129,"tags":6,"slug":1130,"sourcePath":1131},"Política de seguridad","/FAQ/security-policy","99.FAQ/30.security-policy","/FAQ/security-policy/","/faq/security-policy",{"title":1133,"path":1134,"stem":1135,"tags":6,"slug":1136,"sourcePath":1137},"Por qué SetFN es rápido","/FAQ/why-fast","99.FAQ/40.why-fast","/FAQ/why-fast/","/faq/why-fast",{"title":1139,"path":1140,"stem":1141,"tags":6,"slug":1142,"sourcePath":1143},"Preguntas sobre licencias","/FAQ/license-faq","99.FAQ/50.license-faq","/FAQ/license-faq/","/faq/license-faq",{"title":1145,"path":1146,"stem":1147,"tags":6,"slug":1148,"sourcePath":1149},"Preguntas sobre funciones de AI","/FAQ/ai-faq","99.FAQ/60.ai-faq","/FAQ/ai-faq/","/faq/ai-faq",{"title":1151,"path":1152,"stem":1153,"tags":6,"slug":1154,"sourcePath":1155},"Solución de problemas","/FAQ/troubleshooting","99.FAQ/70.troubleshooting","/FAQ/troubleshooting/","/faq/troubleshooting",{"id":1157,"title":796,"body":1158,"cover":6,"description":2276,"extension":2277,"image":6,"meta":2278,"navigation":2279,"path":797,"reviewSummary":6,"reviewedAt":6,"seo":2280,"slug":799,"stem":798,"tags":6,"thumbnail":6,"thumbnailPosition":6,"thumbnailScale":6,"__hash__":2291},"docs_es/40.webspace/24.api-overview.md",{"type":1159,"value":1160,"toc":2253},"minimal",[1161,1165,1178,1181,1184,1189,1208,1212,1218,1224,1229,1232,1309,1320,1330,1334,1402,1418,1424,1427,1433,1437,1443,1481,1488,1494,1498,1521,1527,1531,1538,1583,1604,1608,1611,1617,1624,1634,1638,1656,1662,1673,1678,1681,1684,1707,1727,1731,1737,1743,1875,1887,1891,1894,1930,1934,1937,1960,2005,2018,2022,2028,2038,2044,2050,2054,2067,2074,2077,2139,2142,2190,2194,2197,2201,2220,2224,2249],[1162,1163,796],"h1",{"id":1164},"crear-api-y-desplegar-una-base-de-datos",[1166,1167,1168,1169,1173,1174,1177],"p",{},"Después de crear un archivo de esquema (",[1170,1171,1172],"code",{},".sfn","), convierta el diseño en un servicio operativo. ",[1170,1175,1176],{},"API Build"," prepara para cada tabla API de creación, consulta, modificación y eliminación, y muestra quién puede usar cada dirección.",[1166,1179,1180],{},"También puede conectar al mismo servicio API de consultas personalizadas, API de archivos estáticos y eventos en tiempo real.",[1182,1183],"hr",{},[1185,1186,1188],"h2",{"id":1187},"antes-de-comenzar","Antes de comenzar",[1190,1191,1192,1196],"ul",{},[1193,1194,1195],"li",{},"Permiso necesario: ser un usuario con permiso para utilizar bases de datos.",[1193,1197,1198,1199,1207],{},"Requisito previo: crear primero un ",[1200,1201,1203,1204,1206],"a",{"href":1202},"./create-database","archivo de esquema (",[1170,1205,1172],{},")",".",[1185,1209,1211],{"id":1210},"abrir-api-build","Abrir API Build",[1166,1213,1214,1215,1217],{},"Seleccione la pestaña ",[1170,1216,1176],{}," en la parte superior de la pantalla del esquema para consultar las API generadas automáticamente para cada tabla.",[1166,1219,1220],{},[1221,1222],"img",{"alt":1176,"src":1223},"./_screenshots/schema-api-build_en.png",[1225,1226,1228],"h3",{"id":1227},"api-generadas-automáticamente","API generadas automáticamente",[1166,1230,1231],{},"De forma predeterminada se generan cinco API por tabla. También puede añadir API personalizadas cuando lo necesite.",[1233,1234,1235,1251],"table",{},[1236,1237,1238],"thead",{},[1239,1240,1241,1245,1248],"tr",{},[1242,1243,1244],"th",{},"Método",[1242,1246,1247],{},"Endpoint",[1242,1249,1250],{},"Descripción",[1252,1253,1254,1266,1276,1287,1298],"tbody",{},[1239,1255,1256,1260,1263],{},[1257,1258,1259],"td",{},"GET",[1257,1261,1262],{},".../list",[1257,1264,1265],{},"Consultar una lista",[1239,1267,1268,1270,1273],{},[1257,1269,1259],{},[1257,1271,1272],{},".../view/:id",[1257,1274,1275],{},"Consultar un registro",[1239,1277,1278,1281,1284],{},[1257,1279,1280],{},"POST",[1257,1282,1283],{},".../create",[1257,1285,1286],{},"Crear un registro",[1239,1288,1289,1292,1295],{},[1257,1290,1291],{},"PUT",[1257,1293,1294],{},".../update/:id",[1257,1296,1297],{},"Modificar un registro",[1239,1299,1300,1303,1306],{},[1257,1301,1302],{},"DELETE",[1257,1304,1305],{},".../delete/:id",[1257,1307,1308],{},"Eliminar un registro",[1166,1310,1311,1312,1315,1316,1319],{},"Use ",[1170,1313,1314],{},"Add new API (Custom Endpoint)"," para definir una API con la consulta y el formato de respuesta necesarios. Use ",[1170,1317,1318],{},"Add static file API"," para servir archivos JSON, XML, HTML, imágenes y archivos binarios del espacio de trabajo con el tipo correspondiente.",[1321,1322,1323],"note",{},[1166,1324,1325,1326,1329],{},"Un endpoint de carpeta puede devolver su lista de archivos como JSON y servir el contenido del archivo seleccionado. Consulte ",[1200,1327,888],{"href":1328},"./examples/folder-board"," para ver un ejemplo completo.",[1225,1331,1333],{"id":1332},"servir-un-archivo-o-una-carpeta-mediante-una-api","Servir un archivo o una carpeta mediante una API",[1335,1336,1337,1342,1356,1374,1385,1399],"ol",{},[1193,1338,1339,1340,1207],{},"Seleccione ",[1170,1341,1318],{},[1193,1343,1344,1345,1348,1349,1352,1353,1207],{},"En ",[1170,1346,1347],{},"Storage space",", elija ",[1170,1350,1351],{},"Team space"," o ",[1170,1354,1355],{},"Personal space",[1193,1357,1344,1358,1348,1361,1352,1364,1367,1368,1352,1371,1207],{},[1170,1359,1360],{},"Source type",[1170,1362,1363],{},"Single file",[1170,1365,1366],{},"Folder list · file content","; después, seleccione el origen mediante ",[1170,1369,1370],{},"Choose file",[1170,1372,1373],{},"Choose folder",[1193,1375,1376,1377,1380,1381,1384],{},"Para una carpeta, configure ",[1170,1378,1379],{},"Allowed extensions"," e ",[1170,1382,1383],{},"Include subfolders",". Si deja vacías las extensiones, se incluirán todos los tipos.",[1193,1386,1344,1387,1390,1391,1394,1395,1398],{},[1170,1388,1389],{},"Response mode",", elija si desea mostrar el contenido en el navegador (",[1170,1392,1393],{},"Display in browser",") o devolverlo como archivo (",[1170,1396,1397],{},"Download",").",[1193,1400,1401],{},"Compruebe los permisos del endpoint y despliegue el esquema.",[1166,1403,1404,1405,1408,1409,1411,1412,1352,1414,1417],{},"Un endpoint de archivo devuelve su contenido. Un endpoint de carpeta crea una lista JSON y una dirección que lee el contenido mediante el ",[1170,1406,1407],{},"id"," de cada elemento. Al cambiar el nombre o mover un archivo también cambia su ",[1170,1410,1407],{},", que se basa en la ruta. Los clientes deben usar el ",[1170,1413,1407],{},[1170,1415,1416],{},"viewUrl"," más reciente de la respuesta de la lista.",[1419,1420,1421],"warning",{},[1166,1422,1423],{},"Al mostrar en el navegador formatos ejecutables como HTML o SVG, elija únicamente archivos de confianza. El servidor aplica encabezados de seguridad, pero también debe restringir los permisos de acceso a la API.",[1166,1425,1426],{},"Los endpoints de funciones controlan los permisos de capacidades generales del servicio, como sockets en tiempo real, carga de archivos e imágenes y respuestas de AI.",[1166,1428,1429],{},[1221,1430],{"alt":1431,"src":1432},"Configuración de almacenamiento y consulta de una API de carpeta estática","./_screenshots/webspace-static-folder-api_en.png",[1225,1434,1436],{"id":1435},"importar-eventos-en-tiempo-real-y-ajustes-rest","Importar eventos en tiempo real y ajustes REST",[1166,1438,1344,1439,1442],{},[1170,1440,1441],{},"Event definitions"," del socket en tiempo real puede definir solo eventos o importar un paquete JSON o YAML que también incluya las tablas y los ajustes REST necesarios.",[1335,1444,1445,1451,1462,1468,1475],{},[1193,1446,1339,1447,1450],{},[1170,1448,1449],{},"Paste AI answer"," y pegue el paquete. También puede pegar uno preparado por usted con el mismo formato.",[1193,1452,1453,1454,1457,1458,1461],{},"Elija ",[1170,1455,1456],{},"Merge by name"," para conservar los eventos existentes o ",[1170,1459,1460],{},"Replace all"," para sustituirlos por completo.",[1193,1463,1344,1464,1467],{},[1170,1465,1466],{},"Preview",", compruebe los eventos que se añadirán, cambiarán o eliminarán, además del número de tablas, columnas y endpoints REST que se añadirán.",[1193,1469,1470,1471,1474],{},"Revise los conflictos REST y los elementos normalizados u omitidos. Seleccione ",[1170,1472,1473],{},"Overwrite conflicting REST settings"," únicamente si debe cambiar los ajustes REST existentes.",[1193,1476,1477,1478,1207],{},"Revise la comprobación del servidor, corrija los errores y seleccione ",[1170,1479,1480],{},"Apply",[1166,1482,1483,1484,1487],{},"La importación modifica el esquema que está editando. Los cambios solo se aplican al servicio después de completar ",[1170,1485,1486],{},"Deploy",". Durante el despliegue, el servidor vuelve a comprobar las reglas de eventos y REST y rechaza el despliegue si no son válidas.",[1166,1489,1490],{},[1221,1491],{"alt":1492,"src":1493},"Vista previa de eventos y ajustes REST importados","./_screenshots/webspace-realtime-import-preview_en.png",[1185,1495,1497],{"id":1496},"crear-api-más-allá-de-crud-mediante-un-endpoint-personalizado","Crear API más allá de CRUD mediante un endpoint personalizado",[1166,1499,1500,1501,1504,1505,1504,1508,1504,1511,1504,1514,1517,1518,1520],{},"Cuando las cinco API generadas (",[1170,1502,1503],{},"list","/",[1170,1506,1507],{},"view",[1170,1509,1510],{},"create",[1170,1512,1513],{},"update",[1170,1515,1516],{},"delete",") no sean suficientes, seleccione ",[1170,1519,1314],{}," para definir el comportamiento con mayor precisión.",[1166,1522,1523],{},[1221,1524],{"alt":1525,"src":1526},"Configuración básica de un endpoint personalizado","./_screenshots/webspace-customapi-basic_en.png",[1225,1528,1530],{"id":1529},"tipo-de-operación","Tipo de operación",[1166,1532,1533,1534,1537],{},"Además de las cinco operaciones CRUD, el menú ",[1170,1535,1536],{},"Operation kind"," ofrece estas opciones:",[1233,1539,1540,1549],{},[1236,1541,1542],{},[1239,1543,1544,1546],{},[1242,1545,1530],{},[1242,1547,1548],{},"Significado",[1252,1550,1551,1559,1567,1575],{},[1239,1552,1553,1556],{},[1257,1554,1555],{},"Action",[1257,1557,1558],{},"Para endpoints imperativos o de comandos que no encajan en CRUD.",[1239,1560,1561,1564],{},[1257,1562,1563],{},"Stats",[1257,1565,1566],{},"Devuelve resultados estadísticos, como recuentos, sumas o agregaciones.",[1239,1568,1569,1572],{},[1257,1570,1571],{},"Bulk",[1257,1573,1574],{},"Procesa varios registros en una sola llamada.",[1239,1576,1577,1580],{},[1257,1578,1579],{},"Export",[1257,1581,1582],{},"Descarga los resultados de una consulta como archivo.",[1166,1584,1344,1585,1348,1588,1591,1592,1595,1596,1599,1600,1603],{},[1170,1586,1587],{},"Scope",[1170,1589,1590],{},"Collection"," para toda la tabla o varios registros, normalmente sin ",[1170,1593,1594],{},":id"," en la ruta; ",[1170,1597,1598],{},"Item"," para un registro concreto; o ",[1170,1601,1602],{},"Command"," para un endpoint de comandos que no encaja en CRUD.",[1225,1605,1607],{"id":1606},"los-permisos-usan-los-mismos-tres-niveles-que-la-api-rest","Los permisos usan los mismos tres niveles que la API REST",[1166,1609,1610],{},"Los permisos de los endpoints personalizados funcionan igual que los de las API generadas automáticamente. La propia pantalla explica cada opción.",[1166,1612,1613],{},[1221,1614],{"alt":1615,"src":1616},"Selector de permisos del endpoint personalizado","./_screenshots/webspace-customapi-permission_en.png",[1166,1618,1619,1620,1623],{},"Con ",[1170,1621,1622],{},"Member + Additional Conditions"," puede combinar condiciones de nivel, equipo, administrador y propietario. Puede aplicar restricciones como «nivel 2 o superior» o «solo el equipo de ventas» del mismo modo que en un endpoint REST generado automáticamente.",[1321,1625,1626],{},[1166,1627,1628,1629,1633],{},"Estas condiciones de nivel, equipo, administrador y propietario determinan ",[1630,1631,1632],"em",{},"quién puede invocar"," el endpoint. No incluyen límites como «hasta tres veces al día». Si necesita uno, debe implementarlo en el editor SQL que se explica a continuación.",[1225,1635,1637],{"id":1636},"escribir-sql-directamente","Escribir SQL directamente",[1166,1639,1640,1641,1644,1645,1648,1649,1651,1652,1655],{},"En la pestaña ",[1170,1642,1643],{},"Processing flow",", ",[1170,1646,1647],{},"Base query"," contiene un editor en el que puede escribir el SQL que ejecutará el endpoint. En una API generada automáticamente, cambie ",[1170,1650,1647],{}," a ",[1170,1653,1654],{},"Hand-written SQL"," para abrir el mismo editor.",[1166,1657,1658],{},[1221,1659],{"alt":1660,"src":1661},"Editor SQL de Base query en Processing flow","./_screenshots/webspace-customapi-sql_en.png",[1166,1663,1664,1665,1668,1669,1672],{},"La columna ",[1170,1666,1667],{},"Processing"," de la lista de API REST muestra una insignia ",[1170,1670,1671],{},"SQL"," cuando el endpoint usa una consulta escrita directamente. Las condiciones que no pueden expresarse con API generadas, como «rechazar si este miembro ya ha creado tres filas hoy», solo pueden crearse con este editor.",[1674,1675,1677],"h4",{"id":1676},"comprobar-el-sql-y-los-parámetros","Comprobar el SQL y los parámetros",[1166,1679,1680],{},"Al escribir SQL, el navegador comprueba la sintaxis y las tablas y columnas del esquema actual. Si un error o aviso incluye la línea y la columna, selecciónelo para ir a esa posición en el editor. También puede abrir el SQL con errores desde el área de despliegue.",[1166,1682,1683],{},"Esta comprobación no ejecuta la consulta en la base de datos. Después del despliegue, llame a la API para comprobar las funciones específicas del motor, los permisos de acceso y los resultados con datos reales.",[1166,1685,1686,1687,1690,1691,1644,1693,1644,1696,1699,1700,1703,1704,1207],{},"La lista de parámetros muestra los valores ",[1170,1688,1689],{},":name"," usados en el SQL. El servidor rellena los valores reservados ",[1170,1692,1594],{},[1170,1694,1695],{},":user_id",[1170,1697,1698],{},":nick"," y ",[1170,1701,1702],{},":now",". Los demás valores proceden de la cadena de consulta en las solicitudes de lectura o del cuerpo de la solicitud tras el procesamiento de entrada en las de escritura. Los valores ausentes se tratan como ",[1170,1705,1706],{},"NULL",[1419,1708,1709],{},[1166,1710,1711,1712,1715,1716,1719,1720,1722,1723,1726],{},"El SQL de escritura redactado manualmente no recibe de forma automática las condiciones de propietario ni los filtros de la función ",[1170,1713,1714],{},"Condición",". Para limitar los cambios a los datos del usuario actual, añada una condición ",[1170,1717,1718],{},"WHERE"," que compare la columna de propietario con ",[1170,1721,1695],{},". En las consultas de un solo elemento, incluya la clave primaria en el resultado de ",[1170,1724,1725],{},"SELECT",". Si la consulta se limita a los datos propios, incluya también la columna de propietario.",[1225,1728,1730],{"id":1729},"cambiar-el-procesamiento-de-solicitudes-mediante-el-flujo","Cambiar el procesamiento de solicitudes mediante el flujo",[1166,1732,1733,1734,1736],{},"Sin escribir SQL, puede añadir en orden funciones predefinidas en la pestaña ",[1170,1735,1643],{},". Las funciones se dividen en tres etapas: entrada, base de datos y salida.",[1166,1738,1739],{},[1221,1740],{"alt":1741,"src":1742},"Funciones disponibles en el flujo de procesamiento","./_screenshots/webspace-customapi-pipeline_en.png",[1233,1744,1745,1757],{},[1236,1746,1747],{},[1239,1748,1749,1752,1755],{},[1242,1750,1751],{},"Categoría",[1242,1753,1754],{},"Función",[1242,1756,1250],{},[1252,1758,1759,1770,1783,1793,1803,1814,1824,1834,1845,1855,1865],{},[1239,1760,1761,1764,1767],{},[1257,1762,1763],{},"Input",[1257,1765,1766],{},"Validate input",[1257,1768,1769],{},"Valida los campos obligatorios y el formato; devuelve 400 si falla.",[1239,1771,1772,1774,1777],{},[1257,1773,1763],{},[1257,1775,1776],{},"Session value",[1257,1778,1779,1780,1207],{},"Rellena automáticamente un campo con un valor de sesión, como ",[1170,1781,1782],{},"user_id",[1239,1784,1785,1787,1790],{},[1257,1786,1763],{},[1257,1788,1789],{},"Default value",[1257,1791,1792],{},"Rellena los campos vacíos con un valor predeterminado.",[1239,1794,1795,1797,1800],{},[1257,1796,1763],{},[1257,1798,1799],{},"Move key",[1257,1801,1802],{},"Traslada una clave del cuerpo de la solicitud al nombre de una columna de la tabla.",[1239,1804,1805,1808,1811],{},[1257,1806,1807],{},"Database",[1257,1809,1810],{},"Condition",[1257,1812,1813],{},"Añade una condición WHERE.",[1239,1815,1816,1818,1821],{},[1257,1817,1807],{},[1257,1819,1820],{},"Page size",[1257,1822,1823],{},"Gestiona automáticamente limit y offset.",[1239,1825,1826,1828,1831],{},[1257,1827,1807],{},[1257,1829,1830],{},"Sort",[1257,1832,1833],{},"Define la cláusula ORDER BY.",[1239,1835,1836,1839,1842],{},[1257,1837,1838],{},"Output",[1257,1840,1841],{},"Hide fields",[1257,1843,1844],{},"Elimina una columna de la respuesta.",[1239,1846,1847,1849,1852],{},[1257,1848,1838],{},[1257,1850,1851],{},"Rename key",[1257,1853,1854],{},"Cambia el nombre de una clave en el JSON de respuesta.",[1239,1856,1857,1859,1862],{},[1257,1858,1838],{},[1257,1860,1861],{},"Add aggregate",[1257,1863,1864],{},"Añade a la respuesta una agregación como COUNT o SUM.",[1239,1866,1867,1869,1872],{},[1257,1868,1838],{},[1257,1870,1871],{},"Webhook",[1257,1873,1874],{},"Envía el evento a una URL externa.",[1419,1876,1877],{},[1166,1878,1879,1880,1882,1883,1886],{},"La función ",[1170,1881,1810],{}," solo crea una comparación sencilla, como ",[1170,1884,1885],{},"WHERE column = value",", mediante tres campos: columna, operador y valor. No puede expresar condiciones que requieran agregación, como «número de filas creadas hoy por este miembro»; el campo de valor solo admite un valor fijo. Para estas condiciones, escriba una subconsulta en el editor SQL.",[1225,1888,1890],{"id":1889},"configurar-permisos","Configurar permisos",[1166,1892,1893],{},"Configure el acceso de cada API por separado. Los miembros son las cuentas existentes del espacio de trabajo. No necesita crear otro sistema de autenticación: los miembros, niveles y equipos del espacio se conectan directamente a los permisos de la API.",[1233,1895,1896,1905],{},[1236,1897,1898],{},[1239,1899,1900,1903],{},[1242,1901,1902],{},"Permiso",[1242,1904,1250],{},[1252,1906,1907,1915,1922],{},[1239,1908,1909,1912],{},[1257,1910,1911],{},"Members only",[1257,1913,1914],{},"Cualquier miembro que haya iniciado sesión puede invocar la API.",[1239,1916,1917,1919],{},[1257,1918,1622],{},[1257,1920,1921],{},"El miembro también debe cumplir condiciones de nivel, equipo o administrador.",[1239,1923,1924,1927],{},[1257,1925,1926],{},"Anyone",[1257,1928,1929],{},"Puede invocarse sin iniciar sesión, pero no admite solicitudes de creación, modificación ni eliminación.",[1185,1931,1933],{"id":1932},"desplegar","Desplegar",[1166,1935,1936],{},"Introduzca la información de despliegue de la siguiente manera.",[1335,1938,1939,1945,1951],{},[1193,1940,1941,1944],{},[1170,1942,1943],{},"Database identifier",": introduzca en inglés el nombre lógico de la base de datos que se usará en el servidor.",[1193,1946,1947,1950],{},[1170,1948,1949],{},"Storage engine mode",": seleccione SQLite3, PostgreSQL, MySQL o MariaDB. Para una base externa, introduzca también el host, el puerto, el nombre de la base, el usuario y la contraseña. MySQL y MariaDB utilizan una configuración basada en InnoDB.",[1193,1952,1953,1954,1699,1957,1207],{},"Revise los siguientes elementos en ",[1170,1955,1956],{},"General",[1170,1958,1959],{},"Advanced",[1233,1961,1962,1971],{},[1236,1963,1964],{},[1239,1965,1966,1969],{},[1242,1967,1968],{},"Elemento",[1242,1970,1250],{},[1252,1972,1973,1993],{},[1239,1974,1975,1980],{},[1257,1976,1977],{},[1170,1978,1979],{},"Client deployment path",[1257,1981,1982,1983,1985,1986,1644,1989,1992],{},"Se encuentra en ",[1170,1984,1956],{},". Seleccione dónde se crearán los archivos de ejemplo del frontend, como ",[1170,1987,1988],{},"index.html",[1170,1990,1991],{},"test.html"," y README.",[1239,1994,1995,2000],{},[1257,1996,1997],{},[1170,1998,1999],{},"IP restriction",[1257,2001,1982,2002,2004],{},[1170,2003,1959],{},". Indique una lista de direcciones IP permitidas para acceder a las API.",[1166,2006,1339,2007,2009,2010,2012,2013,2017],{},[1170,2008,1486],{}," en la sección situada debajo de la lista de API para abrir la configuración. Esta sección permanece fija al final del editor mientras desplaza la lista. La primera selección no inicia el despliegue. Revise los ajustes y vuelva a seleccionar ",[1170,2011,1486],{}," para preparar la base de datos y las API. Si indicó una ruta de despliegue del cliente, Webspace también creará una interfaz de ejemplo para probarlas. Consulte ",[1200,2014,2016],{"href":2015},"./frontend-example","Revisar el ejemplo de frontend"," para modificar la interfaz.",[1185,2019,2021],{"id":2020},"ejemplos-de-solicitudes-de-api","Ejemplos de solicitudes de API",[1166,2023,2024,2025,1207],{},"Los siguientes ejemplos utilizan la tabla ",[1170,2026,2027],{},"user_profile",[2029,2030,2035],"pre",{"className":2031,"code":2033,"language":2034},[2032],"language-text","GET  /api/web/{dbName}/user_profile/list\nGET  /api/web/{dbName}/user_profile/view/{id}\nPOST /api/web/{dbName}/user_profile/create\nPUT  /api/web/{dbName}/user_profile/update/{id}\nDELETE /api/web/{dbName}/user_profile/delete/{id}\n","text",[1170,2036,2033],{"__ignoreMap":2037},"",[1166,2039,2040,2041,2043],{},"Ejemplo de solicitud de creación (",[1170,2042,1280],{},"):",[2029,2045,2048],{"className":2046,"code":2047,"language":2034},[2032],"POST /api/web/{dbName}/user_profile/create\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"is_active\": true\n}\n",[1170,2049,2047],{"__ignoreMap":2037},[1185,2051,2053],{"id":2052},"leer-respuestas-de-error","Leer respuestas de error",[1166,2055,2056,2057,1352,2059,2062,2063,2066],{},"Si una solicitud falla, compruebe su estado HTTP y ",[1170,2058,1170],{},[1170,2060,2061],{},"errorCode",". Los códigos no cambian con el idioma: úselos para decidir si debe solicitar el inicio de sesión o reintentar, y use ",[1170,2064,2065],{},"message"," para mostrar el mensaje.",[1166,2068,2069,2070,2073],{},"Los mensajes de error predeterminados de Webspace admiten coreano, inglés, japonés, chino simplificado y alemán. Se utiliza primero el idioma del miembro que ha iniciado sesión. Si no está definido o no se admite, el servidor consulta ",[1170,2071,2072],{},"Accept-Language"," en la solicitud. Si ninguno coincide, utiliza inglés. No compare el texto mostrado en una integración de API.",[1166,2075,2076],{},"Por ejemplo, una solicitud que requiere iniciar sesión devuelve estos datos.",[2029,2078,2082],{"className":2079,"code":2080,"language":2081,"meta":2037,"style":2037},"language-json shiki shiki-themes github-light github-dark monokai","{\n  \"code\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"errorCode\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"message\": \"로그인이 필요합니다.\"\n}\n","json",[1170,2083,2084,2093,2110,2122,2133],{"__ignoreMap":2037},[2085,2086,2089],"span",{"class":2087,"line":2088},"line",1,[2085,2090,2092],{"class":2091},"sMOD_","{\n",[2085,2094,2096,2100,2103,2107],{"class":2087,"line":2095},2,[2085,2097,2099],{"class":2098},"s-m8C","  \"code\"",[2085,2101,2102],{"class":2091},": ",[2085,2104,2106],{"class":2105},"sCZoN","\"WEBSPACE_LOGIN_REQUIRED\"",[2085,2108,2109],{"class":2091},",\n",[2085,2111,2113,2116,2118,2120],{"class":2087,"line":2112},3,[2085,2114,2115],{"class":2098},"  \"errorCode\"",[2085,2117,2102],{"class":2091},[2085,2119,2106],{"class":2105},[2085,2121,2109],{"class":2091},[2085,2123,2125,2128,2130],{"class":2087,"line":2124},4,[2085,2126,2127],{"class":2098},"  \"message\"",[2085,2129,2102],{"class":2091},[2085,2131,2132],{"class":2105},"\"로그인이 필요합니다.\"\n",[2085,2134,2136],{"class":2087,"line":2135},5,[2085,2137,2138],{"class":2091},"}\n",[1166,2140,2141],{},"Estos son los campos principales que debe comprobar, no un ejemplo de la respuesta completa. Las API REST, de archivos estáticos y de administración pueden usar envoltorios distintos.",[1190,2143,2144,2167,2187],{},[1193,2145,2146,2147,2150,2151,2154,2155,2158,2159,1644,2162,1699,2164,2166],{},"La validación de entradas conserva el formato existente, con ",[1170,2148,2149],{},"ok: false"," y una lista ",[1170,2152,2153],{},"errors",". Compruebe ",[1170,2156,2157],{},"ok"," incluso cuando el estado HTTP sea 200 y use ",[1170,2160,2161],{},"field",[1170,2163,1170],{},[1170,2165,2065],{}," de cada elemento para explicar el problema.",[1193,2168,2169,2170,2173,2174,2177,2178,2181,2182,1699,2184,2186],{},"Los errores de WebSocket aparecen dentro de ",[1170,2171,2172],{},"data"," en un mensaje ",[1170,2175,2176],{},"type: \"error\"",". Se conserva la clave de clasificación ",[1170,2179,2180],{},"key","; ",[1170,2183,1170],{},[1170,2185,2061],{}," identifican la causa.",[1193,2188,2189],{},"Las rutas físicas del servidor, el SQL y los errores internos sin procesar no se devuelven a los usuarios. Si se requiere que un operador consulte los registros, proporcione la hora, la ruta de la solicitud, el estado HTTP y el código del error.",[1185,2191,2193],{"id":2192},"despliegue-y-sobrescritura","Despliegue y sobrescritura",[1166,2195,2196],{},"La sobrescritura de un esquema cuya base de datos ya contiene datos sigue la política de despliegue del servidor. La organización puede prohibirla o limitarla a administradores y responsables designados. Antes de cambiar la estructura, revise las columnas y API afectadas y confirme los procedimientos de copia de seguridad y recuperación.",[1185,2198,2200],{"id":2199},"información-útil","Información útil",[1190,2202,2203,2208,2211,2214,2217],{},[1193,2204,2205,2206,1207],{},"Las API utilizan sesiones de inicio de SetFN para autenticarse. Las solicitudes sin autenticar se rechazan, salvo que el permiso de la API sea ",[1170,2207,1926],{},[1193,2209,2210],{},"Al cambiar la estructura del esquema también se actualizan los endpoints. Compruebe la compatibilidad con las integraciones existentes.",[1193,2212,2213],{},"Los datos de SQLite3 se guardan en el almacenamiento de Webspace del servidor. Los de motores externos se guardan en la base configurada por el administrador.",[1193,2215,2216],{},"Use filtros, ordenación y tamaños de página solo dentro de los intervalos permitidos por el servidor.",[1193,2218,2219],{},"Para llamadas desde un sitio externo, compruebe también los orígenes permitidos y la configuración CSP del administrador.",[1185,2221,2223],{"id":2222},"documentos-relacionados","Documentos relacionados",[1190,2225,2226,2230,2235,2239,2244],{},[1193,2227,2228],{},[1200,2229,791],{"href":1202},[1193,2231,2232],{},[1200,2233,882],{"href":2234},"./examples/realtime-gomoku",[1193,2236,2237],{},[1200,2238,801],{"href":2015},[1193,2240,2241],{},[1200,2242,827],{"href":2243},"./performance",[1193,2245,2246],{},[1200,2247,837],{"href":2248},"./admin/overview",[2250,2251,2252],"style",{},"html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .s-m8C, html code.shiki .s-m8C{--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sCZoN, html code.shiki .sCZoN{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":2037,"searchDepth":2095,"depth":2112,"links":2254},[2255,2256,2261,2270,2271,2272,2273,2274,2275],{"id":1187,"depth":2095,"text":1188},{"id":1210,"depth":2095,"text":1211,"children":2257},[2258,2259,2260],{"id":1227,"depth":2112,"text":1228},{"id":1332,"depth":2112,"text":1333},{"id":1435,"depth":2112,"text":1436},{"id":1496,"depth":2095,"text":1497,"children":2262},[2263,2264,2265,2268,2269],{"id":1529,"depth":2112,"text":1530},{"id":1606,"depth":2112,"text":1607},{"id":1636,"depth":2112,"text":1637,"children":2266},[2267],{"id":1676,"depth":2124,"text":1677},{"id":1729,"depth":2112,"text":1730},{"id":1889,"depth":2112,"text":1890},{"id":1932,"depth":2095,"text":1933},{"id":2020,"depth":2095,"text":2021},{"id":2052,"depth":2095,"text":2053},{"id":2192,"depth":2095,"text":2193},{"id":2199,"depth":2095,"text":2200},{"id":2222,"depth":2095,"text":2223},"Aprenda a desplegar un archivo de esquema (.sfn) como base de datos y API, y a comprobar sus permisos y funciones.","md",{},true,{"title":2281,"description":2282,"ogType":2283,"twitterCard":2284,"keywords":2285},"Crear API y desplegar una base de datos | Webspace Docs","Conecte un archivo de esquema a SQLite3, PostgreSQL, MySQL o MariaDB y despliéguelo como API de Webspace.","article","summary_large_image",[2286,2287,1671,2288,2289,2290,1932],"crear API y desplegar una base de datos","API","README","DB","abrir API Build","046eRR4KiUElXU65KGW9baSNkWsl3Hb_qHgb8C1J8Rk",[2293,2294],{"title":791,"path":792,"stem":793,"slug":794,"children":-1},{"title":801,"path":802,"stem":803,"slug":804,"children":-1},{"title":796,"filename":2296,"content":2297},"api-overview","# Crear API y desplegar una base de datos\n\nDespués de crear un archivo de esquema (`.sfn`), convierta el diseño en un servicio operativo. `API Build` prepara para cada tabla API de creación, consulta, modificación y eliminación, y muestra quién puede usar cada dirección.\n\nTambién puede conectar al mismo servicio API de consultas personalizadas, API de archivos estáticos y eventos en tiempo real.\n\n---\n\n## Antes de comenzar\n\n- Permiso necesario: ser un usuario con permiso para utilizar bases de datos.\n- Requisito previo: crear primero un [archivo de esquema (`.sfn`)](./20.create-database.md).\n\n## Abrir API Build\n\nSeleccione la pestaña `API Build` en la parte superior de la pantalla del esquema para consultar las API generadas automáticamente para cada tabla.\n\n![API Build](./_screenshots/schema-api-build_en.png)\n\n### API generadas automáticamente\n\nDe forma predeterminada se generan cinco API por tabla. También puede añadir API personalizadas cuando lo necesite.\n\n| Método | Endpoint | Descripción |\n| --- | --- | --- |\n| GET | .../list | Consultar una lista |\n| GET | .../view/:id | Consultar un registro |\n| POST | .../create | Crear un registro |\n| PUT | .../update/:id | Modificar un registro |\n| DELETE | .../delete/:id | Eliminar un registro |\n\nUse `Add new API (Custom Endpoint)` para definir una API con la consulta y el formato de respuesta necesarios. Use `Add static file API` para servir archivos JSON, XML, HTML, imágenes y archivos binarios del espacio de trabajo con el tipo correspondiente.\n\n::note\nUn endpoint de carpeta puede devolver su lista de archivos como JSON y servir el contenido del archivo seleccionado. Consulte [Crear un tablón de recursos con archivos de una carpeta](./60.examples/30.folder-board.md) para ver un ejemplo completo.\n::\n\n### Servir un archivo o una carpeta mediante una API\n\n1. Seleccione `Add static file API`.\n2. En `Storage space`, elija `Team space` o `Personal space`.\n3. En `Source type`, elija `Single file` o `Folder list · file content`; después, seleccione el origen mediante `Choose file` o `Choose folder`.\n4. Para una carpeta, configure `Allowed extensions` e `Include subfolders`. Si deja vacías las extensiones, se incluirán todos los tipos.\n5. En `Response mode`, elija si desea mostrar el contenido en el navegador (`Display in browser`) o devolverlo como archivo (`Download`).\n6. Compruebe los permisos del endpoint y despliegue el esquema.\n\nUn endpoint de archivo devuelve su contenido. Un endpoint de carpeta crea una lista JSON y una dirección que lee el contenido mediante el `id` de cada elemento. Al cambiar el nombre o mover un archivo también cambia su `id`, que se basa en la ruta. Los clientes deben usar el `id` o `viewUrl` más reciente de la respuesta de la lista.\n\n::warning\nAl mostrar en el navegador formatos ejecutables como HTML o SVG, elija únicamente archivos de confianza. El servidor aplica encabezados de seguridad, pero también debe restringir los permisos de acceso a la API.\n::\n\nLos endpoints de funciones controlan los permisos de capacidades generales del servicio, como sockets en tiempo real, carga de archivos e imágenes y respuestas de AI.\n\n![Configuración de almacenamiento y consulta de una API de carpeta estática](./_screenshots/webspace-static-folder-api_en.png)\n\n### Importar eventos en tiempo real y ajustes REST\n\nEn `Event definitions` del socket en tiempo real puede definir solo eventos o importar un paquete JSON o YAML que también incluya las tablas y los ajustes REST necesarios.\n\n1. Seleccione `Paste AI answer` y pegue el paquete. También puede pegar uno preparado por usted con el mismo formato.\n2. Elija `Merge by name` para conservar los eventos existentes o `Replace all` para sustituirlos por completo.\n3. En `Preview`, compruebe los eventos que se añadirán, cambiarán o eliminarán, además del número de tablas, columnas y endpoints REST que se añadirán.\n4. Revise los conflictos REST y los elementos normalizados u omitidos. Seleccione `Overwrite conflicting REST settings` únicamente si debe cambiar los ajustes REST existentes.\n5. Revise la comprobación del servidor, corrija los errores y seleccione `Apply`.\n\nLa importación modifica el esquema que está editando. Los cambios solo se aplican al servicio después de completar `Deploy`. Durante el despliegue, el servidor vuelve a comprobar las reglas de eventos y REST y rechaza el despliegue si no son válidas.\n\n![Vista previa de eventos y ajustes REST importados](./_screenshots/webspace-realtime-import-preview_en.png)\n\n## Crear API más allá de CRUD mediante un endpoint personalizado\n\nCuando las cinco API generadas (`list`/`view`/`create`/`update`/`delete`) no sean suficientes, seleccione `Add new API (Custom Endpoint)` para definir el comportamiento con mayor precisión.\n\n![Configuración básica de un endpoint personalizado](./_screenshots/webspace-customapi-basic_en.png)\n\n### Tipo de operación\n\nAdemás de las cinco operaciones CRUD, el menú `Operation kind` ofrece estas opciones:\n\n| Tipo de operación | Significado |\n|---|---|\n| Action | Para endpoints imperativos o de comandos que no encajan en CRUD. |\n| Stats | Devuelve resultados estadísticos, como recuentos, sumas o agregaciones. |\n| Bulk | Procesa varios registros en una sola llamada. |\n| Export | Descarga los resultados de una consulta como archivo. |\n\nEn `Scope`, elija `Collection` para toda la tabla o varios registros, normalmente sin `:id` en la ruta; `Item` para un registro concreto; o `Command` para un endpoint de comandos que no encaja en CRUD.\n\n### Los permisos usan los mismos tres niveles que la API REST\n\nLos permisos de los endpoints personalizados funcionan igual que los de las API generadas automáticamente. La propia pantalla explica cada opción.\n\n![Selector de permisos del endpoint personalizado](./_screenshots/webspace-customapi-permission_en.png)\n\nCon `Member + Additional Conditions` puede combinar condiciones de nivel, equipo, administrador y propietario. Puede aplicar restricciones como «nivel 2 o superior» o «solo el equipo de ventas» del mismo modo que en un endpoint REST generado automáticamente.\n\n::note\nEstas condiciones de nivel, equipo, administrador y propietario determinan *quién puede invocar* el endpoint. No incluyen límites como «hasta tres veces al día». Si necesita uno, debe implementarlo en el editor SQL que se explica a continuación.\n::\n\n### Escribir SQL directamente\n\nEn la pestaña `Processing flow`, `Base query` contiene un editor en el que puede escribir el SQL que ejecutará el endpoint. En una API generada automáticamente, cambie `Base query` a `Hand-written SQL` para abrir el mismo editor.\n\n![Editor SQL de Base query en Processing flow](./_screenshots/webspace-customapi-sql_en.png)\n\nLa columna `Processing` de la lista de API REST muestra una insignia `SQL` cuando el endpoint usa una consulta escrita directamente. Las condiciones que no pueden expresarse con API generadas, como «rechazar si este miembro ya ha creado tres filas hoy», solo pueden crearse con este editor.\n\n#### Comprobar el SQL y los parámetros\n\nAl escribir SQL, el navegador comprueba la sintaxis y las tablas y columnas del esquema actual. Si un error o aviso incluye la línea y la columna, selecciónelo para ir a esa posición en el editor. También puede abrir el SQL con errores desde el área de despliegue.\n\nEsta comprobación no ejecuta la consulta en la base de datos. Después del despliegue, llame a la API para comprobar las funciones específicas del motor, los permisos de acceso y los resultados con datos reales.\n\nLa lista de parámetros muestra los valores `:name` usados en el SQL. El servidor rellena los valores reservados `:id`, `:user_id`, `:nick` y `:now`. Los demás valores proceden de la cadena de consulta en las solicitudes de lectura o del cuerpo de la solicitud tras el procesamiento de entrada en las de escritura. Los valores ausentes se tratan como `NULL`.\n\n::warning\nEl SQL de escritura redactado manualmente no recibe de forma automática las condiciones de propietario ni los filtros de la función `Condición`. Para limitar los cambios a los datos del usuario actual, añada una condición `WHERE` que compare la columna de propietario con `:user_id`. En las consultas de un solo elemento, incluya la clave primaria en el resultado de `SELECT`. Si la consulta se limita a los datos propios, incluya también la columna de propietario.\n::\n\n### Cambiar el procesamiento de solicitudes mediante el flujo\n\nSin escribir SQL, puede añadir en orden funciones predefinidas en la pestaña `Processing flow`. Las funciones se dividen en tres etapas: entrada, base de datos y salida.\n\n![Funciones disponibles en el flujo de procesamiento](./_screenshots/webspace-customapi-pipeline_en.png)\n\n| Categoría | Función | Descripción |\n|---|---|---|\n| Input | Validate input | Valida los campos obligatorios y el formato; devuelve 400 si falla. |\n| Input | Session value | Rellena automáticamente un campo con un valor de sesión, como `user_id`. |\n| Input | Default value | Rellena los campos vacíos con un valor predeterminado. |\n| Input | Move key | Traslada una clave del cuerpo de la solicitud al nombre de una columna de la tabla. |\n| Database | Condition | Añade una condición WHERE. |\n| Database | Page size | Gestiona automáticamente limit y offset. |\n| Database | Sort | Define la cláusula ORDER BY. |\n| Output | Hide fields | Elimina una columna de la respuesta. |\n| Output | Rename key | Cambia el nombre de una clave en el JSON de respuesta. |\n| Output | Add aggregate | Añade a la respuesta una agregación como COUNT o SUM. |\n| Output | Webhook | Envía el evento a una URL externa. |\n\n::warning\nLa función `Condition` solo crea una comparación sencilla, como `WHERE column = value`, mediante tres campos: columna, operador y valor. No puede expresar condiciones que requieran agregación, como «número de filas creadas hoy por este miembro»; el campo de valor solo admite un valor fijo. Para estas condiciones, escriba una subconsulta en el editor SQL.\n::\n\n### Configurar permisos\n\nConfigure el acceso de cada API por separado. Los miembros son las cuentas existentes del espacio de trabajo. No necesita crear otro sistema de autenticación: los miembros, niveles y equipos del espacio se conectan directamente a los permisos de la API.\n\n| Permiso | Descripción |\n|---|---|\n| Members only | Cualquier miembro que haya iniciado sesión puede invocar la API. |\n| Member + Additional Conditions | El miembro también debe cumplir condiciones de nivel, equipo o administrador. |\n| Anyone | Puede invocarse sin iniciar sesión, pero no admite solicitudes de creación, modificación ni eliminación. |\n\n## Desplegar\n\nIntroduzca la información de despliegue de la siguiente manera.\n\n1. `Database identifier`: introduzca en inglés el nombre lógico de la base de datos que se usará en el servidor.\n2. `Storage engine mode`: seleccione SQLite3, PostgreSQL, MySQL o MariaDB. Para una base externa, introduzca también el host, el puerto, el nombre de la base, el usuario y la contraseña. MySQL y MariaDB utilizan una configuración basada en InnoDB.\n3. Revise los siguientes elementos en `General` y `Advanced`.\n\n| Elemento | Descripción |\n|---|---|\n| `Client deployment path` | Se encuentra en `General`. Seleccione dónde se crearán los archivos de ejemplo del frontend, como `index.html`, `test.html` y README. |\n| `IP restriction` | Se encuentra en `Advanced`. Indique una lista de direcciones IP permitidas para acceder a las API. |\n\nSeleccione `Deploy` en la sección situada debajo de la lista de API para abrir la configuración. Esta sección permanece fija al final del editor mientras desplaza la lista. La primera selección no inicia el despliegue. Revise los ajustes y vuelva a seleccionar `Deploy` para preparar la base de datos y las API. Si indicó una ruta de despliegue del cliente, Webspace también creará una interfaz de ejemplo para probarlas. Consulte [Revisar el ejemplo de frontend](./26.frontend-example.md) para modificar la interfaz.\n\n## Ejemplos de solicitudes de API\n\nLos siguientes ejemplos utilizan la tabla `user_profile`.\n\n```\nGET  /api/web/{dbName}/user_profile/list\nGET  /api/web/{dbName}/user_profile/view/{id}\nPOST /api/web/{dbName}/user_profile/create\nPUT  /api/web/{dbName}/user_profile/update/{id}\nDELETE /api/web/{dbName}/user_profile/delete/{id}\n```\n\nEjemplo de solicitud de creación (`POST`):\n\n```\nPOST /api/web/{dbName}/user_profile/create\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"is_active\": true\n}\n```\n\n## Leer respuestas de error\n\nSi una solicitud falla, compruebe su estado HTTP y `code` o `errorCode`. Los códigos no cambian con el idioma: úselos para decidir si debe solicitar el inicio de sesión o reintentar, y use `message` para mostrar el mensaje.\n\nLos mensajes de error predeterminados de Webspace admiten coreano, inglés, japonés, chino simplificado y alemán. Se utiliza primero el idioma del miembro que ha iniciado sesión. Si no está definido o no se admite, el servidor consulta `Accept-Language` en la solicitud. Si ninguno coincide, utiliza inglés. No compare el texto mostrado en una integración de API.\n\nPor ejemplo, una solicitud que requiere iniciar sesión devuelve estos datos.\n\n```json\n{\n  \"code\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"errorCode\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"message\": \"로그인이 필요합니다.\"\n}\n```\n\nEstos son los campos principales que debe comprobar, no un ejemplo de la respuesta completa. Las API REST, de archivos estáticos y de administración pueden usar envoltorios distintos.\n\n- La validación de entradas conserva el formato existente, con `ok: false` y una lista `errors`. Compruebe `ok` incluso cuando el estado HTTP sea 200 y use `field`, `code` y `message` de cada elemento para explicar el problema.\n- Los errores de WebSocket aparecen dentro de `data` en un mensaje `type: \"error\"`. Se conserva la clave de clasificación `key`; `code` y `errorCode` identifican la causa.\n- Las rutas físicas del servidor, el SQL y los errores internos sin procesar no se devuelven a los usuarios. Si se requiere que un operador consulte los registros, proporcione la hora, la ruta de la solicitud, el estado HTTP y el código del error.\n\n## Despliegue y sobrescritura\n\nLa sobrescritura de un esquema cuya base de datos ya contiene datos sigue la política de despliegue del servidor. La organización puede prohibirla o limitarla a administradores y responsables designados. Antes de cambiar la estructura, revise las columnas y API afectadas y confirme los procedimientos de copia de seguridad y recuperación.\n\n## Información útil\n\n- Las API utilizan sesiones de inicio de SetFN para autenticarse. Las solicitudes sin autenticar se rechazan, salvo que el permiso de la API sea `Anyone`.\n- Al cambiar la estructura del esquema también se actualizan los endpoints. Compruebe la compatibilidad con las integraciones existentes.\n- Los datos de SQLite3 se guardan en el almacenamiento de Webspace del servidor. Los de motores externos se guardan en la base configurada por el administrador.\n- Use filtros, ordenación y tamaños de página solo dentro de los intervalos permitidos por el servidor.\n- Para llamadas desde un sitio externo, compruebe también los orígenes permitidos y la configuración CSP del administrador.\n\n## Documentos relacionados\n\n- [Crear un archivo de esquema (.sfn)](./20.create-database.md)\n- [Crear un juego de Gomoku en tiempo real](./60.examples/20.realtime-gomoku.md)\n- [Consultar el ejemplo de frontend](./26.frontend-example.md)\n- [Rendimiento y escalado](./48.performance.md)\n- [Empezar a administrar Webspace](./50.admin/00.overview.md)\n",1793056600009]