Grant access ACX-02
Give a person access to an app.
| Who can use it | entitlements.manage or app owner (own app) |
|---|---|
| Where it is | /admin/users/:userId/access/grant · link: https://hub.substratalapps.com/admin/users/:userId/access/grant or substratal://admin/users/:userId/access/grant |
| Available on | Web (PWA), iOS / iPadOS, Android, Windows, Linux (GNOME), macOS |
| Phase | MVP |
What you can do here
- Grant — 201 → row Active. 409 entitlement_already_exists → "Already has access — view it". A platform-managed row doesn't block a grant (they coexist).
Related guides
- Managing users and their access — Find people, invite them, turn app access on and off, and understand why someone can or can't get in.
- Register an application and launch it from the Hub — From an empty catalog entry to people opening your app from Home.
On your platform
| App | Status | How it's built |
|---|---|---|
| Web (PWA) | — | Modal <dialog> ≥ 768 px; bottom sheet (drag handle, snap points) < 768 px |
| iOS / iPadOS | — | .sheet with NavigationStack + Form (Cancel / primary in toolbar) |
| Android | Planned | Full-screen Dialog (compact) / ModalBottomSheet (short forms) / dialog (expanded) |
| Windows | — | ContentDialog (≤ 5 fields) or drill-in page |
| Linux (GNOME) | — | AdwDialog with AdwPreferencesGroup |
| macOS | — | .sheet with Form(.grouped); ⌘↩ submits, Esc cancels |
Status is reported by each app's repository; — means that app doesn't report it yet.
For developers: API calls
| Method | Path | What it does |
|---|---|---|
| POST | /users/{id}/entitlements | Grant a personal Entitlement |
Every call sends Substratal-Version: 1. Paths are at the host root, with no /v1.