Live demo (sample data)
Speedle Cloud is an access-control service for developers. Create a service, write access rules in SPDL, and call the authorization API to check whether a user may perform an action on a resource.
Speedle Cloud homeExplore a sample authorization workspace
Explore the policy management workspace without signing in. This read-only demo uses built-in sample data and the console’s policy list, SPDL display and Playground result components. It runs in your browser, makes no API calls and cannot read or change real accounts.
Sample service: books-demo · Read-only · sample data only
Policies
Authorization policies (2)
Role policies (1)
reader-access
grant role reader get /booksPlayground
Choose a sample request to see its precomputed IsAllowed decision. These are fixed examples, not live API evaluations.
Sample authorization request
{
"subject": {
"principals": [
{
"type": "user",
"name": "alice"
}
]
},
"serviceName": "books-demo",
"resource": "/books",
"action": "get"
}Allowed. A grant policy applies.
Full result (JSON)
{
"allowed": true,
"reason": 0
}Reason codes: 0 = grant, 1 = deny, 3 = no matching policy.
All sample policies, requests and decisions (also readable without JavaScript)
reader-access
grant role reader get /booksprotect-books
deny user bob delete /booksalice-reader
grant user alice reader on /booksAlice reads books — allowed through the reader role
{
"request": {
"subject": {
"principals": [
{
"type": "user",
"name": "alice"
}
]
},
"serviceName": "books-demo",
"resource": "/books",
"action": "get"
},
"response": {
"allowed": true,
"reason": 0
}
}Bob deletes books — explicitly denied
{
"request": {
"subject": {
"principals": [
{
"type": "user",
"name": "bob"
}
]
},
"serviceName": "books-demo",
"resource": "/books",
"action": "delete"
},
"response": {
"allowed": false,
"reason": 1
}
}Carol reads books — no matching grant
{
"request": {
"subject": {
"principals": [
{
"type": "user",
"name": "carol"
}
]
},
"serviceName": "books-demo",
"resource": "/books",
"action": "get"
},
"response": {
"allowed": false,
"reason": 3
}
}