Repository navigation
Organizations: join and leave #81
Description
Activity
- addedparityClosing a gap against interlinedlist.comClosing a gap against interlinedlist.comP3Niche or minorNiche or minorarea:organizationsOrganizationsOrganizations
on Sep 15, 2026 - added a parent issue
on Sep 15, 2026 Implemented in #109 (branch
issue/81-org-join-leave). Closing here — review and any follow-up happens on the PR.The open question in this issue is answered:
POST /api/user/organizationsis join, not create-under-user. Body is{"organizationId":"<id>"}, returns201 {"message":"Joined organization successfully","membership":{…}}, with 409conflictwhen already a member.There is no dedicated leave endpoint. Leaving is expressed as removing your own membership via
DELETE /api/organizations/{id}/members/{yourUserId}. That works, but it means leave depends onSessionStore.userIdbeing present — worth confirming whether aDELETE /api/user/organizations/{id}exists or is planned, since amembers/meroute would be sturdier.Last-owner behaviour confirmed live: the server returns
400 {"error":"Cannot remove the last owner","code":"bad_request"}. The UI detects the case client-side and explains it without offering a destructive action, falling back to mapping that exact server error to the same explanation.Also fixed along the way:
GET /api/organizations/{id}reports membership asuserRole, neverrole— the existing DTO read onlyrole, so the detail screen's role was always null. AndGET /api/organizations/{id}/membersis members-only (403), so that request is now skipped for non-members rather than surfacing a permission error.Note for #83: the detail overflow still offers Edit/Delete to non-members. Membership is now known, so gating them is a small change — but it is roles/visibility work, so it was left there.
- added a commit that references this issue
on Sep 16, 2026
Part of #80 — Organizations parity gaps
/help/organizationscovers Joining organizations (browse public organizations and join) andLeaving an organization. Android can browse and create but not join or leave.
POST /api/user/organizationsis the likely candidatebut is undocumented in the spec; capture the live request before implementing.
Tests: join/leave round-trips; last-owner guard.
Filed from the parity review of
feature/parity-wip@14d7795against interlinedlist.com (OpenAPI/api/openapi.json, 233 paths) and the public help centre.