[{"data":1,"prerenderedAt":2272},["ShallowReactive",2],{"nav-docs-de":3,"page-/de/docs/webspace/api-overview":1155,"surround-/de/docs/webspace/api-overview":2266,"raw-/de/docs/webspace/api-overview":2269},[4,67,374,775,902,1073,1083,1108],{"title":5,"tags":6,"slug":6,"path":7,"stem":8,"children":9,"page":66,"sourcePath":7},"Erste Schritte mit 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},"Einführung in SpaceBuilder","/getting-started/overview","00.getting-started/00.overview","/getting-started/overview/",{"title":16,"path":17,"stem":18,"tags":6,"slug":19,"sourcePath":17},"SetFN-Konto erstellen","/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},"Installation unter 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},"Installation mit 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},"Installation unter 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},"Installation unter 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},"Ersteinrichtung","/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},"Lizenzaktivierung","/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},"Zugriffsadresse ermitteln (lokal/internes Netzwerk)","/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},"Methode für den externen Zugriff auswählen","/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},"Space verwalten","/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},"Admin-Startseite","/admin/home","10.admin/00.home",[77,82,87],{"title":78,"path":79,"stem":80,"tags":6,"slug":81,"sourcePath":79},"Zugriff auf die Administrationsseite","/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},"Überblick über die Administratormenüs","10.admin/00.home/00.overview","/admin/","/admin/home/overview",{"title":88,"path":89,"stem":90,"tags":6,"slug":91,"sourcePath":89},"Lizenzverwaltung","/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},"Benutzerverwaltung","/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},"Registrierungsrichtlinie und Standardberechtigungen festlegen","/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},"Registrierungsbedingungen hinterlegen","/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},"Benutzerkonto erstellen","/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},"Benutzerkonto bearbeiten","/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},"Administrator hinzufügen","/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},"Teamverwaltung","/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},"Stufenverwaltung","/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},"Zugangsprotokolle einsehen","/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},"Aktive Geräte verwalten","/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},"Konto- und Sicherheitsrichtlinien festlegen","/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},"Roboterprüfung (CAPTCHA) einrichten","/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},"Mitgliederhinweise einrichten","/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},"Rundmail an Mitglieder senden","/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},"Dienstkonfiguration","/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},"Dateibereich-Einstellungen","/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},"Webhook-Einstellungen","/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},"Community-Einstellungen","/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},"KI-Chatbot-Richtlinie festlegen","/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},"E-Mail-Einstellungen","/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},"Branding-Einstellungen","/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},"Wissensdienste","/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},"Überblick über die Wissensdienste","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},"Erfassung & Indexierung","/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},"Suchqualität & Sprachen","/admin/knowledge/search","10.admin/30.knowledge/20.search","/admin/knowledge/search/",{"title":220,"path":221,"stem":222,"tags":6,"slug":223,"sourcePath":221},"Wissensspeicher","/admin/knowledge/storage","10.admin/30.knowledge/30.storage","/admin/knowledge/storage/",{"title":225,"path":226,"stem":227,"tags":6,"slug":228,"sourcePath":226},"Wissensspeicher betreiben","/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},"Qdrant verbinden","/admin/knowledge/qdrant","10.admin/30.knowledge/34.qdrant","/admin/knowledge/qdrant/",{"title":235,"path":236,"stem":237,"tags":6,"slug":238,"sourcePath":236},"Qdrant-Server vorbereiten","/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},"Milvus verbinden","/admin/knowledge/milvus","10.admin/30.knowledge/36.milvus","/admin/knowledge/milvus/",{"title":245,"path":246,"stem":247,"tags":6,"slug":248,"sourcePath":246},"Externe Suche & Quellen","/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},"KI-Dienste","/admin/ai","10.admin/35.ai",[254,259,264,269],{"title":255,"path":251,"stem":256,"tags":6,"slug":257,"sourcePath":258},"KI-Dienste verwalten","10.admin/35.ai/00.overview","/admin/ai/","/admin/ai/overview",{"title":260,"path":261,"stem":262,"tags":6,"slug":263,"sourcePath":261},"Modelle & Laufzeitumgebung einrichten","/admin/ai/models","10.admin/35.ai/10.models","/admin/ai/models/",{"title":265,"path":266,"stem":267,"tags":6,"slug":268,"sourcePath":266},"Werkzeuge & Integrationen einrichten","/admin/ai/integrations","10.admin/35.ai/20.integrations","/admin/ai/integrations/",{"title":270,"path":271,"stem":272,"tags":6,"slug":273,"sourcePath":271},"MCP-Server verwalten","/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},"Plugins verwalten","/admin/plugin/overview","10.admin/40.plugin/00.overview","/admin/plugin/overview/",{"title":285,"path":286,"stem":287,"tags":6,"slug":288,"sourcePath":286},"Einstellungen der Erweiterungs-Plugins","/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},"Betriebs- und Auditprotokolle prüfen","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},"Sicherheitsverwaltung","/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},"Sicherheitsübersicht","/admin/security/overview","10.admin/50.security/00.overview","/admin/security/overview/",{"title":310,"path":311,"stem":312,"tags":6,"slug":313,"sourcePath":311},"Auditprotokoll einsehen","/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},"Blockierungsverwaltung","/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},"Sicherheitseinstellungen","/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},"Geräte mit ausstehender Freigabe bearbeiten","/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},"IP-Zugriffsbeschränkung","/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},"Zwei-Faktor-Authentifizierung für Administratoren einrichten","/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},"Systemverwaltung","/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},"Geräteinformationen","/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},"Serverneustart und Systemwartung","/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},"Hintergrunddienste","/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},"SpaceBuilder aktualisieren","/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},"SpaceBuilder deinstallieren","/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},"Server umziehen","/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},"Arbeitsbereich verwenden","/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},"Einführung in den Arbeitsbereich","/workspace/menu/overview","20.workspace/05.menu/00.overview","/workspace/menu/overview/",{"title":390,"path":391,"stem":392,"tags":6,"slug":393,"sourcePath":391},"Teambereich","/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},"Client-Bereich","/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},"Favoriten","/workspace/menu/favorites","20.workspace/05.menu/10.favorites","/workspace/menu/favorites/",{"title":405,"path":406,"stem":407,"tags":6,"slug":408,"sourcePath":406},"Zuletzt verwendete Dokumente","/workspace/menu/recent","20.workspace/05.menu/20.recent","/workspace/menu/recent/",{"title":410,"path":411,"stem":412,"tags":6,"slug":413,"sourcePath":411},"Externe Freigabe","/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},"Papierkorb","/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},"Konto","/workspace/account","20.workspace/10.account",[424,429,434],{"title":425,"path":426,"stem":427,"tags":6,"slug":428,"sourcePath":426},"Registrierung und Anmeldung","/workspace/account/signup","20.workspace/10.account/10.signup","/workspace/account/signup/",{"title":430,"path":431,"stem":432,"tags":6,"slug":433,"sourcePath":431},"Passwort zurücksetzen","/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},"Kontoeinstellungen","/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},"Ordner","/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},"Grundfunktionen für Ordner","/workspace/folder/basic","20.workspace/20.folder/10.basic","/workspace/folder/basic/",{"title":450,"path":451,"stem":452,"tags":6,"slug":453,"sourcePath":451},"Mehrere Ordner auf einmal erstellen","/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},"Filter","/workspace/folder/filter","20.workspace/20.folder/13.filter","/workspace/folder/filter/",{"title":460,"path":461,"stem":462,"tags":6,"slug":463,"sourcePath":461},"Ordneransichtsoptionen festlegen","/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},"Ordner als Pinnwand verwenden","/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},"Webansicht für Ordner","/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},"Ordner organisieren","/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},"Ordnerhinweis (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},"Ordner-/Dateiliste exportieren","/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},"Zugriffsberechtigungen nach Stufe festlegen","/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},"Zugriffsberechtigungen nach Team festlegen","/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},"Dateiregeln festlegen","/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},"Ordner-Webhooks","/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},"Wissensindex für Ordner festlegen","/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},"Ordner für Aufgabenautomatisierung","/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},"Dateien","/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},"Grundfunktionen der Dateiverwaltung","/workspace/file/overview","20.workspace/30.file/00.overview","/workspace/file/overview/",{"title":534,"path":535,"stem":536,"tags":6,"slug":537,"sourcePath":535},"Dateiliste beim Betrachten anzeigen","/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},"Markdown- und Textdateien anzeigen und bearbeiten","/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},"HTML-Dateien anzeigen","/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},"CSV-Dateien anzeigen und bearbeiten","/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},"Bild-/Videodateien anzeigen","/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},"Office-/PDF-Dateien anzeigen","/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},"Webseite einfügen (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},"Screenshot einfügen","/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},"Markdown einfügen (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},"Bildschirm aufnehmen","/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},"Schnellnotiz","/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},"Datei-Tags","/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},"Mehrere Dateien auf einmal umbenennen","/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},"Dateikonvertierung","/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},"Vorlagendateien","/workspace/file/templates","20.workspace/30.file/41.templates","/workspace/file/templates/",{"title":609,"path":610,"stem":611,"tags":6,"slug":612,"sourcePath":610},"Aufgabenliste (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},"Genehmigungsformular","/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},"Kanban-Board","/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},"Zeitleiste","/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},"Notizblock","/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},"KI-Chat-Datei","/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},"Änderungsverlauf von Dateien einsehen","/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},"Versionsverwaltung für Dateien","/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},"Bearbeitungssperre","/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},"Dateiverschlüsselung","/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},"Dateien von der Festplatte registrieren","/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},"Zusammenarbeit","/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},"Kommentare zu Dateien und Ordnern","/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},"Gemeinsamer Chat und Bearbeitungssperre","/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},"Teammitgliedern an ihren Arbeitsort folgen","/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},"Erwähnungen","/workspace/cooperation/mention","20.workspace/35.cooperation/14.mention","/workspace/cooperation/mention/",{"title":693,"path":694,"stem":695,"tags":6,"slug":696,"sourcePath":694},"Direktnachrichten","/workspace/cooperation/dm","20.workspace/35.cooperation/16.dm","/workspace/cooperation/dm/",{"title":698,"path":699,"stem":700,"tags":6,"slug":701,"sourcePath":699},"Benachrichtigungsarchiv","/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},"Teamaktivitäten einsehen","/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},"Externen Freigabelink erstellen","/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},"Externen Freigabelink per E-Mail senden","/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},"Suche","/workspace/search","20.workspace/40.search",[723,728,734,739,744,749],{"title":724,"path":725,"stem":726,"tags":6,"slug":727,"sourcePath":725},"Dateisuche","/workspace/search/search","20.workspace/40.search/00.search","/workspace/search/search/",{"title":729,"path":730,"stem":731,"tags":732,"slug":733,"sourcePath":730},"Kontextsuche (KI-Suche)","/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},"Bildsuche","/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},"Chatsuche","/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},"Kommentarsuche","/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},"Synonymsuche","/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},"KI","/workspace/ai","20.workspace/50.ai",[759,764,770],{"title":760,"path":761,"stem":762,"tags":6,"slug":763,"sourcePath":761},"KI-Funktionen im Überblick","/workspace/ai/overview","20.workspace/50.ai/00.overview","/workspace/ai/overview/",{"title":765,"path":766,"stem":767,"tags":768,"slug":769,"sourcePath":766},"Lokale KI mit Aufgaben beauftragen","/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},"Externe KI nutzen","/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},"Was ist Webspace?","/webspace/overview","40.webspace/00.overview","/webspace/overview/",{"title":786,"path":787,"stem":788,"tags":6,"slug":789,"sourcePath":787},"Website bereitstellen","/webspace/website-release","40.webspace/10.website-release","/webspace/website-release/",{"title":791,"path":792,"stem":793,"tags":6,"slug":794,"sourcePath":792},"Schemadatei (.sfn) erstellen","/webspace/create-database","40.webspace/20.create-database","/webspace/create-database/",{"title":796,"path":797,"stem":798,"tags":6,"slug":799,"sourcePath":797},"APIs erstellen und Datenbank bereitstellen","/webspace/api-overview","40.webspace/24.api-overview","/webspace/api-overview/",{"title":801,"path":802,"stem":803,"tags":6,"slug":804,"sourcePath":802},"Frontend-Beispiel ansehen","/webspace/frontend-example","40.webspace/26.frontend-example","/webspace/frontend-example/",{"title":806,"path":807,"stem":808,"tags":809,"slug":810,"sourcePath":807},"Internen Webservice für das Team erstellen","/webspace/internal-webservice","40.webspace/32.internal-webservice",[469],"/webspace/internal-webservice/",{"title":812,"path":813,"stem":814,"tags":6,"slug":815,"sourcePath":813},"Öffentlich zugänglichen Webservice erstellen","/webspace/external-webservice","40.webspace/34.external-webservice","/webspace/external-webservice/",{"title":817,"path":818,"stem":819,"tags":6,"slug":820,"sourcePath":818},"SQL importieren und exportieren","/webspace/sql-converter","40.webspace/42.sql-converter","/webspace/sql-converter/",{"title":822,"path":823,"stem":824,"tags":6,"slug":825,"sourcePath":823},"Schema in Code umwandeln","/webspace/code-converter","40.webspace/44.code-converter","/webspace/code-converter/",{"title":827,"path":828,"stem":829,"tags":6,"slug":830,"sourcePath":828},"Leistung und Skalierung","/webspace/performance","40.webspace/48.performance","/webspace/performance/",{"title":832,"tags":6,"slug":6,"path":833,"stem":834,"children":835,"page":66,"sourcePath":833},"Webspace verwalten","/webspace/admin","40.webspace/50.admin",[836,841,846,851,856,861],{"title":837,"path":838,"stem":839,"tags":6,"slug":840,"sourcePath":838},"Erste Schritte mit der Webspace-Verwaltung","/webspace/admin/overview","40.webspace/50.admin/00.overview","/webspace/admin/overview/",{"title":842,"path":843,"stem":844,"tags":6,"slug":845,"sourcePath":843},"Betriebsübersicht","/webspace/admin/operations","40.webspace/50.admin/10.operations","/webspace/admin/operations/",{"title":847,"path":848,"stem":849,"tags":6,"slug":850,"sourcePath":848},"Arbeitsbereichszugriff","/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},"API- und Site-Sicherheit","/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},"Dienste und Kapazität","/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},"Bereitstellungsverwaltung und Frontend-Releases","/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},"Webspace-Tutorials",[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},"Eigenes Geschäftssystem erstellen","/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},"Echtzeit-Gomoku-Spiel erstellen","/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},"Material-Pinnwand aus Ordnerdateien erstellen","/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},"Gemeinsamen Monster-Raid erstellen","/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},"Beispiel für einen KI-Support-Chat bereitstellen","/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},"Plugins verwenden","/plugin","50.plugin",[907,912,932,992,1013,1048],{"title":908,"path":909,"stem":910,"tags":6,"slug":911,"sourcePath":909},"Plugin-Überblick","/plugin/overview","50.plugin/00.overview","/plugin/overview/",{"title":913,"tags":6,"slug":6,"path":914,"stem":915,"children":916,"page":66,"sourcePath":914},"Kalender","/plugin/calendar","50.plugin/10.calendar",[917,922,927],{"title":918,"path":919,"stem":920,"tags":6,"slug":921,"sourcePath":919},"Kalender im Überblick","/plugin/calendar/overview","50.plugin/10.calendar/00.overview","/plugin/calendar/overview/",{"title":923,"path":924,"stem":925,"tags":6,"slug":926,"sourcePath":924},"Termine erstellen, bearbeiten und löschen","/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},"Aktivitätsprotokolle prüfen","/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},"E-Mail","/plugin/email","50.plugin/20.email",[937,942,946,951,956,962,967,972,977,982,987],{"title":938,"path":939,"stem":940,"tags":6,"slug":941,"sourcePath":939},"E-Mail im Überblick","/plugin/email/overview","50.plugin/20.email/00.overview","/plugin/email/overview/",{"title":188,"path":943,"stem":944,"tags":6,"slug":945,"sourcePath":943},"/plugin/email/setfn-email-setting","50.plugin/20.email/05.setfn-email-setting","/plugin/email/setfn-email-setting/",{"title":947,"path":948,"stem":949,"tags":6,"slug":950,"sourcePath":948},"Externes E-Mail-Konto verbinden","/plugin/email/external-email","50.plugin/20.email/07.external-email","/plugin/email/external-email/",{"title":952,"path":953,"stem":954,"tags":6,"slug":955,"sourcePath":953},"E-Mail-Grundfunktionen","/plugin/email/email-basic","50.plugin/20.email/10.email-basic","/plugin/email/email-basic/",{"title":957,"path":958,"stem":959,"tags":6,"slug":960,"sourcePath":961},"KI-Assistenten für E-Mails verwenden","/plugin/email/ai-assistant","50.plugin/20.email/15.email-ai-assistant","/plugin/email/ai-assistant/","/plugin/email/email-ai-assistant",{"title":963,"path":964,"stem":965,"tags":6,"slug":966,"sourcePath":964},"E-Mails verfassen und senden","/plugin/email/email-compose","50.plugin/20.email/20.email-compose","/plugin/email/email-compose/",{"title":968,"path":969,"stem":970,"tags":6,"slug":971,"sourcePath":969},"Dateien anhängen","/plugin/email/email-attachment","50.plugin/20.email/30.email-attachment","/plugin/email/email-attachment/",{"title":973,"path":974,"stem":975,"tags":6,"slug":976,"sourcePath":974},"E-Mail-Ordner verwalten","/plugin/email/email-folders","50.plugin/20.email/40.email-folders","/plugin/email/email-folders/",{"title":978,"path":979,"stem":980,"tags":6,"slug":981,"sourcePath":979},"E-Mails automatisch sortieren","/plugin/email/email-auto-classify","50.plugin/20.email/50.email-auto-classify","/plugin/email/email-auto-classify/",{"title":983,"path":984,"stem":985,"tags":6,"slug":986,"sourcePath":984},"E-Mail-Dateien aufbewahren und teilen","/plugin/email/email-open-in-space","50.plugin/20.email/60.email-open-in-space","/plugin/email/email-open-in-space/",{"title":988,"path":989,"stem":990,"tags":6,"slug":991,"sourcePath":989},"E-Mail-Sicherheit","/plugin/email/email-security","50.plugin/20.email/70.email-security","/plugin/email/email-security/",{"title":993,"tags":6,"slug":6,"path":994,"stem":995,"children":996,"page":66,"sourcePath":994},"Workflow (Automatisierung)","/plugin/workflow","50.plugin/30.workflow",[997,1002,1008],{"title":998,"path":999,"stem":1000,"tags":6,"slug":1001,"sourcePath":999},"Workflow im Überblick","/plugin/workflow/overview","50.plugin/30.workflow/00.overview","/plugin/workflow/overview/",{"title":1003,"path":1004,"stem":1005,"tags":1006,"slug":1007,"sourcePath":1004},"Neuen Workflow erstellen","/plugin/workflow/new-workflow","50.plugin/30.workflow/10.new-workflow",[469],"/plugin/workflow/new-workflow/",{"title":1009,"path":1010,"stem":1011,"tags":6,"slug":1012,"sourcePath":1010},"Ausführungsverlauf prüfen","/plugin/workflow/execution-history","50.plugin/30.workflow/20.execution-history","/plugin/workflow/execution-history/",{"title":1014,"tags":6,"slug":6,"path":1015,"stem":1016,"children":1017,"page":66,"sourcePath":1015},"Fine-Tuning (KI-Training)","/plugin/fine-tuning","50.plugin/40.fine-tuning",[1018,1023,1028,1033,1038,1043],{"title":1019,"path":1020,"stem":1021,"tags":6,"slug":1022,"sourcePath":1020},"Einführung in das Fine-Tuning","/plugin/fine-tuning/overview","50.plugin/40.fine-tuning/00.overview","/plugin/fine-tuning/overview/",{"title":1024,"path":1025,"stem":1026,"tags":6,"slug":1027,"sourcePath":1025},"Trainingsdaten vorverarbeiten","/plugin/fine-tuning/pre-processing","50.plugin/40.fine-tuning/10.pre-processing","/plugin/fine-tuning/pre-processing/",{"title":1029,"path":1030,"stem":1031,"tags":6,"slug":1032,"sourcePath":1030},"Training","/plugin/fine-tuning/training","50.plugin/40.fine-tuning/20.training","/plugin/fine-tuning/training/",{"title":1034,"path":1035,"stem":1036,"tags":6,"slug":1037,"sourcePath":1035},"Evaluierung","/plugin/fine-tuning/evaluation","50.plugin/40.fine-tuning/30.evaluation","/plugin/fine-tuning/evaluation/",{"title":1039,"path":1040,"stem":1041,"tags":6,"slug":1042,"sourcePath":1040},"Chat-Test","/plugin/fine-tuning/chat-test","50.plugin/40.fine-tuning/40.chat-test","/plugin/fine-tuning/chat-test/",{"title":1044,"path":1045,"stem":1046,"tags":6,"slug":1047,"sourcePath":1045},"Exportieren","/plugin/fine-tuning/export","50.plugin/40.fine-tuning/50.export","/plugin/fine-tuning/export/",{"title":1049,"tags":6,"slug":6,"path":1050,"stem":1051,"children":1052,"page":66,"sourcePath":1050},"EDC (Datenerfassung)","/plugin/edc","50.plugin/50.edc",[1053,1058,1063,1068],{"title":1054,"path":1055,"stem":1056,"tags":6,"slug":1057,"sourcePath":1055},"Einführung in EDC","/plugin/edc/overview","50.plugin/50.edc/00.overview","/plugin/edc/overview/",{"title":1059,"path":1060,"stem":1061,"tags":6,"slug":1062,"sourcePath":1060},"Dateneingabe, Audit Trail","/plugin/edc/data-entry","50.plugin/50.edc/10.data-entry","/plugin/edc/data-entry/",{"title":1064,"path":1065,"stem":1066,"tags":6,"slug":1067,"sourcePath":1065},"Builder","/plugin/edc/builder","50.plugin/50.edc/20.builder","/plugin/edc/builder/",{"title":1069,"path":1070,"stem":1071,"tags":6,"slug":1072,"sourcePath":1070},"Benutzer und Studienzentren einrichten","/plugin/edc/account","50.plugin/50.edc/30.account","/plugin/edc/account/",{"title":1074,"tags":6,"slug":6,"path":1075,"stem":1076,"children":1077,"page":66,"sourcePath":1075},"Befehlszeilentools","/cli","90.cli",[1078],{"title":1079,"path":1080,"stem":1081,"tags":6,"slug":1082,"sourcePath":1080},"Server über Befehle verwalten","/cli/commands","90.cli/10.commands","/cli/commands/",{"title":1084,"tags":6,"slug":6,"path":1085,"stem":1086,"children":1087,"page":66,"sourcePath":1085},"Sicherheitsupdates","/security-updates","95.security-updates",[1088,1093,1098,1103],{"title":1089,"path":1090,"stem":1091,"tags":6,"slug":1092,"sourcePath":1090},"Sicherheitsprüfungen und Update-Verfahren kennenlernen","/security-updates/overview","95.security-updates/00.overview","/security-updates/overview/",{"title":1094,"path":1095,"stem":1096,"tags":6,"slug":1097,"sourcePath":1095},"Protokoll der Sicherheitsprüfungen","/security-updates/review-log","95.security-updates/10.review-log","/security-updates/review-log/",{"title":1099,"path":1100,"stem":1101,"tags":6,"slug":1102,"sourcePath":1100},"Prüfstatus wichtiger Schwachstellen","/security-updates/vulnerability-status","95.security-updates/20.vulnerability-status","/security-updates/vulnerability-status/",{"title":1104,"path":1105,"stem":1106,"tags":6,"slug":1107,"sourcePath":1105},"Sicherheitsupdates des Servers prüfen","/security-updates/server-checklist","95.security-updates/30.server-checklist","/security-updates/server-checklist/",{"title":1109,"tags":6,"slug":6,"path":1110,"stem":1111,"children":1112,"page":66,"sourcePath":1110},"FAQ","/faq","99.FAQ",[1113,1119,1125,1131,1137,1143,1149],{"title":1114,"path":1115,"stem":1116,"tags":6,"slug":1117,"sourcePath":1118},"SetFN vs. Cloud-Dienste im Vergleich","/FAQ/comparison-cloud","99.FAQ/10.comparison-cloud","/FAQ/comparison-cloud/","/faq/comparison-cloud",{"title":1120,"path":1121,"stem":1122,"tags":6,"slug":1123,"sourcePath":1124},"SetFN vs. NAS im Vergleich","/FAQ/comparison-nas","99.FAQ/20.comparison-nas","/FAQ/comparison-nas/","/faq/comparison-nas",{"title":1126,"path":1127,"stem":1128,"tags":6,"slug":1129,"sourcePath":1130},"Sicherheitsrichtlinie","/FAQ/security-policy","99.FAQ/30.security-policy","/FAQ/security-policy/","/faq/security-policy",{"title":1132,"path":1133,"stem":1134,"tags":6,"slug":1135,"sourcePath":1136},"Warum SetFN so schnell ist","/FAQ/why-fast","99.FAQ/40.why-fast","/FAQ/why-fast/","/faq/why-fast",{"title":1138,"path":1139,"stem":1140,"tags":6,"slug":1141,"sourcePath":1142},"Lizenz-FAQ","/FAQ/license-faq","99.FAQ/50.license-faq","/FAQ/license-faq/","/faq/license-faq",{"title":1144,"path":1145,"stem":1146,"tags":6,"slug":1147,"sourcePath":1148},"FAQ zu KI-Funktionen","/FAQ/ai-faq","99.FAQ/60.ai-faq","/FAQ/ai-faq/","/faq/ai-faq",{"title":1150,"path":1151,"stem":1152,"tags":6,"slug":1153,"sourcePath":1154},"Leitfaden zur Fehlerbehebung","/FAQ/troubleshooting","99.FAQ/70.troubleshooting","/FAQ/troubleshooting/","/faq/troubleshooting",{"id":1156,"title":796,"body":1157,"cover":6,"description":2252,"extension":2253,"image":6,"meta":2254,"navigation":2255,"path":797,"reviewSummary":6,"reviewedAt":6,"seo":2256,"slug":799,"stem":798,"tags":6,"thumbnail":6,"thumbnailPosition":6,"thumbnailScale":6,"__hash__":2265},"docs_de/40.webspace/24.api-overview.md",{"type":1158,"value":1159,"toc":2229},"minimal",[1160,1164,1173,1176,1179,1184,1200,1204,1210,1216,1221,1224,1301,1312,1322,1326,1395,1411,1417,1420,1426,1430,1436,1474,1481,1487,1491,1514,1520,1524,1530,1574,1597,1601,1604,1610,1617,1622,1626,1644,1650,1661,1666,1669,1672,1696,1716,1720,1726,1732,1860,1872,1876,1879,1915,1918,1921,1945,1983,1995,1999,2006,2016,2019,2025,2029,2042,2049,2052,2114,2117,2165,2169,2172,2176,2196,2200,2225],[1161,1162,796],"h1",{"id":1163},"apis-erstellen-und-datenbank-bereitstellen",[1165,1166,1167,1168,1172],"p",{},"Wenn Sie eine Schemadatei (.sfn) erstellt haben, ist es jetzt an der Zeit, den Entwurf in einen echten Dienst zu verwandeln. Öffnen Sie die ",[1169,1170,1171],"code",{},"API-Erstellung",": Für jede Tabelle stehen APIs zum Anlegen, Abfragen, Bearbeiten und Löschen bereit, und Sie sehen auf einem Bildschirm, wer welche Adresse verwenden darf.",[1165,1174,1175],{},"Bei Bedarf können Sie selbst erstellte Abfrage-APIs, APIs für statische Dateien und Echtzeit-Ereignisse mit demselben Dienst verbinden.",[1177,1178],"hr",{},[1180,1181,1183],"h2",{"id":1182},"bevor-sie-beginnen","Bevor Sie beginnen",[1185,1186,1187,1191],"ul",{},[1188,1189,1190],"li",{},"Erforderliche Berechtigung: Benutzer, denen die Berechtigung zur Datenbanknutzung erteilt wurde",[1188,1192,1193,1194,1199],{},"Vorbereitung: Sie müssen zuerst eine ",[1195,1196,1198],"a",{"href":1197},"./create-database","Schemadatei (.sfn)"," erstellen.",[1180,1201,1203],{"id":1202},"api-erstellung-öffnen","API-Erstellung öffnen",[1165,1205,1206,1207,1209],{},"Wählen Sie oben im Schemabildschirm die Registerkarte ",[1169,1208,1171],{},", um die automatisch erzeugten APIs je Tabelle anzuzeigen.",[1165,1211,1212],{},[1213,1214],"img",{"alt":1171,"src":1215},"./_screenshots/schema-api-build_de.png",[1217,1218,1220],"h3",{"id":1219},"automatisch-erzeugte-apis","Automatisch erzeugte APIs",[1165,1222,1223],{},"Für jede Tabelle werden standardmäßig die folgenden 5 APIs automatisch erzeugt. Bei Bedarf können Sie auch selbst neue APIs hinzufügen.",[1225,1226,1227,1243],"table",{},[1228,1229,1230],"thead",{},[1231,1232,1233,1237,1240],"tr",{},[1234,1235,1236],"th",{},"Methode",[1234,1238,1239],{},"Endpunkt",[1234,1241,1242],{},"Beschreibung",[1244,1245,1246,1258,1268,1279,1290],"tbody",{},[1231,1247,1248,1252,1255],{},[1249,1250,1251],"td",{},"GET",[1249,1253,1254],{},".../list",[1249,1256,1257],{},"Liste abfragen",[1231,1259,1260,1262,1265],{},[1249,1261,1251],{},[1249,1263,1264],{},".../view/:id",[1249,1266,1267],{},"Einzelnen Datensatz abfragen",[1231,1269,1270,1273,1276],{},[1249,1271,1272],{},"POST",[1249,1274,1275],{},".../create",[1249,1277,1278],{},"Anlegen",[1231,1280,1281,1284,1287],{},[1249,1282,1283],{},"PUT",[1249,1285,1286],{},".../update/:id",[1249,1288,1289],{},"Bearbeiten",[1231,1291,1292,1295,1298],{},[1249,1293,1294],{},"DELETE",[1249,1296,1297],{},".../delete/:id",[1249,1299,1300],{},"Löschen",[1165,1302,1303,1304,1307,1308,1311],{},"Unter ",[1169,1305,1306],{},"Neue API hinzufügen (Custom Endpoint)"," können Sie eine API hinzufügen, deren Abfrage und Antwortform Sie selbst festlegen. Mit ",[1169,1309,1310],{},"API für statische Dateien hinzufügen"," können Sie JSON-, XML-, HTML-, Bild- und Binärdateien aus dem Arbeitsbereich passend zum Dateityp bereitstellen.",[1313,1314,1315],"note",{},[1165,1316,1317,1318,1321],{},"Wenn Sie einen Ordner als Quelle angeben, erhalten Sie die Dateiliste als JSON und können den Inhalt der ausgewählten Datei bereitstellen. Die Einrichtung ist unter ",[1195,1319,888],{"href":1320},"./examples/folder-board"," beschrieben.",[1217,1323,1325],{"id":1324},"statische-dateien-oder-ordner-als-api-bereitstellen","Statische Dateien oder Ordner als API bereitstellen",[1327,1328,1329,1335,1348,1367,1378,1392],"ol",{},[1188,1330,1331,1332,1334],{},"Wählen Sie ",[1169,1333,1310],{},".",[1188,1336,1337,1338,1341,1342,1344,1345,1334],{},"Wählen Sie unter ",[1169,1339,1340],{},"Speicherbereich"," die Option ",[1169,1343,390],{}," oder ",[1169,1346,1347],{},"Persönlicher Bereich",[1188,1349,1337,1350,1341,1353,1344,1356,1359,1360,1344,1363,1366],{},[1169,1351,1352],{},"Quelltyp",[1169,1354,1355],{},"Einzelne Datei",[1169,1357,1358],{},"Ordnerliste · Dateiinhalt"," und geben Sie anschließend mit ",[1169,1361,1362],{},"Datei auswählen",[1169,1364,1365],{},"Ordner auswählen"," die Quelle an.",[1188,1368,1369,1370,1373,1374,1377],{},"Wenn Sie einen Ordner gewählt haben, legen Sie ",[1169,1371,1372],{},"Zulässige Dateiendungen"," und ",[1169,1375,1376],{},"Unterordner einbeziehen"," fest. Lassen Sie die Dateiendungen leer, werden alle Formate berücksichtigt.",[1188,1379,1337,1380,1383,1384,1387,1388,1391],{},[1169,1381,1382],{},"Antwortmodus",", ob der Inhalt im Browser angezeigt (",[1169,1385,1386],{},"Direkt im Browser anzeigen",") oder als Datei empfangen werden soll (",[1169,1389,1390],{},"Herunterladen",").",[1188,1393,1394],{},"Prüfen Sie die Endpunktberechtigungen und stellen Sie dann das Schema bereit.",[1165,1396,1397,1398,1401,1402,1404,1405,1344,1407,1410],{},"Eine einzelne Datei liefert ihren Inhalt am festgelegten Endpunkt. Für einen Ordner werden sowohl die Dateiliste als JSON als auch eine Adresse erzeugt, über die der Inhalt anhand der ",[1169,1399,1400],{},"id"," eines Listeneintrags gelesen wird. Wenn Sie eine Datei umbenennen oder verschieben, ändert sich auch die aus dem Pfad gebildete ",[1169,1403,1400],{},"; der Client muss daher die aktuelle ",[1169,1406,1400],{},[1169,1408,1409],{},"viewUrl"," aus der Liste verwenden.",[1412,1413,1414],"warning",{},[1165,1415,1416],{},"Wenn Sie ausführbare Dateien wie HTML oder SVG direkt im Browser anzeigen, wählen Sie nur vertrauenswürdige Dateien als Quelle. Der Server setzt Sicherheitsheader, aber auch die API-Zugriffsberechtigung sollte eingeschränkt werden.",[1165,1418,1419],{},"Bei den Funktionsendpunkten legen Sie die Berechtigungen für Funktionen fest, die im gesamten Dienst verwendet werden, etwa Echtzeit-Socket, Datei- und Bild-Upload und KI-Antworten.",[1165,1421,1422],{},[1213,1423],{"alt":1424,"src":1425},"Einstellungen für Speicherbereich und Dateiabruf einer API für statische Ordner","./_screenshots/webspace-static-folder-api_en.png",[1217,1427,1429],{"id":1428},"echtzeit-ereignisse-und-rest-bündel-importieren","Echtzeit-Ereignisse und REST-Bündel importieren",[1165,1431,1303,1432,1435],{},[1169,1433,1434],{},"Ereignisdefinitionen"," des Echtzeit-Sockets können Sie nur Ereignisse schreiben oder ein JSON- oder YAML-Bündel importieren, das die für die Ereignisse benötigten Tabellen und REST-Einstellungen enthält.",[1327,1437,1438,1444,1454,1461,1468],{},[1188,1439,1331,1440,1443],{},[1169,1441,1442],{},"KI-Antwort einfügen"," und fügen Sie das Bündel ein. Ein selbst vorbereitetes Bündel können Sie im selben Format einfügen.",[1188,1445,1331,1446,1449,1450,1453],{},[1169,1447,1448],{},"Nach Namen zusammenführen",", um vorhandene Ereignisse beizubehalten, oder ",[1169,1451,1452],{},"Alle ersetzen",", um alle aktuellen Ereignisse zu ersetzen.",[1188,1455,1456,1457,1460],{},"Prüfen Sie in der ",[1169,1458,1459],{},"Vorschau",", welche Ereignisse hinzugefügt, geändert oder gelöscht werden und wie viele Tabellen, Spalten und REST-Endpunkte hinzugefügt werden.",[1188,1462,1463,1464,1467],{},"Prüfen Sie Einträge, die mit vorhandenen REST-Einstellungen kollidieren oder deren Format automatisch bereinigt oder ausgeschlossen wurde. Wählen Sie ",[1169,1465,1466],{},"Abweichende REST-Einstellungen überschreiben"," nur, wenn vorhandene REST-Einstellungen geändert werden müssen.",[1188,1469,1470,1471,1334],{},"Prüfen Sie das Ergebnis der Serverprüfung, beheben Sie Fehler und wählen Sie ",[1169,1472,1473],{},"Anwenden",[1165,1475,1476,1477,1480],{},"Der Import ändert das gerade bearbeitete Schema. Im tatsächlichen Dienst wird es erst wirksam, wenn Sie ",[1169,1478,1479],{},"Bereitstellen"," abgeschlossen haben. Auch wenn Sie im Importbildschirm angewendet haben, prüft der Server bei der Bereitstellung die Ereignis- und REST-Regeln erneut; wird die Prüfung nicht bestanden, erfolgt keine Bereitstellung.",[1165,1482,1483],{},[1213,1484],{"alt":1485,"src":1486},"Vorschau beim Import von Echtzeit-Ereignissen und REST-Bündeln","./_screenshots/webspace-realtime-import-preview_en.png",[1180,1488,1490],{"id":1489},"mit-benutzerdefinierten-endpunkten-apis-jenseits-von-crud-erstellen","Mit benutzerdefinierten Endpunkten APIs jenseits von CRUD erstellen",[1165,1492,1493,1494,1497,1498,1497,1501,1497,1504,1497,1507,1510,1511,1513],{},"Wenn die 5 automatisch erzeugten APIs (",[1169,1495,1496],{},"list","/",[1169,1499,1500],{},"view",[1169,1502,1503],{},"create",[1169,1505,1506],{},"update",[1169,1508,1509],{},"delete",") nicht ausreichen, können Sie mit ",[1169,1512,1306],{}," das Verhalten deutlich feiner definieren.",[1165,1515,1516],{},[1213,1517],{"alt":1518,"src":1519},"Grundeinstellungen eines mit Neue API hinzufügen erstellten benutzerdefinierten Endpunkts. API-Typ, Art der Operation, Zielumfang und Pfad werden festgelegt","./_screenshots/webspace-customapi-basic_en.png",[1217,1521,1523],{"id":1522},"art-der-operation","Art der Operation",[1165,1525,1526,1527,1529],{},"Neben den 5 grundlegenden CRUD-Operationen bietet die Auswahlliste ",[1169,1528,1523],{}," auch diese Optionen.",[1225,1531,1532,1541],{},[1228,1533,1534],{},[1231,1535,1536,1538],{},[1234,1537,1523],{},[1234,1539,1540],{},"Bedeutung",[1244,1542,1543,1551,1559,1567],{},[1231,1544,1545,1548],{},[1249,1546,1547],{},"Aktion ausführen",[1249,1549,1550],{},"Geeignet für befehlsartig verarbeitete Endpunkte, die nicht genau in CRUD passen",[1231,1552,1553,1556],{},[1249,1554,1555],{},"Statistik abrufen",[1249,1557,1558],{},"Liefert statistische Ergebnisse wie Zählungen, Summen und Aggregate",[1231,1560,1561,1564],{},[1249,1562,1563],{},"Stapelverarbeitung",[1249,1565,1566],{},"Verarbeitet mehrere Datensätze auf einmal",[1231,1568,1569,1571],{},[1249,1570,1044],{},[1249,1572,1573],{},"Lädt Abfrageergebnisse als Datei herunter",[1165,1575,1576,1577,1580,1581,1584,1585,1588,1589,1592,1593,1596],{},"Als ",[1169,1578,1579],{},"Zielumfang"," wählen Sie zwischen ",[1169,1582,1583],{},"Sammlung"," (ganze Tabelle oder mehrere Datensätze, meist ein Pfad ohne ",[1169,1586,1587],{},":id","), ",[1169,1590,1591],{},"Einzelner Eintrag"," (ein bestimmter Datensatz) und ",[1169,1594,1595],{},"Befehl"," (benutzerdefinierter befehlsartiger Endpunkt, der nicht in CRUD passt).",[1217,1598,1600],{"id":1599},"berechtigungen-dieselben-drei-stufen-wie-bei-der-rest-api","Berechtigungen: dieselben drei Stufen wie bei der REST-API",[1165,1602,1603],{},"Die Berechtigungen benutzerdefinierter Endpunkte werden genauso festgelegt wie bei den automatisch erzeugten APIs. Die Erläuterung steht direkt auf dem Bildschirm, sodass nichts verwechselt werden kann.",[1165,1605,1606],{},[1213,1607],{"alt":1608,"src":1609},"Berechtigungsauswahl eines benutzerdefinierten Endpunkts. Die drei Optionen Nur Mitglieder / Mitglieder + Zusatzbedingungen (Stufe, Team, Administrator, Eigentümer) / Alle werden mit Erläuterung angezeigt","./_screenshots/webspace-customapi-permission_en.png",[1165,1611,1612,1613,1616],{},"Wenn Sie ",[1169,1614,1615],{},"Mitglieder + Zusatzbedingungen"," wählen, können Sie Bedingungen zu Stufe, Teamzugehörigkeit, Administratorstatus und Eigentümer (owner) kombinieren. Bedingungen wie „nur ab Stufe 2“ oder „nur Mitglieder des Vertriebsteams“ lassen sich so auf benutzerdefinierte Endpunkte genauso anwenden wie auf automatisch erzeugte REST-API-Endpunkte.",[1313,1618,1619],{},[1165,1620,1621],{},"Diese Bedingungen (Stufe/Team/Administrator/Eigentümer) entscheiden, „wer diesen Endpunkt aufrufen darf“. Eine Mengenbegrenzung wie „höchstens 3-mal pro Tag“ gibt es hier nicht — wenn Sie so etwas brauchen, müssen Sie es im SQL-Editor unten selbst umsetzen.",[1217,1623,1625],{"id":1624},"sql-selbst-schreiben","SQL selbst schreiben",[1165,1627,1628,1629,1632,1633,1636,1637,1639,1640,1643],{},"In der ",[1169,1630,1631],{},"Basisabfrage"," auf der Registerkarte ",[1169,1634,1635],{},"Verarbeitungsablauf"," gibt es einen Editor, in dem Sie das SQL schreiben, das dieser Endpunkt ausführt. Bei automatisch erzeugten APIs öffnet sich derselbe Editor, wenn Sie die ",[1169,1638,1631],{}," auf ",[1169,1641,1642],{},"Selbst geschriebenes SQL"," umstellen.",[1165,1645,1646],{},[1213,1647],{"alt":1648,"src":1649},"SQL-Editor in der Basisabfrage auf der Registerkarte Verarbeitungsablauf. Als Standardwert ist SELECT * FROM leave_balances WHERE 1=1; eingetragen","./_screenshots/webspace-customapi-sql_en.png",[1165,1651,1652,1653,1656,1657,1660],{},"Auch in der Spalte ",[1169,1654,1655],{},"Verarbeitung"," der REST-API-Liste wird mit einem ",[1169,1658,1659],{},"SQL","-Abzeichen angezeigt, dass dieser Endpunkt eine selbst geschriebene Abfrage verwendet. Bedingungen, die sich mit automatisch erzeugten APIs nicht ausdrücken lassen — zum Beispiel aggregatbasierte Bedingungen wie „ablehnen, wenn dieses Mitglied heute bereits 3 oder mehr Zeilen angelegt hat“ — können Sie nur mit diesem SQL-Editor umsetzen.",[1662,1663,1665],"h4",{"id":1664},"sql-und-parameter-prüfen","SQL und Parameter prüfen",[1165,1667,1668],{},"Während Sie SQL eingeben, prüft der Browser die Syntax sowie die Tabellen und Spalten des aktuellen Schemas. Enthält ein Fehler oder Hinweis eine Zeilen- und Spaltenangabe, wählen Sie ihn aus, um zur entsprechenden Stelle im Editor zu gelangen. Auch im Bereitstellungsbereich können Sie fehlerhaftes SQL öffnen.",[1165,1670,1671],{},"Diese Prüfung führt die Abfrage nicht in der Datenbank aus. Rufen Sie nach der Bereitstellung die API auf, um datenbankspezifische Funktionen, Zugriffsrechte und Ergebnisse mit echten Daten zu prüfen.",[1165,1673,1674,1675,1678,1679,1681,1682,1681,1685,1373,1688,1691,1692,1695],{},"Die Parameterliste zeigt die im SQL verwendeten Werte im Format ",[1169,1676,1677],{},":name",". Der Server setzt die reservierten Werte ",[1169,1680,1587],{},", ",[1169,1683,1684],{},":user_id",[1169,1686,1687],{},":nick",[1169,1689,1690],{},":now",". Andere Werte stammen bei Leseanfragen aus dem Query-String und bei Schreibanfragen aus dem Anfragetext nach der Eingabeverarbeitung. Fehlende Werte werden als ",[1169,1693,1694],{},"NULL"," behandelt.",[1412,1697,1698],{},[1165,1699,1700,1701,1704,1705,1708,1709,1711,1712,1715],{},"Selbst geschriebenes SQL für Schreibzugriffe erhält weder Eigentümerbedingungen noch Filter der Funktion ",[1169,1702,1703],{},"Bedingung"," automatisch. Sollen Benutzer nur eigene Daten ändern, ergänzen Sie eine ",[1169,1706,1707],{},"WHERE","-Bedingung, die die Eigentümerspalte mit ",[1169,1710,1684],{}," vergleicht. Bei Einzelabfragen muss das ",[1169,1713,1714],{},"SELECT","-Ergebnis den Primärschlüssel enthalten. Bei Abfragen nur eigener Daten ist zusätzlich die Eigentümerspalte erforderlich.",[1217,1717,1719],{"id":1718},"anfrageverarbeitung-mit-dem-verarbeitungsablauf-ändern","Anfrageverarbeitung mit dem Verarbeitungsablauf ändern",[1165,1721,1722,1723,1725],{},"Auch ohne selbst SQL zu schreiben, können Sie auf der Registerkarte ",[1169,1724,1635],{}," vorbereitete Funktionen der Reihe nach hinzufügen und so die Verarbeitung der Anfrage ändern. Die Funktionen sind in drei Stufen unterteilt: Eingabeverarbeitung, DB-Verarbeitung und Ausgabeverarbeitung.",[1165,1727,1728],{},[1213,1729],{"alt":1730,"src":1731},"Liste der 11 Funktionen, die dem Verarbeitungsablauf hinzugefügt werden können. Gruppiert in Eingabeverarbeitung (Eingabeprüfung, Sitzungswert einfügen, Standardwert, Schlüssel verschieben), DB-Verarbeitung (Bedingung, Seitengröße, Sortierung) und Ausgabeverarbeitung (Felder ausblenden, Schlüssel umbenennen, Aggregat hinzufügen, Webhook)","./_screenshots/webspace-customapi-pipeline_en.png",[1225,1733,1734,1746],{},[1228,1735,1736],{},[1231,1737,1738,1741,1744],{},[1234,1739,1740],{},"Kategorie",[1234,1742,1743],{},"Funktion",[1234,1745,1242],{},[1244,1747,1748,1759,1769,1779,1789,1799,1809,1819,1830,1840,1850],{},[1231,1749,1750,1753,1756],{},[1249,1751,1752],{},"Eingabeverarbeitung",[1249,1754,1755],{},"Eingabeprüfung",[1249,1757,1758],{},"Prüft Pflichtfelder und Format, gibt bei Fehlern 400 zurück",[1231,1760,1761,1763,1766],{},[1249,1762,1752],{},[1249,1764,1765],{},"Sitzungswert einfügen",[1249,1767,1768],{},"Setzt Werte der Anmeldesitzung (user_id usw.) automatisch in Felder ein",[1231,1770,1771,1773,1776],{},[1249,1772,1752],{},[1249,1774,1775],{},"Standardwert",[1249,1777,1778],{},"Füllt leere Felder mit einem Standardwert",[1231,1780,1781,1783,1786],{},[1249,1782,1752],{},[1249,1784,1785],{},"Schlüssel verschieben",[1249,1787,1788],{},"Überträgt Schlüsselnamen des Anfragetexts auf Tabellenspaltennamen",[1231,1790,1791,1794,1796],{},[1249,1792,1793],{},"DB-Verarbeitung",[1249,1795,1703],{},[1249,1797,1798],{},"Fügt eine WHERE-Bedingung hinzu",[1231,1800,1801,1803,1806],{},[1249,1802,1793],{},[1249,1804,1805],{},"Seitengröße",[1249,1807,1808],{},"Verarbeitet limit/offset automatisch",[1231,1810,1811,1813,1816],{},[1249,1812,1793],{},[1249,1814,1815],{},"Sortierung",[1249,1817,1818],{},"Legt das ORDER-BY-Kriterium fest",[1231,1820,1821,1824,1827],{},[1249,1822,1823],{},"Ausgabeverarbeitung",[1249,1825,1826],{},"Felder ausblenden",[1249,1828,1829],{},"Entfernt bestimmte Spalten aus der Antwort",[1231,1831,1832,1834,1837],{},[1249,1833,1823],{},[1249,1835,1836],{},"Schlüssel umbenennen",[1249,1838,1839],{},"Ändert Schlüssel im Antwort-JSON",[1231,1841,1842,1844,1847],{},[1249,1843,1823],{},[1249,1845,1846],{},"Aggregat hinzufügen",[1249,1848,1849],{},"Fügt der Antwort Aggregatwerte wie COUNT/SUM hinzu",[1231,1851,1852,1854,1857],{},[1249,1853,1823],{},[1249,1855,1856],{},"Webhook",[1249,1858,1859],{},"Sendet das Ereignis an eine externe URL",[1412,1861,1862],{},[1165,1863,1864,1865,1867,1868,1871],{},"Die Funktion ",[1169,1866,1703],{}," erstellt einen einfachen Vergleich aus Spalte, Operator und einem festen Wert, etwa ",[1169,1869,1870],{},"WHERE column = value",". Für Bedingungen mit Aggregation, zum Beispiel die Anzahl der heute von einem Mitglied angelegten Zeilen, schreiben Sie eine Unterabfrage im SQL-Editor oben.",[1217,1873,1875],{"id":1874},"berechtigungen-festlegen","Berechtigungen festlegen",[1165,1877,1878],{},"Für jede API können Sie die Zugriffsberechtigung einzeln festlegen. Mit Mitgliedern sind hier die Mitgliedskonten des Arbeitsbereichs gemeint. Sie müssen kein eigenes Anmelde- oder Authentifizierungssystem aufbauen: Das bereits im Arbeitsbereich vorhandene System aus Mitgliedern, Stufen und Teams ist direkt mit den API-Berechtigungen verknüpft.",[1225,1880,1881,1890],{},[1228,1882,1883],{},[1231,1884,1885,1888],{},[1234,1886,1887],{},"Berechtigung",[1234,1889,1242],{},[1244,1891,1892,1900,1907],{},[1231,1893,1894,1897],{},[1249,1895,1896],{},"Nur Mitglieder",[1249,1898,1899],{},"Jedes angemeldete Mitglied kann die API aufrufen",[1231,1901,1902,1904],{},[1249,1903,1615],{},[1249,1905,1906],{},"Das Mitglied muss zusätzlich Bedingungen wie Stufe, Teamzugehörigkeit oder Administratorstatus erfüllen",[1231,1908,1909,1912],{},[1249,1910,1911],{},"Alle",[1249,1913,1914],{},"Kann ohne Anmeldung aufgerufen werden, Schreibanfragen wie Anlegen, Bearbeiten und Löschen sind jedoch nicht erlaubt",[1180,1916,1479],{"id":1917},"bereitstellen",[1165,1919,1920],{},"Geben Sie die Bereitstellungsinformationen gemäß den folgenden Schritten ein.",[1327,1922,1923,1929,1935],{},[1188,1924,1925,1928],{},[1169,1926,1927],{},"Datenbankkennung",": Geben Sie in lateinischen Buchstaben den logischen Namen der DB ein, der auf dem Bereitstellungsserver verwendet wird.",[1188,1930,1931,1934],{},[1169,1932,1933],{},"Storage-Engine-Modus",": Wählen Sie SQLite3, PostgreSQL, MySQL oder MariaDB. Für eine externe DB geben Sie zusätzlich Host, Port, DB-Name, Benutzer und Passwort ein. MySQL und MariaDB verwenden eine InnoDB-basierte Konfiguration.",[1188,1936,1937,1938,1373,1941,1944],{},"Prüfen Sie unter ",[1169,1939,1940],{},"Grundeinstellungen",[1169,1942,1943],{},"Erweiterte Einstellungen"," die folgenden Elemente.",[1225,1946,1947,1956],{},[1228,1948,1949],{},[1231,1950,1951,1954],{},[1234,1952,1953],{},"Element",[1234,1955,1242],{},[1244,1957,1958,1971],{},[1231,1959,1960,1965],{},[1249,1961,1962],{},[1169,1963,1964],{},"Bereitstellungspfad des Clients",[1249,1966,1967,1968,1970],{},"Befindet sich unter ",[1169,1969,1940],{},". Wählen Sie den Pfad, in dem die Beispiel-Frontend-Ausgabe (index.html, test.html, README usw.) erstellt wird",[1231,1972,1973,1978],{},[1249,1974,1975],{},[1169,1976,1977],{},"IP-Beschränkung",[1249,1979,1967,1980,1982],{},[1169,1981,1943],{},". Legen Sie als Zulassungsliste fest, welche IPs auf die API zugreifen dürfen",[1165,1984,1985,1986,1988,1989,1991,1992,1334],{},"Wählen Sie im Bereitstellungsbereich unterhalb der API-Liste ",[1169,1987,1479],{},", um die Einstellungen aufzuklappen. Der Bereitstellungsbereich ist ganz unten im Bearbeitungsbildschirm fixiert und bleibt sichtbar, auch wenn Sie durch die API-Liste scrollen. Die erste Auswahl allein stellt noch nichts bereit. Prüfen Sie die Einstellungen und wählen Sie erneut ",[1169,1990,1479],{},"; dann werden Datenbank und APIs vorbereitet. Wenn Sie einen Bereitstellungspfad des Clients angegeben haben, wird zusätzlich ein Beispielbildschirm erstellt, mit dem Sie die APIs testen können. Wie Sie den Bildschirm anpassen, erfahren Sie unter ",[1195,1993,801],{"href":1994},"./frontend-example",[1180,1996,1998],{"id":1997},"beispiele-für-api-aufrufe","Beispiele für API-Aufrufe",[1165,2000,2001,2002,2005],{},"Bereitgestellte APIs werden in der folgenden Form aufgerufen. (Beispiel anhand des Tabellennamens ",[1169,2003,2004],{},"user_profile",")",[2007,2008,2013],"pre",{"className":2009,"code":2011,"language":2012},[2010],"language-text","GET  /api/web/{dbName}/user_profile/list\nGET  /api/web/{dbName}/user_profile/view/{id}\nPOST /api/web/{dbName}/user_profile/create\nPUT  /api/web/{dbName}/user_profile/update/{id}\nDELETE /api/web/{dbName}/user_profile/delete/{id}\n","text",[1169,2014,2011],{"__ignoreMap":2015},"",[1165,2017,2018],{},"Beispiel für eine Anfrage zum Anlegen (POST):",[2007,2020,2023],{"className":2021,"code":2022,"language":2012},[2010],"POST /api/web/{dbName}/user_profile/create\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"is_active\": true\n}\n",[1169,2024,2022],{"__ignoreMap":2015},[1180,2026,2028],{"id":2027},"fehlerantworten-lesen","Fehlerantworten lesen",[1165,2030,2031,2032,1344,2034,2037,2038,2041],{},"Wenn eine Anfrage fehlschlägt, prüfen Sie den HTTP-Status zusammen mit ",[1169,2033,1169],{},[1169,2035,2036],{},"errorCode",". Fehlercodes bleiben in allen Sprachen gleich; entscheiden Sie Aktionen wie Anmeldeaufforderung oder Wiederholung daher anhand des Codes und verwenden Sie ",[1169,2039,2040],{},"message"," für die Anzeige auf dem Bildschirm.",[1165,2043,2044,2045,2048],{},"Die Standard-Fehlermeldungen von Webspace unterstützen Koreanisch, Englisch, Japanisch, vereinfachtes Chinesisch und Deutsch. Zuerst wird die Spracheinstellung des angemeldeten Mitglieds verwendet; fehlt sie oder wird die Sprache nicht unterstützt, wird der ",[1169,2046,2047],{},"Accept-Language","-Header der Anfrage herangezogen. Passt keines von beiden, erfolgt die Meldung auf Englisch. Vergleichen Sie in externen API-Integrationen niemals den Anzeigetext selbst.",[1165,2050,2051],{},"Eine Anfrage, die eine Anmeldung erfordert, gibt zum Beispiel folgende Informationen zurück.",[2007,2053,2057],{"className":2054,"code":2055,"language":2056,"meta":2015,"style":2015},"language-json shiki shiki-themes github-light github-dark monokai","{\n  \"code\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"errorCode\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"message\": \"Anmeldung erforderlich.\"\n}\n","json",[1169,2058,2059,2068,2085,2097,2108],{"__ignoreMap":2015},[2060,2061,2064],"span",{"class":2062,"line":2063},"line",1,[2060,2065,2067],{"class":2066},"sMOD_","{\n",[2060,2069,2071,2075,2078,2082],{"class":2062,"line":2070},2,[2060,2072,2074],{"class":2073},"s-m8C","  \"code\"",[2060,2076,2077],{"class":2066},": ",[2060,2079,2081],{"class":2080},"sCZoN","\"WEBSPACE_LOGIN_REQUIRED\"",[2060,2083,2084],{"class":2066},",\n",[2060,2086,2088,2091,2093,2095],{"class":2062,"line":2087},3,[2060,2089,2090],{"class":2073},"  \"errorCode\"",[2060,2092,2077],{"class":2066},[2060,2094,2081],{"class":2080},[2060,2096,2084],{"class":2066},[2060,2098,2100,2103,2105],{"class":2062,"line":2099},4,[2060,2101,2102],{"class":2073},"  \"message\"",[2060,2104,2077],{"class":2066},[2060,2106,2107],{"class":2080},"\"Anmeldung erforderlich.\"\n",[2060,2109,2111],{"class":2062,"line":2110},5,[2060,2112,2113],{"class":2066},"}\n",[1165,2115,2116],{},"Dies sind die Kernfelder, die Sie in einer Fehlerantwort prüfen sollten. Das vollständige Antwortformat kann sich zwischen REST-API, statischen Dateien und Verwaltungs-APIs unterscheiden.",[1185,2118,2119,2142,2162],{},[1188,2120,2121,2122,2125,2126,2129,2130,2133,2134,1681,2137,1373,2139,2141],{},"Antworten der Eingabeprüfung verwenden das bisherige Format mit ",[1169,2123,2124],{},"ok: false"," und einer ",[1169,2127,2128],{},"errors","-Liste. Prüfen Sie ",[1169,2131,2132],{},"ok"," auch bei HTTP 200 und erläutern Sie das Problem anhand von ",[1169,2135,2136],{},"field",[1169,2138,1169],{},[1169,2140,2040],{}," jedes Eintrags.",[1188,2143,2144,2145,2148,2149,2152,2153,2156,2157,1373,2159,2161],{},"WebSocket-Fehler finden Sie in ",[1169,2146,2147],{},"data"," einer Nachricht vom ",[1169,2150,2151],{},"type: \"error\"",". Der bisherige ",[1169,2154,2155],{},"key"," zur Einordnung bleibt erhalten; ",[1169,2158,1169],{},[1169,2160,2036],{}," unterscheiden die Fehlerursache.",[1188,2163,2164],{},"Tatsächliche Dateipfade des Servers, SQL und interne Fehlertexte werden nicht an Benutzer zurückgegeben. Muss der Betreiber bei einem Fehler das Serverprotokoll prüfen, übermitteln Sie Zeitpunkt, Anfragepfad, HTTP-Status und Fehlercode zusammen.",[1180,2166,2168],{"id":2167},"bereitstellung-und-überschreiben","Bereitstellung und Überschreiben",[1165,2170,2171],{},"Das Überschreiben eines Schemas mit vorhandenen Daten folgt der Bereitstellungsrichtlinie des Servers. Je nach Organisationsrichtlinie kann es untersagt oder auf Administratoren oder bestimmte Bereitstellungsverantwortliche beschränkt sein. Prüfen Sie vor einer Strukturänderung die betroffenen Spalten und APIs sowie die Sicherungs- und Wiederherstellungsverfahren.",[1180,2173,2175],{"id":2174},"hinweise","Hinweise",[1185,2177,2178,2184,2187,2190,2193],{},[1188,2179,2180,2181,2183],{},"APIs werden auf Basis der SetFN-Anmeldesitzung authentifiziert. Nicht authentifizierte Anfragen werden abgelehnt. (Ausnahme: APIs, deren Berechtigung auf ",[1169,2182,1911],{}," gesetzt ist.)",[1188,2185,2186],{},"Wenn Sie die Schemastruktur ändern, werden auch die API-Endpunkte aktualisiert. Prüfen Sie daher die Kompatibilität Ihres bestehenden Integrationscodes.",[1188,2188,2189],{},"SQLite3-Daten werden im Webspace-Speicher des jeweiligen Servers gespeichert, Daten externer Engines in der vom Administrator konfigurierten DB.",[1188,2191,2192],{},"Filter, Sortierung und Seitengröße von Listen verwenden Sie innerhalb des vom Server zugelassenen Abfragebereichs.",[1188,2194,2195],{},"Wenn Sie von einer externen Website aus aufrufen, prüfen Sie auch die vom Administrator erlaubten Origins und die CSP-Einstellungen.",[1180,2197,2199],{"id":2198},"verwandte-dokumente","Verwandte Dokumente",[1185,2201,2202,2206,2211,2215,2220],{},[1188,2203,2204],{},[1195,2205,791],{"href":1197},[1188,2207,2208],{},[1195,2209,882],{"href":2210},"./examples/realtime-gomoku",[1188,2212,2213],{},[1195,2214,801],{"href":1994},[1188,2216,2217],{},[1195,2218,827],{"href":2219},"./performance",[1188,2221,2222],{},[1195,2223,837],{"href":2224},"./admin/overview",[2226,2227,2228],"style",{},"html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .s-m8C, html code.shiki .s-m8C{--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sCZoN, html code.shiki .sCZoN{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":2015,"searchDepth":2070,"depth":2087,"links":2230},[2231,2232,2237,2246,2247,2248,2249,2250,2251],{"id":1182,"depth":2070,"text":1183},{"id":1202,"depth":2070,"text":1203,"children":2233},[2234,2235,2236],{"id":1219,"depth":2087,"text":1220},{"id":1324,"depth":2087,"text":1325},{"id":1428,"depth":2087,"text":1429},{"id":1489,"depth":2070,"text":1490,"children":2238},[2239,2240,2241,2244,2245],{"id":1522,"depth":2087,"text":1523},{"id":1599,"depth":2087,"text":1600},{"id":1624,"depth":2087,"text":1625,"children":2242},[2243],{"id":1664,"depth":2099,"text":1665},{"id":1718,"depth":2087,"text":1719},{"id":1874,"depth":2087,"text":1875},{"id":1917,"depth":2070,"text":1479},{"id":1997,"depth":2070,"text":1998},{"id":2027,"depth":2070,"text":2028},{"id":2167,"depth":2070,"text":2168},{"id":2174,"depth":2070,"text":2175},{"id":2198,"depth":2070,"text":2199},"Erklärt, wie Sie eine Schemadatei (.sfn) als tatsächliche Datenbank und APIs bereitstellen und Berechtigungen und Funktionen prüfen.","md",{},true,{"title":2257,"description":2258,"ogType":2259,"twitterCard":2260,"keywords":2261},"APIs erstellen und Datenbank bereitstellen | Webspace Docs","Verbinden Sie eine Schemadatei mit SQLite3, PostgreSQL, MySQL oder MariaDB und stellen Sie sie als Webspace-APIs bereit.","article","summary_large_image",[796,2262,1659,2263,2264,1203,1479],"API","README","DB","WZ3wxfXn17ght2GTihr2HcvZhH9pdGNlgwBiByiynm8",[2267,2268],{"title":791,"path":792,"stem":793,"slug":794,"children":-1},{"title":801,"path":802,"stem":803,"slug":804,"children":-1},{"title":796,"filename":2270,"content":2271},"api-overview","# APIs erstellen und Datenbank bereitstellen\n\nWenn Sie eine Schemadatei (.sfn) erstellt haben, ist es jetzt an der Zeit, den Entwurf in einen echten Dienst zu verwandeln. Öffnen Sie die `API-Erstellung`: Für jede Tabelle stehen APIs zum Anlegen, Abfragen, Bearbeiten und Löschen bereit, und Sie sehen auf einem Bildschirm, wer welche Adresse verwenden darf.\n\nBei Bedarf können Sie selbst erstellte Abfrage-APIs, APIs für statische Dateien und Echtzeit-Ereignisse mit demselben Dienst verbinden.\n\n---\n\n## Bevor Sie beginnen\n\n- Erforderliche Berechtigung: Benutzer, denen die Berechtigung zur Datenbanknutzung erteilt wurde\n- Vorbereitung: Sie müssen zuerst eine [Schemadatei (.sfn)](./20.create-database.md) erstellen.\n\n## API-Erstellung öffnen\n\nWählen Sie oben im Schemabildschirm die Registerkarte `API-Erstellung`, um die automatisch erzeugten APIs je Tabelle anzuzeigen.\n\n![API-Erstellung](./_screenshots/schema-api-build_de.png)\n\n### Automatisch erzeugte APIs\n\nFür jede Tabelle werden standardmäßig die folgenden 5 APIs automatisch erzeugt. Bei Bedarf können Sie auch selbst neue APIs hinzufügen.\n\n| Methode | Endpunkt       | Beschreibung       |\n| ------- | -------------- | ------------------ |\n| GET     | .../list       | Liste abfragen     |\n| GET     | .../view/:id   | Einzelnen Datensatz abfragen |\n| POST    | .../create     | Anlegen            |\n| PUT     | .../update/:id | Bearbeiten         |\n| DELETE  | .../delete/:id | Löschen            |\n\nUnter `Neue API hinzufügen (Custom Endpoint)` können Sie eine API hinzufügen, deren Abfrage und Antwortform Sie selbst festlegen. Mit `API für statische Dateien hinzufügen` können Sie JSON-, XML-, HTML-, Bild- und Binärdateien aus dem Arbeitsbereich passend zum Dateityp bereitstellen.\n\n::note\nWenn Sie einen Ordner als Quelle angeben, erhalten Sie die Dateiliste als JSON und können den Inhalt der ausgewählten Datei bereitstellen. Die Einrichtung ist unter [Material-Pinnwand aus Ordnerdateien erstellen](./60.examples/30.folder-board.md) beschrieben.\n::\n\n### Statische Dateien oder Ordner als API bereitstellen\n\n1. Wählen Sie `API für statische Dateien hinzufügen`.\n2. Wählen Sie unter `Speicherbereich` die Option `Teambereich` oder `Persönlicher Bereich`.\n3. Wählen Sie unter `Quelltyp` die Option `Einzelne Datei` oder `Ordnerliste · Dateiinhalt` und geben Sie anschließend mit `Datei auswählen` oder `Ordner auswählen` die Quelle an.\n4. Wenn Sie einen Ordner gewählt haben, legen Sie `Zulässige Dateiendungen` und `Unterordner einbeziehen` fest. Lassen Sie die Dateiendungen leer, werden alle Formate berücksichtigt.\n5. Wählen Sie unter `Antwortmodus`, ob der Inhalt im Browser angezeigt (`Direkt im Browser anzeigen`) oder als Datei empfangen werden soll (`Herunterladen`).\n6. Prüfen Sie die Endpunktberechtigungen und stellen Sie dann das Schema bereit.\n\nEine einzelne Datei liefert ihren Inhalt am festgelegten Endpunkt. Für einen Ordner werden sowohl die Dateiliste als JSON als auch eine Adresse erzeugt, über die der Inhalt anhand der `id` eines Listeneintrags gelesen wird. Wenn Sie eine Datei umbenennen oder verschieben, ändert sich auch die aus dem Pfad gebildete `id`; der Client muss daher die aktuelle `id` oder `viewUrl` aus der Liste verwenden.\n\n::warning\nWenn Sie ausführbare Dateien wie HTML oder SVG direkt im Browser anzeigen, wählen Sie nur vertrauenswürdige Dateien als Quelle. Der Server setzt Sicherheitsheader, aber auch die API-Zugriffsberechtigung sollte eingeschränkt werden.\n::\n\nBei den Funktionsendpunkten legen Sie die Berechtigungen für Funktionen fest, die im gesamten Dienst verwendet werden, etwa Echtzeit-Socket, Datei- und Bild-Upload und KI-Antworten.\n\n![Einstellungen für Speicherbereich und Dateiabruf einer API für statische Ordner](./_screenshots/webspace-static-folder-api_en.png)\n\n### Echtzeit-Ereignisse und REST-Bündel importieren\n\nUnter `Ereignisdefinitionen` des Echtzeit-Sockets können Sie nur Ereignisse schreiben oder ein JSON- oder YAML-Bündel importieren, das die für die Ereignisse benötigten Tabellen und REST-Einstellungen enthält.\n\n1. Wählen Sie `KI-Antwort einfügen` und fügen Sie das Bündel ein. Ein selbst vorbereitetes Bündel können Sie im selben Format einfügen.\n2. Wählen Sie `Nach Namen zusammenführen`, um vorhandene Ereignisse beizubehalten, oder `Alle ersetzen`, um alle aktuellen Ereignisse zu ersetzen.\n3. Prüfen Sie in der `Vorschau`, welche Ereignisse hinzugefügt, geändert oder gelöscht werden und wie viele Tabellen, Spalten und REST-Endpunkte hinzugefügt werden.\n4. Prüfen Sie Einträge, die mit vorhandenen REST-Einstellungen kollidieren oder deren Format automatisch bereinigt oder ausgeschlossen wurde. Wählen Sie `Abweichende REST-Einstellungen überschreiben` nur, wenn vorhandene REST-Einstellungen geändert werden müssen.\n5. Prüfen Sie das Ergebnis der Serverprüfung, beheben Sie Fehler und wählen Sie `Anwenden`.\n\nDer Import ändert das gerade bearbeitete Schema. Im tatsächlichen Dienst wird es erst wirksam, wenn Sie `Bereitstellen` abgeschlossen haben. Auch wenn Sie im Importbildschirm angewendet haben, prüft der Server bei der Bereitstellung die Ereignis- und REST-Regeln erneut; wird die Prüfung nicht bestanden, erfolgt keine Bereitstellung.\n\n![Vorschau beim Import von Echtzeit-Ereignissen und REST-Bündeln](./_screenshots/webspace-realtime-import-preview_en.png)\n\n## Mit benutzerdefinierten Endpunkten APIs jenseits von CRUD erstellen\n\nWenn die 5 automatisch erzeugten APIs (`list`/`view`/`create`/`update`/`delete`) nicht ausreichen, können Sie mit `Neue API hinzufügen (Custom Endpoint)` das Verhalten deutlich feiner definieren.\n\n![Grundeinstellungen eines mit Neue API hinzufügen erstellten benutzerdefinierten Endpunkts. API-Typ, Art der Operation, Zielumfang und Pfad werden festgelegt](./_screenshots/webspace-customapi-basic_en.png)\n\n### Art der Operation\n\nNeben den 5 grundlegenden CRUD-Operationen bietet die Auswahlliste `Art der Operation` auch diese Optionen.\n\n| Art der Operation | Bedeutung |\n|---|---|\n| Aktion ausführen | Geeignet für befehlsartig verarbeitete Endpunkte, die nicht genau in CRUD passen |\n| Statistik abrufen | Liefert statistische Ergebnisse wie Zählungen, Summen und Aggregate |\n| Stapelverarbeitung | Verarbeitet mehrere Datensätze auf einmal |\n| Exportieren | Lädt Abfrageergebnisse als Datei herunter |\n\nAls `Zielumfang` wählen Sie zwischen `Sammlung` (ganze Tabelle oder mehrere Datensätze, meist ein Pfad ohne `:id`), `Einzelner Eintrag` (ein bestimmter Datensatz) und `Befehl` (benutzerdefinierter befehlsartiger Endpunkt, der nicht in CRUD passt).\n\n### Berechtigungen: dieselben drei Stufen wie bei der REST-API\n\nDie Berechtigungen benutzerdefinierter Endpunkte werden genauso festgelegt wie bei den automatisch erzeugten APIs. Die Erläuterung steht direkt auf dem Bildschirm, sodass nichts verwechselt werden kann.\n\n![Berechtigungsauswahl eines benutzerdefinierten Endpunkts. Die drei Optionen Nur Mitglieder / Mitglieder + Zusatzbedingungen (Stufe, Team, Administrator, Eigentümer) / Alle werden mit Erläuterung angezeigt](./_screenshots/webspace-customapi-permission_en.png)\n\nWenn Sie `Mitglieder + Zusatzbedingungen` wählen, können Sie Bedingungen zu Stufe, Teamzugehörigkeit, Administratorstatus und Eigentümer (owner) kombinieren. Bedingungen wie „nur ab Stufe 2“ oder „nur Mitglieder des Vertriebsteams“ lassen sich so auf benutzerdefinierte Endpunkte genauso anwenden wie auf automatisch erzeugte REST-API-Endpunkte.\n\n::note\nDiese Bedingungen (Stufe/Team/Administrator/Eigentümer) entscheiden, „wer diesen Endpunkt aufrufen darf“. Eine Mengenbegrenzung wie „höchstens 3-mal pro Tag“ gibt es hier nicht — wenn Sie so etwas brauchen, müssen Sie es im SQL-Editor unten selbst umsetzen.\n::\n\n### SQL selbst schreiben\n\nIn der `Basisabfrage` auf der Registerkarte `Verarbeitungsablauf` gibt es einen Editor, in dem Sie das SQL schreiben, das dieser Endpunkt ausführt. Bei automatisch erzeugten APIs öffnet sich derselbe Editor, wenn Sie die `Basisabfrage` auf `Selbst geschriebenes SQL` umstellen.\n\n![SQL-Editor in der Basisabfrage auf der Registerkarte Verarbeitungsablauf. Als Standardwert ist SELECT * FROM leave_balances WHERE 1=1; eingetragen](./_screenshots/webspace-customapi-sql_en.png)\n\nAuch in der Spalte `Verarbeitung` der REST-API-Liste wird mit einem `SQL`-Abzeichen angezeigt, dass dieser Endpunkt eine selbst geschriebene Abfrage verwendet. Bedingungen, die sich mit automatisch erzeugten APIs nicht ausdrücken lassen — zum Beispiel aggregatbasierte Bedingungen wie „ablehnen, wenn dieses Mitglied heute bereits 3 oder mehr Zeilen angelegt hat“ — können Sie nur mit diesem SQL-Editor umsetzen.\n\n#### SQL und Parameter prüfen\n\nWährend Sie SQL eingeben, prüft der Browser die Syntax sowie die Tabellen und Spalten des aktuellen Schemas. Enthält ein Fehler oder Hinweis eine Zeilen- und Spaltenangabe, wählen Sie ihn aus, um zur entsprechenden Stelle im Editor zu gelangen. Auch im Bereitstellungsbereich können Sie fehlerhaftes SQL öffnen.\n\nDiese Prüfung führt die Abfrage nicht in der Datenbank aus. Rufen Sie nach der Bereitstellung die API auf, um datenbankspezifische Funktionen, Zugriffsrechte und Ergebnisse mit echten Daten zu prüfen.\n\nDie Parameterliste zeigt die im SQL verwendeten Werte im Format `:name`. Der Server setzt die reservierten Werte `:id`, `:user_id`, `:nick` und `:now`. Andere Werte stammen bei Leseanfragen aus dem Query-String und bei Schreibanfragen aus dem Anfragetext nach der Eingabeverarbeitung. Fehlende Werte werden als `NULL` behandelt.\n\n::warning\nSelbst geschriebenes SQL für Schreibzugriffe erhält weder Eigentümerbedingungen noch Filter der Funktion `Bedingung` automatisch. Sollen Benutzer nur eigene Daten ändern, ergänzen Sie eine `WHERE`-Bedingung, die die Eigentümerspalte mit `:user_id` vergleicht. Bei Einzelabfragen muss das `SELECT`-Ergebnis den Primärschlüssel enthalten. Bei Abfragen nur eigener Daten ist zusätzlich die Eigentümerspalte erforderlich.\n::\n\n### Anfrageverarbeitung mit dem Verarbeitungsablauf ändern\n\nAuch ohne selbst SQL zu schreiben, können Sie auf der Registerkarte `Verarbeitungsablauf` vorbereitete Funktionen der Reihe nach hinzufügen und so die Verarbeitung der Anfrage ändern. Die Funktionen sind in drei Stufen unterteilt: Eingabeverarbeitung, DB-Verarbeitung und Ausgabeverarbeitung.\n\n![Liste der 11 Funktionen, die dem Verarbeitungsablauf hinzugefügt werden können. Gruppiert in Eingabeverarbeitung (Eingabeprüfung, Sitzungswert einfügen, Standardwert, Schlüssel verschieben), DB-Verarbeitung (Bedingung, Seitengröße, Sortierung) und Ausgabeverarbeitung (Felder ausblenden, Schlüssel umbenennen, Aggregat hinzufügen, Webhook)](./_screenshots/webspace-customapi-pipeline_en.png)\n\n| Kategorie | Funktion | Beschreibung |\n|---|---|---|\n| Eingabeverarbeitung | Eingabeprüfung | Prüft Pflichtfelder und Format, gibt bei Fehlern 400 zurück |\n| Eingabeverarbeitung | Sitzungswert einfügen | Setzt Werte der Anmeldesitzung (user_id usw.) automatisch in Felder ein |\n| Eingabeverarbeitung | Standardwert | Füllt leere Felder mit einem Standardwert |\n| Eingabeverarbeitung | Schlüssel verschieben | Überträgt Schlüsselnamen des Anfragetexts auf Tabellenspaltennamen |\n| DB-Verarbeitung | Bedingung | Fügt eine WHERE-Bedingung hinzu |\n| DB-Verarbeitung | Seitengröße | Verarbeitet limit/offset automatisch |\n| DB-Verarbeitung | Sortierung | Legt das ORDER-BY-Kriterium fest |\n| Ausgabeverarbeitung | Felder ausblenden | Entfernt bestimmte Spalten aus der Antwort |\n| Ausgabeverarbeitung | Schlüssel umbenennen | Ändert Schlüssel im Antwort-JSON |\n| Ausgabeverarbeitung | Aggregat hinzufügen | Fügt der Antwort Aggregatwerte wie COUNT/SUM hinzu |\n| Ausgabeverarbeitung | Webhook | Sendet das Ereignis an eine externe URL |\n\n::warning\nDie Funktion `Bedingung` erstellt einen einfachen Vergleich aus Spalte, Operator und einem festen Wert, etwa `WHERE column = value`. Für Bedingungen mit Aggregation, zum Beispiel die Anzahl der heute von einem Mitglied angelegten Zeilen, schreiben Sie eine Unterabfrage im SQL-Editor oben.\n::\n\n### Berechtigungen festlegen\n\nFür jede API können Sie die Zugriffsberechtigung einzeln festlegen. Mit Mitgliedern sind hier die Mitgliedskonten des Arbeitsbereichs gemeint. Sie müssen kein eigenes Anmelde- oder Authentifizierungssystem aufbauen: Das bereits im Arbeitsbereich vorhandene System aus Mitgliedern, Stufen und Teams ist direkt mit den API-Berechtigungen verknüpft.\n\n| Berechtigung                  | Beschreibung                                                                                              |\n| ----------------------------- | --------------------------------------------------------------------------------------------------------- |\n| Nur Mitglieder                | Jedes angemeldete Mitglied kann die API aufrufen                                                          |\n| Mitglieder + Zusatzbedingungen | Das Mitglied muss zusätzlich Bedingungen wie Stufe, Teamzugehörigkeit oder Administratorstatus erfüllen |\n| Alle                          | Kann ohne Anmeldung aufgerufen werden, Schreibanfragen wie Anlegen, Bearbeiten und Löschen sind jedoch nicht erlaubt |\n\n## Bereitstellen\n\nGeben Sie die Bereitstellungsinformationen gemäß den folgenden Schritten ein.\n\n1. `Datenbankkennung`: Geben Sie in lateinischen Buchstaben den logischen Namen der DB ein, der auf dem Bereitstellungsserver verwendet wird.\n2. `Storage-Engine-Modus`: Wählen Sie SQLite3, PostgreSQL, MySQL oder MariaDB. Für eine externe DB geben Sie zusätzlich Host, Port, DB-Name, Benutzer und Passwort ein. MySQL und MariaDB verwenden eine InnoDB-basierte Konfiguration.\n3. Prüfen Sie unter `Grundeinstellungen` und `Erweiterte Einstellungen` die folgenden Elemente.\n\n| Element                 | Beschreibung                                                                                  |\n| ----------------------- | --------------------------------------------------------------------------------------------- |\n| `Bereitstellungspfad des Clients` | Befindet sich unter `Grundeinstellungen`. Wählen Sie den Pfad, in dem die Beispiel-Frontend-Ausgabe (index.html, test.html, README usw.) erstellt wird |\n| `IP-Beschränkung`       | Befindet sich unter `Erweiterte Einstellungen`. Legen Sie als Zulassungsliste fest, welche IPs auf die API zugreifen dürfen |\n\nWählen Sie im Bereitstellungsbereich unterhalb der API-Liste `Bereitstellen`, um die Einstellungen aufzuklappen. Der Bereitstellungsbereich ist ganz unten im Bearbeitungsbildschirm fixiert und bleibt sichtbar, auch wenn Sie durch die API-Liste scrollen. Die erste Auswahl allein stellt noch nichts bereit. Prüfen Sie die Einstellungen und wählen Sie erneut `Bereitstellen`; dann werden Datenbank und APIs vorbereitet. Wenn Sie einen Bereitstellungspfad des Clients angegeben haben, wird zusätzlich ein Beispielbildschirm erstellt, mit dem Sie die APIs testen können. Wie Sie den Bildschirm anpassen, erfahren Sie unter [Frontend-Beispiel ansehen](./26.frontend-example.md).\n\n## Beispiele für API-Aufrufe\n\nBereitgestellte APIs werden in der folgenden Form aufgerufen. (Beispiel anhand des Tabellennamens `user_profile`)\n\n```\nGET  /api/web/{dbName}/user_profile/list\nGET  /api/web/{dbName}/user_profile/view/{id}\nPOST /api/web/{dbName}/user_profile/create\nPUT  /api/web/{dbName}/user_profile/update/{id}\nDELETE /api/web/{dbName}/user_profile/delete/{id}\n```\n\nBeispiel für eine Anfrage zum Anlegen (POST):\n\n```\nPOST /api/web/{dbName}/user_profile/create\nContent-Type: application/json\n\n{\n  \"email\": \"user@example.com\",\n  \"is_active\": true\n}\n```\n\n## Fehlerantworten lesen\n\nWenn eine Anfrage fehlschlägt, prüfen Sie den HTTP-Status zusammen mit `code` oder `errorCode`. Fehlercodes bleiben in allen Sprachen gleich; entscheiden Sie Aktionen wie Anmeldeaufforderung oder Wiederholung daher anhand des Codes und verwenden Sie `message` für die Anzeige auf dem Bildschirm.\n\nDie Standard-Fehlermeldungen von Webspace unterstützen Koreanisch, Englisch, Japanisch, vereinfachtes Chinesisch und Deutsch. Zuerst wird die Spracheinstellung des angemeldeten Mitglieds verwendet; fehlt sie oder wird die Sprache nicht unterstützt, wird der `Accept-Language`-Header der Anfrage herangezogen. Passt keines von beiden, erfolgt die Meldung auf Englisch. Vergleichen Sie in externen API-Integrationen niemals den Anzeigetext selbst.\n\nEine Anfrage, die eine Anmeldung erfordert, gibt zum Beispiel folgende Informationen zurück.\n\n```json\n{\n  \"code\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"errorCode\": \"WEBSPACE_LOGIN_REQUIRED\",\n  \"message\": \"Anmeldung erforderlich.\"\n}\n```\n\nDies sind die Kernfelder, die Sie in einer Fehlerantwort prüfen sollten. Das vollständige Antwortformat kann sich zwischen REST-API, statischen Dateien und Verwaltungs-APIs unterscheiden.\n\n- Antworten der Eingabeprüfung verwenden das bisherige Format mit `ok: false` und einer `errors`-Liste. Prüfen Sie `ok` auch bei HTTP 200 und erläutern Sie das Problem anhand von `field`, `code` und `message` jedes Eintrags.\n- WebSocket-Fehler finden Sie in `data` einer Nachricht vom `type: \"error\"`. Der bisherige `key` zur Einordnung bleibt erhalten; `code` und `errorCode` unterscheiden die Fehlerursache.\n- Tatsächliche Dateipfade des Servers, SQL und interne Fehlertexte werden nicht an Benutzer zurückgegeben. Muss der Betreiber bei einem Fehler das Serverprotokoll prüfen, übermitteln Sie Zeitpunkt, Anfragepfad, HTTP-Status und Fehlercode zusammen.\n\n## Bereitstellung und Überschreiben\n\nDas Überschreiben eines Schemas mit vorhandenen Daten folgt der Bereitstellungsrichtlinie des Servers. Je nach Organisationsrichtlinie kann es untersagt oder auf Administratoren oder bestimmte Bereitstellungsverantwortliche beschränkt sein. Prüfen Sie vor einer Strukturänderung die betroffenen Spalten und APIs sowie die Sicherungs- und Wiederherstellungsverfahren.\n\n## Hinweise\n\n- APIs werden auf Basis der SetFN-Anmeldesitzung authentifiziert. Nicht authentifizierte Anfragen werden abgelehnt. (Ausnahme: APIs, deren Berechtigung auf `Alle` gesetzt ist.)\n- Wenn Sie die Schemastruktur ändern, werden auch die API-Endpunkte aktualisiert. Prüfen Sie daher die Kompatibilität Ihres bestehenden Integrationscodes.\n- SQLite3-Daten werden im Webspace-Speicher des jeweiligen Servers gespeichert, Daten externer Engines in der vom Administrator konfigurierten DB.\n- Filter, Sortierung und Seitengröße von Listen verwenden Sie innerhalb des vom Server zugelassenen Abfragebereichs.\n- Wenn Sie von einer externen Website aus aufrufen, prüfen Sie auch die vom Administrator erlaubten Origins und die CSP-Einstellungen.\n\n## Verwandte Dokumente\n\n- [Schemadatei (.sfn) erstellen](./20.create-database.md)\n- [Echtzeit-Gomoku-Spiel erstellen](./60.examples/20.realtime-gomoku.md)\n- [Frontend-Beispiel ansehen](./26.frontend-example.md)\n- [Leistung und Skalierung](./48.performance.md)\n- [Erste Schritte mit der Webspace-Verwaltung](./50.admin/00.overview.md)\n",1793056575397]