anchor.diff:  parse_binary_json(Body) ->
       {ok, chef_json:decode_body(Body)}.
   
  +% Translate types; in ACLs, everything is an object, actor, group, or container
  +acl_path(node, AuthzId) ->
  +    acl_path(object, AuthzId);
  +acl_path(role, AuthzId) ->
  +    acl_path(object, AuthzId);
  +acl_path(data_bag, AuthzId) ->
  +    acl_path(object, AuthzId);
  +acl_path(environment, AuthzId) ->
  +    acl_path(object, AuthzId);
  +acl_path(cookbook, AuthzId) ->
  +    acl_path(object, AuthzId);
  +acl_path(client, AuthzId) ->
  +    acl_path(actor, AuthzId);
  +acl_path(user, AuthzId) ->
  +    acl_path(actor, AuthzId);
  +acl_path(organization, AuthzId) ->
  +    acl_path(container, AuthzId);
   acl_path(Type, AuthzId) ->
       "/" ++ atom_to_list(Type) ++ "s/" ++ binary_to_list(AuthzId) ++ "/acl".
   
  
positive.code:             Other
      end.
  
  convert_group_ids_to_names(Ids) ->
      % TODO: implement this
      [].
  
  convert_actor_ids_to_names(Ids) ->
      % TODO: implement this
      [].
  
  process_part(Part, Record) ->
      Members = ej:get({Part}, Record),
      Actors = ej:get({<<"actors">>}, Members),
      Groups = ej:get({<<"groups">>}, Members),
      Members1 = ej:set({<<"actors">>}, Members, convert_actor_ids_to_names(Actors)),
      Members2 = ej:set({<<"groups">>}, Members1, convert_group_ids_to_names(Groups)),
      ej:set({Part}, Record, Members2).
  
  ids_to_names(Record) ->
      Record1 = process_part(<<"create">>, Record),
      Record2 = process_part(<<"read">>, Record1),
      Record3 = process_part(<<"write">>, Record2),
      Record4 = process_part(<<"delete">>, Record3),
      process_part(<<"grant">>, Record4).
  
  update_from_json(#acl_state{type = Type, authz_id = AuthzId, acl_data = Data},
                   RequestorId) ->
      Path = acl_path(Type, AuthzId),
      % This will fail; PUT is only per type of acl, i.e., ".../acl/create" etc.
      % Also need to convert all of the names to AuthzIds
      % ...I can imagine that users/clients could easily conflict.
      Result = oc_chef_authz_http:request(Path, put, ?DEFAULT_HEADERS, Data, RequestorId),
      case Result of
          {error, forbidden} ->
              forbidden;
          Other ->
              Other
      end.
  
negative.code:     % TODO: do we want to do it that way, or do we want to fetch the data now,
      % check and save it in the state instead?
      {authorized, Req, State}.
  
  to_json(Req, #base_state{requestor_id = RequestorId,
                           resource_state = AclState} = State) ->
  