blob: d860b7c7862943db133e9e26dc1eacba6657fbad [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.unomi.api.services;
import org.apache.unomi.api.Profile;
import org.apache.unomi.api.ServerInfo;
import java.util.List;
/**
* This service regroups all privacy-related operations
*/
public interface PrivacyService {
/**
* Retrieves the server information, including the name and version of the server, the event types
* if recognizes as well as the capabilities supported by the system.
* @return a ServerInfo object with all the server information
*/
ServerInfo getServerInfo();
/**
* Deletes the current profile (but has no effect on sessions and events). This will delete the
* persisted profile and replace it with a new empty one with the same profileId.
* @param profileId the identifier of the profile to delete and replace
* @return true if the deletion was successful
*/
Boolean deleteProfile(String profileId);
/**
* This method will "anonymize" a profile by removing from the associated profile all the properties
* that have been defined as "denied properties".
* @param profileId the identifier of the profile that needs to be anonymized.
* @param scope The scope will be used to send events, once for the anonymizeProfile event, the other for the profileUpdated event
* @return true if the profile had some properties purged, false otherwise
*/
Boolean anonymizeProfile(String profileId, String scope);
/**
* This method will anonymize browsing data by creating an anonymous profile for the current profile,
* and then re-associating all the profile's sessions and events with the new anonymous profile
* todo this method does not anonymize any session or event properties that may contain profile
* data (such as the login event)
* @param profileId the identifier of the profile on which to perform the anonymizations of the browsing
* data
* @return true if the operation was successful, false otherwise
*/
Boolean anonymizeBrowsingData(String profileId);
/**
* This method will perform two operations, first it will call the anonymizeBrowsingData method on the
* specified profile, and then it will delete the profile from the persistence service.
* @param profileId the identifier of the profile
* @return true if the operation was successful, false otherwise
*/
Boolean deleteProfileData(String profileId);
/**
* Controls the activation/deactivation of anonymous browsing. This method will simply set a system
* property called requireAnonymousProfile that will be then use to know if we should associate
* browsing data with the main profile or the associated anonymous profile.
* Note that changing this setting will also reset the goals and pastEvents system properties for the
* profile.
* @param profileId the identifier of the profile on which to set the anonymous browsing property flag
* @param anonymous the value of the anonymous browsing flag.
* @param scope a scope used to send a profileUpdated event internally
* @return true if successful, false otherwise
*/
Boolean setRequireAnonymousBrowsing(String profileId, boolean anonymous, String scope);
/**
* Tests if the anonymous browsing flag is set of the specified profile.
* @param profileId the identifier of the profile on which we want to retrieve the anonymous browsing flag
* @return true if successful, false otherwise
*/
Boolean isRequireAnonymousBrowsing(String profileId);
/**
* Tests if the anonymous browsing flag is set of the specified profile.
* @param profile the profile on which we want to retrieve the anonymous browsing flag
* @return true if successful, false otherwise
*/
Boolean isRequireAnonymousBrowsing(Profile profile);
/**
* Build a new anonymous profile (but doesn't persist it in the persistence service). This will also
* copy the profile properties from the passed profile that are not listed as denied properties.
* @param profile the profile for which to create the anonymous profile
* @return a newly created (but not persisted) profile for the passed profile.
*/
Profile getAnonymousProfile(Profile profile);
/**
* Retrieve the list of events that the profile has deactivated. For each profile a visitor may indicate
* that he doesn't want some events to be collected. This method retrieves this list from the specified
* profile
* @param profileId the identifier for the profile for which we want to retrieve the list of forbidden
* event types
* @return a list of event types
*/
List<String> getFilteredEventTypes(String profileId);
/**
* Retrieve the list of events that the profile has deactivated. For each profile a visitor may indicate
* that he doesn't want some events to be collected. This method retrieves this list from the specified
* profile
* @param profile the profile for which we want to retrieve the list of forbidden
* event types
* @return a list of event types
*/
List<String> getFilteredEventTypes(Profile profile);
/**
* Set the list of filtered event types for a profile. This is the list of event types that the visitor
* has specified he does not want the server to collect.
* @param profileId the identifier of the profile on which to filter the events
* @param eventTypes a list of event types that will be filter for the profile
* @return true if successfull, false otherwise.
*/
Boolean setFilteredEventTypes(String profileId, List<String> eventTypes);
/**
* Gets the list of denied properties. These are properties marked with a personal identifier tag.
* @param profileId the identified of the profile
* @return a list of profile properties identifiers that are marked as personally identifying
*/
List<String> getDeniedProperties(String profileId);
/**
* Sets the list of denied properties.
* @param profileId the profile for which to see the denied properties
* @param propertyNames the property names to be denied
* @return null all the time, this method is not used and is marked as deprecated
* @deprecated As of version 1.3.0-incubating, do not use this method, instead mark properties with the personal identifier tag which
* will mark them as denied by the getDeniedProperties method
*/
@Deprecated
Boolean setDeniedProperties(String profileId, List<String> propertyNames);
/**
* This method doesn't do anything anymore please don't use it
* @param profileId the identifier of the profile
* @return do not use
* @deprecated As of version 1.3.0-incubating, do not use this method
*/
@Deprecated
List<String> getDeniedPropertyDistribution(String profileId);
/**
* This method doesn't do anything anymore please don't use it
* @param profileId the identifier of the profile
* @param propertyNames do not use
* @return do not use
* @deprecated As of version 1.3.0-incubating, do not use this method
*/
@Deprecated
Boolean setDeniedPropertyDistribution(String profileId, List<String> propertyNames);
/**
* Removes a property from the specified profile. This change is persisted.
* @param profileId the identifier of the profile
* @param propertyName the name of the property to remove
* @return true if sucessfull, false otherwise
*/
Boolean removeProperty(String profileId, String propertyName);
}