Entities
Lexabit models everything your organisation works with — and everyone who works on it — as an entity. Understanding the entity model makes the rest of the API predictable: most endpoints follow the same shape once you know which entity type you're addressing.
This page is the map. Each core entity then has its own object reference — what it is, its fields, and its lifecycle — linked below.
The substrate and its facades
Under the hood there's one generic entity substrate (the Entity Management layer). It gives every entity a shared identity and the same set of sub-resources: profile, contacts, addresses, media, and invitations.
On top of that substrate sit typed facades — Client, Case, Team, Group, Project. A facade is just the substrate with a specific meaning, its own fields, and its own top-level endpoints. Because they all share the substrate, "add a contact to a client" and "add a contact to a case" are the same call with a different type.
┌─────────── facades (typed entities) ───────────┐
Client Case Team Group Project User Tenant
└────────┴──────┴───────┴───────┘ (actor) (root scope)
│
Entity Management substrate
identity · profile · contacts · addresses · media · invitations
Actors, targets, and the root
Not every entity plays the same role:
- Target entities — Client, Case, Team, Group, Project. The work and organizational things you act on. These carry the shared sub-resources.
- Actor entity — the User. The thing that acts. Users hold roles and permissions; they're managed under Access & Permissions, not Entity Management, and use their own profile mechanism.
- Root entity — the Tenant. The top of the hierarchy that contains everything else. In the public API you don't create or edit a tenant; you select it as a scope.
The entities at a glance
| Entity | What it is | How you address it | Object reference |
|---|---|---|---|
| Tenant | Your organisation's account — root of the hierarchy | As a scope (its scopeId in X-Scope) | The Tenant |
| Client | A client of the organisation (company or person) | /clients/v1 | The Client |
| Case | A legal matter tied to a client | /cases/v1 | The Case |
| Team | A collaboration group with its own roles | /entitymanagement/v1/teams | The Team |
| User | A person with a Lexabit account (the actor) | /users/v1 | The User |
| Group | A general-purpose grouping (a Team is one kind) | /entitymanagement/v1/groups | The Group |
| Project | A unit of work with deadlines and assignments | /entitymanagement/v1/projects | The Project |
How entities relate
A tenant is the top of the hierarchy. Underneath it, users are organized into groups and teams, and work is organized into clients, cases, and projects. Clients and cases are the primary work entities: a case typically belongs to one or more clients, and both carry their own access rules independent of team membership.
This relationship structure is also what access control is built on — which users can see which entities is a function of where those entities sit in the hierarchy and what has been explicitly granted. See Scopes & Workspaces for how requests are scoped to part of this hierarchy, and Permissions for how visibility and actions are resolved once a scope is set.
The shared sub-resources
Because every target entity sits on the same substrate, five sub-resources attach to any of them through one generic path shape:
/entitymanagement/v1/{entityType}/{entityId}/{sub-resource}
{entityType} is one of client, case, team, group; {entityId} is the
entity's id.
| Sub-resource | Path suffix | What it manages |
|---|---|---|
| Profile | /profile | Descriptive profile fields + a /profile/summary view |
| Contacts | /contacts | Emails, phones, and social handles; one can be primary |
| Addresses | /addresses | Postal addresses; one can be primary |
| Media | /media, /avatar, /logo | Uploaded files, avatar and logo images |
| Invitations | /invitations | Invite users to collaborate on the entity |
So "add an email to a client" and "add an email to a case" are the same call
with a different {entityType}:
curl -X POST \
"https://api.lexabit.com/entitymanagement/v1/client/9b1d7c2a-…/contacts" \
-H "Authorization: Bearer $LEXABIT_TOKEN" \
-H "X-Scope: 42" \
-H "Content-Type: application/json" \
-d '{ "contactType": "email", "contactValue": "post@acme.no", "isPrimary": true }'
See also
- Object references: The Tenant · The Client · The Case · The Team · The Group · The Project · The User
- Working with Clients & Cases — the end-to-end workflow
- Scopes & Workspaces · Permissions