anchor.diff:                                             role_authz_id = AuthzId}} = State) ->
       chef_wm_base:create_from_json(Req, State, chef_role, {authz_id, AuthzId}, RoleData).
   
  -to_json(Req, State) ->
  -    {all_roles_json(Req, State), Req, State}.
  -
  -%% @doc Generate a JSON string for a hash of rolename => role URI
  -%% pairs.
  -%% @end
  -%%
  -%% TODO: try to extract this to a common function, as this pattern
  -%% pops up with a few other endpoints, too
  -all_roles_json(Req, #base_state{chef_db_context = DbContext,
  -                                organization_name = OrgName}) ->
  -    RoleNames = chef_db:fetch_roles(DbContext, OrgName),
  -    RouteFun = ?BASE_ROUTES:bulk_route_fun(role, Req),
  -    UriMap= [{Name, RouteFun(Name)} || Name <- RoleNames],
  -    chef_json:encode({UriMap}).
  -
   malformed_request_message(Any, _Req, _State) ->
       error({unexpected_malformed_request_message, Any}).
  
positive.code: allowed_methods(Req, State) ->
      {['GET','POST'], Req, State}.
  
  validate_request('GET', Req, State) ->
      {Req, State};
  validate_request('POST', Req, #base_state{resource_state = RoleState} = State) ->
      Body = wrq:req_body(Req),
      {ok, Role} = chef_role:parse_binary_json(Body, create),
  
negative.code:                         ping/2,
                          post_is_create/2]}]).
  
  -mixin([{chef_wm_base, [{list_objects_json/2, to_json}]}]).
  
  -mixin([{?BASE_RESOURCE, [forbidden/2,
                            is_authorized/2,
                            service_available/2]}]).
  