anchor.diff:  
   json_to_error(_, #{<<"id">> := <<"forbidden">>}) ->
       ?ERROR_FORBIDDEN;
  +
  +json_to_error(_, #{<<"id">> := <<"alreadyExists">>}) ->
  +    ?ERROR_ALREADY_EXISTS;
  +
  +json_to_error(_, #{
  +    <<"id">> := <<"posix">>,
  +    <<"details">> := #{<<"errno">> := Errno}
  +}) ->
  +    ?ERROR_POSIX(binary_to_existing_atom(Errno, utf8));
   
   json_to_error(_, #{<<"id">> := <<"badMacaroon">>}) ->
       ?ERROR_BAD_MACAROON;
  
positive.code:     <<"details">> := #{<<"key">> := Key}}) ->
      ?ERROR_BAD_VALUE_ID_NOT_FOUND(Key);
  
  json_to_error(_, #{<<"id">> := <<"badValueIdentifierOccupied">>,
      <<"details">> := #{<<"key">> := Key}}) ->
      ?ERROR_BAD_VALUE_IDENTIFIER_OCCUPIED(Key);
  
negative.code: 
  json_to_error(_, #{<<"id">> := <<"protectedGroup">>}) ->
      ?ERROR_PROTECTED_GROUP;
  
  json_to_error(_, #{
      <<"id">> := <<"spaceNotSupportedBy">>,
      <<"details">> := #{<<"providerId">> := ProviderId}
  }) ->
      ?ERROR_SPACE_NOT_SUPPORTED_BY(ProviderId);
  
  json_to_error(_, #{
      <<"id">> := <<"indexNotExistsOn">>,
      <<"details">> := #{<<"providerId">> := ProviderId}
  }) ->
      ?ERROR_INDEX_NOT_EXISTS_ON(ProviderId);
  
  json_to_error(_, #{<<"id">> := <<"transferAlreadyEnded">>}) ->
      ?ERROR_TRANSFER_ALREADY_ENDED;
  
  json_to_error(_, #{<<"id">> := <<"transferNotEnded">>}) ->
      ?ERROR_TRANSFER_NOT_ENDED;
  
  json_to_error(_, #{<<"id">> := <<"relationDoesNotExist">>,
      <<"details">> := #{
  