Skip to content

Lists: list folders (/api/folders) — a separate domain from document folders #63

Closed

Description

@Adron

Gap

The app implements document folders (/api/documents/folders) but not list folders, which are a distinct resource under /api/folders. Views/ListsView.xaml has no folder tree.

Endpoints

Method Path Notes
GET /api/folders all non-deleted list folders for the caller (live-verified {"folders":[]})
POST /api/folders create — subscribers only
PUT /api/folders/{id} rename or move (reparent)
DELETE /api/folders/{id} soft-delete a folder and its subfolders

Lists reference their folder through ListSummary.folderId.

Acceptance criteria

  • Services/InterlinedApiClient.ListFolders.cs (or a section of .Lists.cs) with all four operations.
  • Folder tree in Views/ListsView.xaml, nesting via parentId.
  • Create / rename / move / delete; delete confirms in place and states that subfolders go too.
  • Lists can be assigned to a folder (folderId).
  • 402/403 on create renders the upgrade-needed state.

Activity

  1. added
    parityWeb/API feature-parity work
    P1Table stakes
    on Sep 15, 2026
  2. Adron commented on Sep 16, 2026

    @Adron
    MemberAuthor

    Implemented in #180 — work continues in the PR from here.

    The server does not guard against cycles. Moving a folder into its own child returns 200 and creates a genuine loop — verified by doing it (then repairing it). So WouldCreateCycle isn't politeness, it's the only thing preventing an infinite tree walk; and the tree build is separately cycle-tolerant, since the data can already contain a loop.

    Also: folderId is not among the eleven fields POST /api/lists accepts, so a list can't be created into a folder — PUT /api/lists/{id} with {folderId} works instead (exposed as SetListFolderAsync). See #179. Additive only; hosting in ListsView is a one-line add once the #161/#163/#164 stack lands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Table stakesarea:listsArea: listsparityWeb/API feature-parity work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions