Roles and access¶
The API applies the same rules as the portal. What a key can do depends on its owner's role in the organisation.
What each role can do¶
| Action | Owner | Admin | Member |
|---|---|---|---|
| Read organisations, regions and members | Yes | Yes | Yes |
| Read projects, quotas and quota increase requests | Yes | Yes | Granted projects |
| Provision a project in a region | Yes | Yes | Granted projects |
| Create and edit projects | Yes | Yes | No |
| Read invitations, the audit log, invoices and usage | Yes | Yes | No |
| Invite people | Yes | Yes | No |
| Set a member's project access | Yes | Yes | No |
| Remove members | Yes | Yes, but not an owner | No |
| Submit or resubmit quota increase requests | Yes | Yes | No |
| Archive or delete a project | Yes | No | No |
| Change a member's role | Yes | No | No |
A refused action answers 403 with manager_required (owner or admin needed) or owner_required.
Nobody can change or remove their own membership through the API; that answers 409 own_membership. Setting a member's role to owner transfers ownership and makes the current owner an admin.
Per-project access¶
An organisation can turn on per-project access. Owners and admins still see every project, and each member sees only the projects they've been granted. Any other project answers 404, as if it doesn't exist.
While it's on, a member's record includes project_access: the granted project ids when an owner or admin reads it, a count when a member does.
What you can't see answers 404¶
The API doesn't distinguish between something that doesn't exist and something you can't reach. An organisation you don't belong to, or a project you haven't been granted, answers 404 not_found.
Restricted organisations¶
These apply to every call under /orgs/{org_id}. GET /orgs still lists a suspended organisation, with its status.
| Situation | Response |
|---|---|
| The organisation is suspended | 403 org_suspended |
| A payment method is needed | 403 billing_setup_required |
| Billing details must be completed before creating a project | 403 billing_details_incomplete |
| The organisation is being deleted | 404 not_found, and it's gone from GET /orgs |
Resolve these in the portal. Replacing the key won't help.