[{"data":1,"prerenderedAt":1979},["ShallowReactive",2],{"nav-docs-es":3,"page-/es/docs/webspace/create-database":1156,"surround-/es/docs/webspace/create-database":1973,"raw-/es/docs/webspace/create-database":1976},[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":791,"body":1158,"cover":6,"description":1956,"extension":1957,"image":6,"meta":1958,"navigation":1959,"path":792,"reviewSummary":6,"reviewedAt":6,"seo":1960,"slug":794,"stem":793,"tags":6,"thumbnail":6,"thumbnailPosition":6,"thumbnailScale":6,"__hash__":1972},"docs_es/40.webspace/20.create-database.md",{"type":1159,"value":1160,"toc":1937},"minimal",[1161,1165,1169,1177,1180,1185,1204,1207,1211,1225,1231,1238,1246,1250,1253,1258,1265,1310,1313,1319,1329,1332,1336,1349,1356,1362,1366,1369,1374,1385,1429,1433,1447,1450,1561,1579,1583,1586,1611,1615,1625,1628,1837,1845,1849,1852,1866,1870,1880,1883,1887,1898,1902,1908,1912,1933],[1162,1163,791],"h1",{"id":1164},"crear-un-archivo-de-esquema-sfn",[1166,1167,1168],"p",{},"Webspace empieza con un pequeño archivo. Al definir los datos y los permisos en un archivo de esquema (.sfn) y desplegarlo, se preparan conjuntamente la base de datos y las API. Después podrá crear un servicio en el que el contenido introducido en la pantalla se guarde y aparezca en tiempo real en las pantallas de otros usuarios.",[1166,1170,1171,1172,1176],{},"El archivo de esquema es el plano del servicio. Guardarlo no modifica la base de datos real; debe desplegarlo en ",[1173,1174,1175],"code",{},"API Build"," para aplicarlo al entorno de ejecución.",[1178,1179],"hr",{},[1181,1182,1184],"h2",{"id":1183},"flujo-de-creación","Flujo de creación",[1186,1187,1188,1192,1195,1198,1201],"ol",{},[1189,1190,1191],"li",{},"Cree un archivo de esquema.",[1189,1193,1194],{},"Configure las tablas y columnas.",[1189,1196,1197],{},"Compruebe los permisos de acceso de cada API.",[1189,1199,1200],{},"Seleccione un motor de almacenamiento y realice el despliegue.",[1189,1202,1203],{},"Invoque las API generadas desde HTML o una aplicación.",[1166,1205,1206],{},"No necesita completar todo desde el principio. La forma más sencilla de comprenderlo es empezar con una tabla pequeña, introducir datos desde una pantalla real y ampliar después la estructura y los permisos.",[1181,1208,1210],{"id":1209},"crear-un-archivo-de-esquema","Crear un archivo de esquema",[1166,1212,1213,1214,1217,1218,1217,1221,1224],{},"En el espacio de trabajo, seleccione ",[1173,1215,1216],{},"Create"," > ",[1173,1219,1220],{},"Template Files",[1173,1222,1223],{},"New Schema DB",".",[1166,1226,1227],{},[1228,1229],"img",{"alt":1210,"src":1230},"./_screenshots/new-schema_en.png",[1166,1232,1233,1234],{},"Introduzca un nombre y guarde para crear el archivo.\n",[1228,1235],{"alt":1236,"src":1237},"Archivo de esquema","./_screenshots/schema-file-first_en.png",[1166,1239,1240,1241,1224],{},"En este paso no se elige un motor de base de datos. Cree primero la estructura y seleccione SQLite3, PostgreSQL, MySQL o MariaDB como motor de almacenamiento real durante el ",[1242,1243,1245],"a",{"href":1244},"./api-overview","despliegue",[1181,1247,1249],{"id":1248},"crear-la-estructura-de-datos","Crear la estructura de datos",[1166,1251,1252],{},"Puede crearla desde cero o preparar un borrador con AI y perfeccionarlo. Si ya dispone de SQL, también puede importarlo.",[1254,1255,1257],"h3",{"id":1256},"_1-crear-un-borrador-con-ai","1. Crear un borrador con AI",[1166,1259,1260,1261],{},"No necesita conocer todos los términos de las tablas. Describa qué información desea gestionar y con quién, y la AI creará una estructura inicial.\n",[1228,1262],{"alt":1263,"src":1264},"Crear un borrador de esquema con AI","./_screenshots/schema-file-ai-copy-button_en.png",[1186,1266,1267,1273,1280,1293,1300],{},[1189,1268,1269,1270,1224],{},"Seleccione ",[1173,1271,1272],{},"Copy AI prompt",[1189,1274,1275,1276],{},"Pegue el prompt copiado en la ventana de chat del servicio de AI que utilice.\n",[1228,1277],{"alt":1278,"src":1279},"Pegar el prompt en la AI","./_screenshots/schema-paste-to-ai.png",[1189,1281,1282,1283,1286,1287],{},"Debajo de ",[1173,1284,1285],{},"## Request",", al final de las instrucciones, describa el servicio que desea crear.",[1288,1289,1290],"blockquote",{},[1166,1291,1292],{},"Ejemplo: gestione el nombre de la patente, el número de solicitud, la persona responsable y el estado, y permita que solo la persona responsable y los administradores lo modifiquen.",[1189,1294,1295,1296],{},"Copie el JSON creado por la AI y péguelo en la pantalla de importación.\n",[1228,1297],{"alt":1298,"src":1299},"Importar un esquema","./_screenshots/schema-load.png",[1189,1301,1269,1302,1305,1306],{},[1173,1303,1304],{},"Import"," para crear la estructura de tablas en el esquema, como se muestra a continuación.\n",[1228,1307],{"alt":1308,"src":1309},"Ejemplo de esquema","./_screenshots/schema-example_en.png",[1166,1311,1312],{},"Las instrucciones copiadas incluyen el formato y las reglas de escritura del archivo de esquema. Priorizan una estructura válida para varios motores de almacenamiento frente a SQL específico de una base de datos.",[1166,1314,1315,1316,1318],{},"El botón ",[1173,1317,1272],{}," copia instrucciones para generar el esquema. El siguiente ejemplo muestra el formato para un esquema vacío con el motor SQLite, con las instrucciones de idioma adaptadas para obtener comentarios en español. El prompt que copia el producto depende del esquema, del motor y del idioma de la interfaz actuales; puede ajustar manualmente sus instrucciones de idioma. Empiece con este prompt en lugar de escribir el archivo manualmente.",[1320,1321,1327],"pre",{"className":1322,"code":1324,"language":1325,"meta":1326},[1323],"language-text","Eres un asistente para diseñar esquemas de bases de datos.\nDevuelve únicamente JSON válido.\nNo añadas explicaciones.\nNo encierres la respuesta en bloques de código Markdown.\nDevuelve solo el array data de un archivo de esquema de SetFN.\nNo incluyas content-type, dbType ni apiBuild.\nMotor de despliegue actual: SQLite.\nEl motor de almacenamiento forma parte de la configuración del despliegue, no de la sintaxis del esquema. Mantén el esquema compatible con SQLite, PostgreSQL, MySQL y MariaDB.\n\n## Idioma\n- Los identificadores deben estar en inglés y usar ASCII: \"label\" y los nombres de tablas y columnas deben escribirse en snake_case inglés; las claves JSON, los tipos y los valores predeterminados deben conservarse exactamente como se muestran.\n- Escribe en español las cadenas destinadas a las personas: todos los valores \"cmt\", incluidos los comentarios de tablas y columnas y la descripción de los valores permitidos.\n- La solicitud del usuario que aparece más abajo puede estar escrita en español. Interprétala como requisitos; no traduzcas los identificadores a ese idioma.\n- El estado actual que aparece más abajo son datos y puede contener texto en cualquier idioma. Conserva exactamente los nombres y las claves existentes.\n\nReglas de seguridad y portabilidad:\n- Nunca incluyas contraseñas, tokens, claves de API, cadenas de conexión, hosts, puertos, usuarios de base de datos ni otras credenciales.\n- Los nombres de tablas, \"label\" y los nombres de columnas deben estar en snake_case ASCII, sin caracteres que no sean ASCII. Todas las tablas deben tener columnas y comenzar por la columna id que se muestra más abajo.\n- Usa únicamente tipos lógicos portables de SetFN: serial4, serial8, int2, int4, int8, integer, real, float4, float8, numeric, decimal, varchar, char, text, bool, json, timestamp, timestamptz, date, time, bytea, blob, uuid. Escribe solo el nombre del tipo y coloca la longitud en \"len\" (\"type\": \"varchar\", \"len\": 20); no escribas nunca \"varchar(20)\".\n- No generes expresiones de tipos nativas de una base de datos ni fragmentos SQL como enum(...), SET(...), unsigned dentro de una cadena de tipo, arrays, columnas generadas, cláusulas de motor o funciones predeterminadas específicas de un proveedor.\n- Si un campo tiene un conjunto fijo de valores, usa \"text\" y documenta los valores permitidos en \"cmt\". No inventes una propiedad enum.\n- No hagas público un endpoint salvo que el usuario solicite acceso público de forma explícita. Nunca hagas públicas de forma predeterminada las operaciones create, update o delete.\n- Configura de forma predeterminada el acceso autenticado en todas las tablas. Usa ownerOnly solo con una columna de propietario válida, como \"_user_id\".\n\nUsa los valores predeterminados canónicos con independencia del motor de despliegue.\n- Columnas de ID automático: \"auto_increment\"\n- Valores predeterminados de fecha y hora: \"now()\"\nEl servicio de despliegue convierte estos tipos lógicos y valores predeterminados al motor seleccionado.\n\nColumnas del sistema recomendadas:\n- \"_user_id\": ID del usuario propietario. Úsala en lugar de campos personalizados como \"user_id\" o \"author_id\" cuando el registro pertenezca al usuario que ha iniciado sesión.\n- \"_nick\": apodo del autor. Puede insertarse automáticamente a partir de los datos de la sesión, así que no crees otro campo de apodo duplicado salvo que sea realmente necesario.\n- \"_created_at\": fecha y hora de creación. Úsala en lugar de campos personalizados como \"created_at\".\n- \"_updated_at\": fecha y hora de actualización. Úsala en lugar de campos personalizados como \"updated_at\".\n- \"_deleted_at\": fecha y hora opcional de eliminación lógica. Inclúyela solo cuando sea necesaria la eliminación lógica.\n\nIndicaciones sobre las columnas del sistema:\n- Estas columnas son opcionales, pero debes preferirlas cuando encajen con el caso de uso.\n- Si la tabla necesita registrar al autor o propietario, usa preferentemente \"_user_id\" y, de forma opcional, \"_nick\".\n- Si la tabla necesita las fechas de creación y actualización, usa preferentemente \"_created_at\" y \"_updated_at\".\n- Evita generar columnas personalizadas duplicadas como \"user_id\", \"nick\", \"created_at\" o \"updated_at\" cuando puedan usarse las columnas del sistema correspondientes.\n- Puedes omitir las columnas del sistema si el esquema solicitado no las necesita claramente.\n\nContrato para juegos de tablero por turnos:\n- Aplícalo solo cuando el usuario solicite un juego de tablero por turnos, como un juego de alinear fichas.\n- Crea tres tablas portables cuyos nombres pueden adaptarse al juego del usuario: una tabla de partidas, una de movimientos y una de jugadores.\n- La tabla de partidas debe contener: id, room_code (único), status, black_user_id, white_user_id, current_turn, winner_user_id, result, move_count, board_size, win_length, black_time_ms, white_time_ms, turn_started_at, finish_reason, finished_at, _created_at, _updated_at.\n- La tabla de movimientos debe contener: id, game_id (indexado), move_no, user_id, stone, row, col, result, _created_at. Haz que (game_id, row, col) sea único cuando el formato del esquema lo permita.\n- La tabla de jugadores debe contener: id, user_id (único), nickname, wins, losses, draws, score, _updated_at.\n- Usa tipos lógicos y valores predeterminados portables. No añadas un campo eventProcessor a los datos de las tablas. Después de generar el esquema, el usuario conecta los nombres de estas tablas al procesador \"turn-based-board\" registrado en API Build > Feature connections.\n- No inventes identificadores de procesadores ni controladores de servidor específicos del juego.\n\nEstructura obligatoria:\n[\n  {\n    \"label\": \"users\",\n    \"table\": { \"name\": \"users\", \"cmt\": \"Miembros\" },\n    \"columns\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"serial4\",\n        \"notnull\": true,\n        \"primary\": true,\n        \"index\": false,\n        \"unique\": false,\n        \"default\": \"auto_increment\",\n        \"cmt\": \"PK\"\n      },\n      {\n        \"name\": \"_user_id\",\n        \"type\": \"int4\",\n        \"notnull\": true,\n        \"index\": true,\n        \"unique\": false,\n        \"default\": null,\n        \"cmt\": \"ID del propietario (insertado desde la sesión)\"\n      },\n      {\n        \"name\": \"_created_at\",\n        \"type\": \"timestamp\",\n        \"notnull\": false,\n        \"index\": false,\n        \"unique\": false,\n        \"default\": \"now()\",\n        \"cmt\": \"Fecha de creación\"\n      }\n    ],\n    \"permissions\": {\n      \"security\": { \"login\": true, \"ownerColumn\": \"_user_id\" },\n      \"ops\": {\n        \"list\": { \"login\": true },\n        \"view\": { \"login\": true },\n        \"create\": { \"login\": true },\n        \"update\": { \"login\": true, \"ownerOnly\": true },\n        \"delete\": { \"login\": true, \"roles\": [\"admin\"] }\n      }\n    }\n  }\n]\n\nLos valores \"cmt\" del ejemplo están en español para mostrar la estructura; sigue las reglas de idioma para los valores reales.\n\nDatos actuales:\n[]\n\n## Resultado\nResponde únicamente con el array JSON data en el formato anterior. Escribe en español los textos destinados a las personas, como descripciones, etiquetas e indicaciones.\n\n## Solicitud\n[Escriba aquí la solicitud para crear o modificar el esquema]\n","text","",[1173,1328,1324],{"__ignoreMap":1326},[1166,1330,1331],{},"El resultado de la AI es solo un borrador. Antes de desplegarlo, compruebe que los nombres sean comprensibles, que no se haya incluido información personal y qué personas deben poder consultar y modificar los datos.",[1254,1333,1335],{"id":1334},"_2-importar-sql","2. Importar SQL",[1166,1337,1338,1339,1217,1341,1344,1345,1348],{},"En ",[1173,1340,1304],{},[1173,1342,1343],{},"SQL",", puede pegar instrucciones ",[1173,1346,1347],{},"CREATE TABLE"," existentes. Los principales tipos, valores predeterminados, índices y restricciones de SQLite, PostgreSQL y MySQL/MariaDB se convierten a la estructura del archivo de esquema.",[1166,1350,1351,1352,1355],{},"Si ha abierto un archivo SQL en el espacio de trabajo, también puede usar ",[1173,1353,1354],{},"Convert to SetFN Schema",". Se aplican las mismas reglas de conversión en ambos casos.",[1357,1358,1359],"warning",{},[1166,1360,1361],{},"Los tipos, funciones, activadores, particiones y procedimientos almacenados específicos de una base de datos pueden no trasladarse directamente o cambiar de significado. Compruebe el resultado y las advertencias, y vuelva a validarlo con el motor que utilizará.",[1254,1363,1365],{"id":1364},"_3-crearlo-directamente-en-la-pantalla","3. Crearlo directamente en la pantalla",[1166,1367,1368],{},"En la pantalla de edición en forma de tabla puede añadir tablas y columnas una a una.",[1370,1371,1373],"h4",{"id":1372},"añadir-una-tabla","Añadir una tabla",[1166,1375,1376,1380,1381,1384],{},[1228,1377],{"alt":1378,"src":1379},"Añadir una tabla o columna","./_screenshots/schema-add-table-column_en.png","\nSeleccione ",[1173,1382,1383],{},"Add Table"," en la parte superior de la pantalla e introduzca la información de la tabla.",[1386,1387,1388,1401],"table",{},[1389,1390,1391],"thead",{},[1392,1393,1394,1398],"tr",{},[1395,1396,1397],"th",{},"Elemento",[1395,1399,1400],{},"Descripción",[1402,1403,1404,1413,1421],"tbody",{},[1392,1405,1406,1410],{},[1407,1408,1409],"td",{},"Table Name",[1407,1411,1412],{},"Nombre de la tabla, utilizado también en la dirección de la API, por ejemplo, user_profile.",[1392,1414,1415,1418],{},[1407,1416,1417],{},"Explain",[1407,1419,1420],{},"Descripción de la tabla comprensible para los usuarios.",[1392,1422,1423,1426],{},[1407,1424,1425],{},"Schema",[1407,1427,1428],{},"Nombre del esquema de la base de datos, por ejemplo, public.",[1370,1430,1432],{"id":1431},"añadir-una-columna","Añadir una columna",[1166,1434,1269,1435,1438,1439,1442,1443,1446],{},[1173,1436,1437],{},"Add"," y después ",[1173,1440,1441],{},"Add at Top"," o ",[1173,1444,1445],{},"Add at Bottom"," para añadir una fila nueva a la lista de columnas.\nCada fila corresponde a una columna.",[1166,1448,1449],{},"Puede configurar los siguientes elementos.",[1386,1451,1452,1463],{},[1389,1453,1454],{},[1392,1455,1456,1458,1460],{},[1395,1457,1397],{},[1395,1459,1400],{},[1395,1461,1462],{},"Ejemplo",[1402,1464,1465,1476,1487,1498,1509,1520,1531,1541,1551],{},[1392,1466,1467,1470,1473],{},[1407,1468,1469],{},"Column Name",[1407,1471,1472],{},"Nombre de la columna",[1407,1474,1475],{},"user_id, email",[1392,1477,1478,1481,1484],{},[1407,1479,1480],{},"Type",[1407,1482,1483],{},"Tipo de datos",[1407,1485,1486],{},"varchar, int, bool",[1392,1488,1489,1492,1495],{},[1407,1490,1491],{},"Length",[1407,1493,1494],{},"Longitud de los datos",[1407,1496,1497],{},"255",[1392,1499,1500,1503,1506],{},[1407,1501,1502],{},"Comment",[1407,1504,1505],{},"Descripción de la columna",[1407,1507,1508],{},"Nombre de usuario",[1392,1510,1511,1514,1517],{},[1407,1512,1513],{},"Default",[1407,1515,1516],{},"Valor predeterminado",[1407,1518,1519],{},"auto_increment, NULL",[1392,1521,1522,1525,1528],{},[1407,1523,1524],{},"Unsigned",[1407,1526,1527],{},"Indica si solo se admiten números positivos.",[1407,1529,1530],{},"-",[1392,1532,1533,1536,1539],{},[1407,1534,1535],{},"Index",[1407,1537,1538],{},"Indica si se crea un índice.",[1407,1540,1530],{},[1392,1542,1543,1546,1549],{},[1407,1544,1545],{},"Unique",[1407,1547,1548],{},"Indica si el valor debe ser único.",[1407,1550,1530],{},[1392,1552,1553,1556,1559],{},[1407,1554,1555],{},"Not null",[1407,1557,1558],{},"Indica si el campo es obligatorio.",[1407,1560,1530],{},[1166,1562,1563,1564,1567,1568,1571,1572,1575,1576,1224],{},"En el menú ",[1173,1565,1566],{},"System Columns",", puede seleccionar columnas habituales para registrar el usuario y la hora, como ",[1173,1569,1570],{},"_user_id",", ",[1173,1573,1574],{},"_nick"," y ",[1173,1577,1578],{},"_created_at",[1370,1580,1582],{"id":1581},"copiar-y-eliminar-una-columna","Copiar y eliminar una columna",[1166,1584,1585],{},"Haga clic con el botón derecho en una columna para mostrar el menú contextual.",[1587,1588,1589,1605],"ul",{},[1189,1590,1591,1592,1571,1595,1571,1598,1442,1601,1604],{},"Copiar y añadir: seleccione ",[1173,1593,1594],{},"Copy and Add Above",[1173,1596,1597],{},"Copy and Add Below",[1173,1599,1600],{},"Copy and Add to Top",[1173,1602,1603],{},"Copy and Add to Bottom"," para añadir una columna con las mismas propiedades.",[1189,1606,1607,1610],{},[1173,1608,1609],{},"Delete row",": elimina la columna seleccionada.",[1254,1612,1614],{"id":1613},"_4-editar-como-json","4. Editar como JSON",[1166,1616,1617,1380,1621,1624],{},[1228,1618],{"alt":1619,"src":1620},"Editor de esquemas","./_screenshots/schema-editor_en.png",[1173,1622,1623],{},"Editor"," en la esquina superior derecha para escribir toda la estructura como JSON. El JSON y la tabla utilizan el mismo contenido, por lo que puede alternar entre ambos métodos.",[1166,1626,1627],{},"El siguiente ejemplo es un perfil de usuario sencillo que almacena una dirección de correo.",[1320,1629,1633],{"className":1630,"code":1631,"language":1632,"meta":1326,"style":1326},"language-json shiki shiki-themes github-light github-dark monokai","{\n  \"content-type\": \"application/setfn-schema\",\n  \"dbType\": \"sqlite3\",\n  \"data\": [\n    {\n      \"table\": { \"name\": \"user_profile\", \"schema\": \"public\" },\n      \"columns\": [\n        {\n          \"name\": \"email\",\n          \"type\": \"varchar\",\n          \"len\": 255,\n          \"unique\": true,\n          \"notnull\": true\n        }\n      ],\n      \"label\": \"사용자 프로필\"\n    }\n  ]\n}\n","json",[1173,1634,1635,1644,1661,1674,1683,1689,1719,1727,1733,1746,1759,1772,1785,1796,1802,1808,1819,1825,1831],{"__ignoreMap":1326},[1636,1637,1640],"span",{"class":1638,"line":1639},"line",1,[1636,1641,1643],{"class":1642},"sMOD_","{\n",[1636,1645,1647,1651,1654,1658],{"class":1638,"line":1646},2,[1636,1648,1650],{"class":1649},"s-m8C","  \"content-type\"",[1636,1652,1653],{"class":1642},": ",[1636,1655,1657],{"class":1656},"sCZoN","\"application/setfn-schema\"",[1636,1659,1660],{"class":1642},",\n",[1636,1662,1664,1667,1669,1672],{"class":1638,"line":1663},3,[1636,1665,1666],{"class":1649},"  \"dbType\"",[1636,1668,1653],{"class":1642},[1636,1670,1671],{"class":1656},"\"sqlite3\"",[1636,1673,1660],{"class":1642},[1636,1675,1677,1680],{"class":1638,"line":1676},4,[1636,1678,1679],{"class":1649},"  \"data\"",[1636,1681,1682],{"class":1642},": [\n",[1636,1684,1686],{"class":1638,"line":1685},5,[1636,1687,1688],{"class":1642},"    {\n",[1636,1690,1692,1695,1698,1701,1703,1706,1708,1711,1713,1716],{"class":1638,"line":1691},6,[1636,1693,1694],{"class":1649},"      \"table\"",[1636,1696,1697],{"class":1642},": { ",[1636,1699,1700],{"class":1649},"\"name\"",[1636,1702,1653],{"class":1642},[1636,1704,1705],{"class":1656},"\"user_profile\"",[1636,1707,1571],{"class":1642},[1636,1709,1710],{"class":1649},"\"schema\"",[1636,1712,1653],{"class":1642},[1636,1714,1715],{"class":1656},"\"public\"",[1636,1717,1718],{"class":1642}," },\n",[1636,1720,1722,1725],{"class":1638,"line":1721},7,[1636,1723,1724],{"class":1649},"      \"columns\"",[1636,1726,1682],{"class":1642},[1636,1728,1730],{"class":1638,"line":1729},8,[1636,1731,1732],{"class":1642},"        {\n",[1636,1734,1736,1739,1741,1744],{"class":1638,"line":1735},9,[1636,1737,1738],{"class":1649},"          \"name\"",[1636,1740,1653],{"class":1642},[1636,1742,1743],{"class":1656},"\"email\"",[1636,1745,1660],{"class":1642},[1636,1747,1749,1752,1754,1757],{"class":1638,"line":1748},10,[1636,1750,1751],{"class":1649},"          \"type\"",[1636,1753,1653],{"class":1642},[1636,1755,1756],{"class":1656},"\"varchar\"",[1636,1758,1660],{"class":1642},[1636,1760,1762,1765,1767,1770],{"class":1638,"line":1761},11,[1636,1763,1764],{"class":1649},"          \"len\"",[1636,1766,1653],{"class":1642},[1636,1768,1497],{"class":1769},"s7F3e",[1636,1771,1660],{"class":1642},[1636,1773,1775,1778,1780,1783],{"class":1638,"line":1774},12,[1636,1776,1777],{"class":1649},"          \"unique\"",[1636,1779,1653],{"class":1642},[1636,1781,1782],{"class":1769},"true",[1636,1784,1660],{"class":1642},[1636,1786,1788,1791,1793],{"class":1638,"line":1787},13,[1636,1789,1790],{"class":1649},"          \"notnull\"",[1636,1792,1653],{"class":1642},[1636,1794,1795],{"class":1769},"true\n",[1636,1797,1799],{"class":1638,"line":1798},14,[1636,1800,1801],{"class":1642},"        }\n",[1636,1803,1805],{"class":1638,"line":1804},15,[1636,1806,1807],{"class":1642},"      ],\n",[1636,1809,1811,1814,1816],{"class":1638,"line":1810},16,[1636,1812,1813],{"class":1649},"      \"label\"",[1636,1815,1653],{"class":1642},[1636,1817,1818],{"class":1656},"\"사용자 프로필\"\n",[1636,1820,1822],{"class":1638,"line":1821},17,[1636,1823,1824],{"class":1642},"    }\n",[1636,1826,1828],{"class":1638,"line":1827},18,[1636,1829,1830],{"class":1642},"  ]\n",[1636,1832,1834],{"class":1638,"line":1833},19,[1636,1835,1836],{"class":1642},"}\n",[1166,1838,1839,1842,1843,1224],{},[1173,1840,1841],{},"dbType"," sirve para mantener la compatibilidad con archivos existentes y no determina el motor de ejecución real. El motor final y la información de conexión se definen en el paso de almacenamiento de ",[1173,1844,1175],{},[1181,1846,1848],{"id":1847},"los-permisos-de-api-son-tan-importantes-como-los-datos","Los permisos de API son tan importantes como los datos",[1166,1850,1851],{},"En cada API puede definir si se exige iniciar sesión, el nivel mínimo, los administradores, los equipos y si solo se permiten los datos del propio autor.",[1587,1853,1854,1857,1860,1863],{},[1189,1855,1856],{},"Si una consulta de lista contiene información personal, no utilice permisos públicos.",[1189,1858,1859],{},"En los datos por usuario, indique la columna que identifica al propietario.",[1189,1861,1862],{},"Empiece con permisos de modificación y eliminación más restrictivos que los de consulta.",[1189,1864,1865],{},"Compruebe que el resumen de permisos de la pantalla muestre todas las condiciones previstas.",[1181,1867,1869],{"id":1868},"después-de-guardar","Después de guardar",[1166,1871,1872,1873,1876,1877,1879],{},"Guarde el archivo mediante el botón de la esquina superior izquierda o ",[1173,1874,1875],{},"Ctrl+S",". A continuación, compruebe los endpoints y permisos en ",[1173,1878,1175],{}," y realice el despliegue en una base de datos real.",[1166,1881,1882],{},"Cuando termine, registre un pequeño dato. Desde el momento en que la estructura creada aparezca en una respuesta de la API, el archivo de esquema dejará de ser un simple documento para convertirse en un servicio en funcionamiento.",[1181,1884,1886],{"id":1885},"información-útil","Información útil",[1587,1888,1889,1892,1895],{},[1189,1890,1891],{},"Use solo letras inglesas minúsculas, números y guiones bajos (_) en los nombres de tablas y columnas.",[1189,1893,1894],{},"Si hay muchas columnas, use la edición JSON o la importación de SQL.",[1189,1896,1897],{},"Según la política del administrador, puede estar prohibido sobrescribir un esquema que ya contenga datos o permitirse únicamente a administradores y responsables del despliegue.",[1181,1899,1901],{"id":1900},"siguiente-paso","Siguiente paso",[1166,1903,1904,1905,1907],{},"Consulte el motor de almacenamiento y los endpoints en ",[1242,1906,796],{"href":1244},", y ejecute su primera API.",[1181,1909,1911],{"id":1910},"documentos-relacionados","Documentos relacionados",[1587,1913,1914,1919,1923,1928],{},[1189,1915,1916],{},[1242,1917,882],{"href":1918},"./examples/realtime-gomoku",[1189,1920,1921],{},[1242,1922,796],{"href":1244},[1189,1924,1925],{},[1242,1926,817],{"href":1927},"./sql-converter",[1189,1929,1930],{},[1242,1931,801],{"href":1932},"./frontend-example",[1934,1935,1936],"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 pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}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":1326,"searchDepth":1646,"depth":1663,"links":1938},[1939,1940,1941,1951,1952,1953,1954,1955],{"id":1183,"depth":1646,"text":1184},{"id":1209,"depth":1646,"text":1210},{"id":1248,"depth":1646,"text":1249,"children":1942},[1943,1944,1945,1950],{"id":1256,"depth":1663,"text":1257},{"id":1334,"depth":1663,"text":1335},{"id":1364,"depth":1663,"text":1365,"children":1946},[1947,1948,1949],{"id":1372,"depth":1676,"text":1373},{"id":1431,"depth":1676,"text":1432},{"id":1581,"depth":1676,"text":1582},{"id":1613,"depth":1663,"text":1614},{"id":1847,"depth":1646,"text":1848},{"id":1868,"depth":1646,"text":1869},{"id":1885,"depth":1646,"text":1886},{"id":1900,"depth":1646,"text":1901},{"id":1910,"depth":1646,"text":1911},"Se explica cómo diseñar la estructura de datos y los permisos de API en un archivo de esquema (.sfn) y desplegarlo como servicio de Webspace.","md",{},true,{"title":1961,"description":1962,"ogType":1963,"twitterCard":1964,"keywords":1965},"Crear un archivo de esquema (.sfn) | Webspace Docs","Aprenda a crear un archivo de esquema para Webspace mediante AI, la importación de SQL y la pantalla de edición.","article","summary_large_image",[1210,1966,1967,1968,1969,1970,1971],"API","AI","DB","Creación de un archivo de esquema","Esquema mediante AI","Importación de SQL","fEoBpA6iE4iT6FdK8GpAA8YZTFRV1HbKK_kzh21jilA",[1974,1975],{"title":786,"path":787,"stem":788,"slug":789,"children":-1},{"title":796,"path":797,"stem":798,"slug":799,"children":-1},{"title":791,"filename":1977,"content":1978},"create-database","# Crear un archivo de esquema (.sfn)\n\nWebspace empieza con un pequeño archivo. Al definir los datos y los permisos en un archivo de esquema (.sfn) y desplegarlo, se preparan conjuntamente la base de datos y las API. Después podrá crear un servicio en el que el contenido introducido en la pantalla se guarde y aparezca en tiempo real en las pantallas de otros usuarios.\n\nEl archivo de esquema es el plano del servicio. Guardarlo no modifica la base de datos real; debe desplegarlo en `API Build` para aplicarlo al entorno de ejecución.\n\n---\n\n## Flujo de creación\n\n1. Cree un archivo de esquema.\n2. Configure las tablas y columnas.\n3. Compruebe los permisos de acceso de cada API.\n4. Seleccione un motor de almacenamiento y realice el despliegue.\n5. Invoque las API generadas desde HTML o una aplicación.\n\nNo necesita completar todo desde el principio. La forma más sencilla de comprenderlo es empezar con una tabla pequeña, introducir datos desde una pantalla real y ampliar después la estructura y los permisos.\n\n## Crear un archivo de esquema\n\nEn el espacio de trabajo, seleccione `Create` > `Template Files` > `New Schema DB`.\n\n![Crear un archivo de esquema](./_screenshots/new-schema_en.png)\n\nIntroduzca un nombre y guarde para crear el archivo.\n![Archivo de esquema](./_screenshots/schema-file-first_en.png)\n\nEn este paso no se elige un motor de base de datos. Cree primero la estructura y seleccione SQLite3, PostgreSQL, MySQL o MariaDB como motor de almacenamiento real durante el [despliegue](./24.api-overview.md).\n\n## Crear la estructura de datos\n\nPuede crearla desde cero o preparar un borrador con AI y perfeccionarlo. Si ya dispone de SQL, también puede importarlo.\n\n### 1. Crear un borrador con AI\n\nNo necesita conocer todos los términos de las tablas. Describa qué información desea gestionar y con quién, y la AI creará una estructura inicial.\n![Crear un borrador de esquema con AI](./_screenshots/schema-file-ai-copy-button_en.png)\n\n1. Seleccione `Copy AI prompt`.\n2. Pegue el prompt copiado en la ventana de chat del servicio de AI que utilice.\n   ![Pegar el prompt en la AI](./_screenshots/schema-paste-to-ai.png)\n3. Debajo de `## Request`, al final de las instrucciones, describa el servicio que desea crear.\n\n   > Ejemplo: gestione el nombre de la patente, el número de solicitud, la persona responsable y el estado, y permita que solo la persona responsable y los administradores lo modifiquen.\n\n4. Copie el JSON creado por la AI y péguelo en la pantalla de importación.\n   ![Importar un esquema](./_screenshots/schema-load.png)\n5. Seleccione `Import` para crear la estructura de tablas en el esquema, como se muestra a continuación.\n   ![Ejemplo de esquema](./_screenshots/schema-example_en.png)\n\nLas instrucciones copiadas incluyen el formato y las reglas de escritura del archivo de esquema. Priorizan una estructura válida para varios motores de almacenamiento frente a SQL específico de una base de datos.\n\nEl botón `Copy AI prompt` copia instrucciones para generar el esquema. El siguiente ejemplo muestra el formato para un esquema vacío con el motor SQLite, con las instrucciones de idioma adaptadas para obtener comentarios en español. El prompt que copia el producto depende del esquema, del motor y del idioma de la interfaz actuales; puede ajustar manualmente sus instrucciones de idioma. Empiece con este prompt en lugar de escribir el archivo manualmente.\n\n```text\nEres un asistente para diseñar esquemas de bases de datos.\nDevuelve únicamente JSON válido.\nNo añadas explicaciones.\nNo encierres la respuesta en bloques de código Markdown.\nDevuelve solo el array data de un archivo de esquema de SetFN.\nNo incluyas content-type, dbType ni apiBuild.\nMotor de despliegue actual: SQLite.\nEl motor de almacenamiento forma parte de la configuración del despliegue, no de la sintaxis del esquema. Mantén el esquema compatible con SQLite, PostgreSQL, MySQL y MariaDB.\n\n## Idioma\n- Los identificadores deben estar en inglés y usar ASCII: \"label\" y los nombres de tablas y columnas deben escribirse en snake_case inglés; las claves JSON, los tipos y los valores predeterminados deben conservarse exactamente como se muestran.\n- Escribe en español las cadenas destinadas a las personas: todos los valores \"cmt\", incluidos los comentarios de tablas y columnas y la descripción de los valores permitidos.\n- La solicitud del usuario que aparece más abajo puede estar escrita en español. Interprétala como requisitos; no traduzcas los identificadores a ese idioma.\n- El estado actual que aparece más abajo son datos y puede contener texto en cualquier idioma. Conserva exactamente los nombres y las claves existentes.\n\nReglas de seguridad y portabilidad:\n- Nunca incluyas contraseñas, tokens, claves de API, cadenas de conexión, hosts, puertos, usuarios de base de datos ni otras credenciales.\n- Los nombres de tablas, \"label\" y los nombres de columnas deben estar en snake_case ASCII, sin caracteres que no sean ASCII. Todas las tablas deben tener columnas y comenzar por la columna id que se muestra más abajo.\n- Usa únicamente tipos lógicos portables de SetFN: serial4, serial8, int2, int4, int8, integer, real, float4, float8, numeric, decimal, varchar, char, text, bool, json, timestamp, timestamptz, date, time, bytea, blob, uuid. Escribe solo el nombre del tipo y coloca la longitud en \"len\" (\"type\": \"varchar\", \"len\": 20); no escribas nunca \"varchar(20)\".\n- No generes expresiones de tipos nativas de una base de datos ni fragmentos SQL como enum(...), SET(...), unsigned dentro de una cadena de tipo, arrays, columnas generadas, cláusulas de motor o funciones predeterminadas específicas de un proveedor.\n- Si un campo tiene un conjunto fijo de valores, usa \"text\" y documenta los valores permitidos en \"cmt\". No inventes una propiedad enum.\n- No hagas público un endpoint salvo que el usuario solicite acceso público de forma explícita. Nunca hagas públicas de forma predeterminada las operaciones create, update o delete.\n- Configura de forma predeterminada el acceso autenticado en todas las tablas. Usa ownerOnly solo con una columna de propietario válida, como \"_user_id\".\n\nUsa los valores predeterminados canónicos con independencia del motor de despliegue.\n- Columnas de ID automático: \"auto_increment\"\n- Valores predeterminados de fecha y hora: \"now()\"\nEl servicio de despliegue convierte estos tipos lógicos y valores predeterminados al motor seleccionado.\n\nColumnas del sistema recomendadas:\n- \"_user_id\": ID del usuario propietario. Úsala en lugar de campos personalizados como \"user_id\" o \"author_id\" cuando el registro pertenezca al usuario que ha iniciado sesión.\n- \"_nick\": apodo del autor. Puede insertarse automáticamente a partir de los datos de la sesión, así que no crees otro campo de apodo duplicado salvo que sea realmente necesario.\n- \"_created_at\": fecha y hora de creación. Úsala en lugar de campos personalizados como \"created_at\".\n- \"_updated_at\": fecha y hora de actualización. Úsala en lugar de campos personalizados como \"updated_at\".\n- \"_deleted_at\": fecha y hora opcional de eliminación lógica. Inclúyela solo cuando sea necesaria la eliminación lógica.\n\nIndicaciones sobre las columnas del sistema:\n- Estas columnas son opcionales, pero debes preferirlas cuando encajen con el caso de uso.\n- Si la tabla necesita registrar al autor o propietario, usa preferentemente \"_user_id\" y, de forma opcional, \"_nick\".\n- Si la tabla necesita las fechas de creación y actualización, usa preferentemente \"_created_at\" y \"_updated_at\".\n- Evita generar columnas personalizadas duplicadas como \"user_id\", \"nick\", \"created_at\" o \"updated_at\" cuando puedan usarse las columnas del sistema correspondientes.\n- Puedes omitir las columnas del sistema si el esquema solicitado no las necesita claramente.\n\nContrato para juegos de tablero por turnos:\n- Aplícalo solo cuando el usuario solicite un juego de tablero por turnos, como un juego de alinear fichas.\n- Crea tres tablas portables cuyos nombres pueden adaptarse al juego del usuario: una tabla de partidas, una de movimientos y una de jugadores.\n- La tabla de partidas debe contener: id, room_code (único), status, black_user_id, white_user_id, current_turn, winner_user_id, result, move_count, board_size, win_length, black_time_ms, white_time_ms, turn_started_at, finish_reason, finished_at, _created_at, _updated_at.\n- La tabla de movimientos debe contener: id, game_id (indexado), move_no, user_id, stone, row, col, result, _created_at. Haz que (game_id, row, col) sea único cuando el formato del esquema lo permita.\n- La tabla de jugadores debe contener: id, user_id (único), nickname, wins, losses, draws, score, _updated_at.\n- Usa tipos lógicos y valores predeterminados portables. No añadas un campo eventProcessor a los datos de las tablas. Después de generar el esquema, el usuario conecta los nombres de estas tablas al procesador \"turn-based-board\" registrado en API Build > Feature connections.\n- No inventes identificadores de procesadores ni controladores de servidor específicos del juego.\n\nEstructura obligatoria:\n[\n  {\n    \"label\": \"users\",\n    \"table\": { \"name\": \"users\", \"cmt\": \"Miembros\" },\n    \"columns\": [\n      {\n        \"name\": \"id\",\n        \"type\": \"serial4\",\n        \"notnull\": true,\n        \"primary\": true,\n        \"index\": false,\n        \"unique\": false,\n        \"default\": \"auto_increment\",\n        \"cmt\": \"PK\"\n      },\n      {\n        \"name\": \"_user_id\",\n        \"type\": \"int4\",\n        \"notnull\": true,\n        \"index\": true,\n        \"unique\": false,\n        \"default\": null,\n        \"cmt\": \"ID del propietario (insertado desde la sesión)\"\n      },\n      {\n        \"name\": \"_created_at\",\n        \"type\": \"timestamp\",\n        \"notnull\": false,\n        \"index\": false,\n        \"unique\": false,\n        \"default\": \"now()\",\n        \"cmt\": \"Fecha de creación\"\n      }\n    ],\n    \"permissions\": {\n      \"security\": { \"login\": true, \"ownerColumn\": \"_user_id\" },\n      \"ops\": {\n        \"list\": { \"login\": true },\n        \"view\": { \"login\": true },\n        \"create\": { \"login\": true },\n        \"update\": { \"login\": true, \"ownerOnly\": true },\n        \"delete\": { \"login\": true, \"roles\": [\"admin\"] }\n      }\n    }\n  }\n]\n\nLos valores \"cmt\" del ejemplo están en español para mostrar la estructura; sigue las reglas de idioma para los valores reales.\n\nDatos actuales:\n[]\n\n## Resultado\nResponde únicamente con el array JSON data en el formato anterior. Escribe en español los textos destinados a las personas, como descripciones, etiquetas e indicaciones.\n\n## Solicitud\n[Escriba aquí la solicitud para crear o modificar el esquema]\n```\n\nEl resultado de la AI es solo un borrador. Antes de desplegarlo, compruebe que los nombres sean comprensibles, que no se haya incluido información personal y qué personas deben poder consultar y modificar los datos.\n\n### 2. Importar SQL\n\nEn `Import` > `SQL`, puede pegar instrucciones `CREATE TABLE` existentes. Los principales tipos, valores predeterminados, índices y restricciones de SQLite, PostgreSQL y MySQL/MariaDB se convierten a la estructura del archivo de esquema.\n\nSi ha abierto un archivo SQL en el espacio de trabajo, también puede usar `Convert to SetFN Schema`. Se aplican las mismas reglas de conversión en ambos casos.\n\n::warning\nLos tipos, funciones, activadores, particiones y procedimientos almacenados específicos de una base de datos pueden no trasladarse directamente o cambiar de significado. Compruebe el resultado y las advertencias, y vuelva a validarlo con el motor que utilizará.\n::\n\n### 3. Crearlo directamente en la pantalla\n\nEn la pantalla de edición en forma de tabla puede añadir tablas y columnas una a una.\n\n#### Añadir una tabla\n\n![Añadir una tabla o columna](./_screenshots/schema-add-table-column_en.png)\nSeleccione `Add Table` en la parte superior de la pantalla e introduzca la información de la tabla.\n\n| Elemento | Descripción |\n| ---------- | ---------------------------------------------------- |\n| Table Name | Nombre de la tabla, utilizado también en la dirección de la API, por ejemplo, user_profile. |\n| Explain | Descripción de la tabla comprensible para los usuarios. |\n| Schema | Nombre del esquema de la base de datos, por ejemplo, public. |\n\n#### Añadir una columna\n\nSeleccione `Add` y después `Add at Top` o `Add at Bottom` para añadir una fila nueva a la lista de columnas.\nCada fila corresponde a una columna.\n\nPuede configurar los siguientes elementos.\n\n| Elemento | Descripción | Ejemplo |\n| ----------- | ---------------- | -------------------- |\n| Column Name | Nombre de la columna | user_id, email |\n| Type | Tipo de datos | varchar, int, bool |\n| Length | Longitud de los datos | 255 |\n| Comment | Descripción de la columna | Nombre de usuario |\n| Default | Valor predeterminado | auto_increment, NULL |\n| Unsigned | Indica si solo se admiten números positivos. | - |\n| Index | Indica si se crea un índice. | - |\n| Unique | Indica si el valor debe ser único. | - |\n| Not null | Indica si el campo es obligatorio. | - |\n\nEn el menú `System Columns`, puede seleccionar columnas habituales para registrar el usuario y la hora, como `_user_id`, `_nick` y `_created_at`.\n\n#### Copiar y eliminar una columna\n\nHaga clic con el botón derecho en una columna para mostrar el menú contextual.\n\n- Copiar y añadir: seleccione `Copy and Add Above`, `Copy and Add Below`, `Copy and Add to Top` o `Copy and Add to Bottom` para añadir una columna con las mismas propiedades.\n- `Delete row`: elimina la columna seleccionada.\n\n### 4. Editar como JSON\n\n![Editor de esquemas](./_screenshots/schema-editor_en.png)\nSeleccione `Editor` en la esquina superior derecha para escribir toda la estructura como JSON. El JSON y la tabla utilizan el mismo contenido, por lo que puede alternar entre ambos métodos.\n\nEl siguiente ejemplo es un perfil de usuario sencillo que almacena una dirección de correo.\n\n```json\n{\n  \"content-type\": \"application/setfn-schema\",\n  \"dbType\": \"sqlite3\",\n  \"data\": [\n    {\n      \"table\": { \"name\": \"user_profile\", \"schema\": \"public\" },\n      \"columns\": [\n        {\n          \"name\": \"email\",\n          \"type\": \"varchar\",\n          \"len\": 255,\n          \"unique\": true,\n          \"notnull\": true\n        }\n      ],\n      \"label\": \"사용자 프로필\"\n    }\n  ]\n}\n```\n\n`dbType` sirve para mantener la compatibilidad con archivos existentes y no determina el motor de ejecución real. El motor final y la información de conexión se definen en el paso de almacenamiento de `API Build`.\n\n## Los permisos de API son tan importantes como los datos\n\nEn cada API puede definir si se exige iniciar sesión, el nivel mínimo, los administradores, los equipos y si solo se permiten los datos del propio autor.\n\n- Si una consulta de lista contiene información personal, no utilice permisos públicos.\n- En los datos por usuario, indique la columna que identifica al propietario.\n- Empiece con permisos de modificación y eliminación más restrictivos que los de consulta.\n- Compruebe que el resumen de permisos de la pantalla muestre todas las condiciones previstas.\n\n## Después de guardar\n\nGuarde el archivo mediante el botón de la esquina superior izquierda o `Ctrl+S`. A continuación, compruebe los endpoints y permisos en `API Build` y realice el despliegue en una base de datos real.\n\nCuando termine, registre un pequeño dato. Desde el momento en que la estructura creada aparezca en una respuesta de la API, el archivo de esquema dejará de ser un simple documento para convertirse en un servicio en funcionamiento.\n\n## Información útil\n\n- Use solo letras inglesas minúsculas, números y guiones bajos (\\_) en los nombres de tablas y columnas.\n- Si hay muchas columnas, use la edición JSON o la importación de SQL.\n- Según la política del administrador, puede estar prohibido sobrescribir un esquema que ya contenga datos o permitirse únicamente a administradores y responsables del despliegue.\n\n## Siguiente paso\n\nConsulte el motor de almacenamiento y los endpoints en [Crear API y desplegar una base de datos](./24.api-overview.md), y ejecute su primera API.\n\n## Documentos relacionados\n\n- [Crear un juego de Gomoku en tiempo real](./60.examples/20.realtime-gomoku.md)\n- [Crear API y desplegar una base de datos](./24.api-overview.md)\n- [Importar y exportar SQL](./42.sql-converter.md)\n- [Consultar el ejemplo de frontend](./26.frontend-example.md)\n",1793056600153]