An unofficial SpiceDB client for Python.
https://pypi.org/project/spicedb
- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| spicedb | ||
| .gitignore | ||
| LICENSE | ||
| NOTICE | ||
| poetry.lock | ||
| poetry.toml | ||
| pyproject.toml | ||
| README.md | ||
spicedb-python
An unofficial SpiceDB client for Python.
pip install spicedb
Note that this is a very unstable package and the API is subject to change.
Getting started
Initialize the client:
from spicedb import SpiceDB, SpiceRelationship
client = SpiceDB("https://api.spicedb.example.net/", "API_KEY")
Set up a schema:
await client.write_schema("""
definition user {}
definition team {
relation admin: user
relation member: user
}
definition project {
relation parent: team
permission view = parent->member
permission edit = parent->admin
}
""")
Create some relationships:
alice = {"type": "user", "id": "alice"}
bob = {"type": "user", "id": "bob"}
team = {"type": "team", "id": "acme-co"}
cool_project = {"type": "project", "id": "cool_project"}
await client.bulk(
create=[
SpiceRelationship(team, "parent", cool_project),
SpiceRelationship(alice, "admin", team),
SpiceRelationship(bob, "member", team),
],
)
Check permissions:
await client.authorize(alice, "edit", cool_project) # => True
await client.authorize(bob, "edit", cool_project) # => False
List resources:
await client.list(alice, "edit", "project") # => ["cool_project"]