Explain every decision
Every allow or deny response carries actor, resource, candidate permission, scope check, and audit metadata.
Plystra separates login accounts from the actors that operate inside a tenant, evaluates scoped resource permissions, and writes the decision trace your team can inspect later.
actor.user_id user_alice actor.member_id member_finance_reviewer resource.type invoice resource.id invoice_001 action approve
The v1.0 core keeps the permission model explicit: resource registry, scope resolver, role grants, active bindings, and append-only audit logs are first-class pieces of the same system.
Every allow or deny response carries actor, resource, candidate permission, scope check, and audit metadata.
Self, group, group_tree, and space scopes are explicit. Global scope is reserved and disabled in v1.0.
Register resource types, actions, mappings, risk levels, and audit defaults as governed metadata.
Core management APIs require a Bearer session or scoped API key with instance, Space, or Group admin grants. Data Console and metrics are closed unless enabled.
Your application stays the system of record for business data. Plystra stores the authorization graph, resource mirror, and audit trace needed to make the decision inspectable.
POST /api/v1/authz/check
{
"actor": {
"user_id": "user_alice",
"member_id": "member_finance_reviewer",
"user_member_id": "um_alice_finance_reviewer",
"space_id": "space_acme"
},
"resource_type": "invoice",
"resource_id": "invoice_001",
"action": "approve"
}
=> decision: allow
=> audit: append-only traceEach SDK follows the same production path: browser or gateway login supplies access tokens, while backend jobs and service-to-service checks use scoped API keys with explicit permission keys.
Browser and admin clients with access-token and API-key modes
Plystra and AsyncPlystra on top of httpx with token or API-key auth
Server-side client with context-aware requests and scoped API keys