permissions JSON ({resource:[actions]}) → flat ["resource:action"] scopes, defensively (a bad value → no scopes).
{resource:[actions]}
["resource:action"]
permissions JSON (
{resource:[actions]}) → flat["resource:action"]scopes, defensively (a bad value → no scopes).