anchor.diff:  -spec get_details(Auth :: rest_handler:zone_auth(), ClusterId :: id()) ->
       {ok, #{atom() := term()}} | #error{}.
   get_details({rpc, Auth}, ClusterId) ->
  -    {ok, OzNode} = nodes:any(?SERVICE_OZW),
  -    case rpc:call(OzNode, cluster_logic, get_protected_data, [Auth, ClusterId]) of
  +    case zone_rpc(cluster_logic, get_protected_data, [Auth, ClusterId]) of
           {ok, ClusterData} ->
               {ok, onepanel_maps:get_store_multiple([
                   {<<"onepanelVersion">>, onepanelVersion},
  
positive.code:                 {<<"serviceId">>, serviceId},
                  {<<"type">>, type}
              ], ClusterData, #{id => ClusterId})};
          {error, Reason} ->
              ?make_error(Reason)
      end;
  
  get_details({rest, Auth}, ClusterId) ->
  
negative.code:     {ok, [privileges:cluser_privilege()]} | #error{} | no_return().
  get_user_privileges({rest, RestAuth} = Auth, OnezoneUserId) ->
      simple_cache:get(?PRIVILEGES_CACHE_KEY(Auth), fun() ->
          case zone_rest(Auth, "/clusters/~s/effective_users/~s/privileges",
              [get_id(), OnezoneUserId]) of
              {ok, #{privileges := Privileges}} ->
                  ListOfAtoms = onepanel_utils:convert(Privileges, {seq, atom}),
                  {true, ListOfAtoms, ?PRIVILEGES_CACHE_TTL};
              #error{reason = {{401, _, _}}} ->
                  ?make_error(?ERR_UNAUTHORIZED);
              #error{reason = {{404, _, _}}} ->
                  ?make_error(?ERR_USER_NOT_IN_CLUSTER);
              #error{} = Error -> throw(Error)
          end
      end);
  
  