Has any school developed custom roles from scratch just using the role API? Seems that API allows creation of roles without having to base it on an existing role--just AccountMembership'. We'd be interested to find out your experience with this and what your purpose was. We want to create a 'Non-enrolled Student' role and prevent teachers from adding Students manually but you can't do that by basing the Non-enrolled Student role on Student role.
To my knowledge all custom roles are based off one of 4 parent roles: admin, teacher, student, observer
There has been nothing in the user account that identifies the user by their institutional role (ie. staff, student). A new user account is a blank object, with role permissions tied to their individual course enrollments. We use Canvas for instruction and professional development so most of our staff have courses where they have teacher enrollment and courses where they have student enrollments, but nothing in their account that flags them as a staff member. That said, I did come across a role parameter in the users.csv documentation, but I have not located that parameter in the API documentation and was not able to find anything in the UI that displayed that information. Perhaps something is coming in the future...I inquired about this but received no response.
Enrolling users into courses is a permission tied to the teacher role. If you don't want teachers enrolling users into course, you can disable that function. We only manage enrollment though SIS and do not allow teachers to manually enroll students.