Overview
The Members system adds multi-user access to a tenant. Each tenant starts with a single owner (created during provisioning). The owner can invite additional members, assign roles, and control which domains each member can access. Members are separate from contacts. A member is someone who has API access to the tenant — an employee, a contractor, an agent. They authenticate with their own API key and are subject to access policies that limit what they can read or write.Data Model
Entities
| Entity | Description |
|---|---|
| Member | A user within a tenant. Has a name, email, role, and active status. |
| Access Policy | A per-domain permission grant for a member (e.g., “read-only on contacts”). |
| Invitation | A pending invite with a claim code. Once claimed, creates a member + API key. |
Roles
Every member has arole field:
| Role | Description |
|---|---|
owner | Full access. Created during tenant provisioning. Cannot be deactivated. |
admin | Can manage members, invitations, and access policies. |
member | Standard access, subject to access policies. |
Key Concepts
Access policies
Access policies control what a member can do per domain. Each policy has:domain— The target domain:contacts,crm,tasks,calendar,notes, oradminaccess_level— One of:none,read,write,adminresource_filter— Optional JSON filter to restrict access to specific resources (e.g., only certain projects)
PUT /api/v1/members/{id}/access replaces all policies for that member. An admin cannot grant more access than they themselves hold.
Invitations
Instead of creating members directly (which is available but requires you to manage API key distribution), the invitation flow handles onboarding:- Admin creates an invitation with pre-configured access policies
- The system returns a one-time claim code
- The invitee calls
POST /api/v1/invitations/claimwith the code (no auth required) - They receive their member record, API key, and access policies
Member API keys
Each member gets their own API key. The key is linked to the member, so audit logs show which member performed each action. Admins can create additional keys for a member viaPOST /api/v1/members/{id}/keys.
Deactivation
Members are deactivated (soft disabled), not deleted. Deactivating a member setsis_active = false — their API keys stop working immediately. The owner member cannot be deactivated.
