namespace:resource:action. When you make a request, the platform evaluates your current permission set against the required policy and either allows or denies the operation.
Policy string format
Every permission is a three-part string separated by colons:| Part | Description | Examples |
|---|---|---|
namespace | The service or domain boundary | org, identity, billing, oms |
resource | The specific entity being acted on | member, user, payment, order |
action | The operation being performed | read, create, update, delete, invite, submit |
403 Forbidden response with the exact policy string that was evaluated:
Key permissions
The table below covers the permission strings you are most likely to encounter when building on Nyota Imara.| Permission | What it unlocks |
|---|---|
org:organization:read | View organization details and IAM role configuration |
org:organization:update | Update organization settings; create, edit, and delete custom roles |
org:member:read | List active members and pending invitations |
org:member:invite | Send invitations to new team members |
org:kyb:read | View KYB documents and verification status |
org:kyb:submit | Submit KYB documents for review |
identity:user:read | Read user profile and KYC status |
billing:payment:create | Initiate payments and add payment methods |
oms:order:create | Create new orders in the commerce system |
platform:org:create | Create a new organization (personal context) |
Built-in organization roles
Every organization ships with four protected built-in roles. You cannot modify or delete them.| Role | Included permissions |
|---|---|
| owner | All permissions across every namespace — equivalent to super-access within the organization. |
| admin | org:organization:read, org:organization:update, org:member:read, org:member:invite, org:kyb:read, org:kyb:submit |
| billing | billing:payment:create and all billing-namespace read and write permissions. No org management or member access. |
| member | org:organization:read, org:member:read — basic read access to shared organization data. |
The
owner role is assigned automatically to the person who creates the organization and cannot be transferred through the API. To hand off ownership, contact Nyota Imara support.Organization context and permissions
Your active permission set depends on which context you are operating in. When you send theX-Organization-Id header, Nyota Imara loads the permissions attached to your role in that specific organization. Without the header, only your personal (platform-level) permissions apply.
Checking your permissions
To see the full list of roles and their mapped permissions available in your organization, call:isProtected flag and the list of permission IDs currently mapped to it:
Custom roles
Organization owners can create custom roles that combine any set of granular permissions. This lets you define roles likeauditor (read-only access) or dispatcher (order creation only) without granting broader built-in role access.
List available permissions
Call
GET /v1/organizations/iam/roles to get the full list of permission IDs your organization can assign.Create the custom role
Post the role name and an array of permission IDs:Role names are automatically lowercased and sanitized — only letters, digits, and underscores are kept.
Built-in roles (
owner, admin, billing, member) are protected — the API blocks any attempt to modify or delete them. Custom roles are fully manageable by organization owners.