[{"data":1,"prerenderedAt":1823},["ShallowReactive",2],{"nav-docs":3,"page-/docs/workspace/folder/webhook":880,"surround-/docs/workspace/folder/webhook":1817,"raw-/docs/workspace/folder/webhook":1820},[4,56,226,546,634,773,806,863],{"title":5,"path":6,"stem":7,"children":8,"page":55},"Space Builder","/getting-started","00.getting-started",[9,13,17,23,29,33,38,42,46,50],{"title":10,"path":11,"stem":12,"children":-1},"Introducing SpaceBuilder","/getting-started/overview","00.getting-started/00.overview",{"title":14,"path":15,"stem":16,"children":-1},"Create a SetFN Account","/getting-started/create-setfn-account","00.getting-started/05.create-setfn-account",{"title":18,"path":19,"stem":20,"tags":21,"children":-1},"Installing on Linux","/getting-started/install-linux","00.getting-started/10.install-linux",[22],"recommended",{"title":24,"path":25,"stem":26,"tags":27,"children":-1},"Installing with Docker","/getting-started/install-docker","00.getting-started/12.install-docker",[28],"preparing",{"title":30,"path":31,"stem":32,"children":-1},"Installing on Windows","/getting-started/install-windows","00.getting-started/14.install-windows",{"title":34,"path":35,"stem":36,"tags":37,"children":-1},"Installing on macOS","/getting-started/install-macos","00.getting-started/16.install-macos",[28],{"title":39,"path":40,"stem":41,"children":-1},"Initial Setup","/getting-started/initial-setup","00.getting-started/20.initial-setup",{"title":43,"path":44,"stem":45,"children":-1},"License Activation","/getting-started/license-activation","00.getting-started/30.license-activation",{"title":47,"path":48,"stem":49,"children":-1},"Checking Your Access Address (Local/Internal Network)","/getting-started/access-url","00.getting-started/35.access-url",{"title":51,"path":52,"stem":53,"tags":54,"children":-1},"Choosing an External Access Method","/getting-started/access-domain","00.getting-started/40.access-domain",[22],false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Space management","/admin","10.admin",[61,74,107,136,171,184,209],{"title":62,"path":63,"stem":64,"children":65,"page":55},"Admin Home","/admin/home","10.admin/00.home",[66,70],{"title":67,"path":68,"stem":69,"children":-1},"Accessing the Admin Page","/admin/home/admin-page-access","10.admin/00.home/00.admin-page-access",{"title":71,"path":72,"stem":73,"children":-1},"License Management","/admin/home/license","10.admin/00.home/20.license",{"title":75,"path":76,"stem":77,"children":78,"page":55},"User management","/admin/user-management","10.admin/10.user-management",[79,83,87,91,95,99,103],{"title":80,"path":81,"stem":82,"children":-1},"Setting Signup Policy and Default Permissions","/admin/user-management/signup-policy","10.admin/10.user-management/02.signup-policy",{"title":84,"path":85,"stem":86,"children":-1},"Creating a User Account","/admin/user-management/invite-new-member","10.admin/10.user-management/10.invite-new-member",{"title":88,"path":89,"stem":90,"children":-1},"Editing a User Account","/admin/user-management/edit-member","10.admin/10.user-management/11.edit-member",{"title":92,"path":93,"stem":94,"children":-1},"Adding an Admin","/admin/user-management/add-new-admin","10.admin/10.user-management/12.add-new-admin",{"title":96,"path":97,"stem":98,"children":-1},"Team Management","/admin/user-management/team","10.admin/10.user-management/22.team",{"title":100,"path":101,"stem":102,"children":-1},"Level Management","/admin/user-management/level","10.admin/10.user-management/24.level",{"title":104,"path":105,"stem":106,"children":-1},"Checking Access Logs","/admin/user-management/access-log","10.admin/10.user-management/30.access-log",{"title":108,"path":109,"stem":110,"children":111,"page":55},"Service Configuration","/admin/service-config","10.admin/20.service-config",[112,116,120,124,128,132],{"title":113,"path":114,"stem":115,"children":-1},"File Area Settings","/admin/service-config/file-area","10.admin/20.service-config/10.file-area",{"title":117,"path":118,"stem":119,"children":-1},"Webhook Settings","/admin/service-config/webhook-settings","10.admin/20.service-config/16.webhook-settings",{"title":121,"path":122,"stem":123,"children":-1},"Community Settings","/admin/service-config/community-space","10.admin/20.service-config/22.community-space",{"title":125,"path":126,"stem":127,"children":-1},"AI Chatbot Policy Settings","/admin/service-config/community-ai-chatbot","10.admin/20.service-config/24.community-ai-chatbot",{"title":129,"path":130,"stem":131,"children":-1},"Email Settings","/admin/service-config/email-settings","10.admin/20.service-config/30.email-settings",{"title":133,"path":134,"stem":135,"children":-1},"Branding Settings","/admin/service-config/brand","10.admin/20.service-config/40.brand",{"title":137,"path":138,"stem":139,"children":140,"page":55},"Intelligent Service (AI)","/admin/ai","10.admin/30.ai",[141,145,149,153,159,163,167],{"title":142,"path":143,"stem":144,"children":-1},"AI Model Settings","/admin/ai/ai-model-setting","10.admin/30.ai/10.ai-model-setting",{"title":146,"path":147,"stem":148,"children":-1},"AI DB Settings","/admin/ai/ai-db-setting","10.admin/30.ai/20.ai-db-setting",{"title":150,"path":151,"stem":152,"children":-1},"Setting Up a Qdrant Server","/admin/ai/qdrant-server-setup","10.admin/30.ai/25.qdrant-server-setup",{"title":154,"path":155,"stem":156,"children":157},"Knowledge Indexing","/admin/ai/knowledge-indexing","10.admin/30.ai/30.knowledge-indexing",[158],{"title":154,"path":155,"stem":156,"children":-1},{"title":160,"path":161,"stem":162,"children":-1},"AI Integration and Policy Settings","/admin/ai/ai-link","10.admin/30.ai/40.ai-link",{"title":164,"path":165,"stem":166,"children":-1},"MCP Server Management","/admin/ai/mcp-server","10.admin/30.ai/50.mcp-server",{"title":168,"path":169,"stem":170,"children":-1},"Search Management","/admin/ai/search-management","10.admin/30.ai/60.search-management",{"title":172,"path":173,"stem":174,"children":175,"page":55},"plugin","/admin/plugin","10.admin/40.plugin",[176,180],{"title":177,"path":178,"stem":179,"children":-1},"Managing Plugins","/admin/plugin/overview","10.admin/40.plugin/00.overview",{"title":181,"path":182,"stem":183,"children":-1},"Extension Plugin Settings","/admin/plugin/settings","10.admin/40.plugin/10.settings",{"title":185,"path":186,"stem":187,"children":188,"page":55},"Security Management","/admin/security","10.admin/50.security",[189,193,197,201,205],{"title":190,"path":191,"stem":192,"children":-1},"Security Overview","/admin/security/overview","10.admin/50.security/00.overview",{"title":194,"path":195,"stem":196,"children":-1},"Checking the Audit Log","/admin/security/audit-log","10.admin/50.security/05.audit-log",{"title":198,"path":199,"stem":200,"children":-1},"Block Management","/admin/security/block-management","10.admin/50.security/10.block-management",{"title":202,"path":203,"stem":204,"children":-1},"Security Settings","/admin/security/security-setting","10.admin/50.security/12.security-setting",{"title":206,"path":207,"stem":208,"children":-1},"IP Access Restriction","/admin/security/ip-restriction","10.admin/50.security/16.ip-restriction",{"title":210,"path":211,"stem":212,"children":213,"page":55},"System management","/admin/system-admin","10.admin/60.system-admin",[214,218,222],{"title":215,"path":216,"stem":217,"children":-1},"Device Information","/admin/system-admin/device-info","10.admin/60.system-admin/10.device-info",{"title":219,"path":220,"stem":221,"children":-1},"Server Restart and System Maintenance","/admin/system-admin/server-restart","10.admin/60.system-admin/12.server-restart",{"title":223,"path":224,"stem":225,"children":-1},"Background Services","/admin/system-admin/background-service","10.admin/60.system-admin/14.background-service",{"title":227,"path":228,"stem":229,"children":230,"page":55},"Use workspace","/workspace","20.workspace",[231,264,281,337,448,495,527],{"title":232,"path":233,"stem":234,"children":235,"page":55},"menu","/workspace/menu","20.workspace/05.menu",[236,240,244,248,252,256,260],{"title":237,"path":238,"stem":239,"children":-1},"Workspace Overview","/workspace/menu/overview","20.workspace/05.menu/00.overview",{"title":241,"path":242,"stem":243,"children":-1},"Team Space","/workspace/menu/team-space","20.workspace/05.menu/05.team-space",{"title":245,"path":246,"stem":247,"children":-1},"Client Space","/workspace/menu/client-space","20.workspace/05.menu/06.client-space",{"title":249,"path":250,"stem":251,"children":-1},"Favorites","/workspace/menu/favorites","20.workspace/05.menu/10.favorites",{"title":253,"path":254,"stem":255,"children":-1},"Recent Documents","/workspace/menu/recent","20.workspace/05.menu/20.recent",{"title":257,"path":258,"stem":259,"children":-1},"External Share","/workspace/menu/external-share","20.workspace/05.menu/30.external-share",{"title":261,"path":262,"stem":263,"children":-1},"Trash","/workspace/menu/trash","20.workspace/05.menu/40.trash",{"title":265,"path":266,"stem":267,"children":268,"page":55},"Account","/workspace/account","20.workspace/10.account",[269,273,277],{"title":270,"path":271,"stem":272,"children":-1},"Sign Up and Log In","/workspace/account/signup","20.workspace/10.account/10.signup",{"title":274,"path":275,"stem":276,"children":-1},"Resetting Your Password","/workspace/account/reset-password","20.workspace/10.account/20.reset-password",{"title":278,"path":279,"stem":280,"children":-1},"Account Settings","/workspace/account/account-settings","20.workspace/10.account/30.account-settings",{"title":282,"path":283,"stem":284,"children":285,"page":55},"folder","/workspace/folder","20.workspace/20.folder",[286,290,294,298,302,308,312,316,321,325,329,333],{"title":287,"path":288,"stem":289,"children":-1},"Folder Basics","/workspace/folder/basic","20.workspace/20.folder/10.basic",{"title":291,"path":292,"stem":293,"children":-1},"Creating Multiple Folders at Once","/workspace/folder/bulk-folder-creation","20.workspace/20.folder/12.bulk-folder-creation",{"title":295,"path":296,"stem":297,"children":-1},"Filter","/workspace/folder/filter","20.workspace/20.folder/13.filter",{"title":299,"path":300,"stem":301,"children":-1},"Configuring Folder View Options","/workspace/folder/folder-view-options","20.workspace/20.folder/14.folder-view-options",{"title":303,"path":304,"stem":305,"tags":306,"children":-1},"Folder Web View","/workspace/folder/folder-web-view","20.workspace/20.folder/16.folder-web-view",[307],"hot",{"title":309,"path":310,"stem":311,"children":-1},"Folder Organization","/workspace/folder/folder-organize","20.workspace/20.folder/17.folder-organize",{"title":313,"path":314,"stem":315,"children":-1},"Folder Notice (README)","/workspace/folder/folder-readme","20.workspace/20.folder/18.folder-readme",{"title":317,"path":318,"stem":319,"tags":320,"children":-1},"Exporting Folder/File Lists","/workspace/folder/folder-export","20.workspace/20.folder/20.folder-export",[307],{"title":322,"path":323,"stem":324,"children":-1},"Setting Level-Based Access Permissions","/workspace/folder/level-access-permissions","20.workspace/20.folder/24.level-access-permissions",{"title":326,"path":327,"stem":328,"children":-1},"Setting Team-Based Access Permissions","/workspace/folder/team-access-permissions","20.workspace/20.folder/26.team-access-permissions",{"title":330,"path":331,"stem":332,"children":-1},"Folder Webhooks","/workspace/folder/webhook","20.workspace/20.folder/30.webhook",{"title":334,"path":335,"stem":336,"children":-1},"Work Automation Folder","/workspace/folder/automation","20.workspace/20.folder/40.automation",{"title":338,"path":339,"stem":340,"children":341,"page":55},"file","/workspace/file","20.workspace/30.file",[342,346,351,355,359,363,367,371,375,379,384,388,392,396,400,404,408,412,416,420,424,428,432,436,440,444],{"title":343,"path":344,"stem":345,"children":-1},"File Management Basics","/workspace/file/overview","20.workspace/30.file/00.overview",{"title":347,"path":348,"stem":349,"tags":350,"children":-1},"Checking the List While Viewing a File","/workspace/file/list-in-file","20.workspace/30.file/05.list-in-file",[307],{"title":352,"path":353,"stem":354,"children":-1},"Register disk files","/workspace/file/disk-file-registration","20.workspace/30.file/06.disk-file-registration",{"title":356,"path":357,"stem":358,"children":-1},"Viewing and Editing Text Files","/workspace/file/text-file-viewer","20.workspace/30.file/10.text-file-viewer",{"title":360,"path":361,"stem":362,"children":-1},"Viewing HTML Files","/workspace/file/html-viewer","20.workspace/30.file/11.html-viewer",{"title":364,"path":365,"stem":366,"children":-1},"Viewing and Editing CSV Files","/workspace/file/csv-viewer","20.workspace/30.file/12.csv-viewer",{"title":368,"path":369,"stem":370,"children":-1},"Viewing Image/Video Files","/workspace/file/image-file-viewer","20.workspace/30.file/13.image-file-viewer",{"title":372,"path":373,"stem":374,"children":-1},"Viewing Office/PDF Files","/workspace/file/office-viewer","20.workspace/30.file/14.office-viewer",{"title":376,"path":377,"stem":378,"children":-1},"Pasting Web Pages (HTML)","/workspace/file/paste-html","20.workspace/30.file/20.paste-html",{"title":380,"path":381,"stem":382,"tags":383,"children":-1},"Pasting Screenshots","/workspace/file/paste-screenshot","20.workspace/30.file/21.paste-screenshot",[307],{"title":385,"path":386,"stem":387,"children":-1},"Pasting Markdown (MD)","/workspace/file/paste-md","20.workspace/30.file/22.paste-md",{"title":389,"path":390,"stem":391,"children":-1},"Screen Recording","/workspace/file/screen-recording","20.workspace/30.file/23.screen-recording",{"title":393,"path":394,"stem":395,"children":-1},"File Tags","/workspace/file/file-tag","20.workspace/30.file/33.file-tag",{"title":397,"path":398,"stem":399,"children":-1},"Bulk Renaming Files","/workspace/file/bulk-name-revise","20.workspace/30.file/34.bulk-name-revise",{"title":401,"path":402,"stem":403,"children":-1},"File Conversion","/workspace/file/file-convert-overview","20.workspace/30.file/40.file-convert-overview",{"title":405,"path":406,"stem":407,"children":-1},"Template Files","/workspace/file/templates","20.workspace/30.file/41.templates",{"title":409,"path":410,"stem":411,"children":-1},"To-Do List","/workspace/file/template-todo","20.workspace/30.file/42.template-todo",{"title":413,"path":414,"stem":415,"children":-1},"Approval Form","/workspace/file/template-approval","20.workspace/30.file/43.template-approval",{"title":417,"path":418,"stem":419,"children":-1},"Kanban Board","/workspace/file/template-kanban","20.workspace/30.file/44.template-kanban",{"title":421,"path":422,"stem":423,"children":-1},"Timeline","/workspace/file/template-timeline","20.workspace/30.file/45.template-timeline",{"title":425,"path":426,"stem":427,"children":-1},"Memo","/workspace/file/template-memo","20.workspace/30.file/46.template-memo",{"title":429,"path":430,"stem":431,"children":-1},"AI Chat File","/workspace/file/ai-chat-file","20.workspace/30.file/47.ai-chat-file",{"title":433,"path":434,"stem":435,"children":-1},"Checking the File Change History","/workspace/file/audit-trail","20.workspace/30.file/50.audit-trail",{"title":437,"path":438,"stem":439,"children":-1},"File Version Control","/workspace/file/version-trail","20.workspace/30.file/51.version-trail",{"title":441,"path":442,"stem":443,"children":-1},"Edit Lock","/workspace/file/file-lock","20.workspace/30.file/52.file-lock",{"title":445,"path":446,"stem":447,"children":-1},"File Encryption","/workspace/file/file-encrypt","20.workspace/30.file/53.file-encrypt",{"title":449,"path":450,"stem":451,"children":452,"page":55},"Collaboration","/workspace/cooperation","20.workspace/35.cooperation",[453,457,461,465,470,474,478,482,487,491],{"title":454,"path":455,"stem":456,"children":-1},"File/Folder Comments","/workspace/cooperation/file-comments","20.workspace/35.cooperation/00.file-comments",{"title":458,"path":459,"stem":460,"children":-1},"Chat","/workspace/cooperation/chat","20.workspace/35.cooperation/10.chat",{"title":462,"path":463,"stem":464,"children":-1},"Collaboration Chat and Edit Lock","/workspace/cooperation/collaboration-chat","20.workspace/35.cooperation/11.collaboration-chat",{"title":466,"path":467,"stem":468,"tags":469,"children":-1},"Following a Team Member's Location","/workspace/cooperation/follow-team-location","20.workspace/35.cooperation/12.follow-team-location",[307],{"title":471,"path":472,"stem":473,"children":-1},"Mentions","/workspace/cooperation/mention","20.workspace/35.cooperation/14.mention",{"title":475,"path":476,"stem":477,"children":-1},"Direct Messages","/workspace/cooperation/dm","20.workspace/35.cooperation/16.dm",{"title":479,"path":480,"stem":481,"children":-1},"Notification Inbox","/workspace/cooperation/notification-inbox","20.workspace/35.cooperation/18.notification-inbox",{"title":483,"path":484,"stem":485,"tags":486,"children":-1},"Checking Team Activity","/workspace/cooperation/file-activity","20.workspace/35.cooperation/30.file-activity",[307],{"title":488,"path":489,"stem":490,"children":-1},"Creating an External Share Link","/workspace/cooperation/share-link-creation","20.workspace/35.cooperation/40.share-link-creation",{"title":492,"path":493,"stem":494,"children":-1},"Sending an External Share Link by Email","/workspace/cooperation/share-link-email","20.workspace/35.cooperation/42.share-link-email",{"title":496,"path":497,"stem":498,"children":499,"page":55},"Search","/workspace/search","20.workspace/40.search",[500,504,509,515,519,523],{"title":501,"path":502,"stem":503,"children":-1},"File Search","/workspace/search/search","20.workspace/40.search/00.search",{"title":505,"path":506,"stem":507,"tags":508,"children":-1},"Context Search (AI Search)","/workspace/search/context-search","20.workspace/40.search/10.context-search",[307],{"title":510,"path":511,"stem":512,"tags":513,"children":-1},"Image Search","/workspace/search/image-search","20.workspace/40.search/20.image-search",[514],"new",{"title":516,"path":517,"stem":518,"children":-1},"Chat Search","/workspace/search/chat-search","20.workspace/40.search/30.chat-search",{"title":520,"path":521,"stem":522,"children":-1},"Comment Search","/workspace/search/comment-search","20.workspace/40.search/40.comment-search",{"title":524,"path":525,"stem":526,"children":-1},"Synonym Search","/workspace/search/synonym-search","20.workspace/40.search/50.synonym-search",{"title":528,"path":529,"stem":530,"children":531,"page":55},"AI","/workspace/ai","20.workspace/50.ai",[532,536,541],{"title":533,"path":534,"stem":535,"children":-1},"AI Features Summary","/workspace/ai/overview","20.workspace/50.ai/00.overview",{"title":537,"path":538,"stem":539,"tags":540,"children":-1},"Requesting Work from the Local AI","/workspace/ai/ai-work","20.workspace/50.ai/10.ai-work",[307],{"title":542,"path":543,"stem":544,"tags":545,"children":-1},"Using External AI","/workspace/ai/external-ai","20.workspace/50.ai/20.external-ai",[514],{"title":547,"path":548,"stem":549,"children":550,"page":55},"Webspace","/webspace","40.webspace",[551,555,559,563,567,571,576,580,584,588,592,621],{"title":552,"path":553,"stem":554,"children":-1},"What is WebSpace?","/webspace/overview","40.webspace/00.overview",{"title":556,"path":557,"stem":558,"children":-1},"Deploying a Website","/webspace/website-release","40.webspace/10.website-release",{"title":560,"path":561,"stem":562,"children":-1},"Create a schema file (.sfn)","/webspace/create-database","40.webspace/20.create-database",{"title":564,"path":565,"stem":566,"children":-1},"Build APIs and deploy a database","/webspace/api-overview","40.webspace/24.api-overview",{"title":568,"path":569,"stem":570,"children":-1},"Checking the Frontend Sample","/webspace/frontend-example","40.webspace/26.frontend-example",{"title":572,"path":573,"stem":574,"tags":575,"children":-1},"Building an Internal Team Web Service","/webspace/internal-webservice","40.webspace/32.internal-webservice",[307],{"title":577,"path":578,"stem":579,"children":-1},"Building a Publicly Accessible Web Service","/webspace/external-webservice","40.webspace/34.external-webservice",{"title":581,"path":582,"stem":583,"children":-1},"Import and export SQL","/webspace/sql-converter","40.webspace/42.sql-converter",{"title":585,"path":586,"stem":587,"children":-1},"Developer Tip 2: Code Converter","/webspace/code-converter","40.webspace/44.code-converter",{"title":589,"path":590,"stem":591,"children":-1},"Performance and scaling","/webspace/performance","40.webspace/48.performance",{"title":593,"path":594,"stem":595,"children":596,"page":55},"Webspace Management","/webspace/admin","40.webspace/50.admin",[597,601,605,609,613,617],{"title":598,"path":599,"stem":600,"children":-1},"Get started with WebSpace administration","/webspace/admin/overview","40.webspace/50.admin/00.overview",{"title":602,"path":603,"stem":604,"children":-1},"Operations","/webspace/admin/operations","40.webspace/50.admin/10.operations",{"title":606,"path":607,"stem":608,"children":-1},"Workspace access","/webspace/admin/workspace-access","40.webspace/50.admin/20.workspace-access",{"title":610,"path":611,"stem":612,"children":-1},"API & site security","/webspace/admin/api-site-security","40.webspace/50.admin/30.api-site-security",{"title":614,"path":615,"stem":616,"children":-1},"Services and capacity","/webspace/admin/service-capacity","40.webspace/50.admin/40.service-capacity",{"title":618,"path":619,"stem":620,"children":-1},"Deployment management and frontend releases","/webspace/admin/deployments","40.webspace/50.admin/50.deployments",{"title":622,"path":623,"stem":624,"children":625,"page":55},"Try WebSpace","/webspace/examples","40.webspace/60.examples",[626,630],{"title":627,"path":628,"stem":629,"children":-1},"WebSpace examples","/webspace/examples/overview","40.webspace/60.examples/00.overview",{"title":631,"path":632,"stem":633,"children":-1},"Build a real-time Gomoku game","/webspace/examples/realtime-gomoku","40.webspace/60.examples/20.realtime-gomoku",{"title":635,"path":636,"stem":637,"children":638,"page":55},"Using plugin","/plugin","50.plugin",[639,643,660,704,722,752],{"title":640,"path":641,"stem":642,"children":-1},"Plugin Overview","/plugin/overview","50.plugin/00.overview",{"title":644,"path":645,"stem":646,"children":647,"page":55},"Calendar","/plugin/calendar","50.plugin/10.calendar",[648,652,656],{"title":649,"path":650,"stem":651,"children":-1},"Calendar Introduction","/plugin/calendar/overview","50.plugin/10.calendar/00.overview",{"title":653,"path":654,"stem":655,"children":-1},"Creating, Editing, and Deleting Events","/plugin/calendar/create-event","50.plugin/10.calendar/10.create-event",{"title":657,"path":658,"stem":659,"children":-1},"Checking Activity History","/plugin/calendar/file-activity","50.plugin/10.calendar/40.file-activity",{"title":661,"path":662,"stem":663,"children":664,"page":55},"Email","/plugin/email","50.plugin/20.email",[665,669,672,676,680,684,688,692,696,700],{"title":666,"path":667,"stem":668,"children":-1},"Email Introduction","/plugin/email/overview","50.plugin/20.email/00.overview",{"title":129,"path":670,"stem":671,"children":-1},"/plugin/email/setfn-email-setting","50.plugin/20.email/05.setfn-email-setting",{"title":673,"path":674,"stem":675,"children":-1},"Connect an External Email Account","/plugin/email/external-email","50.plugin/20.email/07.external-email",{"title":677,"path":678,"stem":679,"children":-1},"Basic Email Functionality","/plugin/email/email-basic","50.plugin/20.email/10.email-basic",{"title":681,"path":682,"stem":683,"children":-1},"Composing and Sending Email","/plugin/email/email-compose","50.plugin/20.email/20.email-compose",{"title":685,"path":686,"stem":687,"children":-1},"Attaching Files","/plugin/email/email-attachment","50.plugin/20.email/30.email-attachment",{"title":689,"path":690,"stem":691,"children":-1},"Mail Folder Management","/plugin/email/email-folders","50.plugin/20.email/40.email-folders",{"title":693,"path":694,"stem":695,"children":-1},"Automatic Email Classification","/plugin/email/email-auto-classify","50.plugin/20.email/50.email-auto-classify",{"title":697,"path":698,"stem":699,"children":-1},"Email File Archiving and Sharing","/plugin/email/email-open-in-space","50.plugin/20.email/60.email-open-in-space",{"title":701,"path":702,"stem":703,"children":-1},"Email Security","/plugin/email/email-security","50.plugin/20.email/70.email-security",{"title":705,"path":706,"stem":707,"children":708,"page":55},"Workflow","/plugin/workflow","50.plugin/30.workflow",[709,713,718],{"title":710,"path":711,"stem":712,"children":-1},"Workflow Introduction","/plugin/workflow/overview","50.plugin/30.workflow/00.overview",{"title":714,"path":715,"stem":716,"tags":717,"children":-1},"Creating a New Workflow","/plugin/workflow/new-workflow","50.plugin/30.workflow/10.new-workflow",[307],{"title":719,"path":720,"stem":721,"children":-1},"Checking Execution History","/plugin/workflow/execution-history","50.plugin/30.workflow/20.execution-history",{"title":723,"path":724,"stem":725,"children":726,"page":55},"Pinetuning (AI learning)","/plugin/fine-tuning","50.plugin/40.fine-tuning",[727,732,736,740,744,748],{"title":728,"path":729,"stem":730,"tags":731,"children":-1},"Fine-tuning Introduction","/plugin/fine-tuning/overview","50.plugin/40.fine-tuning/00.overview",[307],{"title":733,"path":734,"stem":735,"children":-1},"Preprocessing Training Data","/plugin/fine-tuning/pre-processing","50.plugin/40.fine-tuning/10.pre-processing",{"title":737,"path":738,"stem":739,"children":-1},"Training","/plugin/fine-tuning/training","50.plugin/40.fine-tuning/20.training",{"title":741,"path":742,"stem":743,"children":-1},"Evaluation","/plugin/fine-tuning/evaluation","50.plugin/40.fine-tuning/30.evaluation",{"title":745,"path":746,"stem":747,"children":-1},"Chat Test","/plugin/fine-tuning/chat-test","50.plugin/40.fine-tuning/40.chat-test",{"title":749,"path":750,"stem":751,"children":-1},"Export","/plugin/fine-tuning/export","50.plugin/40.fine-tuning/50.export",{"title":753,"path":754,"stem":755,"children":756,"page":55},"EDC (data collection)","/plugin/edc","50.plugin/50.edc",[757,761,765,769],{"title":758,"path":759,"stem":760,"children":-1},"EDC Introduction","/plugin/edc/overview","50.plugin/50.edc/00.overview",{"title":762,"path":763,"stem":764,"children":-1},"Data Entry, Audit Trail","/plugin/edc/data-entry","50.plugin/50.edc/10.data-entry",{"title":766,"path":767,"stem":768,"children":-1},"Builder","/plugin/edc/builder","50.plugin/50.edc/20.builder",{"title":770,"path":771,"stem":772,"children":-1},"User/Site Settings","/plugin/edc/account","50.plugin/50.edc/30.account",{"title":774,"path":775,"stem":776,"children":777,"page":55},"FAQ","/faq","99.FAQ",[778,782,786,790,794,798,802],{"title":779,"path":780,"stem":781,"children":-1},"SetFN vs Cloud Services Comparison","/faq/comparison-cloud","99.FAQ/10.comparison-cloud",{"title":783,"path":784,"stem":785,"children":-1},"SetFN vs NAS Comparison","/faq/comparison-nas","99.FAQ/20.comparison-nas",{"title":787,"path":788,"stem":789,"children":-1},"Security Policy","/faq/security-policy","99.FAQ/30.security-policy",{"title":791,"path":792,"stem":793,"children":-1},"Why Is SetFN Fast","/faq/why-fast","99.FAQ/40.why-fast",{"title":795,"path":796,"stem":797,"children":-1},"License FAQ","/faq/license-faq","99.FAQ/50.license-faq",{"title":799,"path":800,"stem":801,"children":-1},"AI Features FAQ","/faq/ai-faq","99.FAQ/60.ai-faq",{"title":803,"path":804,"stem":805,"children":-1},"Troubleshooting Guide","/faq/troubleshooting","99.FAQ/70.troubleshooting",{"title":807,"path":808,"stem":809,"children":810,"page":55},"Applied (draft)","/draft","draft",[811,815,819,823,827,831,835,839,843,847,851,855,859],{"title":812,"path":813,"stem":814,"children":-1},"Example 1. Building an Introduction Page","/draft/static-intro","draft/05.static-intro",{"title":816,"path":817,"stem":818,"children":-1},"Example 2. Building a Notice Board","/draft/public-notice-board","draft/07.public-notice-board",{"title":820,"path":821,"stem":822,"children":-1},"Example 3. Building a Coffee Chat Booking System","/draft/coffee-chat-booking","draft/08.coffee-chat-booking",{"title":824,"path":825,"stem":826,"children":-1},"Example 4. Building a Leave Request System","/draft/leave-request","draft/09.leave-request",{"title":828,"path":829,"stem":830,"children":-1},"Example 5. Building Real-Time Team Chat","/draft/team-chat","draft/10.team-chat",{"title":832,"path":833,"stem":834,"children":-1},"Example 6. Building a Job Application Intake","/draft/client-submission","draft/11.client-submission",{"title":836,"path":837,"stem":838,"children":-1},"Example 7. Building an Issue Tracker with Team and Level Conditions","/draft/crm-basic","draft/12.crm-basic",{"title":840,"path":841,"stem":842,"children":-1},"Example 8. Building a Status Filter and Stats Summary Screen","/draft/crm-search-filter","draft/13.crm-search-filter",{"title":844,"path":845,"stem":846,"children":-1},"Example 9. Building Real-Time Community Chat with Moderation","/draft/community-moderation","draft/14.community-moderation",{"title":848,"path":849,"stem":850,"children":-1},"Example 10. Building a Real-Time Attendance Check / Poll","/draft/attendance-poll","draft/15.attendance-poll",{"title":852,"path":853,"stem":854,"children":-1},"Example 11. Building a Debate Battle","/draft/debate-battle","draft/16.debate-battle",{"title":856,"path":857,"stem":858,"children":-1},"Example 13. Building an Announcement Read Receipt","/draft/announcement-read","draft/18.announcement-read",{"title":860,"path":861,"stem":862,"children":-1},"Example 14. Building an Inventory Management System","/draft/inventory-management","draft/19.inventory-management",{"title":864,"path":865,"stem":866,"children":867,"page":55},"SJAUTO","/sjauto","sjauto",[868,872,876],{"title":869,"path":870,"stem":871,"children":-1},"Access the Administrator Page","/sjauto/admin-page-access","sjauto/00.admin-page-access",{"title":873,"path":874,"stem":875,"children":-1},"Sign Up and Sign In","/sjauto/signup","sjauto/10.signup",{"title":877,"path":878,"stem":879,"children":-1},"AI Chat Files","/sjauto/ai-chat-file","sjauto/ai-chat-file",{"id":881,"title":330,"body":882,"cover":1800,"description":1801,"extension":1802,"image":1800,"meta":1803,"navigation":1199,"path":331,"seo":1805,"stem":332,"tags":1800,"thumbnail":1800,"__hash__":1816},"docs_en/20.workspace/20.folder/30.webhook.md",{"type":883,"value":884,"toc":1788},"minimal",[885,889,893,896,901,914,918,977,981,991,1045,1051,1102,1111,1615,1619,1625,1668,1672,1675,1689,1695,1699,1702,1706,1725,1730,1739,1773,1777,1784],[886,887,330],"h1",{"id":888},"folder-webhooks",[890,891,892],"p",{},"Receive files from external systems automatically in a specified folder. Each folder gets a unique receiving URL, and data sent to that URL is saved in the folder.",[894,895],"hr",{},[897,898,900],"h2",{"id":899},"before-you-begin","Before you begin",[902,903,904],"ul",{},[905,906,907,908,913],"li",{},"An administrator must enable Workspace webhooks under ",[909,910,912],"a",{"href":911},"../../admin/service-config/webhook-settings","Configure Webhook Policies",".",[897,915,917],{"id":916},"create-a-webhook-in-a-folder","Create a webhook in a folder",[919,920,921,929,940,947,966,969],"ol",{},[905,922,923,924],{},"Select the settings (⚙️) icon next to the folder that will receive the webhook.\n",[925,926],"img",{"alt":927,"src":928},"Folder settings","./_screenshots/folder-setting-icon-webhook_en.png",[905,930,931,932,936,937,913],{},"On the ",[933,934,935],"code",{},"Automatic Receiving (Webhook)"," tab, select ",[933,938,939],{},"Add",[905,941,942,943],{},"Select an authentication method and conflict policy. Both options are described below.\n",[925,944],{"alt":945,"src":946},"Create a webhook","./_screenshots/webhook-simple-create_en.png",[905,948,949,950,953,954,957,958,962],{},"Select ",[933,951,952],{},"Create"," to generate the folder's unique receiving URL. If you selected ",[933,955,956],{},"Secure",", a signing secret is also generated. ",[959,960,961],"strong",{},"These values are shown only once, so copy them to a secure location now.",[925,963],{"alt":964,"src":965},"Webhook created with Simple authentication","./_screenshots/webhook-simple-url-reveal.png",[905,967,968],{},"Configure the external system using the receiving URL and example shown on screen. See \"Select an authentication method\" below for request examples.",[905,970,971,972,976],{},"A folder with a webhook displays the ",[973,974],"icon",{"name":975},"webhooks-logo"," icon.",[897,978,980],{"id":979},"select-an-authentication-method","Select an authentication method",[890,982,983,984,987,988,990],{},"Select either ",[933,985,986],{},"Simple"," or ",[933,989,956],{}," when creating a webhook.",[992,993,994,1007],"table",{},[995,996,997],"thead",{},[998,999,1000,1004],"tr",{},[1001,1002,1003],"th",{},"Authentication",[1001,1005,1006],{},"Behavior",[1008,1009,1010,1024],"tbody",{},[998,1011,1012,1017],{},[1013,1014,1015],"td",{},[933,1016,986],{},[1013,1018,1019,1020,1023],{},"The receiving URL itself is the credential. Send a ",[933,1021,1022],{},"POST"," request to the issued URL without a separate signature.",[998,1025,1026,1030],{},[1013,1027,1028],{},[933,1029,956],{},[1013,1031,1032,1033,1036,1037,1040,1041,1044],{},"Every request must include an HMAC signature in the ",[933,1034,1035],{},"X-Webhook-Timestamp",", ",[933,1038,1039],{},"X-Webhook-Nonce",", and ",[933,1042,1043],{},"X-Webhook-Signature"," headers. Unsigned requests are rejected even if the receiving URL is exposed.",[890,1046,1047,1048,1050],{},"A ",[933,1049,986],{}," webhook accepts requests using only its URL.",[1052,1053,1058],"pre",{"className":1054,"code":1055,"language":1056,"meta":1057,"style":1057},"language-bash shiki shiki-themes github-light github-dark monokai","# Upload a file via multipart\ncurl -i -X POST \"https://\u003Creceiving-url>?filename=photo.jpg\" \\\n  -F \"file=@./photo.jpg\"\n","bash","",[933,1059,1060,1069,1093],{"__ignoreMap":1057},[1061,1062,1065],"span",{"class":1063,"line":1064},"line",1,[1061,1066,1068],{"class":1067},"s8-w5","# Upload a file via multipart\n",[1061,1070,1072,1076,1080,1083,1087,1090],{"class":1063,"line":1071},2,[1061,1073,1075],{"class":1074},"srTi1","curl",[1061,1077,1079],{"class":1078},"s7F3e"," -i",[1061,1081,1082],{"class":1078}," -X",[1061,1084,1086],{"class":1085},"sstjo"," POST",[1061,1088,1089],{"class":1085}," \"https://\u003Creceiving-url>?filename=photo.jpg\"",[1061,1091,1092],{"class":1078}," \\\n",[1061,1094,1096,1099],{"class":1063,"line":1095},3,[1061,1097,1098],{"class":1078},"  -F",[1061,1100,1101],{"class":1085}," \"file=@./photo.jpg\"\n",[890,1103,1047,1104,1106,1107],{},[933,1105,956],{}," webhook signs a SHA-256 hash of the entire multipart request body, including boundaries and part headers.\n",[925,1108],{"alt":1109,"src":1110},"Secure webhook settings","./_screenshots/webhook-secure-settings_en.png",[1052,1112,1114],{"className":1054,"code":1113,"language":1056,"meta":1057,"style":1057},"# Upload a file via multipart (with HMAC signature)\nTS=$(date +%s)\nNONCE=$(cat /proc/sys/kernel/random/uuid)\nBOUNDARY=\"------------------------$(cat /proc/sys/kernel/random/uuid)\"\nTMP=$(mktemp /tmp/multipart.XXXXXX)\n\n# Build the raw multipart body first, then hash that body.\nprintf -- --%s$'\\r\\n' \"$BOUNDARY\" > \"$TMP\"\nprintf 'Content-Disposition: form-data; name=\"file\"; filename=\"photo.jpg\"' >> \"$TMP\"\nprintf $'\\r\\n' >> \"$TMP\"\nprintf 'Content-Type: application/octet-stream' >> \"$TMP\"\nprintf $'\\r\\n\\r\\n' >> \"$TMP\"\ncat ./photo.jpg >> \"$TMP\"\nprintf $'\\r\\n' >> \"$TMP\"\nprintf -- --%s--$'\\r\\n' \"$BOUNDARY\" >> \"$TMP\"\n\nBODY_SHA=$(sha256sum \"$TMP\" | awk '{print $1}')\nSIG=$(printf 'POST\\n\u003Creceiving-path>\\n%s\\n%s\\n%s' \"$TS\" \"$NONCE\" \"$BODY_SHA\" \\\n  | openssl dgst -sha256 -hmac \"$SECRET\" -binary | xxd -p -c 256)\n\ncurl -i -X POST \"https://\u003Creceiving-url>?filename=photo.jpg\" \\\n  -H \"Content-Type: multipart/form-data; boundary=$BOUNDARY\" \\\n  -H \"X-Webhook-Timestamp: $TS\" \\\n  -H \"X-Webhook-Nonce: $NONCE\" \\\n  -H \"X-Webhook-Signature: sha256=$SIG\" \\\n  --data-binary @\"$TMP\"\n\nrm -f \"$TMP\"\n",[933,1115,1116,1121,1143,1160,1176,1194,1201,1207,1249,1266,1286,1302,1322,1338,1357,1387,1392,1422,1460,1504,1509,1524,1539,1553,1567,1582,1595,1600],{"__ignoreMap":1057},[1061,1117,1118],{"class":1063,"line":1064},[1061,1119,1120],{"class":1067},"# Upload a file via multipart (with HMAC signature)\n",[1061,1122,1123,1127,1131,1134,1137,1140],{"class":1063,"line":1071},[1061,1124,1126],{"class":1125},"sMOD_","TS",[1061,1128,1130],{"class":1129},"sC2Qs","=",[1061,1132,1133],{"class":1125},"$(",[1061,1135,1136],{"class":1074},"date",[1061,1138,1139],{"class":1085}," +%s",[1061,1141,1142],{"class":1125},")\n",[1061,1144,1145,1148,1150,1152,1155,1158],{"class":1063,"line":1095},[1061,1146,1147],{"class":1125},"NONCE",[1061,1149,1130],{"class":1129},[1061,1151,1133],{"class":1125},[1061,1153,1154],{"class":1074},"cat",[1061,1156,1157],{"class":1085}," /proc/sys/kernel/random/uuid",[1061,1159,1142],{"class":1125},[1061,1161,1163,1166,1168,1171,1173],{"class":1063,"line":1162},4,[1061,1164,1165],{"class":1125},"BOUNDARY",[1061,1167,1130],{"class":1129},[1061,1169,1170],{"class":1085},"\"------------------------$(",[1061,1172,1154],{"class":1074},[1061,1174,1175],{"class":1085}," /proc/sys/kernel/random/uuid)\"\n",[1061,1177,1179,1182,1184,1186,1189,1192],{"class":1063,"line":1178},5,[1061,1180,1181],{"class":1125},"TMP",[1061,1183,1130],{"class":1129},[1061,1185,1133],{"class":1125},[1061,1187,1188],{"class":1074},"mktemp",[1061,1190,1191],{"class":1085}," /tmp/multipart.XXXXXX",[1061,1193,1142],{"class":1125},[1061,1195,1197],{"class":1063,"line":1196},6,[1061,1198,1200],{"emptyLinePlaceholder":1199},true,"\n",[1061,1202,1204],{"class":1063,"line":1203},7,[1061,1205,1206],{"class":1067},"# Build the raw multipart body first, then hash that body.\n",[1061,1208,1210,1214,1217,1220,1223,1226,1229,1232,1235,1238,1241,1243,1246],{"class":1063,"line":1209},8,[1061,1211,1213],{"class":1212},"sTrkL","printf",[1061,1215,1216],{"class":1078}," --",[1061,1218,1219],{"class":1078}," --%s",[1061,1221,1222],{"class":1085},"$'",[1061,1224,1225],{"class":1078},"\\r\\n",[1061,1227,1228],{"class":1085},"'",[1061,1230,1231],{"class":1085}," \"",[1061,1233,1234],{"class":1125},"$BOUNDARY",[1061,1236,1237],{"class":1085},"\"",[1061,1239,1240],{"class":1129}," >",[1061,1242,1231],{"class":1085},[1061,1244,1245],{"class":1125},"$TMP",[1061,1247,1248],{"class":1085},"\"\n",[1061,1250,1252,1254,1257,1260,1262,1264],{"class":1063,"line":1251},9,[1061,1253,1213],{"class":1212},[1061,1255,1256],{"class":1085}," 'Content-Disposition: form-data; name=\"file\"; filename=\"photo.jpg\"'",[1061,1258,1259],{"class":1129}," >>",[1061,1261,1231],{"class":1085},[1061,1263,1245],{"class":1125},[1061,1265,1248],{"class":1085},[1061,1267,1269,1271,1274,1276,1278,1280,1282,1284],{"class":1063,"line":1268},10,[1061,1270,1213],{"class":1212},[1061,1272,1273],{"class":1085}," $'",[1061,1275,1225],{"class":1078},[1061,1277,1228],{"class":1085},[1061,1279,1259],{"class":1129},[1061,1281,1231],{"class":1085},[1061,1283,1245],{"class":1125},[1061,1285,1248],{"class":1085},[1061,1287,1289,1291,1294,1296,1298,1300],{"class":1063,"line":1288},11,[1061,1290,1213],{"class":1212},[1061,1292,1293],{"class":1085}," 'Content-Type: application/octet-stream'",[1061,1295,1259],{"class":1129},[1061,1297,1231],{"class":1085},[1061,1299,1245],{"class":1125},[1061,1301,1248],{"class":1085},[1061,1303,1305,1307,1309,1312,1314,1316,1318,1320],{"class":1063,"line":1304},12,[1061,1306,1213],{"class":1212},[1061,1308,1273],{"class":1085},[1061,1310,1311],{"class":1078},"\\r\\n\\r\\n",[1061,1313,1228],{"class":1085},[1061,1315,1259],{"class":1129},[1061,1317,1231],{"class":1085},[1061,1319,1245],{"class":1125},[1061,1321,1248],{"class":1085},[1061,1323,1325,1327,1330,1332,1334,1336],{"class":1063,"line":1324},13,[1061,1326,1154],{"class":1074},[1061,1328,1329],{"class":1085}," ./photo.jpg",[1061,1331,1259],{"class":1129},[1061,1333,1231],{"class":1085},[1061,1335,1245],{"class":1125},[1061,1337,1248],{"class":1085},[1061,1339,1341,1343,1345,1347,1349,1351,1353,1355],{"class":1063,"line":1340},14,[1061,1342,1213],{"class":1212},[1061,1344,1273],{"class":1085},[1061,1346,1225],{"class":1078},[1061,1348,1228],{"class":1085},[1061,1350,1259],{"class":1129},[1061,1352,1231],{"class":1085},[1061,1354,1245],{"class":1125},[1061,1356,1248],{"class":1085},[1061,1358,1360,1362,1364,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385],{"class":1063,"line":1359},15,[1061,1361,1213],{"class":1212},[1061,1363,1216],{"class":1078},[1061,1365,1366],{"class":1078}," --%s--",[1061,1368,1222],{"class":1085},[1061,1370,1225],{"class":1078},[1061,1372,1228],{"class":1085},[1061,1374,1231],{"class":1085},[1061,1376,1234],{"class":1125},[1061,1378,1237],{"class":1085},[1061,1380,1259],{"class":1129},[1061,1382,1231],{"class":1085},[1061,1384,1245],{"class":1125},[1061,1386,1248],{"class":1085},[1061,1388,1390],{"class":1063,"line":1389},16,[1061,1391,1200],{"emptyLinePlaceholder":1199},[1061,1393,1395,1398,1400,1402,1405,1407,1409,1411,1414,1417,1420],{"class":1063,"line":1394},17,[1061,1396,1397],{"class":1125},"BODY_SHA",[1061,1399,1130],{"class":1129},[1061,1401,1133],{"class":1125},[1061,1403,1404],{"class":1074},"sha256sum",[1061,1406,1231],{"class":1085},[1061,1408,1245],{"class":1125},[1061,1410,1237],{"class":1085},[1061,1412,1413],{"class":1129}," |",[1061,1415,1416],{"class":1074}," awk",[1061,1418,1419],{"class":1085}," '{print $1}'",[1061,1421,1142],{"class":1125},[1061,1423,1425,1428,1430,1432,1434,1437,1439,1442,1444,1446,1449,1451,1453,1456,1458],{"class":1063,"line":1424},18,[1061,1426,1427],{"class":1125},"SIG",[1061,1429,1130],{"class":1129},[1061,1431,1133],{"class":1125},[1061,1433,1213],{"class":1212},[1061,1435,1436],{"class":1085}," 'POST\\n\u003Creceiving-path>\\n%s\\n%s\\n%s'",[1061,1438,1231],{"class":1085},[1061,1440,1441],{"class":1125},"$TS",[1061,1443,1237],{"class":1085},[1061,1445,1231],{"class":1085},[1061,1447,1448],{"class":1125},"$NONCE",[1061,1450,1237],{"class":1085},[1061,1452,1231],{"class":1085},[1061,1454,1455],{"class":1125},"$BODY_SHA",[1061,1457,1237],{"class":1085},[1061,1459,1092],{"class":1078},[1061,1461,1463,1466,1469,1472,1475,1478,1480,1483,1485,1488,1490,1493,1496,1499,1502],{"class":1063,"line":1462},19,[1061,1464,1465],{"class":1129},"  |",[1061,1467,1468],{"class":1074}," openssl",[1061,1470,1471],{"class":1085}," dgst",[1061,1473,1474],{"class":1078}," -sha256",[1061,1476,1477],{"class":1078}," -hmac",[1061,1479,1231],{"class":1085},[1061,1481,1482],{"class":1125},"$SECRET",[1061,1484,1237],{"class":1085},[1061,1486,1487],{"class":1078}," -binary",[1061,1489,1413],{"class":1129},[1061,1491,1492],{"class":1074}," xxd",[1061,1494,1495],{"class":1078}," -p",[1061,1497,1498],{"class":1078}," -c",[1061,1500,1501],{"class":1078}," 256",[1061,1503,1142],{"class":1125},[1061,1505,1507],{"class":1063,"line":1506},20,[1061,1508,1200],{"emptyLinePlaceholder":1199},[1061,1510,1512,1514,1516,1518,1520,1522],{"class":1063,"line":1511},21,[1061,1513,1075],{"class":1074},[1061,1515,1079],{"class":1078},[1061,1517,1082],{"class":1078},[1061,1519,1086],{"class":1085},[1061,1521,1089],{"class":1085},[1061,1523,1092],{"class":1078},[1061,1525,1527,1530,1533,1535,1537],{"class":1063,"line":1526},22,[1061,1528,1529],{"class":1078},"  -H",[1061,1531,1532],{"class":1085}," \"Content-Type: multipart/form-data; boundary=",[1061,1534,1234],{"class":1125},[1061,1536,1237],{"class":1085},[1061,1538,1092],{"class":1078},[1061,1540,1542,1544,1547,1549,1551],{"class":1063,"line":1541},23,[1061,1543,1529],{"class":1078},[1061,1545,1546],{"class":1085}," \"X-Webhook-Timestamp: ",[1061,1548,1441],{"class":1125},[1061,1550,1237],{"class":1085},[1061,1552,1092],{"class":1078},[1061,1554,1556,1558,1561,1563,1565],{"class":1063,"line":1555},24,[1061,1557,1529],{"class":1078},[1061,1559,1560],{"class":1085}," \"X-Webhook-Nonce: ",[1061,1562,1448],{"class":1125},[1061,1564,1237],{"class":1085},[1061,1566,1092],{"class":1078},[1061,1568,1570,1572,1575,1578,1580],{"class":1063,"line":1569},25,[1061,1571,1529],{"class":1078},[1061,1573,1574],{"class":1085}," \"X-Webhook-Signature: sha256=",[1061,1576,1577],{"class":1125},"$SIG",[1061,1579,1237],{"class":1085},[1061,1581,1092],{"class":1078},[1061,1583,1585,1588,1591,1593],{"class":1063,"line":1584},26,[1061,1586,1587],{"class":1078},"  --data-binary",[1061,1589,1590],{"class":1085}," @\"",[1061,1592,1245],{"class":1125},[1061,1594,1248],{"class":1085},[1061,1596,1598],{"class":1063,"line":1597},27,[1061,1599,1200],{"emptyLinePlaceholder":1199},[1061,1601,1603,1606,1609,1611,1613],{"class":1063,"line":1602},28,[1061,1604,1605],{"class":1074},"rm",[1061,1607,1608],{"class":1078}," -f",[1061,1610,1231],{"class":1085},[1061,1612,1245],{"class":1125},[1061,1614,1248],{"class":1085},[897,1616,1618],{"id":1617},"select-a-conflict-policy","Select a conflict policy",[890,1620,1621,1622,913],{},"Choose how to handle a newly received file when another file has the same name. You can change the policy later on the same screen by selecting ",[933,1623,1624],{},"Apply",[992,1626,1627,1636],{},[995,1628,1629],{},[998,1630,1631,1634],{},[1001,1632,1633],{},"Policy",[1001,1635,1006],{},[1008,1637,1638,1648,1658],{},[998,1639,1640,1645],{},[1013,1641,1642],{},[933,1643,1644],{},"Reject",[1013,1646,1647],{},"Does not save the newly received file when the name already exists.",[998,1649,1650,1655],{},[1013,1651,1652],{},[933,1653,1654],{},"Overwrite",[1013,1656,1657],{},"Replaces the existing file with the newly received file.",[998,1659,1660,1665],{},[1013,1661,1662],{},[933,1663,1664],{},"Rename",[1013,1666,1667],{},"Keeps the existing file and saves the new file under a different name.",[897,1669,1671],{"id":1670},"specify-a-filename","Specify a filename",[890,1673,1674],{},"Specify the uploaded filename in either of these ways:",[902,1676,1677,1683],{},[905,1678,1679,1680],{},"Query parameter: ",[933,1681,1682],{},"?filename=report.json",[905,1684,1685,1686],{},"HTTP header: ",[933,1687,1688],{},"X-Webhook-Filename: report.json",[890,1690,1691],{},[925,1692],{"alt":1693,"src":1694},"Ways to specify a filename","./_screenshots/webhook-filename-spec_en.png",[897,1696,1698],{"id":1697},"review-received-data","Review received data",[890,1700,1701],{},"Data sent from external systems accumulates as files in the folder. Open the folder to review received items.",[897,1703,1705],{"id":1704},"pause-or-delete-a-webhook","Pause or delete a webhook",[902,1707,1708,1715],{},[905,1709,1710,1711],{},"In the folder, hover over a webhook in the list to display the pause and delete buttons.\n",[925,1712],{"alt":1713,"src":1714},"Pause and delete buttons in the webhook list","./_screenshots/webhook-list-hover_en.png",[905,1716,1717,1718,1721,1722,1724],{},"Open ",[933,1719,1720],{},"My Webhooks"," under ",[933,1723,278],{}," to see every folder where you configured a webhook. You can also pause or delete webhooks from this list.",[890,1726,1727],{},[925,1728],{"alt":1720,"src":1729},"./_screenshots/account-my-webhook.png",[1731,1732,1733],"warning",{},[890,1734,1735,1738],{},[959,1736,1737],{},"The receiving URL grants access."," Store it securely and do not expose it publicly.",[1740,1741,1742,1747],"use-case",{},[1743,1744,1746],"h3",{"id":1745},"use-cases","Use cases",[902,1748,1749,1755,1761,1767],{},[905,1750,1751,1754],{},[959,1752,1753],{},"Website and screen monitoring",": Automatically collect periodic screenshots from Zapier, n8n, Make, or similar tools to track changes.",[905,1756,1757,1760],{},[959,1758,1759],{},"Automation output storage",": Save reports, invoices, PDFs, and other output from RPA or automation tools without manual intervention.",[905,1762,1763,1766],{},[959,1764,1765],{},"Form attachment collection",": Collect files submitted through Google Forms, Typeform, and similar services in one folder.",[905,1768,1769,1772],{},[959,1770,1771],{},"Build and deployment artifacts",": Receive build artifacts and test reports generated by a CI/CD pipeline.",[897,1774,1776],{"id":1775},"related-documents","Related documents",[902,1778,1779],{},[905,1780,1781],{},[909,1782,1783],{"href":911},"Webhook Policy Settings",[1785,1786,1787],"style",{},"html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}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);}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sTrkL, html code.shiki .sTrkL{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF}",{"title":1057,"searchDepth":1071,"depth":1095,"links":1789},[1790,1791,1792,1793,1794,1795,1796,1799],{"id":899,"depth":1071,"text":900},{"id":916,"depth":1071,"text":917},{"id":979,"depth":1071,"text":980},{"id":1617,"depth":1071,"text":1618},{"id":1670,"depth":1071,"text":1671},{"id":1697,"depth":1071,"text":1698},{"id":1704,"depth":1071,"text":1705,"children":1797},[1798],{"id":1745,"depth":1095,"text":1746},{"id":1775,"depth":1071,"text":1776},null,"Folder webhooks receive files sent by external systems and save them automatically in a specified SetFN Workspace folder.","md",{"slug":1804},"/workspace/folder/webhook/",{"title":1806,"description":1801,"ogType":1807,"twitterCard":1808,"keywords":1809},"Folder Webhooks | Workspace Docs","article","summary_large_image",[1810,1811,1698,1812,1813,1814,1815],"Folder webhooks","Create a folder webhook","Manage webhooks","SetFN Workspace","Folder management","SetFN folder webhook","trCNYk9oZYem9T6B6CK27p-kJjEcJ4Jv0PkdvArO6zM",[1818,1819],{"title":326,"path":327,"stem":328,"children":-1},{"title":334,"path":335,"stem":336,"children":-1},{"title":330,"filename":1821,"content":1822},"webhook","# Folder Webhooks\n\nReceive files from external systems automatically in a specified folder. Each folder gets a unique receiving URL, and data sent to that URL is saved in the folder.\n\n---\n\n## Before you begin\n\n- An administrator must enable Workspace webhooks under [Configure Webhook Policies](../../10.admin/20.service-config/16.webhook-settings.md).\n\n## Create a webhook in a folder\n\n1. Select the settings (⚙️) icon next to the folder that will receive the webhook.\n![Folder settings](./_screenshots/folder-setting-icon-webhook_en.png)\n\n2. On the `Automatic Receiving (Webhook)` tab, select `Add`.\n\n3. Select an authentication method and conflict policy. Both options are described below.\n![Create a webhook](./_screenshots/webhook-simple-create_en.png)\n\n4. Select `Create` to generate the folder's unique receiving URL. If you selected `Secure`, a signing secret is also generated. **These values are shown only once, so copy them to a secure location now.**\n![Webhook created with Simple authentication](./_screenshots/webhook-simple-url-reveal.png)\n\n5. Configure the external system using the receiving URL and example shown on screen. See \"Select an authentication method\" below for request examples.\n\n6. A folder with a webhook displays the :icon{name=\"webhooks-logo\"} icon.\n\n## Select an authentication method\n\nSelect either `Simple` or `Secure` when creating a webhook.\n\n| Authentication | Behavior |\n|---|---|\n| `Simple` | The receiving URL itself is the credential. Send a `POST` request to the issued URL without a separate signature. |\n| `Secure` | Every request must include an HMAC signature in the `X-Webhook-Timestamp`, `X-Webhook-Nonce`, and `X-Webhook-Signature` headers. Unsigned requests are rejected even if the receiving URL is exposed. |\n\nA `Simple` webhook accepts requests using only its URL.\n\n```bash\n# Upload a file via multipart\ncurl -i -X POST \"https://\u003Creceiving-url>?filename=photo.jpg\" \\\n  -F \"file=@./photo.jpg\"\n```\n\nA `Secure` webhook signs a SHA-256 hash of the entire multipart request body, including boundaries and part headers.\n![Secure webhook settings](./_screenshots/webhook-secure-settings_en.png)\n\n```bash\n# Upload a file via multipart (with HMAC signature)\nTS=$(date +%s)\nNONCE=$(cat /proc/sys/kernel/random/uuid)\nBOUNDARY=\"------------------------$(cat /proc/sys/kernel/random/uuid)\"\nTMP=$(mktemp /tmp/multipart.XXXXXX)\n\n# Build the raw multipart body first, then hash that body.\nprintf -- --%s$'\\r\\n' \"$BOUNDARY\" > \"$TMP\"\nprintf 'Content-Disposition: form-data; name=\"file\"; filename=\"photo.jpg\"' >> \"$TMP\"\nprintf $'\\r\\n' >> \"$TMP\"\nprintf 'Content-Type: application/octet-stream' >> \"$TMP\"\nprintf $'\\r\\n\\r\\n' >> \"$TMP\"\ncat ./photo.jpg >> \"$TMP\"\nprintf $'\\r\\n' >> \"$TMP\"\nprintf -- --%s--$'\\r\\n' \"$BOUNDARY\" >> \"$TMP\"\n\nBODY_SHA=$(sha256sum \"$TMP\" | awk '{print $1}')\nSIG=$(printf 'POST\\n\u003Creceiving-path>\\n%s\\n%s\\n%s' \"$TS\" \"$NONCE\" \"$BODY_SHA\" \\\n  | openssl dgst -sha256 -hmac \"$SECRET\" -binary | xxd -p -c 256)\n\ncurl -i -X POST \"https://\u003Creceiving-url>?filename=photo.jpg\" \\\n  -H \"Content-Type: multipart/form-data; boundary=$BOUNDARY\" \\\n  -H \"X-Webhook-Timestamp: $TS\" \\\n  -H \"X-Webhook-Nonce: $NONCE\" \\\n  -H \"X-Webhook-Signature: sha256=$SIG\" \\\n  --data-binary @\"$TMP\"\n\nrm -f \"$TMP\"\n```\n\n## Select a conflict policy\n\nChoose how to handle a newly received file when another file has the same name. You can change the policy later on the same screen by selecting `Apply`.\n\n| Policy | Behavior |\n|---|---|\n| `Reject` | Does not save the newly received file when the name already exists. |\n| `Overwrite` | Replaces the existing file with the newly received file. |\n| `Rename` | Keeps the existing file and saves the new file under a different name. |\n\n## Specify a filename\n\nSpecify the uploaded filename in either of these ways:\n\n- Query parameter: `?filename=report.json`\n- HTTP header: `X-Webhook-Filename: report.json`\n\n![Ways to specify a filename](./_screenshots/webhook-filename-spec_en.png)\n\n## Review received data\n\nData sent from external systems accumulates as files in the folder. Open the folder to review received items.\n\n## Pause or delete a webhook\n\n- In the folder, hover over a webhook in the list to display the pause and delete buttons.\n![Pause and delete buttons in the webhook list](./_screenshots/webhook-list-hover_en.png)\n- Open `My Webhooks` under `Account Settings` to see every folder where you configured a webhook. You can also pause or delete webhooks from this list.\n\n![My Webhooks](./_screenshots/account-my-webhook.png)\n\n::warning\n**The receiving URL grants access.** Store it securely and do not expose it publicly.\n::\n\n::use-case\n### Use cases\n\n- **Website and screen monitoring**: Automatically collect periodic screenshots from Zapier, n8n, Make, or similar tools to track changes.\n- **Automation output storage**: Save reports, invoices, PDFs, and other output from RPA or automation tools without manual intervention.\n- **Form attachment collection**: Collect files submitted through Google Forms, Typeform, and similar services in one folder.\n- **Build and deployment artifacts**: Receive build artifacts and test reports generated by a CI/CD pipeline.\n::\n\n## Related documents\n\n- [Webhook Policy Settings](../../10.admin/20.service-config/16.webhook-settings.md)\n",1789664760747]