> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 워크스페이스와 멤버

워크스페이스를 전환하고, 조직을 관리하고, 초대를 처리합니다.

## 활성 워크스페이스 해석

GET /api/workspaces는 멤버의 워크스페이스 멤버십과 활성 워크스페이스 id를 반환하고, 워크스페이스 id로 POST하면 전환됩니다. 서버는 선택 쿠키 → 저장된 기본 설정 → 개인 워크스페이스 순서로 컨텍스트를 해석하고 실제 멤버십을 확인하므로, 위조되거나 오래된 선택으로 다른 워크스페이스를 읽을 수 없습니다.


## 조직 관리

GET /api/mobile/organization은 멤버, 대기 중인 초대, 시트 사용량, 호출자의 권한(canManage와 canLeave)을 반환합니다. 개인 워크스페이스는 대신 notOrganization을 응답합니다. POST는 조직을 만들고, PATCH는 이름을 바꾸며(owner만), DELETE는 조직을 제거합니다(owner만, 이름을 입력해 확인).

조직 화면은 설정 → 멤버와 설정 → 일반 아래에 있습니다. 멤버 자신의 표시 이름 편집은 Better Auth 프로필 라우트를 거치며 1~100자를 허용합니다.


## 초대와 수락

POST /api/mobile/invitations은 admin, member, guest 역할의 초대를 이메일로 보냅니다 — owner와 admin만 가능합니다. 타입이 지정된 실패는 alreadyMember, alreadyInvited, seatLimitExceeded, dailySendLimit, invalidInput을 다루므로 인터페이스가 각 거부를 설명할 수 있습니다. 재전송과 철회는 초대 id 라우트에 있으며 재전송에는 속도 제한이 있습니다.

수락은 <scheme>://invite/<token> 딥 링크로 도착합니다. 앱은 토큰을 초대 수락 라우트에 POST하고, 라우트는 워크스페이스 id를 반환하고 해당 워크스페이스를 활성화하며 기본 설정을 서버에 기록합니다. 오류는 expired, emailMismatch, not-pending, seat-limit-exceeded를 다룹니다.


## 역할 변경과 멤버 제거

PATCH /api/mobile/members/:userId는 owner, admin, member, guest 역할을 지정하고, DELETE는 멤버를 제거하며, POST /api/mobile/members/leave는 자발적으로 탈퇴합니다. 유일한 owner는 탈퇴하거나 강등될 수 없고, 멤버는 관리 라우트로 자신을 제거할 수 없으며, 아무것도 바꾸지 않는 역할 변경은 기록되지 않고 거부됩니다.


## 검증 및 문제 해결

시트 제한, 철회된 초대 링크, guest 역할의 축소된 작업, 개인 워크스페이스로의 복귀를 테스트하세요. 제거된 멤버의 캐시된 선택은 다음 요청에서 닫혀서 실패해야 하며 이전 워크스페이스를 계속 읽어서는 안 됩니다.


## 다음

[AI 채팅과 어시스턴트](https://supastack.dev/ko/docs/mobile/chat.md)
