anchor.diff:          ok ->
               gs_client_worker:invalidate_cache(od_provider, oneprovider:get_id()),
               ok;
  -        ?ERROR_BAD_VALUE_IDENTIFIER_OCCUPIED(<<"subdomain">>) ->
  -            {error, subdomain_exists};
           Error ->
               Error
       end.
  
positive.code: 
  -export([get/0, get/1, get/2, get_protected_data/2]).
  -export([get_as_map/0]).
  -export([get_name/0, get_name/1, get_name/2]).
  -export([get_spaces/0, get_spaces/1, get_spaces/2]).
  -export([has_eff_user/2, has_eff_user/3]).
  
negative.code: 
  %%--------------------------------------------------------------------
  %% @doc
  %% Updates parameters of this provider using current provider's auth.
  %% Supports updating name, latitude, longitude and adminEmail.
  %% @end
  %%--------------------------------------------------------------------
  -spec update(Data :: #{binary() => term()}) -> ok | gs_protocol:error().
  update(Data) ->
      update(?ROOT_SESS_ID, Data).
  
  %%--------------------------------------------------------------------
  %% @doc
  %% Updates parameters of this provider.
  %% Supports updating name, latitude, longitude and adminEmail.
  %% @end
  %%--------------------------------------------------------------------
  -spec update(SessionId :: gs_client_worker:client(),
      Data :: #{binary() => term()}) -> ok | gs_protocol:error().
  update(SessionId, Data) ->
      Result = gs_client_worker:request(SessionId, #gs_req_graph{
          operation = update, data = Data,
          gri = #gri{type = od_provider, id = ?SELF, aspect = instance}
      }),
      ?ON_SUCCESS(Result, fun(_) ->
          gs_client_worker:invalidate_cache(od_provider, oneprovider:get_id())
      end).
  
  
  %%--------------------------------------------------------------------
  %% @doc
  %% Retrieves provider name of this provider.
  %% @end
  %%--------------------------------------------------------------------
  