Knowledge baseMembers

Members

A member is a person with an active scheme_membership record for a given scheme. Membership carries a role, a verification status, a financial status, and optional voting suspension — all of which control what a member can see and do.

Roles

RoleWho holds itKey permissions
committee_chairElected chairFull committee rights. Unique per scheme.
committee_secretaryElected secretaryFull committee rights. Unique per scheme. Typically issues meeting notices.
committee_treasurerElected treasurerFull committee rights. Unique per scheme.
committee_memberOther committee membersFull committee rights. Multiple allowed.
ownerNon-committee lot ownersCan raise matters, comment, view documents at owner access level. Cannot update matter status.
tenantTenantsRead-only access at all access level. Cannot raise matters by default.
strata_managerExternal strata managing agentElevated document access (strata_manager level). No committee voting rights.

The chair, secretary, and treasurer roles are unique — only one person per scheme can hold each at a time. The invite and role-change endpoints reject assignments that would create a duplicate. The taken_roles array in the members list response lists which unique roles are already assigned (including pending invitations).

Verification status

Verification tracks how confidently the system knows a member is who they claim to be:

StatusMeaning
pendingMember has joined but has not yet self-declared or been verified.
self_declaredMember has self-declared ownership. Treated as active for notices and voting.
pending_approvalMember registered via the open join link and is awaiting committee approval.
approvedCommittee approved a pending_approval member. Equivalent to self_declared for access purposes.
verifiedIdentity verified against external records (e.g., title search). Highest trust.

Meeting notices are sent to members with status verified or self_declared(and approved). Pending members receive no notices.

Financial status

is_financial tracks whether a member is up-to-date with levy payments. A non-financial member may have their voting rights suspended by the committee.

  • is_financial — bool. Default true. Updated manually by committee or via levy integration.
  • financial_status_sourcemanual or integration. Records how the status was last set.
  • financial_status_updated_at — timestamp of the last update.

Financial status is informational — it does not automatically restrict access in the current release.

Voting suspension

A committee member can suspend a member's voting rights independently of financial status (e.g., pending tribunal proceedings). Suspension requires a reason.

  • voting_suspended — bool. Default false.
  • voting_suspended_reason — free-text reason. Required when suspending.

Voting suspension is surfaced in the member detail view and member list with a red badge. It is the committee's responsibility to enforce this when counting votes.

Invitation workflow

The primary way to add members is via email invitation:

  1. A committee member sends an invitation (POST /api/schemes/:id/invitations) with the invitee's email, name, and intended role.
  2. StrataSphera sends an invitation email with a sign-up link containing a token.
  3. The invitee registers or logs in; the token is redeemed and their membership record is created with verification_status: self_declared.
  4. The invitation record transitions to accepted.

Invitations expire after 7 days. Expired invitations can be resent.

Open join link: Schemes can optionally publish a self-registration link. Members who join via this link get verification_status: pending_approval and must be approved by the committee before they can access the scheme.

Members are unlimited on every plan. Invitations are blocked only when a scheme is past its trial without payment (status expired), in which case writes return HTTP 402 until billing is set up.

Lots and unit entitlement

An owner member may own one or more lots in the scheme. Lot ownership is tracked in thelot_ownerships table with owned_from and owned_to dates, enabling historical tracking when lots change hands.

Each lot has a unit_entitlement (UE) — the fraction of the scheme the lot represents. UE determines the weight of a lot owner's vote in polls and special resolutions.

The member detail response includes a lots array with lot number, type, UE, ownership percentage, and building name.

Onboarding progress

The members list response includes an onboarding_progress object:

  • lots_onboarded — number of lots with an active ownership record
  • total_lots — total lot count from the scheme's total_lots field

This is used to drive the onboarding checklist on the dashboard.

Audit log

All membership changes are recorded in audit_logs: financial status updates, role changes, billing admin grants/revocations, voting suspension, member approval/rejection. Each entry records the actor, old values, new values, and timestamp.