Without the ability to query existing users, CREATE/ALTER/DROP remain just a partial solution. If one still has to use the
API to query the users then as well the API may be used for all. All the rest of the objects (table, views, procedures, etc) may be queried using system tables. It appears logical to create pseudo-table, listing availbable users.