Data access
Choose what each member reaches, and give or take back access to schemas, tables and connections.
Data access decides what each person can see and change in . Each member reaches everything, or only what you give them.
Owners and admins (see ) always reach everything, and cannot be limited.
Before you start
- Only owners and admins can change access.
- Folders are shared from the folder itself, with Who can see this. See Object storage.
The access levels
Tick the levels a person needs.
| Level in the app | In code | What it allows |
|---|---|---|
| Know it exists | exists | See its name in lists |
| See its columns | structure | See column names and types |
| Read its data | read | Read rows and query them |
| Change its data | write | Add, change and delete rows |
| Change its structure | change_structure | Add, rename and remove columns, make and delete tables |
| Give this access to others | grant | Pass the same access on |
Access can be given on a (every table in it), a Table or a Connection.
Limit a member to what they are given
Open Data access
Go to Settings and open Data access.
Set what the member reaches
Under What each member reaches, change the member from Everything to Only what is given below.

nx.access.limit_member("USER_ID")
nx.access.limit_member("USER_ID", granted_only=False)Give access
Choose who and what
Under Give access, pick the Member, the kind (Schema, Table or Connection), and type its name, such as sales or sales.orders.
Choose the levels
Tick the levels the person needs.
Set the options
Tick Keep their changes in their own copy to keep their writes apart from the live table. Set an end date for temporary access.
Give it
Select Give access. It appears under Access given, with Their changes (Go live or Stay in their own copy) and Until.
give() sets the whole grant for one person on one resource, replacing what was there.
from klarety import Nexus
with Nexus.connect() as nx:
nx.access.give(
"person",
"USER_ID",
"table",
"sales.orders",
["exists", "structure", "read"],
columns={"email": "hashed", "phone": "hidden"},
expires_at="2026-12-31T23:59:59Z",
)
for grant in nx.access.grants(principal_kind="person", principal_id="USER_ID"):
print(grant)| Option | Values |
|---|---|
Who (principal_kind) | person, project, key |
What (resource_kind) | schema, table, folder, connection |
where | main (changes go live) or own_branch (their own copy) |
columns | per column: hidden, hashed or nulled |
Column options are available from code only.
Take back access
Under Access given, select Take back on the row.
nx.access.take_back("person", "USER_ID", "table", "sales.orders")What can go wrong
Where to go next
- Members: roles and invitations.
- Object storage: share folders.
- Query with SQL: what access means for queries.