Globale funktionskontrakter
Denne eksekverbare oversigt dækker hver eksplicit siderute i frontend/src/App.tsx, hver bogstavelig metode-/stideklaration i hver monteret Express-router under backend/src/routes/*.ts og hvert bogstaveligt stinavn for WebSocket-opgraderinger i backend/src/websocketServer.ts. Hvert endpoint har præcis én funktionsejer, og hvert WebSocket-endpoint har bevis for godkendelse. Hver funktion angiver også, om skemaer, manifester og standarder gælder, med kildebevis eller en konkret begrundelse for, at de ikke er relevante, samt dokumentation og en navngivet adfærdstest, der er registreret i den normale pakke- eller browser-CI.
Eksekverbare udbyderdetaljer styres fortsat af scripts/capability-contracts.json og scripts/test-capability-contracts.mjs. Denne globale oversigt linker til den kontrakt i stedet for at gentage dens regler for manifester og standarder.
| Funktion | UI-ruter | HTTP-endpoints | WebSocket-endpoints | Skemaer | Manifester | Standarder | Dokumentation | Navngivne adfærdstest |
|---|---|---|---|---|---|---|---|---|
| Home | / | 0 | 0 | Ikke relevant: Home-siden er en navigations- og kompositionsflade uden egen anmodnings- eller svarpayload. | Ikke relevant: Home-siden er indbygget i programmet og installeres eller findes ikke via et manifest. | frontend/src/utils/welcomePrompts.ts | docs/00-README.md | new chats rotate through distinct creator promptsfrontend/e2e/welcome-prompts.spec.ts (test:e2e) |
| Chat | /chat/c/:sessionId | 33 | 1 | backend/src/types/index.tsbackend/src/services/thinkingSummaryService.tsfrontend/src/utils/api/chatApi.ts | scripts/capability-contracts.json | backend/src/services/preferencesService.tsfrontend/src/hooks/useThinkingSummary.ts | docs/01-QUICK_START.mddocs/03-PRO_TIPS.md | ChatRequestService prepares target, persona prompt, and shared messagesscripts/test-chat-context.mjs (test:package)oversized history compacts into one summary on a user-turn boundaryscripts/test-context-compaction.mjs (test:package)queued prompts can be edited, reordered, and removed atomicallyscripts/test-prompt-queue.mjs (test:package)a comparison fan-out shares one user turn across independent jobsscripts/test-multi-model-compare.mjs (test:package)forking at a message copies the prefix with remapped identitiesscripts/test-chat-fork.mjs (test:package)collapsed topics update from serialized requests using the latest bounded reasoningfrontend/e2e/thinking-summary.spec.ts (test:e2e) |
| Modeladministration | — | 51 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | backend/src/services/ollamaService.ts | docs/02-WORKING_WITH_MODELS.md | cloud library pulls append the Ollama cloud suffix automaticallyfrontend/e2e/model-manager.spec.ts (test:e2e) |
| Personaer | /personas | 12 | 0 | backend/src/types/index.ts | Ikke relevant: Personaer er kontoressourcer, som Libre gemmer, og de bruger ikke et installations- eller registreringsmanifest. | frontend/src/components/persona-form/defaults.ts | docs/16-PERSONA_DEVELOPMENT_FRAMEWORK.mddocs/52-ASSISTANT_PROFILES.md | memory insert acknowledgement loss resolves the committed row and retry is idempotentscripts/test-memory-reliability.mjs (test:package)a profile stores its bindings normalized, versioned, and encryptedscripts/test-assistant-profiles.mjs (test:package) |
| Mediegalleri | /gallery | 20 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | scripts/test-capability-contracts.mjs | docs/38-MEDIA_GENERATION.md | video jobs can stop waiting, reopen, and resume without losing the handlefrontend/e2e/media-generation.spec.ts (test:e2e)edits post an authorized multipart request and meter usagescripts/test-image-editing.mjs (test:package) |
| Noter | /notes | 12 | 0 | backend/src/types/index.tsbackend/src/persistence/resourceTypes.ts | Ikke relevant: Noter er indbyggede kontoressourcer og har intet installations- eller registreringsmanifest. | Ikke relevant: Noter har ingen implicit standard for indhold eller præsentation ud over felter, som brugeren udtrykkeligt angiver. | docs/61-NOTES.md | notes open in Markdown preview and make editing explicitfrontend/e2e/notes.spec.ts (test:e2e)content changes snapshot restorable revisions and prune beyond the capscripts/test-notes.mjs (test:package) |
| Kalender | /calendar | 10 | 0 | backend/src/types/index.ts | Ikke relevant: Kalenderbegivenheder er indbyggede kontoressourcer og har intet installations- eller registreringsmanifest. | Ikke relevant: Kalenderbegivenheder har ingen implicit indholdsstandard ud over felter, som brugeren udtrykkeligt angiver; beregning af gentagelser bruger serverens tidszone som dokumenteret i docs/47-CALENDAR.md. | docs/47-CALENDAR.md | calendar events persist per owner and expand recurrence into range queriesscripts/test-calendar.mjs (test:package)named calendars carry colors and share read/write through grantsscripts/test-calendar-team.mjs (test:package)reminders fire once per occurrence into the notification inboxscripts/test-calendar-team.mjs (test:package) |
| Automatiseringer | /automations | 15 | 0 | backend/src/types/index.ts | Ikke relevant: Automatiseringer er indbyggede kontoressourcer og har intet installations- eller registreringsmanifest. | docs/48-AUTOMATIONS.md | docs/48-AUTOMATIONS.md | the scheduler fires due automations once and settles stalled runsscripts/test-automations.mjs (test:package) |
| Kanaler | /channels | 24 | 0 | backend/src/types/index.ts | Ikke relevant: Kanaler er indbyggede kontoressourcer og har intet installations- eller registreringsmanifest. | docs/54-CHANNELS.md | docs/54-CHANNELS.md | timeline: idempotent posts, ordering, threads, edit and tombstone rulesscripts/test-channels.mjs (test:package)@model mentions run under the invoking member and fail safelyscripts/test-channels.mjs (test:package) |
| Notifikationer | — | 17 | 0 | backend/src/types/index.ts | Ikke relevant: Notifikationer er indbygget kontotilstand og har intet installations- eller registreringsmanifest. | docs/55-NOTIFICATIONS.md | docs/55-NOTIFICATIONS.mddocs/55-NOTIFICATIONS.mddocs/55-NOTIFICATIONS.md | the inbox is durable, encrypted, deduplicated, and cappedscripts/test-notifications.mjs (test:package)webhook targets are egress-guarded, signed, redacted, and retriedscripts/test-notifications.mjs (test:package)payload encryption reproduces the RFC 8291 test vectorscripts/test-web-push.mjs (test:package)revoking an auth session removes its device subscriptionsscripts/test-web-push.mjs (test:package)credentials are never sent in clear text when TLS was expectedscripts/test-smtp-client.mjs (test:package)email settings resolve from the environment, override from the UI, and never return the passwordscripts/test-email-notifications.mjs (test:package)a channel mention and an automation run are emailed only to users who opted inscripts/test-email-notifications.mjs (test:package)admin draft previews are bounded, escape content, and never send or enqueue mailscripts/test-email-notifications.mjs (test:package) |
| Promptbibliotek | — | 9 | 0 | backend/src/services/promptService.ts | Ikke relevant: Prompter er indbyggede kontoressourcer; deres portable form er det versionerede eksportdokument libre-prompt.v1, ikke et installations- eller registreringsmanifest. | Ikke relevant: En prompt har ingen implicit indholdsstandard: alle felter angives af brugeren, og gengivelsen erstatter kun deklarerede variabler, hvilket håndhæves af scripts/test-prompts.mjs. | docs/50-PROMPTS.md | prompts round-trip through the API and stay encrypted at restscripts/test-prompts.mjs (test:package) |
| Færdigheder | — | 14 | 0 | backend/src/services/skillService.ts | backend/src/services/skillService.ts | Ikke relevant: En færdighed har ingen implicit indholdsstandard: manifestet og instruktionerne er præcis det, ejeren har skrevet, og deaktiverede færdigheder forsvinder helt fra manifestet. | docs/51-SKILLS.md | skills round-trip through the API and stay encrypted at restscripts/test-skills.mjs (test:package)a skill imports from a remote store URL through the egress guardscripts/test-skills.mjs (test:package) |
| Chatværktøjer | — | 19 | 0 | backend/src/types/tools.ts | backend/src/services/toolServerService.ts | backend/src/services/toolAccessService.ts | docs/49-CHAT_TOOLS.md | registering an OpenAPI server pins the spec and extracts its toolsscripts/test-tool-gateway.mjs (test:package)a side-effecting call waits for approval and then executesscripts/test-chat-tool-loop.mjs (test:package)the callback exchanges the code and stores an encrypted envelopescripts/test-tool-oauth.mjs (test:package) |
| Work | /work/work/:taskId | 48 | 3 | backend/src/types/work.ts | scripts/capability-contracts.json | backend/src/services/workRuntimeShared.ts | docs/33-WORKSPACES.md | runtime limits expose admission capacity and live occupancyscripts/test-work-runtime.mjs (test:package)approval decisions gate side-effecting Work actionsscripts/test-work-approvals.mjs (test:package)an agent delegates to a peer and the report returns to its conversationscripts/test-work-delegation.mjs (test:package)connected tools reach network-enabled runs and stay off offline onesscripts/test-work-mcp.mjs (test:package)production Work upgrade applies task-bound ticket authenticationscripts/test-websocket-tickets.mjs (test:package) |
| Agent CLI-modeller | — | 3 | 0 | backend/src/services/agentCliService.ts | Ikke relevant: Agent CLI-adaptere er kompilerede, indbyggede definitioner og indlæses ikke fra udbydermanifester. | backend/src/services/agentAccessService.ts | docs/36-AGENT_CLI_MODELS.md | every agent CLI passes an explicit model through to its argvscripts/test-agent-cli-chat.mjs (test:package)enabled CLI models are listed for administrators and never for regular usersscripts/test-agent-cli-access.mjs (test:package) |
| Artefakter | /artifacts | 1 | 0 | frontend/src/utils/artifactParser.ts | frontend/src/artifact-runtime/manifest.ts | frontend/src/components/ArtifactSlideOutPanel.tsxfrontend/src/store/appStore.ts | docs/13-ARTIFACTS_FEATURE.md | chat detects multi-file HTML artifacts and renders them in the slide-out panelfrontend/e2e/artifacts.spec.ts (test:e2e) |
| Udbyderforbrug | /usage | 10 | 0 | backend/src/services/pluginUsageService.tsbackend/src/routes/plugins.tsfrontend/src/utils/api/pluginApi.tsfrontend/src/components/usage/UsageChart.tsx | Ikke relevant: Forbrugsanalyse bruger udbyderhændelser, men definerer intet eget installations- eller registreringsmanifest. | backend/src/services/pluginUsageService.tsfrontend/src/utils/pluginUsage.ts | docs/37-SYSTEM_MONITORING.mddocs/58-COST_GOVERNANCE.mddocs/60-OBSERVABILITY.md | the usage endpoint is explicitly protected by administrator middlewarescripts/test-plugin-usage-analytics.mjs (test:package)model chart series bound names, combine providers, and reconcile UTC daily countersscripts/test-plugin-usage-analytics.mjs (test:package)focused model series isolate exact rare names without double countingscripts/test-plugin-usage-analytics.mjs (test:package)focused usage snapshots exclude later events and keep overview UTC boundariesscripts/test-plugin-usage-analytics.mjs (test:package)usage route rejects malformed model focus and preserves exact scalar namesscripts/test-plugin-usage-analytics.mjs (test:package)model colors link the chart and heatmap while highlighting preserves totalsfrontend/e2e/plugin-usage.spec.ts (test:e2e)the daily explorer exposes per-model Calls and Tokens with keyboard navigationfrontend/e2e/plugin-usage.spec.ts (test:e2e)models outside the busiest twelve load and highlight their own history independentlyfrontend/e2e/plugin-usage.spec.ts (test:e2e)hard budgets block exhausted principals and fail open otherwisescripts/test-cost-governance.mjs (test:package)agent usage appears before cost and charts with recorded, unmetered, and zero statesfrontend/e2e/plugin-usage.spec.ts (test:e2e)agent totals bypass provider/model top limits and never attribute ordinary provider trafficscripts/test-plugin-usage-analytics.mjs (test:package)Codex cumulative totals include caches/reasoning once and replace repeated terminal snapshotsscripts/test-agent-cli-chat.mjs (test:package) |
| Evalueringsplatform | /evaluations | 16 | 0 | backend/src/persistence/resourceTypes.ts | Ikke relevant: Evalueringer er kontoressourcer, som Libre gemmer, og de bruger ikke et installations- eller registreringsmanifest. | backend/src/services/evaluationService.ts | docs/59-EVALUATIONS.md | arena votes are one per user per comparison and Elo replays deterministicallyscripts/test-evaluations.mjs (test:package) |
| Systemdiagnostik | /system | 5 | 0 | backend/src/services/systemDiagnosticsService.ts | Ikke relevant: Systemdiagnostik er en indbygget, godkendt rapport og har intet installations- eller registreringsmanifest. | backend/src/services/healthService.ts | docs/37-SYSTEM_MONITORING.md | system route requires both authentication and current administrator statusscripts/test-system-diagnostics.mjs (test:package) |
| Brugeradministration | /users | 8 | 0 | backend/src/types/index.ts | Ikke relevant: Brugeradministration er en indbygget identitetsfunktion og har intet installations- eller registreringsmanifest. | Ikke relevant: Brugerrolle og kontostatus vælges af bootstrap- eller godkendelsespolitikken, ikke af en genanvendelig funktionsstandard. | docs/12-AUTHENTICATION.md | public registrations require administrator approval before authenticationscripts/test-user-approval.mjs (test:package) |
| Godkendelse | /login | 40 | 0 | backend/src/types/index.ts | Ikke relevant: Godkendelse er en indbygget sikkerhedsgrænse og installeres eller findes ikke via et manifest. | backend/src/services/registrationPolicy.ts | docs/12-AUTHENTICATION.mddocs/12-AUTHENTICATION.mddocs/12-AUTHENTICATION.md | password login requires and submits a Turnstile tokenfrontend/e2e/auth.spec.ts (test:e2e)revoking the session rejects its token with 401scripts/test-auth-sessions.mjs (test:package)scope-to-path matrix: notes scope on notes, chat, and auth routesscripts/test-api-tokens.mjs (test:package)verifyIdToken accepts a good token and returns its claimsscripts/test-oidc-provider.mjs (test:package)password login returns an MFA challenge, and the challenge is not a sessionscripts/test-mfa.mjs (test:package)a passkey assertion signs the user in and challenges are one-usescripts/test-mfa.mjs (test:package)the signup password field grades strength live against the real policyfrontend/e2e/password-strength.spec.ts (test:e2e) |
| Adgangskontrol | — | 14 | 0 | backend/src/persistence/securityTypes.ts | Ikke relevant: Adgangskontrol er en indbygget sikkerhedsgrænse og installeres eller findes ikke via et manifest. | backend/src/services/authorizationService.ts | docs/12-AUTHENTICATION.md | group grants reach members and die with the membershipscripts/test-authorization.mjs (test:package)a rolled-back duplicate group create leaves no audit rowscripts/test-security-audit.mjs (test:package)group principal lookup and grant names surface through the APIscripts/test-resource-sharing.mjs (test:package) |
| Offentligt API | — | 2 | 0 | backend/src/routes/openaiCompat.ts | Ikke relevant: Den OpenAI-kompatible flade spejler et eksternt wireformat og har intet installationsmanifest. | Ikke relevant: Standarder for sampling kommer fra kalderens anmodning og modellens egen konfiguration, aldrig fra denne flade. | docs/53-PUBLIC_API.md | a streaming completion emits OpenAI chunk frames and [DONE]scripts/test-openai-compat.mjs (test:package) |
| Dataportabilitet | — | 3 | 0 | backend/src/services/dataArchiveService.ts | backend/src/services/dataArchiveService.ts | backend/src/services/dataArchiveService.ts | docs/41-DATA_PORTABILITY.md | v3 export is complete, checksummed, user-scoped, and explicit about exclusionsscripts/test-data-archive.mjs (test:package) |
| Dokumentviden og søgning | — | 15 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | backend/src/services/preferencesService.ts | docs/09-RAG_FEATURE.mddocs/09-RAG_FEATURE.md | keyword retrieval sees session documents AND user-scoped uploadsscripts/test-rag-retrieval.mjs (test:package)multi-image OCR produces one labeled page segment per imagescripts/test-media-extraction.mjs (test:package)audio transcripts carry one Transcript section and respect the stt gatescripts/test-media-extraction.mjs (test:package) |
| Personahukommelse | — | 6 | 0 | backend/src/types/index.ts | Ikke relevant: Personahukommelse er en intern personaressource og har intet installations- eller registreringsmanifest. | frontend/src/components/persona-form/defaults.ts | docs/16-PERSONA_DEVELOPMENT_FRAMEWORK.md | persona deletion during vector publication still removes the recreated vectorscripts/test-memory-reliability.mjs (test:package) |
| Websøgning | — | 6 | 0 | backend/src/services/webSearchService.ts | Ikke relevant: Websøgning bruger administratorens forbindelsesindstillinger i stedet for et installerbart udbydermanifest. | backend/src/services/webSearchService.ts | docs/39-WEB_SEARCH.md | web search ships disabled and validates its configurationscripts/test-web-search.mjs (test:package)search is scoped to what the actor can readscripts/test-workspace-search.mjs (test:package) |
| Indstillinger og præferencer | — | 11 | 0 | backend/src/types/index.ts | Ikke relevant: Indstillinger samler indbygget konfiguration og udbyderkonfiguration, men definerer intet separat installationsmanifest. | backend/src/services/preferencesService.ts | docs/35-PROVIDER_CONNECTIONS.md | theme preference survives refresh and retries a failed savefrontend/e2e/settings.spec.ts (test:e2e) |
| Taleinput og -output | — | 13 | 0 | backend/src/types/index.ts | scripts/capability-contracts.json | scripts/test-capability-contracts.mjs | docs/42-SPEECH_TO_TEXT.mddocs/27-QWEN3_TTS.mddocs/57-VOICE_MODE.md | STT sends an OpenAI-compatible multipart request to the selected routescripts/test-stt-routing.mjs (test:package)provider speech input discloses its route and transcribes recorded audiofrontend/e2e/stt.spec.ts (test:e2e)invalid provider audio is rejected safely without inserting a transcriptfrontend/e2e/stt.spec.ts (test:e2e)TTS routes a shared model alias through the selected plugin and user valvescripts/test-tts-routing.mjs (test:package)voice mode opens hands-free conversation and transcribes a manual turnfrontend/e2e/voice-mode.spec.ts (test:e2e) |
| Hugging Face Hub | — | 7 | 0 | backend/src/routes/huggingfaceHub.ts | Ikke relevant: Metadata for Hub-modeller er data fra et eksternt API; Libre definerer intet lokalt installationsmanifest for browserfunktionen. | backend/src/routes/huggingfaceHub.ts | docs/29-HUGGINGFACE_HUB.md | Hugging Face Hub task discovery is authenticated route behaviorscripts/test-huggingface-hub-routes.mjs (test:package) |
| Strands-motor | /strands | 11 | 0 | backend/src/strands/engine.tsbackend/src/strands/work-model.ts | Ikke relevant: Strands-motoren er indbygget i backend og driver eksisterende ruter til Ollama og udbyderplugins, så den har intet eget manifest. | backend/src/services/strandsAccessService.ts | docs/67-STRANDS_ENGINE.mddocs/06-TROUBLESHOOTING.mddocs/33-WORKSPACES.md | Strands access fails closed and follows the admin setting and environment pinscripts/test-strands-engine.mjs (test:package)a Strands turn streams NDJSON, runs a jailed file tool, and persists the transcriptscripts/test-strands-engine.mjs (test:package)the workspace jail rejects paths that leave the session rootscripts/test-strands-engine.mjs (test:package)an admin creates a Strands session and streams a turn with a tool callfrontend/e2e/strands-engine.spec.ts (test:e2e) |
| Varige job og hændelser | — | 4 | 0 | backend/src/platform/jobs/durableJobTypes.ts | Ikke relevant: Varige job bruger registrerede handlertyper og gemte payloadkontrakter, ikke installationsmanifester. | backend/src/platform/jobs/embeddedDurableJobWorker.ts | docs/45-PLATFORM_FOUNDATION.md | ordered event replay uses global cursors and per-stream sequencesscripts/test-durable-jobs.mjs (test:package) |
| Solo- og teamprofiler for udrulning | — | 0 | 0 | backend/src/platform/runtimeConfig.ts | helm/libre-webui/values.schema.json | helm/libre-webui/values.yaml | docs/45-PLATFORM_FOUNDATION.md | real Redis coordinates independent replicas and fails closed after shutdownscripts/test-platform-coordination.mjs (test:package) |
| Gendannelse og sikkerhedskopiering | — | 2 | 0 | backend/src/services/recoveryInventoryService.ts | backend/src/platform/recovery/backupArchive.ts | backend/src/services/recoveryInventoryService.ts | docs/44-RECOVERY_READINESS.mddocs/44-RECOVERY_READINESS.md | integrated backup is signed, encrypted, tamper-evident, and clean-restorablescripts/test-integrated-backup.mjs (test:package)team backup restores a clean PostgreSQL and versioned S3 target with authenticated PGVector statescripts/test-team-backup.mjs (test:package)a manual drill backs up, restores in isolation, verifies, and measuresscripts/test-recovery-drills.mjs (test:package)an unattended drill failure alerts every administrator oncescripts/test-recovery-drills.mjs (test:package) |
Nøjagtig oversigt over backendruter
Home
Intet monteret Express-endpoint. Den eksekverbare grænse er brugerfladen og/eller kildebeviset, der er registreret ovenfor.
Chat
DELETE /api/chat/folders/:folderId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/folders/:folderId)DELETE /api/chat/sessions—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions)DELETE /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId)DELETE /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/queue/:entryId)GET /api/chat/compaction-config—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/compaction-config)GET /api/chat/context-policy—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/context-policy)GET /api/chat/folders—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/folders)GET /api/chat/sessions—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions)GET /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId)GET /api/chat/sessions/:sessionId/events—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/events)GET /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/folders—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/folders)POST /api/chat/sessions—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions)POST /api/chat/sessions/:sessionId/compaction/:messageId/restore—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/compaction/:messageId/restore)POST /api/chat/sessions/:sessionId/followups—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/followups)POST /api/chat/sessions/:sessionId/fork—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/fork)POST /api/chat/sessions/:sessionId/generate—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/generate)POST /api/chat/sessions/:sessionId/generate-title—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/generate-title)POST /api/chat/sessions/:sessionId/generate/stream—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/generate/stream)POST /api/chat/sessions/:sessionId/generations—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/generations)POST /api/chat/sessions/:sessionId/generations/:assistantMessageId/cancel—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/generations/:assistantMessageId/cancel)POST /api/chat/sessions/:sessionId/messages—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/messages)POST /api/chat/sessions/:sessionId/messages/:messageId/branch—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/messages/:messageId/branch)POST /api/chat/sessions/:sessionId/messages/:messageId/branches—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/messages/:messageId/branches)POST /api/chat/sessions/:sessionId/messages/:messageId/truncate—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/messages/:messageId/truncate)POST /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/queue)POST /api/chat/sessions/:sessionId/summarize-thinking—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/summarize-thinking)PUT /api/chat/compaction-config—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/compaction-config)PUT /api/chat/folders/:folderId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/folders/:folderId)PUT /api/chat/sessions/:sessionId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId)PUT /api/chat/sessions/:sessionId/messages/:messageId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/messages/:messageId)PUT /api/chat/sessions/:sessionId/queue—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/queue)PUT /api/chat/sessions/:sessionId/queue/:entryId—backend/src/routes/chat.ts(monteringspunkt/api/chat, understi/sessions/:sessionId/queue/:entryId)
Modeladministration
DELETE /api/ollama/models—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models)GET /api/ollama/health—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/health)GET /api/ollama/library—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/library)GET /api/ollama/models—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models)GET /api/ollama/models/:modelName/defaults—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/:modelName/defaults)GET /api/ollama/models/access—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/access)GET /api/ollama/models/pull-all/stream—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/pull-all/stream)GET /api/ollama/models/show—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/show)GET /api/ollama/models/visibility—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/visibility)GET /api/ollama/pull/stream—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/pull/stream)GET /api/ollama/running—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/running)GET /api/ollama/settings—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/settings)GET /api/ollama/version—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/version)HEAD /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/blobs/:digest)POST /api/ollama/blobs/:digest—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/blobs/:digest)POST /api/ollama/chat—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/chat)POST /api/ollama/chat/stream—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/chat/stream)POST /api/ollama/embed—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/embed)POST /api/ollama/embeddings—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/embeddings)POST /api/ollama/models—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models)POST /api/ollama/models/copy—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/copy)POST /api/ollama/models/pull—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/pull)POST /api/ollama/models/pull-all—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/pull-all)POST /api/ollama/models/push—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/push)POST /api/ollama/models/unload—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/unload)POST /api/ollama/models/unload-all—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/unload-all)PUT /api/ollama/models/access—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/access)PUT /api/ollama/models/visibility—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/models/visibility)PUT /api/ollama/settings—backend/src/routes/ollama.ts(monteringspunkt/api/ollama, understi/settings)DELETE /api/plugins/:id—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id)DELETE /api/plugins/:id/credentials—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id/credentials)DELETE /api/plugins/:id/variables—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id/variables)GET /api/plugins—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/)GET /api/plugins/:id—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id)GET /api/plugins/:id/credentials/check—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id/credentials/check)GET /api/plugins/:id/export—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id/export)GET /api/plugins/:id/variables—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id/variables)GET /api/plugins/active—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/active)GET /api/plugins/active/current—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/active/current)GET /api/plugins/credentials/all—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/credentials/all)GET /api/plugins/status/all—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/status/all)POST /api/plugins/:id/credentials—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id/credentials)POST /api/plugins/activate/:id—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/activate/:id)POST /api/plugins/deactivate—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/deactivate)POST /api/plugins/deactivate/:id—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/deactivate/:id)POST /api/plugins/discover/:id—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/discover/:id)POST /api/plugins/install—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/install)POST /api/plugins/probe-endpoint—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/probe-endpoint)POST /api/plugins/upload—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/upload)PUT /api/plugins/:id—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id)PUT /api/plugins/:id/variables—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/:id/variables)
Personaer
DELETE /api/personas/:id—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id)GET /api/personas—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/)GET /api/personas/:id—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id)GET /api/personas/:id/backup—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/backup)GET /api/personas/:id/download—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/download)GET /api/personas/:id/export—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/export)GET /api/personas/:id/export/dna—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/export/dna)GET /api/personas/defaults/parameters—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/defaults/parameters)GET /api/personas/stats/count—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/stats/count)POST /api/personas—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/)POST /api/personas/import—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/import)PUT /api/personas/:id—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id)
Mediegalleri
DELETE /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(monteringspunkt/api/image-gen, understi/gallery/:imageId)GET /api/image-gen/config/:pluginId—backend/src/routes/imageGen.ts(monteringspunkt/api/image-gen, understi/config/:pluginId)GET /api/image-gen/gallery—backend/src/routes/imageGen.ts(monteringspunkt/api/image-gen, understi/gallery)GET /api/image-gen/gallery/:imageId—backend/src/routes/imageGen.ts(monteringspunkt/api/image-gen, understi/gallery/:imageId)GET /api/image-gen/models—backend/src/routes/imageGen.ts(monteringspunkt/api/image-gen, understi/models)GET /api/image-gen/plugins—backend/src/routes/imageGen.ts(monteringspunkt/api/image-gen, understi/plugins)POST /api/image-gen/generate—backend/src/routes/imageGen.ts(monteringspunkt/api/image-gen, understi/generate)DELETE /api/media/gallery/:mediaId—backend/src/routes/media.ts(monteringspunkt/api/media, understi/gallery/:mediaId)DELETE /api/media/video/jobs/:jobId—backend/src/routes/media.ts(monteringspunkt/api/media, understi/video/jobs/:jobId)GET /api/media/gallery—backend/src/routes/media.ts(monteringspunkt/api/media, understi/gallery)GET /api/media/gallery/:mediaId/content—backend/src/routes/media.ts(monteringspunkt/api/media, understi/gallery/:mediaId/content)GET /api/media/models—backend/src/routes/media.ts(monteringspunkt/api/media, understi/models)GET /api/media/video/jobs—backend/src/routes/media.ts(monteringspunkt/api/media, understi/video/jobs)GET /api/media/video/jobs/:jobId—backend/src/routes/media.ts(monteringspunkt/api/media, understi/video/jobs/:jobId)POST /api/media/audio/generate—backend/src/routes/media.ts(monteringspunkt/api/media, understi/audio/generate)POST /api/media/audio/voice-clone—backend/src/routes/media.ts(monteringspunkt/api/media, understi/audio/voice-clone)POST /api/media/image/edit—backend/src/routes/media.ts(monteringspunkt/api/media, understi/image/edit)POST /api/media/sound/generate—backend/src/routes/media.ts(monteringspunkt/api/media, understi/sound/generate)POST /api/media/video/generate—backend/src/routes/media.ts(monteringspunkt/api/media, understi/video/generate)POST /api/media/video/jobs/:jobId/resume—backend/src/routes/media.ts(monteringspunkt/api/media, understi/video/jobs/:jobId/resume)
Noter
DELETE /api/notes/:noteId—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId)DELETE /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId/attachments/:attachmentId)GET /api/notes—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/)GET /api/notes/:noteId—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId)GET /api/notes/:noteId/attachments—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId/attachments)GET /api/notes/:noteId/attachments/:attachmentId—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId/attachments/:attachmentId)GET /api/notes/:noteId/revisions—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId/revisions)POST /api/notes—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/)POST /api/notes/:noteId/assist—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId/assist)POST /api/notes/:noteId/attachments—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId/attachments)POST /api/notes/:noteId/revisions/:revisionId/restore—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId/revisions/:revisionId/restore)PUT /api/notes/:noteId—backend/src/routes/notes.ts(monteringspunkt/api/notes, understi/:noteId)
Kalender
DELETE /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/calendars/:calendarId)DELETE /api/calendar/events/:eventId—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/events/:eventId)GET /api/calendar/calendars—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/calendars)GET /api/calendar/events—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/events)GET /api/calendar/export—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/export)POST /api/calendar/calendars—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/calendars)POST /api/calendar/events—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/events)POST /api/calendar/import—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/import)PUT /api/calendar/calendars/:calendarId—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/calendars/:calendarId)PUT /api/calendar/events/:eventId—backend/src/routes/calendar.ts(monteringspunkt/api/calendar, understi/events/:eventId)
Automatiseringer
DELETE /api/automations/:automationId—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId)DELETE /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId/webhook-secret)GET /api/automations—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/)GET /api/automations/:automationId—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId)GET /api/automations/occurrences—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/occurrences)GET /api/automations/runs—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/runs)GET /api/automations/runs/summary—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/runs/summary)POST /api/automations—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/)POST /api/automations/:automationId/pause—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId/pause)POST /api/automations/:automationId/resume—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId/resume)POST /api/automations/:automationId/run—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId/run)POST /api/automations/:automationId/webhook—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId/webhook)POST /api/automations/:automationId/webhook-secret—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId/webhook-secret)POST /api/automations/runs/seen—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/runs/seen)PUT /api/automations/:automationId—backend/src/routes/automations.ts(monteringspunkt/api/automations, understi/:automationId)
Kanaler
DELETE /api/channels/:channelId—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId)DELETE /api/channels/:channelId/members/:userId—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/members/:userId)DELETE /api/channels/messages/:messageId—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/messages/:messageId)DELETE /api/channels/messages/:messageId/reactions/:emoji—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/messages/:messageId/reactions/:emoji)GET /api/channels—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/)GET /api/channels/:channelId—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId)GET /api/channels/:channelId/events—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/events)GET /api/channels/:channelId/members—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/members)GET /api/channels/:channelId/messages—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/messages)GET /api/channels/:channelId/pins—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/pins)GET /api/channels/attachments/:attachmentId—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/attachments/:attachmentId)GET /api/channels/messages/:messageId/thread—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/messages/:messageId/thread)GET /api/channels/public—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/public)PATCH /api/channels/:channelId—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId)PATCH /api/channels/messages/:messageId—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/messages/:messageId)POST /api/channels—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/)POST /api/channels/:channelId/attachments—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/attachments)POST /api/channels/:channelId/join—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/join)POST /api/channels/:channelId/members—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/members)POST /api/channels/:channelId/messages—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/messages)POST /api/channels/:channelId/read—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/:channelId/read)POST /api/channels/dm—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/dm)POST /api/channels/messages/:messageId/pin—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/messages/:messageId/pin)POST /api/channels/messages/:messageId/reactions—backend/src/routes/channels.ts(monteringspunkt/api/channels, understi/messages/:messageId/reactions)
Notifikationer
GET /api/email/settings—backend/src/routes/email.ts(monteringspunkt/api/email, understi/settings)POST /api/email/preview—backend/src/routes/email.ts(monteringspunkt/api/email, understi/preview)POST /api/email/test—backend/src/routes/email.ts(monteringspunkt/api/email, understi/test)PUT /api/email/settings—backend/src/routes/email.ts(monteringspunkt/api/email, understi/settings)DELETE /api/notifications/:notificationId—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/:notificationId)DELETE /api/notifications/webhooks/:targetId—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/webhooks/:targetId)GET /api/notifications—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/)GET /api/notifications/events—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/events)GET /api/notifications/unread-count—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/unread-count)GET /api/notifications/webhooks—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/webhooks)POST /api/notifications/:notificationId/read—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/:notificationId/read)POST /api/notifications/read-all—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/read-all)POST /api/notifications/webhooks—backend/src/routes/notifications.ts(monteringspunkt/api/notifications, understi/webhooks)DELETE /api/push/subscriptions—backend/src/routes/push.ts(monteringspunkt/api/push, understi/subscriptions)GET /api/push/public-key—backend/src/routes/push.ts(monteringspunkt/api/push, understi/public-key)GET /api/push/subscriptions—backend/src/routes/push.ts(monteringspunkt/api/push, understi/subscriptions)POST /api/push/subscriptions—backend/src/routes/push.ts(monteringspunkt/api/push, understi/subscriptions)
Promptbibliotek
DELETE /api/prompts/:promptId—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/:promptId)GET /api/prompts—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/)GET /api/prompts/:promptId—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/:promptId)GET /api/prompts/:promptId/export—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/:promptId/export)GET /api/prompts/:promptId/versions—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/:promptId/versions)POST /api/prompts—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/)POST /api/prompts/:promptId/rollback—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/:promptId/rollback)POST /api/prompts/import—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/import)PUT /api/prompts/:promptId—backend/src/routes/prompts.ts(monteringspunkt/api/prompts, understi/:promptId)
Færdigheder
DELETE /api/skills/:skillId—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId)DELETE /api/skills/:skillId/files—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId/files)GET /api/skills—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/)GET /api/skills/:skillId—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId)GET /api/skills/:skillId/export—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId/export)GET /api/skills/:skillId/files—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId/files)GET /api/skills/:skillId/files/content—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId/files/content)GET /api/skills/:skillId/versions—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId/versions)POST /api/skills—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/)POST /api/skills/:skillId/rollback—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId/rollback)POST /api/skills/import—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/import)POST /api/skills/import-url—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/import-url)PUT /api/skills/:skillId—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId)PUT /api/skills/:skillId/files—backend/src/routes/skills.ts(monteringspunkt/api/skills, understi/:skillId/files)
Chatværktøjer
DELETE /api/tools/approvals/:id—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/approvals/:id)DELETE /api/tools/servers/:id—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id)DELETE /api/tools/servers/:id/credential—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/credential)DELETE /api/tools/servers/:id/oauth—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/oauth)GET /api/tools/access—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/access)GET /api/tools/approvals—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/approvals)GET /api/tools/catalog—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/catalog)GET /api/tools/servers—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers)GET /api/tools/servers/:id—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id)GET /api/tools/servers/:id/oauth/callback—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/oauth/callback)GET /api/tools/servers/:id/oauth/status—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/oauth/status)POST /api/tools/approvals/:id—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/approvals/:id)POST /api/tools/servers—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers)POST /api/tools/servers/:id/oauth/start—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/oauth/start)POST /api/tools/servers/:id/refresh—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/refresh)PUT /api/tools/access—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/access)PUT /api/tools/servers/:id—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id)PUT /api/tools/servers/:id/credential—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/credential)PUT /api/tools/servers/:id/tools/:toolName—backend/src/routes/tools.ts(monteringspunkt/api/tools, understi/servers/:id/tools/:toolName)
Work
DELETE /api/work/policies/:id—backend/src/routes/work.ts(monteringspunkt/api/work, understi/policies/:id)DELETE /api/work/tasks/:id—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id)DELETE /api/work/tasks/:id/approval-rules/:ruleId—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/approval-rules/:ruleId)DELETE /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/computer/control)GET /api/work/access—backend/src/routes/work.ts(monteringspunkt/api/work, understi/access)GET /api/work/admin/overview—backend/src/routes/work.ts(monteringspunkt/api/work, understi/admin/overview)GET /api/work/admin/recovery—backend/src/routes/work.ts(monteringspunkt/api/work, understi/admin/recovery)GET /api/work/capabilities—backend/src/routes/work.ts(monteringspunkt/api/work, understi/capabilities)GET /api/work/computer/setup—backend/src/routes/work.ts(monteringspunkt/api/work, understi/computer/setup)GET /api/work/policies—backend/src/routes/work.ts(monteringspunkt/api/work, understi/policies)GET /api/work/tasks—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks)GET /api/work/tasks/:id—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id)GET /api/work/tasks/:id/approvals—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/approvals)GET /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/computer/control)GET /api/work/tasks/:id/file—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/file)GET /api/work/tasks/:id/files—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/files)GET /api/work/tasks/:id/git—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/git)GET /api/work/tasks/:id/git/diff—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/git/diff)GET /api/work/tasks/:id/messages—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/messages)GET /api/work/tasks/:id/runs—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/runs)GET /api/work/tasks/:id/runs/:runId—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/runs/:runId)GET /api/work/tasks/:taskId/runs/:runId/events—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:taskId/runs/:runId/events)PATCH /api/work/tasks/:id—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id)POST /api/work/admin/recovery/retry—backend/src/routes/work.ts(monteringspunkt/api/work, understi/admin/recovery/retry)POST /api/work/computer/setup—backend/src/routes/work.ts(monteringspunkt/api/work, understi/computer/setup)POST /api/work/computer/skills/:slug/trace—backend/src/routes/work.ts(monteringspunkt/api/work, understi/computer/skills/:slug/trace)POST /api/work/policies—backend/src/routes/work.ts(monteringspunkt/api/work, understi/policies)POST /api/work/tasks—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks)POST /api/work/tasks/:id/approvals/:approvalId—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/approvals/:approvalId)POST /api/work/tasks/:id/cancel—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/cancel)POST /api/work/tasks/:id/computer/anchor—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/computer/anchor)POST /api/work/tasks/:id/computer/control—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/computer/control)POST /api/work/tasks/:id/computer/start—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/computer/start)POST /api/work/tasks/:id/computer/teach—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/computer/teach)POST /api/work/tasks/:id/git/branches—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/git/branches)POST /api/work/tasks/:id/git/commit—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/git/commit)POST /api/work/tasks/:id/git/init—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/git/init)POST /api/work/tasks/:id/git/stage—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/git/stage)POST /api/work/tasks/:id/git/switch—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/git/switch)POST /api/work/tasks/:id/messages—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/messages)POST /api/work/tasks/:id/preview/start—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/preview/start)POST /api/work/tasks/:id/preview/stop—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/preview/stop)POST /api/work/tasks/:id/runs—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/runs)POST /api/work/tasks/:id/seen—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/seen)PUT /api/work/access—backend/src/routes/work.ts(monteringspunkt/api/work, understi/access)PUT /api/work/policies/:id—backend/src/routes/work.ts(monteringspunkt/api/work, understi/policies/:id)PUT /api/work/tasks/:id/approvals—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/approvals)PUT /api/work/tasks/:id/file—backend/src/routes/work.ts(monteringspunkt/api/work, understi/tasks/:id/file)
Agent CLI-modeller
GET /api/agent-clis/access—backend/src/routes/agentCli.ts(monteringspunkt/api/agent-clis, understi/access)GET /api/agent-clis/models—backend/src/routes/agentCli.ts(monteringspunkt/api/agent-clis, understi/models)PUT /api/agent-clis/access—backend/src/routes/agentCli.ts(monteringspunkt/api/agent-clis, understi/access)
Artefakter
GET /api/artifacts/sandbox—backend/src/routes/artifacts.ts(monteringspunkt/api/artifacts, understi/sandbox)
Udbyderforbrug
DELETE /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/budgets/:budgetId)DELETE /api/costs/tariffs/:tariffId—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/tariffs/:tariffId)GET /api/costs/analytics—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/analytics)GET /api/costs/budgets—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/budgets)GET /api/costs/export—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/export)GET /api/costs/tariffs—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/tariffs)POST /api/costs/budgets—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/budgets)POST /api/costs/tariffs—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/tariffs)PUT /api/costs/budgets/:budgetId—backend/src/routes/costs.ts(monteringspunkt/api/costs, understi/budgets/:budgetId)GET /api/plugins/usage—backend/src/routes/plugins.ts(monteringspunkt/api/plugins, understi/usage)
Evalueringsplatform
DELETE /api/evaluations/feedback/:messageId—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/feedback/:messageId)DELETE /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/sets/:setId)GET /api/evaluations/arena/leaderboard—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/arena/leaderboard)GET /api/evaluations/feedback—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/feedback)GET /api/evaluations/feedback/all—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/feedback/all)GET /api/evaluations/runs—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/runs)GET /api/evaluations/runs/:runId—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/runs/:runId)GET /api/evaluations/runs/:runId/export—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/runs/:runId/export)GET /api/evaluations/sets—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/sets)POST /api/evaluations/arena/matches—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/arena/matches)POST /api/evaluations/arena/votes—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/arena/votes)POST /api/evaluations/feedback—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/feedback)POST /api/evaluations/runs—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/runs)POST /api/evaluations/runs/:runId/cancel—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/runs/:runId/cancel)POST /api/evaluations/sets—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/sets)PUT /api/evaluations/sets/:setId—backend/src/routes/evaluations.ts(monteringspunkt/api/evaluations, understi/sets/:setId)
Systemdiagnostik
GET /health—backend/src/routes/health.ts(monteringspunkt/health, understi/)GET /health/deep—backend/src/routes/health.ts(monteringspunkt/health, understi/deep)GET /health/live—backend/src/routes/health.ts(monteringspunkt/health, understi/live)GET /health/ready—backend/src/routes/health.ts(monteringspunkt/health, understi/ready)GET /api/system—backend/src/routes/systemDiagnostics.ts(monteringspunkt/api/system, understi/)
Brugeradministration
DELETE /api/users/:id—backend/src/routes/users.ts(monteringspunkt/api/users, understi/:id)GET /api/users—backend/src/routes/users.ts(monteringspunkt/api/users, understi/)GET /api/users/pending-approvals—backend/src/routes/users.ts(monteringspunkt/api/users, understi/pending-approvals)PATCH /api/users/:id—backend/src/routes/users.ts(monteringspunkt/api/users, understi/:id)PATCH /api/users/:id/approve—backend/src/routes/users.ts(monteringspunkt/api/users, understi/:id/approve)PATCH /api/users/me/avatar—backend/src/routes/users.ts(monteringspunkt/api/users, understi/me/avatar)POST /api/users—backend/src/routes/users.ts(monteringspunkt/api/users, understi/)POST /api/users/:id/mfa/reset—backend/src/routes/users.ts(monteringspunkt/api/users, understi/:id/mfa/reset)
Godkendelse
DELETE /api/auth/passkeys/:id—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/passkeys/:id)DELETE /api/auth/sessions/:id—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/sessions/:id)DELETE /api/auth/tokens/:id—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/tokens/:id)GET /api/auth/encryption-key—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/encryption-key)GET /api/auth/me—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/me)GET /api/auth/mfa—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa)GET /api/auth/mfa/policy—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/policy)GET /api/auth/oauth/github—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/github)GET /api/auth/oauth/github/callback—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/github/callback)GET /api/auth/oauth/github/status—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/github/status)GET /api/auth/oauth/huggingface—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/huggingface)GET /api/auth/oauth/huggingface/callback—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/huggingface/callback)GET /api/auth/oauth/huggingface/status—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/huggingface/status)GET /api/auth/oauth/oidc—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/oidc)GET /api/auth/oauth/oidc/callback—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/oidc/callback)GET /api/auth/oauth/oidc/status—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/oidc/status)GET /api/auth/passkeys—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/passkeys)GET /api/auth/sessions—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/sessions)GET /api/auth/system-info—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/system-info)GET /api/auth/tokens—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/tokens)GET /api/auth/verify—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/verify)POST /api/auth/login—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/login)POST /api/auth/logout—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/logout)POST /api/auth/mfa/activate—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/activate)POST /api/auth/mfa/activate-challenge—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/activate-challenge)POST /api/auth/mfa/disable—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/disable)POST /api/auth/mfa/enroll—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/enroll)POST /api/auth/mfa/enroll-challenge—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/enroll-challenge)POST /api/auth/mfa/recovery-codes—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/recovery-codes)POST /api/auth/mfa/verify—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/verify)POST /api/auth/oauth/exchange—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/oauth/exchange)POST /api/auth/passkeys/login—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/passkeys/login)POST /api/auth/passkeys/login-options—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/passkeys/login-options)POST /api/auth/passkeys/register—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/passkeys/register)POST /api/auth/passkeys/register-options—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/passkeys/register-options)POST /api/auth/sessions/revoke-others—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/sessions/revoke-others)POST /api/auth/signup—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/signup)POST /api/auth/tokens—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/tokens)POST /api/auth/websocket-ticket—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/websocket-ticket)PUT /api/auth/mfa/policy—backend/src/routes/auth.ts(monteringspunkt/api/auth, understi/mfa/policy)
Adgangskontrol
DELETE /api/access/grants/:id—backend/src/routes/access.ts(monteringspunkt/api/access, understi/grants/:id)GET /api/access/grants—backend/src/routes/access.ts(monteringspunkt/api/access, understi/grants)GET /api/access/principals—backend/src/routes/access.ts(monteringspunkt/api/access, understi/principals)GET /api/access/principals/groups—backend/src/routes/access.ts(monteringspunkt/api/access, understi/principals/groups)GET /api/access/shared-with-me—backend/src/routes/access.ts(monteringspunkt/api/access, understi/shared-with-me)POST /api/access/grants—backend/src/routes/access.ts(monteringspunkt/api/access, understi/grants)GET /api/audit—backend/src/routes/audit.ts(monteringspunkt/api/audit, understi/)DELETE /api/groups/:id—backend/src/routes/groups.ts(monteringspunkt/api/groups, understi/:id)DELETE /api/groups/:id/members/:userId—backend/src/routes/groups.ts(monteringspunkt/api/groups, understi/:id/members/:userId)GET /api/groups—backend/src/routes/groups.ts(monteringspunkt/api/groups, understi/)GET /api/groups/effective/:userId—backend/src/routes/groups.ts(monteringspunkt/api/groups, understi/effective/:userId)PATCH /api/groups/:id—backend/src/routes/groups.ts(monteringspunkt/api/groups, understi/:id)POST /api/groups—backend/src/routes/groups.ts(monteringspunkt/api/groups, understi/)POST /api/groups/:id/members—backend/src/routes/groups.ts(monteringspunkt/api/groups, understi/:id/members)
Offentligt API
GET /v1/models—backend/src/routes/openaiCompat.ts(monteringspunkt/v1, understi/models)POST /v1/chat/completions—backend/src/routes/openaiCompat.ts(monteringspunkt/v1, understi/chat/completions)
Dataportabilitet
GET /api/preferences/export—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/export)POST /api/preferences/import—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/import)POST /api/preferences/import/preflight—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/import/preflight)
Dokumentviden og søgning
DELETE /api/documents/:documentId—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/:documentId)DELETE /api/documents/collections/:collectionId—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/collections/:collectionId)GET /api/documents—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/)GET /api/documents/:documentId—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/:documentId)GET /api/documents/:documentId/source—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/:documentId/source)GET /api/documents/collections—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/collections)GET /api/documents/embeddings/status—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/embeddings/status)GET /api/documents/session/:sessionId—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/session/:sessionId)POST /api/documents/collections—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/collections)POST /api/documents/embeddings/regenerate—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/embeddings/regenerate)POST /api/documents/fetch-url—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/fetch-url)POST /api/documents/search—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/search)POST /api/documents/upload—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/upload)PUT /api/documents/:documentId/collection—backend/src/routes/documents.ts(monteringspunkt/api/documents, understi/:documentId/collection)GET /api/embeddings/models—backend/src/routes/embeddings.ts(monteringspunkt/api/embeddings, understi/models)
Personahukommelse
DELETE /api/personas/:id/memory—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/memory)GET /api/personas/:id/memory/core—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/memory/core)GET /api/personas/:id/memory/stats—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/memory/stats)GET /api/personas/:id/memory/status—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/memory/status)POST /api/personas/:id/memory/consolidate—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/memory/consolidate)POST /api/personas/:id/memory/decay—backend/src/routes/personas.ts(monteringspunkt/api/personas, understi/:id/memory/decay)
Websøgning
GET /api/search/access—backend/src/routes/search.ts(monteringspunkt/api/search, understi/access)GET /api/search/app—backend/src/routes/search.ts(monteringspunkt/api/search, understi/app)GET /api/search/config—backend/src/routes/search.ts(monteringspunkt/api/search, understi/config)POST /api/search/test—backend/src/routes/search.ts(monteringspunkt/api/search, understi/test)PUT /api/search/access—backend/src/routes/search.ts(monteringspunkt/api/search, understi/access)PUT /api/search/config—backend/src/routes/search.ts(monteringspunkt/api/search, understi/config)
Indstillinger og præferencer
GET /api/preferences—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/)GET /api/preferences/default-theme—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/default-theme)POST /api/preferences/embedding-settings/reset—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/embedding-settings/reset)POST /api/preferences/generation-options/reset—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/generation-options/reset)PUT /api/preferences—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/)PUT /api/preferences/default-model—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/default-model)PUT /api/preferences/default-theme—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/default-theme)PUT /api/preferences/embedding-settings—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/embedding-settings)PUT /api/preferences/generation-options—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/generation-options)PUT /api/preferences/model-generation-options—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/model-generation-options)PUT /api/preferences/system-message—backend/src/routes/preferences.ts(monteringspunkt/api/preferences, understi/system-message)
Taleinput og -output
GET /api/stt/models—backend/src/routes/stt.ts(monteringspunkt/api/stt, understi/models)POST /api/stt/transcribe—backend/src/routes/stt.ts(monteringspunkt/api/stt, understi/transcribe)DELETE /api/tts/voice-profiles/:profileId—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/voice-profiles/:profileId)GET /api/tts/models—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/models)GET /api/tts/plugins—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/plugins)GET /api/tts/voice-profiles—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/voice-profiles)GET /api/tts/voices/:pluginId—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/voices/:pluginId)POST /api/tts/generate—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/generate)POST /api/tts/generate-base64—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/generate-base64)POST /api/tts/voice-clone—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/voice-clone)POST /api/tts/voice-profiles/:profileId/revoke—backend/src/routes/tts.ts(monteringspunkt/api/tts, understi/voice-profiles/:profileId/revoke)GET /api/voice-access—backend/src/routes/voiceAccess.ts(monteringspunkt/api/voice-access, understi/)PUT /api/voice-access/:feature—backend/src/routes/voiceAccess.ts(monteringspunkt/api/voice-access, understi/:feature)
Hugging Face Hub
GET /api/huggingface-hub/models—backend/src/routes/huggingfaceHub.ts(monteringspunkt/api/huggingface-hub, understi/models)GET /api/huggingface-hub/models/:author/:modelName—backend/src/routes/huggingfaceHub.ts(monteringspunkt/api/huggingface-hub, understi/models/:author/:modelName)GET /api/huggingface-hub/models/:author/:modelName/gguf—backend/src/routes/huggingfaceHub.ts(monteringspunkt/api/huggingface-hub, understi/models/:author/:modelName/gguf)GET /api/huggingface-hub/models/:author/:modelName/has-gguf—backend/src/routes/huggingfaceHub.ts(monteringspunkt/api/huggingface-hub, understi/models/:author/:modelName/has-gguf)GET /api/huggingface-hub/tasks—backend/src/routes/huggingfaceHub.ts(monteringspunkt/api/huggingface-hub, understi/tasks)GET /api/huggingface-hub/trending—backend/src/routes/huggingfaceHub.ts(monteringspunkt/api/huggingface-hub, understi/trending)POST /api/huggingface-hub/cache/clear—backend/src/routes/huggingfaceHub.ts(monteringspunkt/api/huggingface-hub, understi/cache/clear)
Strands-motor
DELETE /api/strands/sessions/:sessionId—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/sessions/:sessionId)GET /api/strands/access—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/access)GET /api/strands/health—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/health)GET /api/strands/models—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/models)GET /api/strands/sessions—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/sessions)GET /api/strands/sessions/:sessionId—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/sessions/:sessionId)PATCH /api/strands/sessions/:sessionId—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/sessions/:sessionId)POST /api/strands/sessions—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/sessions)POST /api/strands/sessions/:sessionId/cancel—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/sessions/:sessionId/cancel)POST /api/strands/sessions/:sessionId/messages—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/sessions/:sessionId/messages)PUT /api/strands/access—backend/src/routes/strands.ts(monteringspunkt/api/strands, understi/access)
Varige job og hændelser
GET /api/jobs—backend/src/routes/jobs.ts(monteringspunkt/api/jobs, understi/)GET /api/jobs/:jobId—backend/src/routes/jobs.ts(monteringspunkt/api/jobs, understi/:jobId)GET /api/jobs/:jobId/events—backend/src/routes/jobs.ts(monteringspunkt/api/jobs, understi/:jobId/events)POST /api/jobs/:jobId/cancel—backend/src/routes/jobs.ts(monteringspunkt/api/jobs, understi/:jobId/cancel)
Solo- og teamprofiler for udrulning
Intet monteret Express-endpoint. Den eksekverbare grænse er brugerfladen og/eller kildebeviset, der er registreret ovenfor.
Gendannelse og sikkerhedskopiering
GET /api/recovery/drills—backend/src/routes/recovery.ts(monteringspunkt/api/recovery, understi/drills)POST /api/recovery/drills/run—backend/src/routes/recovery.ts(monteringspunkt/api/recovery, understi/drills/run)
Nøjagtig oversigt over WebSocket-ruter
WEBSOCKET /ws— Chat,backend/src/websocketServer.ts; godkendelsesbevis:backend/src/websocketServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-terminal— Work,backend/src/websocketServer.ts; godkendelsesbevis:backend/src/workTerminalServer.ts,scripts/test-websocket-tickets.mjsWEBSOCKET /ws/work-screen— Work,backend/src/websocketServer.ts; godkendelsesbevis:backend/src/workScreenServer.tsWEBSOCKET /ws/work-audio— Work,backend/src/websocketServer.ts; godkendelsesbevis:backend/src/workScreenServer.ts
Håndhævelsesgrænse
Pakkegaten fortolker TypeScript-/JavaScript-kildekode, opløser hver importeret Express-router til dens bogstavelige montering i programmet og afstemmer hver bogstavelig metode-/stideklaration i routere og hvert stinavn for WebSocket-opgraderinger én til én med denne oversigt. Den fejler ved en rutefil, der ikke er monteret, en router.route()-builder, der ikke understøttes, en dynamisk rutesti, en manglende eller dobbelt endpointejer, manglende bevis for WebSocket-godkendelse, en ændret UI-rute, manglende angivelse af, om skema, manifest eller standard gælder, forældet bevis eller et forældet genereret dokument.
Bevis fra målrettede test er afgrænset til én præcis navngiven test(...)-deklaration og mindst to adfærdsmønstre i den tests krop. Backendtest skal være præcise filargumenter til test:package, og Playwright-specs skal matche den normale registrering. Gaten beviser også, at begge testkørere udføres i den normale arbejdsgang Format & Lint for pull requests og dev/main.