Start here. This is the direct spoken answer to practice first.
Why this question matters
Role modeling is a common source of long-term security and product pain. The useful answer keeps roles human-friendly while enforcing precise permissions in code.
I would use roles as coarse user-facing groups and permissions or capabilities as the specific actions the API checks. For example, Editor can include content read and update, while Admin can include user management. The endpoint checks the capability it needs, not a broad role name everywhere. That avoids adding a new role for every tiny workflow difference.