useOrganizationList()
In B2B applications, a single user profile often belongs to multiple distinct tenants (organizations). The useOrganizationList() hook provides a straightforward, paginated interface to fetch, list, and interact with every organization the current user has access to.
It exposes the exact primitives required to build a bespoke <OrganizationSwitcher /> dropdown or an “Accept Invitations” dashboard page.
Import
import { useOrganizationList } from "@wacht/react-router" ;
Anatomy
Boolean indicating network boundary readiness.
List of actual Wacht Organization objects the user is a member of.
Any error encountered during fetching.
Manually triggers a re-fetch of the organization list from the server.
Show Organization functions
createOrganization
(payload: NewOrganization) => Promise<ApiResult<unknown>>
Creates a new organization.
updateOrganization
(org: Organization, payload: OrganizationUpdate) => Promise<ApiResult<Organization>>
Updates basic properties of a specific organization.
deleteOrganization
(org: Organization) => Promise<ApiResult<void>>
Deletes an organization completely.
leaveOrganization
(org: Organization) => Promise<ApiResult<void>>
Leaves a specific organization.
getOrganizationMembers
(org: Organization, params?: { page: number; limit: number; search?: string }) => Promise<ApiResult<PaginatedResponse<OrganizationMembership[]>>>
Fetches paginated list of members for an organization.
removeOrganizationMember
(org: Organization, member: OrganizationMembership) => Promise<void>
Removes a member from the organization.
getOrganizationRoles
(org: Organization) => Promise<ApiResult<OrganizationRole[]>>
Retrieves all roles available in the organization.
addRole
(org: Organization, role: RoleCreate) => Promise<ApiResult<OrganizationRole>>
Creates a new custom role in the organization.
removeOrganizationRoles
(org: Organization, role: OrganizationRole) => Promise<void>
Deletes a role from the organization.
addRoleToOrganizationMember
(org: Organization, member: OrganizationMembership, role: OrganizationRole) => Promise<ApiResult<OrganizationMembership>>
Assigns a role to a specific member.
removeRoleFromOrganizationMember
(org: Organization, member: OrganizationMembership, role: OrganizationRole) => Promise<ApiResult<OrganizationMembership>>
Removes a role from a specific member.
Show Invitation functions
getOrganizationInvitations
(org: Organization) => Promise<ApiResult<OrganizationInvitation[]>>
Fetches pending invitations for an organization.
inviteOrganizationMember
(org: Organization, payload: OrganizationInvitationPayload) => Promise<ApiResult<OrganizationInvitation>>
Invites a new member to the organization via email.
resendOrganizationInvitation
(org: Organization, invitation: OrganizationInvitation) => Promise<ApiResult<OrganizationInvitation>>
Resends an outstanding invitation email.
discardOrganizationInvitation
(org: Organization, invitation: OrganizationInvitation) => Promise<ApiResult<OrganizationInvitation>>
Revokes a pending invitation.
getOrganizationDomains
(org: Organization) => Promise<ApiResult<OrganizationDomain[]>>
Retrieves domains linked to the organization.
addOrganizationDomain
(org: Organization, domain: NewDomain) => Promise<ApiResult<OrganizationDomain>>
Adds a new custom domain for organizational identity.
verifyOrganizationDomain
(org: Organization, domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain>>
Triggers DNS verification for an added domain.
removeOrganizationDomain
(org: Organization, domain: OrganizationDomain) => Promise<ApiResult<OrganizationDomain>>
Removes a custom domain.
Enterprise Connections (SSO)
getEnterpriseConnections
(org: Organization) => Promise<ApiResult<EnterpriseConnection[]>>
Lists active SAML/OIDC enterprise connections.
createEnterpriseConnection
(org: Organization, payload: CreateEnterpriseConnectionPayload) => Promise<ApiResult<EnterpriseConnection>>
Establishes a new enterprise SSO connection.
updateEnterpriseConnection
(org: Organization, connectionId: string, payload: UpdateEnterpriseConnectionPayload) => Promise<ApiResult<EnterpriseConnection>>
Updates enterprise SSO settings.
testEnterpriseConnectionConfig
(org: Organization, payload: TestPayload) => Promise<ApiResult<TestResult>>
Tests SSO capabilities of a provided configuration.
testEnterpriseConnection
(org: Organization, connectionId: string) => Promise<ApiResult<TestResult>>
Tests an existing enterprise connection.
deleteEnterpriseConnection
(org: Organization, connectionId: string) => Promise<void>
Removes an enterprise connection.
getSCIMToken
(org: Organization, connectionId: string) => Promise<ApiResult<SCIMTokenInfo>>
Retrieves the active SCIM provisioning token information.
generateSCIMToken
(org: Organization, connectionId: string) => Promise<ApiResult<SCIMTokenInfo>>
Generates a new SCIM provisioning token.
revokeSCIMToken
(org: Organization, connectionId: string) => Promise<void>
Revokes the SCIM provisioning token instantly.
Usage: Building an Invites Page
One of the most powerful uses of this hook is constructing an interface to let users view and accept their pending invitations to join other teams.
import { useOrganizationList } from "@wacht/react-router" ;
export function UserOrganizations () {
const { loading , organizations } = useOrganizationList ();
if ( loading ) return < div > Loading organizations... </ div > ;
if ( ! organizations || organizations . length === 0 ) {
return < p > You have no active organizations. </ p > ;
}
return (
< ul className = "divide-y divide-zinc-200" >
{ organizations . map (( org ) => (
< li key = { org . id } className = "py-4 flex items-center justify-between" >
< p className = "font-medium text-zinc-900" >
{ org . name }
</ p >
</ li >
)) }
</ ul >
);
}
Interacting With Organizations
The hook provides numerous functions to manipulate organizations if the user holds required permissions, such as:
createOrganization(payload)
updateOrganization(org, payload)
leaveOrganization(org)
getOrganizationMembers(org)