ApisCP has four distinct roles. misc:list-commands may be used to enumerate available commands for a given role. We can use cpcmd to interact with this from command-line.
- Appliance Administrator: manages everything
–cpcmd misc:list-commands - Reseller Administrator: manages collections of sites
–cpcmd -u somereseller misc:list-commands - Site Administrator: manages sites + users on sites
–cpcmd -d somedomain.com misc:list-commands - User Administrator: manages self
–cpcmd -d somedomain.com -u someuser misc:list-commands
A command doesn’t exist if it’s not within the role’s scope. In your example, you’re interacting as Appliance Administrator, when you would instead want to interact as Site Administrator.
To transition downward to a more specific role, use the hijack feature. admin:hijack(string $site, string $user = null, string $gate = null) which also exists as reseller:hijack() and site:hijack() to allow transitioning to something more specific. It returns a session identifier, which can be passed to subsequent API calls to apply in that new context.
For example, as an Appliance Administrator, call admin:hijack(“site1”) to create a new context as a Site Administrator for site1. Then site:hijack(null, “someuser”) to create a new context as a User Administrator for user “someuser” on site1.