Technical docs

Docs

Overview

Support reference for the org Docs workspace route (`/docs`).

What Docs is

  • The primary public route is `/docs`; legacy `/cowork` links redirect to `/docs`.
  • Storage-backed workspace for opening org files and chatting with an AI teammate side-by-side.
  • Storage remains the source of truth: uploads, deletes, shares, and edits affect the same org files used elsewhere.
  • Opening a file or folder from `/storage` routes into Docs with `/docs?path=...`.

Layout

  • Desktop: collapsible tree, document/media panel, and a right chat column with three desktop states:
  • `Chats` history view in the sidebar slot
  • active chat view after the user opens a conversation or starts a new one
  • fully collapsed chat panel
  • Docs adapts its panel layout to available workspace width: it can show tree, document, and chat together, show the document with one side panel, or show a single active panel when narrower. Tree and chat widths are stored as per-user, per-organization preferences and constrained to keep the document usable; resizing one side does not push the opposite side. Narrow desktop layouts can switch among panels without changing the persisted tree or chat collapse preference.
  • Desktop resize handles between tree↔document and document↔chat highlight on hover and while dragging.
  • Clicking the tree↔document divider a second time collapses the file tree. The file header action `Expand file tree` restores it, and the collapsed preference persists.
  • Desktop users can collapse or expand the chat panel from the file header area.
  • Mobile: full-screen panels using the shared mobile bottom bar: `Menu`, `Tree`, `Doc`, `Chat`, `History`.
  • The mobile Docs bottom bar is exposed to assistive tech as `Docs panels`.
  • Mobile opens on the `History` panel by default. The universal mobile `Chats` item opens `/docs?coworkPanel=history`; `Files` opens `/docs?coworkPanel=tree`.
  • Mobile supports swipe navigation between panels, arrow-key tab movement in the Docs bar, and chat links back into Docs documents switch the mobile view to `Doc`.
  • While the viewport mode is being detected, Docs shows a `Loading workspace` skeleton instead of rendering the wrong shell first.
  • Docs is keyed by the current org in the route layer, so switching orgs resets the workspace state instead of carrying the previous org's selection forward.
  • If users return to Docs without a `?path=` deep link, the workspace can restore the last selected file for that org. On mobile, restore waits until the `Doc` panel is visible, then opens the restored file in `Doc`.
  • Sending an internal-chat message while Docs is open includes the current page and open document path as context for the AI teammate. Selected document text can be sent with it: the composer previews it in a removable chip, and source/code selections can include line and column positions. Removing the chip keeps the document path but omits selected text from the next send. The editor retains a visible highlight when focus moves into chat; selection context resets when switching documents or visual/source modes, and Docs document context clears on leaving the workspace.

Tree behavior

  • The tree is divided into `Pinned`, `Recent`, `Storage`, `Sites`, `Skills`, and `Trash` sections. Each section has its own icon and disclosure control.
  • Section headers can be dragged to reorder them. Their context menu can move a section or hide or show optional sections; it does not offer a reset-layout action. `Storage` always remains visible.
  • Section order, visibility, expanded folder paths, and collapsed section state are stored for the current user and organization and restored on revisit. `Pinned` and `Recent` can expand independently; only one of `Storage`, `Sites`, `Skills`, and `Trash` is expanded at a time.
  • Root sections load their own storage paths as needed: normal files under `Storage`, published sites under `Sites`, installed skills under `Skills`, and deleted entries under `Trash`.
  • Each root-section action menu exposes `New File`, `New Folder`, and `Collapse Folders` where applicable. `Trash` omits creation actions.
  • `Collapse Folders` closes expanded folders in that section without changing the active file in the viewer.
  • Selecting a folder or section is visually independent from the file currently open in the viewer.
  • Pinned files are tracked per user and organization in local storage and store up to `15` paths.
  • Recent files are tracked per user and organization in local storage and store up to `5` paths.
  • Recent and pinned entries are updated when a remembered file or containing folder is renamed or moved, and removed when a remembered file or containing folder is deleted.
  • Recent and pinned file rows use the file context menu. Current actions are `Copy path`, `Rename`, `Delete`, and `Pin` or `Unpin` depending on whether the file is already pinned. A row action can `Hide` a recent entry without deleting the underlying file, or `Unpin` a pinned entry.
  • The `Trash` section's `More actions` menu offers `Empty trash` when available. This schedules deletion of the trash contents with a 60-second `Undo` opportunity, rather than immediately deleting them.
  • File rows throughout the tree show compact decorative icons selected by case-insensitive file extension. Common source, markup, configuration, document, spreadsheet, presentation, media, and archive formats have type-specific shapes and colors; unknown types use a muted generic file icon. Folder rows keep their existing folder controls instead.
  • Tree rows support keyboard navigation, and section reordering also supports pointer and touch interaction.
  • A non-root `?path=...` deep link is resolved against its parent storage listing before Docs chooses a viewer.
  • A confirmed file opens through the existing document, spreadsheet, media, unsupported-file, or error flow.
  • A confirmed folder stays selected in the tree, clears any prior viewer selection and stored file restoration, and shows the empty document state without document actions or `Download`. A folder is still treated as a folder when its name has a file-like extension.
  • A missing entry keeps the requested path in the URL and shows `We couldn't find this file or folder`, the `Requested path`, and `This path isn't available in your current organization.` The recovery explains `This link may belong to another organization.`
  • When other organizations are available, the recovery shows `Switch organization`; switching retries the original path in the selected organization. With only one organization, it shows `You only have access to this organization. Ask the sender to confirm that you have access.` If organization lookup fails, it shows `Failed to load data` with `Try again`.
  • On mobile, a confirmed folder or missing-path recovery opens the `Doc` panel.
  • After a confirmed deep link is handled, Docs removes the `path` query parameter. A missing-path recovery remains until the user deliberately selects another file or folder, which dismisses the recovery and clears the query. A newer organization, URL path, manual selection, delete, rename, or move supersedes or remaps a pending lookup so stale results cannot reopen an old path.
  • Dragging files or folders from outside the app onto a folder in the tree uploads into that folder.
  • Tree items can also be dragged within the Docs tree to move them to another folder.
  • Dragging a file onto another file moves it into that file's parent folder.
  • Dragging a folder to the tree root moves it to root.
  • Dragging a folder onto itself or into one of its descendants is blocked.
  • Tree context menus use storage actions for copy path, inline rename, inline file or subfolder creation, share, delete, and download.
  • New items are created in an inline row under the selected folder, or at root from the tree header. The editor supports keyboard submission and cancellation and keeps focus on validation errors.
  • Inline file creation accepts relative nested paths. A name without an extension receives `.md`; a trailing slash switches the operation to folder creation.
  • Exact extensionless `LICENSE` and `LICENCE` basenames are accepted case-insensitively. Other extensionless files and unsupported extensions are rejected.
  • Creation rejects absolute paths, parent traversal, empty path segments, control characters, unsafe names, overlong segments, and existing destinations. A successful create expands the ancestor folders and opens a new file in the document panel.
  • While tree mutations are running, affected rows show loading feedback. Dragging over collapsed folders can auto-expand them so nested drop targets are reachable.
  • Rename is available for files and folders from the context menu or by focusing a row and pressing `F2`. The name is edited in place; `Enter` submits, `Escape` cancels, and file renames initially select the basename without the extension.
  • Focusing a file or folder row and pressing `Delete` starts a deferred delete. The row or folder subtree is hidden immediately, but the storage delete request is sent only after the 60-second `Undo` countdown expires. `Undo`, `Ctrl+Z` / `Cmd+Z`, or manually dismissing the toast restores the row without sending a delete request, and interacting with the toast or hiding the browser tab pauses the countdown.
  • File rows download the selected file directly.
  • Folder rows request a server-generated `{folder name}.zip` from the organization storage download route. The server walks the folder, preserves empty nested folders, skips symlinks, and streams the archive; the browser no longer lists and fetches each file or applies the former 500-file client limit.

File handling

  • Editable in Docs: `.txt`, `.md`, `.docx`, `.htm`, `.html`, `.csv`, `.json`, `.webmanifest`, `.yaml`, `.yml`, `.ts`, `.tsx`, `.js`, `.mjs`, `.jsx`, `.py`, `.sql`, `.css`, `.scss`, `.sh`, `.log`, `.xml`, `.toml`, `.ini`, and `.tsv`.
  • Word `.docx` files up to `10 MB` open in the visual document editor. Docs imports Word content for editing and exports a DOCX binary on save; it does not treat a DOCX as raw text. Import may show `Some Word features aren't supported` with expandable `Compatibility details` for features or formatting that may not survive the round trip. If loading or the editor fails, users can retry or download the original file.
  • Spreadsheet fallback: `.xlsx` opens a download-only panel with `Spreadsheet preview is unavailable in Docs.` and `Download the file to open it locally.` `.csv` is editable as text.
  • PDF preview: `.pdf` opens in a dedicated viewer on desktop and mobile. Docs fetches the authenticated file with the current session, presents it through the browser's native PDF viewer, and shows `Try again` after a failed load.
  • Exact extensionless `LICENSE` and `LICENCE` files open in the raw code editor and use a dedicated license-file icon.
  • Inline media preview:
  • Images: `.jpg`, `.jpeg`, `.png`, `.gif`, `.webp`, `.svg`, `.bmp`, `.avif`
  • Video: `.mp4`, `.webm`, `.ogv`
  • Audio: `.mp3`, `.wav`, `.ogg`, `.aac`, `.flac`, `.m4a`, `.opus`
  • Other files can still be selected from the tree, but Docs shows an unsupported preview state with `Download`.
  • Docs document states include empty selection, loading, unsupported preview, too-large preview, not found, generic error, and ready.
  • The empty document state says `Select a file from the tree to view or edit it here.` and omits document actions.
  • Spreadsheet fetches are blocked for previews above `10 MB`, so large spreadsheets fall back to download-only behavior.

Website previews

  • An exact case-sensitive `index.html` is a website entry and opens in Website mode. Selecting another `.html` or `.htm` page searches its directory and then parent directories for the nearest `index.html`; if none exists, Docs can start a standalone website preview for the selected HTML file.
  • The site root is the folder containing the resolved `index.html`. Only allowlisted website resources below that root are served; symlinks and hidden path segments are not followed.
  • Website mode runs in an isolated iframe and exposes `Back`, `Forward`, and `Restart` controls. The mode button is labeled `Open source code` in Website mode and `Open website` in Source mode.
  • Switching from Source to Website waits for any pending source edit to save. The Source editor remains the lossless editor for HTML and other code files.
  • The header path follows the page currently open inside the site. Restart returns to the site entry.
  • Same-document navigation, including fragment links such as `#section`, keeps the active Website session connected even on browsers that report an iframe load for the anchor jump. A genuinely replaced or bridge-less document must still complete a fresh handshake.
  • Preview states include `Loading website…`, `Could not start website`, `Site entry not found`, and `Website handshake failed`, with `Try again` where recovery is available.
  • A short-lived preview URL is minted for the current site and automatically renewed when it expires. Changing selection or mode, leaving the page, or closing the viewer revokes the active preview on a best-effort basis.
  • Storage create, update, delete, rename, move, and copy events inside the site reload the preview after a short debounce. Renames and moves remap the selected page and entry; deleting or renaming the entry away from exact `index.html` falls back to the not-found Source state.
  • Website capability routes are:
  • `POST /api/organizations/{orgId}/storage/websites` with exactly one of `entry_path` or `selected_path`
  • `DELETE /api/organizations/{orgId}/storage/websites/{websiteId}`
  • `POST /api/organizations/{orgId}/storage/websites/{websiteId}/revoke` for page-teardown cleanup
  • If website serving is not configured or is unavailable, the source editor continues to work and Website mode shows its error state.
  • Website mode injects the website bridge into served `.html` and `.htm` pages. A site can declare managed Storage database aliases in `.alloy.json` beside its entry page, run read-only queries with `window.alloy.databases.query(alias, sql, params)`, and subscribe to database-change notifications while open. The create-website response includes the declared `databases` list; the viewer forwards changes only for those aliases. Pages cannot write database rows.
  • AI agents building business websites, forms, calculators, or dashboards should follow `references/websites-forms-dashboards.md` for supported file types, bundled or read-only live data, security limits, and testing. See `databases.md` for database operations.

Document editing

  • Docs can create an empty editable file from the tree header or a folder context menu. Creation uses a dedicated create endpoint and never overwrites an existing path.
  • Markdown files support a visual editor and a whole-document source mode. The source view uses CodeMirror with syntax highlighting, search, keyboard editing, configurable line numbers, word wrap, and folding while preserving the stored Markdown source losslessly.
  • In the visual editor, typed Markdown shortcuts for headings, block quotes, emphasis, lists, code blocks, and horizontal rules transform into the corresponding format; inside code-block lines they remain literal. Older flat block-quote editor values are normalized into paragraph blocks when opened, preserving their quote contents for editing.
  • GFM task lists work in both visual and source modes. In the visual editor, users can create a `Task list` from the formatting toolbar, `Turn into` menu, slash command, typed Markdown such as `- [ ]`, compact `[] ` input, or pasted Markdown. Checkboxes can be toggled with pointer or keyboard, support nesting and undo/redo, and persist through save and reopen.
  • Source-mode task markers are interactive checkboxes labeled `Mark task complete` or `Mark task incomplete`. In an immediate list-item prefix, a single-character custom status such as `- [?]`, `- [!]`, or `- [😀]` is recognized as an unchecked task; visual editing and saving preserve its marker if the task is not toggled. Toggling it replaces its status with `[x]`, while toggling a completed task replaces its status with `[ ]`. Toggling changes only that task marker in Source, preserving unrelated details such as BOM, line endings, indentation, and untouched uppercase `[X]` markers. Malformed, escaped, or delayed markers remain literal text; markers inside front matter or fenced code remain literal text.
  • Task controls are read-only when document editing is unavailable. If the visual editor fails, Docs falls back to the shared source editor labeled `Editor unavailable — plain text mode`, with the editor itself labeled `Editor content`.
  • The Markdown source actions menu can expand or collapse the current block, expand or collapse all blocks, expand to a selected heading level, and set folding arrows to `Off`, `Always visible`, or `On gutter hover`. With `On gutter hover`, desktop arrows appear only while the gutter is hovered rather than merely when the editor is focused; touch layouts retain visible controls. The visual/source switch is labeled `Open source` and `Open visual editor`.
  • Switching modes flushes pending changes before changing editors. An unchanged visual editor stays mounted while Source is open, preserving its selection and undo/redo history without producing an extra save. Source updates become the current visual snapshot when the user returns, and the hidden visual editor does not steal focus or write an older snapshot back over newer Source content.
  • Leaving a document with an unsaved or temporarily unsavable draft asks for confirmation before discarding it.
  • Leading YAML front matter is preserved losslessly. In visual mode it appears as a collapsed `Metadata` card with a read-only structured Properties view.
  • Invalid front matter, duplicate YAML keys, and non-object YAML roots show a fallback warning instead of pretending the metadata was parsed. The warning can open Markdown source at the reported line and column.
  • Mermaid, Graphviz/DOT, and Flowchart fenced code blocks render as diagrams in visual mode. Diagram controls are `Toggle pan mode`, `Zoom out`, `Zoom in`, `Reset zoom`, and `Copy code`; diagrams can also be resized, use the currently resolved `light`, `latte`, `dark`, or `dark-blue` palette, and remember their viewport per document.
  • Ordinary fenced code blocks expose a `Copy` button in visual mode. It copies the current code-block source, supports keyboard activation, and does not modify the document.
  • Relative Markdown links inside documents navigate without rewriting the stored source: a link to another storage file (for example `other-file.md` or `folder/page.md`) opens that document in the document panel, and a same-document heading link (`#anchor`) scrolls to the heading. Heading elements carry stable anchor ids, so heading fragments survive edits that renumber content. Visual headings expose `Copy link` to copy their document URL with a heading fragment without editing the document.
  • Visual editing adds an `Insert block` control for empty blocks, with a block command menu and an `Insert table` size picker. The `Emoji` command (`Insert emoji`) opens a picker and inserts the chosen emoji into the empty block. The table picker previews up to 10 columns by 8 rows and supports arrow keys to choose dimensions. Table selection controls include column alignment as well as row and column operations. The slash-command and selection toolbars share the same insertion commands.
  • The visual editor's selection toolbar includes `Highlight` (`Ctrl+H`), `Footnote`, and `Emoji`. `Footnote` opens a form for note text and can attach a reference to selected text; whitespace-only notes cannot be saved, `Cancel` shows `Escape to cancel`, and `Save` supports Ctrl+Enter or Cmd+Enter. The success toast offers `Go to footnote`. `Emoji` opens a picker, while emoji input also offers searchable suggestions. Highlight, emoji, and footnote references round-trip through Markdown editing. Pressing Enter to start a new paragraph clears inline formatting; a soft break with Shift+Enter retains it.
  • The visual editor's link controls use `Insert link` or `Edit link`; the link form has `Paste link URL...` (`Link URL`), `Text to display` (`Link text`), and `New tab`. `Cancel` shows `Escape to cancel`, and `Save` shows `Enter to save`. The preview offers `Open link in a new tab`. Opening the link form preserves the selected text while entering a URL; saving restores the selection before inserting the link.
  • Markdown preview preserves source-sensitive details such as block quotes, soft breaks, and GFM table alignment. Images keep their natural dimensions and reserve their layout space while loading. Safe embedded base64 raster images using PNG, JPEG, GIF, WEBP, or BMP data URLs render in the visual preview; unsafe or malformed image sources are not rendered.
  • Autosave runs after about `1s` of inactivity.
  • Save also runs on blur and `Cmd+S` / `Ctrl+S`.
  • Header status states: `Saving…`, `Saved`, `Updated remotely`, `Save failed`. The centered header also presents conflict, remote-missing, update-check, save-retry, and document compatibility notices with their available recovery actions; a failed save can expose `Retry saving` there.
  • When no save-status message is showing, the document header path uses dynamic middle truncation and keeps the filename tail visible.
  • Ready editable Markdown documents open in a centered page up to `860px` wide by default. When the document panel is narrower, the page uses the available width without horizontal overflow. On desktop, the document actions menu shows `Full width` while centered layout is active and `Centered` while full width is active.
  • The width choice is one browser-wide Docs preference shared across documents and restored on revisit. Mobile documents stay centered and omit the width action, as do unsupported and other non-editor document states.
  • The visual Markdown layout uses responsive panel padding, preserves heading hierarchy and link focus/hover treatment, and keeps wide tables and code blocks horizontally scrollable without widening the whole document panel. Tables with saved positive column widths use a fixed column layout; otherwise columns size automatically. Column and row resize indicators follow the visible table edges.
  • Docs checks Storage permissions on its tree and document operations. Under enforced Access Group rules, a folder that leads to a shared subtree can be browsed without revealing sibling files; unavailable files cannot be read or saved. An open draft can be retained or downloaded where the editor offers draft recovery if access disappears.
  • Docs tree, viewers, Markdown preview, source editor, code and JSON panels, and diagram previews follow the resolved application palette (`light`, `latte`, `dark`, or `dark-blue`), including loading and error views; a `system` preference resolves to its concrete palette. Browser-native controls use the corresponding light or dark color scheme.
  • Remote updates are checked against the local draft for editable documents. With no conflicting edits, Docs refreshes and briefly shows `Updated remotely`; on a conflict it shows `File changed elsewhere` with `Reload remote` and `Keep my version` actions. The latter overwrites the remote version with the local draft when available. A failed update check shows `Couldn't check for updates` and `Try again`. Remote refreshes preserve the reading position where possible and do not write received content back as a local edit; active user input cancels automatic position restoration.
  • When the open editable file disappears while an unsaved draft is retained, Docs shows `File is no longer available`, makes the draft read-only, and offers `Download draft` (when export is supported) and `Discard draft`. Files without a retained draft can close normally.
  • Save failures show `Couldn't save changes`, retain the draft, and offer `Retry saving`.
  • Text document create, read, and update use the Storage text-edit extension allowlist. The text update endpoint requires an existing file; the text create endpoint requires a new path. DOCX reading and saving use the binary Storage path instead of the text-content endpoints.
  • DOCX reads have a `10 MB` limit; upload and spreadsheet preview also apply `10 MB` limits. This is not a general text-document edit limit.
  • Docs document live refresh listens to `storage_file.updated`, `storage_file.deleted`, `storage_file.renamed`, and `storage_file.moved`.
  • When the currently open file is renamed or moved, Docs remaps the active selection to the new path instead of dropping it.
  • If a rename or move changes which viewer type should be used, Docs switches to the correct viewer for the new path.
  • If a rename or move happens while the document is still loading, Docs reloads the new path. If a save was already in progress, Docs re-queues the save against the remapped path.
  • Spreadsheet and media selections clear on delete. Their selected paths also remap on rename and move.
  • On revisit without an explicit deep link, Docs checks the saved path against its parent folder listing before restoring the selection. It waits for fresh listing data if the Storage query is reset during loading; a confirmed file reopens, a folder stays selected without opening a file viewer, and a missing path follows the missing-path recovery flow.

JSON editing

  • `.json` and `.webmanifest` files open in one lossless CodeMirror source editor with structured JSON presentation rather than separate Tree and Code modes.
  • The editor validates continuously and supports search, syntax highlighting, matching brackets and selections, indentation guides, configurable line numbers and word wrap, and collapsible objects, arrays, and long strings without changing the stored source.
  • The document actions menu can expand or collapse the current block, expand or collapse all blocks, expand to a selected nesting level, set folding arrows to `Off`, `Always visible`, or `On gutter hover`, toggle metadata, toggle long-value truncation, and format valid JSON.
  • The status bar shows cursor line and column, two-space indentation, UTF-8 encoding, byte size, file type, and the current analysis, save, or conflict state. Selecting the status opens a `Problems` panel whose diagnostics can move focus to the reported line and column.
  • Invalid JSON remains editable but cannot be saved or formatted until valid. During a remote conflict, `Keep my version` is also unavailable until the document is valid.
  • Remote updates are reconciled with the local draft. If remote changes conflict with unsaved local edits, Docs reports the conflict and requires the user to choose which version to keep.
  • Leaving an invalid, conflicting, or otherwise unsavable JSON draft opens `Discard unsaved changes?` before the draft can be abandoned.

Header actions

  • Ready editable document menus include `Copy` for the current document contents, `Link` for copying the document link, and `Download`. PDF, media, and spreadsheet menus include `Link` and `Download` but do not expose document-content copying.
  • A ready editable document on desktop also includes the current width toggle, `Centered` or `Full width`, as the final menu item.
  • When a document path is shown in the header, each ancestor folder segment is clickable and reopens Docs at that folder path.
  • The final file segment stays non-clickable.
  • On desktop, the same header area also exposes the chat-panel collapse/expand toggle.
  • On mobile, the document header keeps tree access as `Open file tree`, and panel navigation otherwise happens through the bottom bar.

Chat behavior

  • Users must select an AI teammate before chatting.
  • The picker uses active AI teammates only.
  • The selected teammate is persisted per org and user in local storage.
  • Conversation actions are `History` and `Settings`, plus `New conversation` in the overflow menu once there is an active conversation to reset.
  • When a teammate is selected, the chat header also shows a dedicated `New conversation` button.
  • On mobile, `History` is also a dedicated bottom-tab panel.
  • On desktop, the chat column opens in a `Chats` history view until the user opens a conversation or starts a fresh chat.
  • Desktop and mobile both use the same shared history/chat module and the same organization-level history endpoint as the shared `Chats` surface.
  • Docs history can include the current user's conversations with Ally and AI teammates. It loads `20` rows per page and fetches more when the user reaches the bottom sentinel.
  • The history view shows active-teammate chips, including the current user's personal Ally, for starting a new chat without opening an existing thread.
  • History includes a `Search` field.
  • Entering 3 or more characters automatically searches Ally and AI-teammate internal-chat conversations for the current org user.
  • Search results can match conversation titles or message content, and message matches can show an excerpt with the matched text highlighted.
  • Selecting a history row opens that conversation, switches the selected teammate, and shows the active chat view.
  • Starting a fresh chat from a teammate chip switches to that teammate and explicitly opens a blank conversation.
  • The history screen stays mounted while the chat screen is active, so returning to history keeps the current search/list state.
  • When a stored file or deep-linked file is auto-opened on mobile, Docs switches to the `Doc` panel automatically.
  • Voice mode is available only when the selected teammate has a `tts_model`.
  • Docs uses the shared internal-chat surface with the welcome state suppressed inside the Docs panel.

Storage APIs used by Docs

  • `GET /api/organizations/{orgId}/storage?path=...&with_permissions=false&with_index_status=false` for Docs tree listings
  • `POST /api/organizations/{orgId}/storage/upload`
  • `DELETE /api/organizations/{orgId}/storage/file?path=...`
  • `POST /api/organizations/{orgId}/storage/folder`
  • `POST /api/organizations/{orgId}/storage/folder/rename`
  • `POST /api/organizations/{orgId}/storage/folder/move`
  • `GET /api/organizations/{orgId}/storage/folder/share?path=...`
  • `POST /api/organizations/{orgId}/storage/folder/share`
  • `DELETE /api/organizations/{orgId}/storage/folder/share`
  • `GET /api/organizations/{orgId}/storage/file/content?path=...`
  • `POST /api/organizations/{orgId}/storage/file/content`
  • `PUT /api/organizations/{orgId}/storage/file/content`
  • `GET /api/organizations/{orgId}/internal-chat/conversations?page=...&limit=...`
  • `GET /api/organizations/{orgId}/internal-chat/conversations/search?q=...&limit=...`

Support notes

  • Docs is the primary open-file experience for non-folder Storage items. The implementation still uses the Cowork feature module internally, and legacy `/cowork` URLs redirect to `/docs`.
  • Spreadsheet preview is unavailable in Docs today; spreadsheets are download-only there.
  • Folder sharing in Docs uses the same folder-sharing rules as Storage, including root-share restrictions.

Start building your AI team