Organizations
Work with active organizations, workspaces, and membership data.
useOrganizationList()
useOrganizationList() is the broad organization-management hook built on top of useOrganizationMemberships(). It derives the organization list from the current user’s memberships, then layers the organization-level management actions on top of that list: members, invitations, domains, roles, enterprise connections, SCIM tokens, and organization creation or deletion.
export default function OrganizationPicker() { const { organizations, loading } = useOrganizationList(); if (loading) { return <p>Loading organizations…</p>; } return ( <ul> {organizations?.map((organization) => ( <li key={organization.id}>{organization.name}</li> ))} </ul> );}›organizations: Organization[] | undefined;
organizations: Organization[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].image_url?: string | undefined;
[].image_url?: string | undefined;›[].description?: string | undefined;
[].description?: string | undefined;›[].member_count?: number | undefined;
[].member_count?: number | undefined;›[].enforce_mfa?: boolean | undefined;
[].enforce_mfa?: boolean | undefined;›[].enable_ip_restriction?: boolean | undefined;
[].enable_ip_restriction?: boolean | undefined;›[].whitelisted_ips?: string[] | undefined;
[].whitelisted_ips?: string[] | undefined;›[].auto_assigned_workspace_id?: string | undefined;
[].auto_assigned_workspace_id?: string | undefined;›loading: boolean;
loading: boolean;›error: null;
error: null;›refetch: () => Promise<void>;
refetch: () => Promise<void>;›createOrganization: (organization: NewOrgnization) => Promise<ApiResult<{ organization: Organization; membership: OrganizationMembership }>>;
createOrganization: (organization: NewOrgnization) => Promise<ApiResult<{ organization: Organization; membership: OrganizationMembership }>>;›organization.name?: string | undefined;
organization.name?: string | undefined;›organization.description?: string | undefined | undefined;
organization.description?: string | undefined | undefined;›organization.image?: File | undefined | undefined;
organization.image?: File | undefined | undefined;›updateOrganization: (organization: Organization, update: OrganizationUpdate) => Promise<ApiResult<Organization>>;
updateOrganization: (organization: Organization, update: OrganizationUpdate) => Promise<ApiResult<Organization>>;›deleteOrganization: (organization: Organization) => Promise<void>;
deleteOrganization: (organization: Organization) => Promise<void>;›leaveOrganization: (organization: Organization) => Promise<void>;
leaveOrganization: (organization: Organization) => Promise<void>;›getOrganizationMembers: (organization: Organization, params?: { page: number; limit: number; search?: string }) => Promise<PaginatedResponse<OrganizationMembership[]>>;
getOrganizationMembers: (organization: Organization, params?: { page: number; limit: number; search?: string }) => Promise<PaginatedResponse<OrganizationMembership[]>>;›removeOrganizationMember: (organization: Organization, member: OrganizationMembership) => Promise<void>;
removeOrganizationMember: (organization: Organization, member: OrganizationMembership) => Promise<void>;›getOrganizationRoles: (organization: Organization) => Promise<OrganizationRole[]>;
getOrganizationRoles: (organization: Organization) => Promise<OrganizationRole[]>;›addRole: (organization: Organization, newRole: RoleCreate) => Promise<ApiResult<OrganizationRole>>;
addRole: (organization: Organization, newRole: RoleCreate) => Promise<ApiResult<OrganizationRole>>;›removeOrganizationRoles: (organization: Organization, role: OrganizationRole) => Promise<void>;
removeOrganizationRoles: (organization: Organization, role: OrganizationRole) => Promise<void>;›addRoleToOrganizationMember: (organization: Organization, member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership>;
addRoleToOrganizationMember: (organization: Organization, member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership>;›removeRoleFromOrganizationMember: (organization: Organization, member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership>;
removeRoleFromOrganizationMember: (organization: Organization, member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership>;›getOrganizationInvitations: (organization: Organization) => Promise<OrganizationInvitation[]>;
getOrganizationInvitations: (organization: Organization) => Promise<OrganizationInvitation[]>;›inviteOrganizationMember: (organization: Organization, invitation: OrganizationInvitationPayload) => Promise<OrganizationInvitation>;
inviteOrganizationMember: (organization: Organization, invitation: OrganizationInvitationPayload) => Promise<OrganizationInvitation>;›discardOrganizationInvitation: (organization: Organization, invitation: OrganizationInvitation) => Promise<OrganizationInvitation>;
discardOrganizationInvitation: (organization: Organization, invitation: OrganizationInvitation) => Promise<OrganizationInvitation>;›resendOrganizationInvitation: (organization: Organization, invitation: OrganizationInvitation) => Promise<OrganizationInvitation>;
resendOrganizationInvitation: (organization: Organization, invitation: OrganizationInvitation) => Promise<OrganizationInvitation>;›getOrganizationDomains: (organization: Organization) => Promise<OrganizationDomain[]>;
getOrganizationDomains: (organization: Organization) => Promise<OrganizationDomain[]>;›addOrganizationDomain: (organization: Organization, domain: NewDomain) => Promise<ApiResult<OrganizationDomain>>;
addOrganizationDomain: (organization: Organization, domain: NewDomain) => Promise<ApiResult<OrganizationDomain>>;›verifyOrganizationDomain: (organization: Organization, domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain>>;
verifyOrganizationDomain: (organization: Organization, domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain>>;›removeOrganizationDomain: (organization: Organization, domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain>>;
removeOrganizationDomain: (organization: Organization, domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain>>;›getEnterpriseConnections: (organization: Organization) => Promise<EnterpriseConnection[]>;
getEnterpriseConnections: (organization: Organization) => Promise<EnterpriseConnection[]>;›createEnterpriseConnection: (organization: Organization, payload: CreateEnterpriseConnectionPayload) => Promise<EnterpriseConnection>;
createEnterpriseConnection: (organization: Organization, payload: CreateEnterpriseConnectionPayload) => Promise<EnterpriseConnection>;›updateEnterpriseConnection: (organization: Organization, connectionId: string, payload: UpdateEnterpriseConnectionPayload) => Promise<EnterpriseConnection>;
updateEnterpriseConnection: (organization: Organization, connectionId: string, payload: UpdateEnterpriseConnectionPayload) => Promise<EnterpriseConnection>;›deleteEnterpriseConnection: (organization: Organization, connectionId: string) => Promise<void>;
deleteEnterpriseConnection: (organization: Organization, connectionId: string) => Promise<void>;›testEnterpriseConnectionConfig: (organization: Organization, payload: { protocol: 'saml' | 'oidc'; idp_entity_id?: string; idp_sso_url?: string; idp_certificate?: string; oidc_issuer_url?: string; oidc_client_id?: string; oidc_client_secret?: string }) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> }>;
testEnterpriseConnectionConfig: (organization: Organization, payload: { protocol: 'saml' | 'oidc'; idp_entity_id?: string; idp_sso_url?: string; idp_certificate?: string; oidc_issuer_url?: string; oidc_client_id?: string; oidc_client_secret?: string }) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> }>;›testEnterpriseConnection: (organization: Organization, connectionId: string) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> }>;
testEnterpriseConnection: (organization: Organization, connectionId: string) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> }>;›generateSCIMToken: (organization: Organization, connectionId: string) => Promise<SCIMTokenInfo>;
generateSCIMToken: (organization: Organization, connectionId: string) => Promise<SCIMTokenInfo>;›getSCIMToken: (organization: Organization, connectionId: string) => Promise<SCIMTokenInfo>;
getSCIMToken: (organization: Organization, connectionId: string) => Promise<SCIMTokenInfo>;›revokeSCIMToken: (organization: Organization, connectionId: string) => Promise<void>;
revokeSCIMToken: (organization: Organization, connectionId: string) => Promise<void>;useActiveOrganization()
useActiveOrganization() is the active-scope wrapper over useOrganizationList(). It resolves the current active organization and active organization membership from the session, then rebinds the organization-level management methods so they operate on that active organization automatically.
export default function ActiveOrgHeader() { const { activeOrganization, loading } = useActiveOrganization(); if (loading) { return <p>Loading organization…</p>; } return <p>{activeOrganization?.name ?? 'No active organization'}</p>;}›activeOrganization: Organization | null;
activeOrganization: Organization | null;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›image_url?: string | undefined;
image_url?: string | undefined;›description?: string | undefined;
description?: string | undefined;›member_count?: number | undefined;
member_count?: number | undefined;›enforce_mfa?: boolean | undefined;
enforce_mfa?: boolean | undefined;›activeMembership: OrganizationMembershipWithOrganization | null;
activeMembership: OrganizationMembershipWithOrganization | null;›id?: string | undefined;
id?: string | undefined;›organization?: Organization | undefined;
organization?: Organization | undefined;›roles?: OrganizationRole[] | undefined;
roles?: OrganizationRole[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].permissions?: string[] | undefined;
[].permissions?: string[] | undefined;›eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;
eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;›loading: boolean;
loading: boolean;›error: Error | null;
error: Error | null;›refetch?: () => Promise<void> | undefined;
refetch?: () => Promise<void> | undefined;›getRoles?: () => Promise<OrganizationRole[]> | undefined;
getRoles?: () => Promise<OrganizationRole[]> | undefined;›getMembers?: () => Promise<PaginatedResponse<OrganizationMembership[]> | []> | undefined;
getMembers?: () => Promise<PaginatedResponse<OrganizationMembership[]> | []> | undefined;›updateOrganization?: (update: OrganizationUpdate) => Promise<ApiResult<Organization> | []> | undefined;
updateOrganization?: (update: OrganizationUpdate) => Promise<ApiResult<Organization> | []> | undefined;›getDomains?: () => Promise<OrganizationDomain[] | []> | undefined;
getDomains?: () => Promise<OrganizationDomain[] | []> | undefined;›addDomain?: (domain: NewDomain) => Promise<ApiResult<OrganizationDomain> | undefined> | undefined;
addDomain?: (domain: NewDomain) => Promise<ApiResult<OrganizationDomain> | undefined> | undefined;›verifyDomain?: (domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain> | undefined> | undefined;
verifyDomain?: (domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain> | undefined> | undefined;›removeDomain?: (domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain> | undefined> | undefined;
removeDomain?: (domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain> | undefined> | undefined;›getInvitations?: () => Promise<OrganizationInvitation[] | []> | undefined;
getInvitations?: () => Promise<OrganizationInvitation[] | []> | undefined;›removeMember?: (member: OrganizationMembership) => Promise<void | []> | undefined;
removeMember?: (member: OrganizationMembership) => Promise<void | []> | undefined;›addMemberRole?: (member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership | undefined> | undefined;
addMemberRole?: (member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership | undefined> | undefined;›removeMemberRole?: (member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership | undefined> | undefined;
removeMemberRole?: (member: OrganizationMembership, role: OrganizationRole) => Promise<OrganizationMembership | undefined> | undefined;›inviteMember?: (invitationPayload: OrganizationInvitationPayload) => Promise<OrganizationInvitation | undefined> | undefined;
inviteMember?: (invitationPayload: OrganizationInvitationPayload) => Promise<OrganizationInvitation | undefined> | undefined;›discardInvitation?: (invitation: OrganizationInvitation) => Promise<OrganizationInvitation | undefined> | undefined;
discardInvitation?: (invitation: OrganizationInvitation) => Promise<OrganizationInvitation | undefined> | undefined;›resendInvitation?: (invitation: OrganizationInvitation) => Promise<OrganizationInvitation | undefined> | undefined;
resendInvitation?: (invitation: OrganizationInvitation) => Promise<OrganizationInvitation | undefined> | undefined;›leave?: () => Promise<void | undefined> | undefined;
leave?: () => Promise<void | undefined> | undefined;›removeRole?: (role: OrganizationRole) => Promise<void | undefined> | undefined;
removeRole?: (role: OrganizationRole) => Promise<void | undefined> | undefined;›getEnterpriseConnections?: () => Promise<EnterpriseConnection[] | []> | undefined;
getEnterpriseConnections?: () => Promise<EnterpriseConnection[] | []> | undefined;›createEnterpriseConnection?: (payload: CreateEnterpriseConnectionPayload) => Promise<EnterpriseConnection | undefined> | undefined;
createEnterpriseConnection?: (payload: CreateEnterpriseConnectionPayload) => Promise<EnterpriseConnection | undefined> | undefined;›updateEnterpriseConnection?: (connectionId: string, payload: UpdateEnterpriseConnectionPayload) => Promise<EnterpriseConnection | undefined> | undefined;
updateEnterpriseConnection?: (connectionId: string, payload: UpdateEnterpriseConnectionPayload) => Promise<EnterpriseConnection | undefined> | undefined;›deleteEnterpriseConnection?: (connectionId: string) => Promise<void | undefined> | undefined;
deleteEnterpriseConnection?: (connectionId: string) => Promise<void | undefined> | undefined;›testEnterpriseConnectionConfig?: (payload: { protocol: 'saml' | 'oidc'; idp_entity_id?: string; idp_sso_url?: string; idp_certificate?: string; oidc_issuer_url?: string; oidc_client_id?: string; oidc_client_secret?: string }) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> } | null> | undefined;
testEnterpriseConnectionConfig?: (payload: { protocol: 'saml' | 'oidc'; idp_entity_id?: string; idp_sso_url?: string; idp_certificate?: string; oidc_issuer_url?: string; oidc_client_id?: string; oidc_client_secret?: string }) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> } | null> | undefined;›testEnterpriseConnection?: (connectionId: string) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> } | null> | undefined;
testEnterpriseConnection?: (connectionId: string) => Promise<{ success: boolean; protocol: string; checks: Record<string, boolean>; errors?: Record<string, string> } | null> | undefined;›generateSCIMToken?: (connectionId: string) => Promise<SCIMTokenInfo | undefined> | undefined;
generateSCIMToken?: (connectionId: string) => Promise<SCIMTokenInfo | undefined> | undefined;›getSCIMToken?: (connectionId: string) => Promise<SCIMTokenInfo | undefined> | undefined;
getSCIMToken?: (connectionId: string) => Promise<SCIMTokenInfo | undefined> | undefined;›revokeSCIMToken?: (connectionId: string) => Promise<void | undefined> | undefined;
revokeSCIMToken?: (connectionId: string) => Promise<void | undefined> | undefined;useActiveTenancy()
useActiveTenancy() resolves the current active organization membership and workspace membership from the active sign-in in the session. It is the broadest “where am I scoped right now?” hook in the multi-tenancy layer.
export default function ActiveTenancySummary() { const { loading, orgMembership, workspaceMembership } = useActiveTenancy(); if (loading) { return <p>Loading tenancy…</p>; } return ( <div> <p>Organization: {orgMembership?.organization.name ?? 'None'}</p> <p>Workspace: {workspaceMembership?.workspace.name ?? 'None'}</p> </div> );}›loading: boolean;
loading: boolean;›orgMembership: OrganizationMembership | null;
orgMembership: OrganizationMembership | null;›id?: string | undefined;
id?: string | undefined;›organization?: Organization | undefined;
organization?: Organization | undefined;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›image_url?: string | undefined;
image_url?: string | undefined;›description?: string | undefined;
description?: string | undefined;›member_count?: number | undefined;
member_count?: number | undefined;›enforce_mfa?: boolean | undefined;
enforce_mfa?: boolean | undefined;›enable_ip_restriction?: boolean | undefined;
enable_ip_restriction?: boolean | undefined;›user?: PublicUserData | undefined;
user?: PublicUserData | undefined;›id?: string | undefined;
id?: string | undefined;›first_name?: string | undefined;
first_name?: string | undefined;›last_name?: string | undefined;
last_name?: string | undefined;›username?: string | undefined;
username?: string | undefined;›roles?: OrganizationRole[] | undefined;
roles?: OrganizationRole[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].permissions?: string[] | undefined;
[].permissions?: string[] | undefined;›public_metadata?: Record<string, unknown> | undefined;
public_metadata?: Record<string, unknown> | undefined;›created_at?: string | undefined;
created_at?: string | undefined;›updated_at?: string | undefined;
updated_at?: string | undefined;›workspaceMembership: WorkspaceMembership | null;
workspaceMembership: WorkspaceMembership | null;›id?: string | undefined;
id?: string | undefined;›workspace?: Workspace | undefined;
workspace?: Workspace | undefined;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›image_url?: string | undefined;
image_url?: string | undefined;›description?: string | undefined;
description?: string | undefined;›member_count?: number | undefined;
member_count?: number | undefined;›enforce_2fa?: boolean | undefined;
enforce_2fa?: boolean | undefined;›enable_ip_restriction?: boolean | undefined;
enable_ip_restriction?: boolean | undefined;›organization?: Organization | undefined;
organization?: Organization | undefined;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›roles?: WorkspaceRole[] | undefined;
roles?: WorkspaceRole[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].permissions?: string[] | undefined;
[].permissions?: string[] | undefined;›eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;
eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;›type?: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required" | undefined;
type?: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required" | undefined;›message?: string | undefined;
message?: string | undefined;useWorkspaceList()
useWorkspaceList() is the broad workspace-management hook built on top of useWorkspaceMemberships(). It derives the workspace list from the current user’s workspace memberships, then layers workspace-level management actions on top of that list: members, roles, invitations, updates, and deletion.
export default function WorkspacePicker() { const { workspaces, loading } = useWorkspaceList(); if (loading) { return <p>Loading workspaces…</p>; } return ( <ul> {workspaces.map((workspace) => ( <li key={workspace.id}>{workspace.name}</li> ))} </ul> );}›workspaces: WorkspaceWithOrganization[];
workspaces: WorkspaceWithOrganization[];›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].image_url?: string | undefined;
[].image_url?: string | undefined;›[].description?: string | undefined;
[].description?: string | undefined;›[].member_count?: number | undefined;
[].member_count?: number | undefined;›[].enforce_2fa?: boolean | undefined;
[].enforce_2fa?: boolean | undefined;›[].enable_ip_restriction?: boolean | undefined;
[].enable_ip_restriction?: boolean | undefined;›[].organization?: Organization | undefined;
[].organization?: Organization | undefined;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›[].eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;
[].eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;›loading: boolean;
loading: boolean;›error: Error | null;
error: Error | null;›refetch: () => Promise<void>;
refetch: () => Promise<void>;›createWorkspace: (organizationId: string, name: string, image?: File, description?: string) => Promise<{ workspace: Workspace; membership: WorkspaceMembership }>;
createWorkspace: (organizationId: string, name: string, image?: File, description?: string) => Promise<{ workspace: Workspace; membership: WorkspaceMembership }>;›updateWorkspace: (workspace: Workspace, data: { name?: string; description?: string; image?: File; enforce_2fa?: boolean; enable_ip_restriction?: boolean; whitelisted_ips?: string[] }) => Promise<unknown>;
updateWorkspace: (workspace: Workspace, data: { name?: string; description?: string; image?: File; enforce_2fa?: boolean; enable_ip_restriction?: boolean; whitelisted_ips?: string[] }) => Promise<unknown>;›deleteWorkspace: (workspace: Workspace) => Promise<unknown>;
deleteWorkspace: (workspace: Workspace) => Promise<unknown>;›leaveWorkspace: (id: string, userId: string) => Promise<void>;
leaveWorkspace: (id: string, userId: string) => Promise<void>;›getWorkspaceMembers: (workspace: Workspace, params?: { page: number; limit: number; search?: string }) => Promise<PaginatedResponse<WorkspaceMembership[]>>;
getWorkspaceMembers: (workspace: Workspace, params?: { page: number; limit: number; search?: string }) => Promise<PaginatedResponse<WorkspaceMembership[]>>;›removeWorkspaceMember: (workspace: Workspace, memberId: string) => Promise<unknown>;
removeWorkspaceMember: (workspace: Workspace, memberId: string) => Promise<unknown>;›getWorkspaceRoles: (workspace: Workspace) => Promise<WorkspaceRole[]>;
getWorkspaceRoles: (workspace: Workspace) => Promise<WorkspaceRole[]>;›createWorkspaceRole: (workspace: Workspace, name: string, permissions: string[]) => Promise<WorkspaceRole>;
createWorkspaceRole: (workspace: Workspace, name: string, permissions: string[]) => Promise<WorkspaceRole>;›deleteWorkspaceRole: (workspace: Workspace, role: WorkspaceRole) => Promise<unknown>;
deleteWorkspaceRole: (workspace: Workspace, role: WorkspaceRole) => Promise<unknown>;›addWorkspaceMemberRole: (workspace: Workspace, membershipId: string, roleId: string) => Promise<unknown>;
addWorkspaceMemberRole: (workspace: Workspace, membershipId: string, roleId: string) => Promise<unknown>;›removeWorkspaceMemberRole: (workspace: Workspace, membershipId: string, roleId: string) => Promise<unknown>;
removeWorkspaceMemberRole: (workspace: Workspace, membershipId: string, roleId: string) => Promise<unknown>;›getWorkspaceInvitations: (workspace: WorkspaceWithOrganization) => Promise<any[]>;
getWorkspaceInvitations: (workspace: WorkspaceWithOrganization) => Promise<any[]>;›createWorkspaceInvitation: (workspace: WorkspaceWithOrganization, email: string, workspaceRoleId?: string) => Promise<unknown>;
createWorkspaceInvitation: (workspace: WorkspaceWithOrganization, email: string, workspaceRoleId?: string) => Promise<unknown>;›discardWorkspaceInvitation: (workspace: WorkspaceWithOrganization, invitationId: string) => Promise<unknown>;
discardWorkspaceInvitation: (workspace: WorkspaceWithOrganization, invitationId: string) => Promise<unknown>;›resendWorkspaceInvitation: (workspace: WorkspaceWithOrganization, invitationId: string) => Promise<unknown>;
resendWorkspaceInvitation: (workspace: WorkspaceWithOrganization, invitationId: string) => Promise<unknown>;useActiveWorkspace()
useActiveWorkspace() is the active-scope wrapper over useWorkspaceList(). It resolves the current active workspace and active workspace membership from the session, then rebinds the workspace-level management methods so they operate on that active workspace automatically.
export default function ActiveWorkspaceHeader() { const { activeWorkspace, loading } = useActiveWorkspace(); if (loading) { return <p>Loading workspace…</p>; } return <p>{activeWorkspace?.name ?? 'No active workspace'}</p>;}›activeWorkspace: Workspace | null;
activeWorkspace: Workspace | null;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›image_url?: string | undefined;
image_url?: string | undefined;›description?: string | undefined;
description?: string | undefined;›member_count?: number | undefined;
member_count?: number | undefined;›enforce_2fa?: boolean | undefined;
enforce_2fa?: boolean | undefined;›enable_ip_restriction?: boolean | undefined;
enable_ip_restriction?: boolean | undefined;›activeMembership: WorkspaceMembership | null;
activeMembership: WorkspaceMembership | null;›id?: string | undefined;
id?: string | undefined;›workspace?: Workspace | undefined;
workspace?: Workspace | undefined;›organization?: Organization | undefined;
organization?: Organization | undefined;›roles?: WorkspaceRole[] | undefined;
roles?: WorkspaceRole[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].permissions?: string[] | undefined;
[].permissions?: string[] | undefined;›eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;
eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;›loading: boolean;
loading: boolean;›error: Error | null;
error: Error | null;›refetch: () => Promise<void>;
refetch: () => Promise<void>;›leave?: () => Promise<void | undefined> | undefined;
leave?: () => Promise<void | undefined> | undefined;›updateWorkspace?: (data: { name?: string; description?: string; image?: File; enforce_2fa?: boolean; enable_ip_restriction?: boolean; whitelisted_ips?: string[] }) => Promise<unknown> | undefined;
updateWorkspace?: (data: { name?: string; description?: string; image?: File; enforce_2fa?: boolean; enable_ip_restriction?: boolean; whitelisted_ips?: string[] }) => Promise<unknown> | undefined;›deleteWorkspace?: () => Promise<unknown> | undefined;
deleteWorkspace?: () => Promise<unknown> | undefined;›getMembers?: (params?: { page: number; limit: number; search?: string }) => Promise<PaginatedResponse<WorkspaceMembership[]> | { data: []; meta: { total: number; page: number; limit: number } }> | undefined;
getMembers?: (params?: { page: number; limit: number; search?: string }) => Promise<PaginatedResponse<WorkspaceMembership[]> | { data: []; meta: { total: number; page: number; limit: number } }> | undefined;›getRoles?: () => Promise<WorkspaceRole[]> | undefined;
getRoles?: () => Promise<WorkspaceRole[]> | undefined;›createRole?: (name: string, permissions: string[]) => Promise<WorkspaceRole | undefined> | undefined;
createRole?: (name: string, permissions: string[]) => Promise<WorkspaceRole | undefined> | undefined;›deleteRole?: (role: WorkspaceRole) => Promise<unknown> | undefined;
deleteRole?: (role: WorkspaceRole) => Promise<unknown> | undefined;›removeMember?: (memberId: string) => Promise<unknown> | undefined;
removeMember?: (memberId: string) => Promise<unknown> | undefined;›addMemberRole?: (membershipId: string, roleId: string) => Promise<unknown> | undefined;
addMemberRole?: (membershipId: string, roleId: string) => Promise<unknown> | undefined;›removeMemberRole?: (membershipId: string, roleId: string) => Promise<unknown> | undefined;
removeMemberRole?: (membershipId: string, roleId: string) => Promise<unknown> | undefined;›getInvitations?: () => Promise<any[]> | undefined;
getInvitations?: () => Promise<any[]> | undefined;›inviteMember?: (params: { email: string; workspaceRoleId?: string }) => Promise<unknown> | undefined;
inviteMember?: (params: { email: string; workspaceRoleId?: string }) => Promise<unknown> | undefined;›discardInvitation?: (invitationId: string) => Promise<unknown> | undefined;
discardInvitation?: (invitationId: string) => Promise<unknown> | undefined;›resendInvitation?: (invitationId: string) => Promise<unknown> | undefined;
resendInvitation?: (invitationId: string) => Promise<unknown> | undefined;useOrganizationMemberships()
useOrganizationMemberships() is the raw organization-membership query that higher-level organization hooks build on top of. It loads the current user’s organization memberships with SWR and exposes the membership rows together with a manual refetch path.
export default function MembershipList() { const { organizationMemberships, loading } = useOrganizationMemberships(); if (loading) { return <p>Loading memberships…</p>; } return ( <ul> {organizationMemberships?.map((membership) => ( <li key={membership.id}>{membership.organization.name}</li> ))} </ul> );}›organizationMemberships: OrganizationMembershipWithOrganization[] | undefined;
organizationMemberships: OrganizationMembershipWithOrganization[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].organization?: Organization | undefined;
[].organization?: Organization | undefined;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›image_url?: string | undefined;
image_url?: string | undefined;›description?: string | undefined;
description?: string | undefined;›member_count?: number | undefined;
member_count?: number | undefined;›[].user_id?: string | undefined;
[].user_id?: string | undefined;›[].roles?: OrganizationRole[] | undefined;
[].roles?: OrganizationRole[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].permissions?: string[] | undefined;
[].permissions?: string[] | undefined;›[].public_metadata?: Record<string, unknown> | undefined;
[].public_metadata?: Record<string, unknown> | undefined;›[].created_at?: string | undefined;
[].created_at?: string | undefined;›[].updated_at?: string | undefined;
[].updated_at?: string | undefined;›[].eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;
[].eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;›type?: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required" | undefined;
type?: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required" | undefined;›message?: string | undefined;
message?: string | undefined;›loading: boolean;
loading: boolean;›error: Error | undefined;
error: Error | undefined;›refetch: () => Promise<void>;
refetch: () => Promise<void>;useWorkspaceMemberships()
useWorkspaceMemberships() is the raw workspace-membership query that higher-level workspace hooks build on top of. It loads the current user’s workspace memberships with SWR and exposes the membership rows together with a manual refetch path.
export default function WorkspaceMembershipList() { const { workspaceMemberships, loading } = useWorkspaceMemberships(); if (loading) { return <p>Loading memberships…</p>; } return ( <ul> {workspaceMemberships?.map((membership) => ( <li key={membership.id}>{membership.workspace.name}</li> ))} </ul> );}›workspaceMemberships: WorkspaceMembership[] | undefined;
workspaceMemberships: WorkspaceMembership[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].workspace?: Workspace | undefined;
[].workspace?: Workspace | undefined;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›image_url?: string | undefined;
image_url?: string | undefined;›description?: string | undefined;
description?: string | undefined;›member_count?: number | undefined;
member_count?: number | undefined;›enforce_2fa?: boolean | undefined;
enforce_2fa?: boolean | undefined;›enable_ip_restriction?: boolean | undefined;
enable_ip_restriction?: boolean | undefined;›[].organization_id?: string | undefined;
[].organization_id?: string | undefined;›[].user_id?: string | undefined;
[].user_id?: string | undefined;›[].organization?: Organization | undefined;
[].organization?: Organization | undefined;›id?: string | undefined;
id?: string | undefined;›name?: string | undefined;
name?: string | undefined;›[].roles?: WorkspaceRole[] | undefined;
[].roles?: WorkspaceRole[] | undefined;›[].id?: string | undefined;
[].id?: string | undefined;›[].name?: string | undefined;
[].name?: string | undefined;›[].permissions?: string[] | undefined;
[].permissions?: string[] | undefined;›[].public_metadata?: Record<string, unknown> | undefined;
[].public_metadata?: Record<string, unknown> | undefined;›[].created_at?: string | undefined;
[].created_at?: string | undefined;›[].updated_at?: string | undefined;
[].updated_at?: string | undefined;›[].eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;
[].eligibility_restriction?: { type: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required"; message: string } | undefined | undefined;›type?: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required" | undefined;
type?: "none" | "ip_not_allowed" | "mfa_required" | "ip_and_mfa_required" | undefined;›message?: string | undefined;
message?: string | undefined;›loading: boolean;
loading: boolean;›error: Error | undefined;
error: Error | undefined;›refetch: () => Promise<void>;
refetch: () => Promise<void>;