48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
// ============================================================================
|
|
// Workspace Members API
|
|
// ============================================================================
|
|
|
|
import { api } from "./client";
|
|
import type {
|
|
WorkspaceMember,
|
|
UpdatePermissionsRequest,
|
|
PaginatedResponse,
|
|
PaginationParams,
|
|
} from "@/lib/types/api";
|
|
|
|
export const membersApi = {
|
|
/**
|
|
* Get current user's membership and permissions (any member can access)
|
|
*/
|
|
getCurrentMember: (workspaceId: string) =>
|
|
api.get<WorkspaceMember>(
|
|
`/workspaces/${workspaceId}/members/me`
|
|
),
|
|
|
|
/**
|
|
* Get list of workspace members (requires ADMIN_FULL)
|
|
*/
|
|
list: (workspaceId: string, params?: PaginationParams) =>
|
|
api.get<PaginatedResponse<WorkspaceMember>>(
|
|
`/workspaces/${workspaceId}/members`,
|
|
{ params }
|
|
),
|
|
|
|
/**
|
|
* Update member permissions
|
|
* @param workspaceId - workspace id
|
|
* @param workspaceUserId - workspace_user.id (not user.id!)
|
|
* @param data - permissions to update
|
|
*/
|
|
updatePermissions: (
|
|
workspaceId: string,
|
|
workspaceUserId: string,
|
|
data: UpdatePermissionsRequest
|
|
) =>
|
|
api.put<WorkspaceMember>(
|
|
`/workspaces/${workspaceId}/members/${workspaceUserId}/permissions`,
|
|
data
|
|
),
|
|
};
|
|
|