Durch die Nutzung der Anonymisierungs-Funktion der API können Textantworten in den Ergebnissen oder Teilnehmer in Teilnehmerlisten anonymisiert werden. Auf diese Weise werden die Daten unkenntlich gemacht.
Ergebnisse anonymisieren
Mit dieser Methode lassen sich anhand der gleichen Suchparameter wie in der Ergebnissuche (/api/v2/results) Textergebnisse anonymisieren. Die Texte der dieser Suche entsprechenden Ergebnisse werden durch den Textstring ‚** anonymized **‘ ersetzt. Es können pro Anfrage maximal 1.000 Datensätze anonymisiert werden.
URL |
/api/v2/results/anonymize |
||||||||||||||||||
Methode |
POST |
||||||||||||||||||
Parameter |
memberid, searchstring, resultid |
||||||||||||||||||
Rückgabe |
Result Objekte als JSON |
||||||||||||||||||
Rückgabewerte |
|
Beispiel: Anonymisiere alle Textantworten einer Umfrage
<?php
// Anonymisiere alle Textantworten einer Umfrage
// anonymizeResultsAll.php
// v1.0.1
// Access Token hier einfügen
$accessToken = 'YOUR_ACCESS_TOKEN';
// Umfrage ID hier einfügen
$surveyid = 'YOUR_SURVEYID';
// API-URLs
$membersApiUrl = 'https://app.easy-feedback.com/api/v2/members?surveyid=' . $surveyid;
$anonymizeApiUrl = 'https://app.easy-feedback.com/api/v2/results/anonymize';
// Funktion zum Anonymisieren der Ergebnisse
function anonymizeResults($accessToken, $anonymizeApiUrl, $memberid)
{
$apiUrl = $anonymizeApiUrl . '?memberid=' . $memberid;
$ch = curl_init($apiUrl);
// cURL-Optionen konfigurieren
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/x-www-form-urlencoded',
));
$response = curl_exec($ch);
// Das Ergebnis als JSON anzeigen
if ($response === false) {
$error = 'Fehler bei der cURL-Anfrage für MemberID ' . $memberid . ': ' . curl_error($ch);
curl_close($ch);
return ['success' => false, 'error' => $error];
} else {
$jsonData = json_decode($response, true);
curl_close($ch);
if ($jsonData === null) {
$error = 'Fehler beim Dekodieren der JSON-Antwort für MemberID ' . $memberid;
return ['success' => false, 'error' => $error];
} else {
// Prüfen, ob Anonymisierung erfolgreich war
$anonymizedCount = 0;
foreach ($jsonData as $result) {
if (isset($result['Answertext']) && $result['Answertext'] === '** anonymized **') {
$anonymizedCount++;
}
}
return ['success' => true, 'anonymizedCount' => $anonymizedCount];
}
}
}
// API-Abfrage für Mitglieder
$chMembers = curl_init($membersApiUrl);
curl_setopt($chMembers, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chMembers, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $accessToken,
));
$responseMembers = curl_exec($chMembers);
if ($responseMembers === false) {
echo 'Fehler bei der cURL-Anfrage für Mitglieder: ' . curl_error($chMembers);
exit;
}
$jsonDataMembers = json_decode($responseMembers, true);
if ($jsonDataMembers === null || !isset($jsonDataMembers['results'])) {
echo 'Fehler beim Dekodieren der JSON-Antwort für Mitglieder.';
echo '<br><br>JSON-Antwort: <pre>' . json_encode($jsonDataMembers, JSON_PRETTY_PRINT)."</pre>";
exit;
}
// Anfragezähler und Zeitpunkt der letzten Anfrage
$requestCounter = 0;
$anonymizedMembers = 0;
$lastRequestTime = time();
foreach ($jsonDataMembers['results'] as $member) {
// Prüfen, ob eine Minute seit der letzten Anfrage vergangen ist
if (time() - $lastRequestTime >= 60) {
$requestCounter = 0; // Zurücksetzen des Anfragezählers
$lastRequestTime = time(); // Aktualisieren des Zeitpunkts der letzten Anfrage
}
// Anonymisieren der Ergebnisse
$result = anonymizeResults($accessToken, $anonymizeApiUrl, $member['Id']);
if ($result['success']) {
$anonymizedMembers += $result['anonymizedCount'];
} else {
echo 'Fehler bei der Anonymisierung für MemberID ' . $member['Id'] . ': ' . $result['error'] . PHP_EOL;
}
// Erhöhen des Anfragezählers
$requestCounter++;
// Überprüfen, ob die maximale Anzahl von Anfragen pro Minute erreicht ist
if ($requestCounter >= 60) {
// Warten bis eine Minute seit der letzten Anfrage vergangen ist
while (time() - $lastRequestTime < 60) {
usleep(100000); // Warten für 100 Millisekunden (0,1 Sekunden)
}
$requestCounter = 0; // Zurücksetzen des Anfragezählers nach dem Warten
$lastRequestTime = time(); // Aktualisieren des Zeitpunkts der letzten Anfrage
}
}
// cURL-Verbindung schließen
curl_close($chMembers);
// Ausgabe der erfolgreichen Anonymisierungen
echo 'Erfolgreich anonymisierte Ergebnisse: ' . $anonymizedMembers;
?>
Beispiel: Anonymisiere eine einzelne Textantwort mit der Result ID X
<?php
// Anonymisiere eine einzelne Textantwort mit der Result ID X
// anonymizeOneTextAnswersByResultId.php
// v1.0.1
// access Token hier einfügen
$accessToken = 'YOUR_ACCESS_TOKEN';
// Member ID hier einfügen
$memberid = 'YOUR_MEMBERID';
// Result ID hier einfügen
$resultid = 'YOUR_RESULTID'; # z.B.: text_123456789
$apiUrl = 'https://app.easy-feedback.com/api/v2/results/anonymize?memberid=' . $memberid . '&resultid=' . $resultid;
$ch = curl_init($apiUrl);
// cURL-Optionen konfigurieren
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/x-www-form-urlencoded',
));
$response = curl_exec($ch);
// Das Ergebnis als JSON anzeigen
if ($response === false) {
echo 'Fehler bei der cURL-Anfrage: ' . curl_error($ch);
} else {
$jsonData = json_decode($response, true);
if ($jsonData === null) {
echo 'Fehler beim Dekodieren der JSON-Antwort.';
} else {
echo 'JSON-Antwort: <pre>' . json_encode($jsonData, JSON_PRETTY_PRINT)."</pre>";
}
}
// cURL-Verbindung schließen
curl_close($ch);
?>
Teilnehmer in Teilnehmerlisten anonymisieren
Um die Teilnehmern in Teilnehmerlisten zu anonymisieren gibt es zwei unterschiedliche Möglichkeiten:
- participantlistid: Über diese Methode wird gezielt eine Teilnehmerliste angesprochen. Die Anonymisierung findet dann in der globalen Teilnehmerliste statt, und wenn die Teilnehmerliste einer oder mehrerer Umfragen zugeordnet ist, dann werden auch unter E-Mail-Einladungen die Teilnehmer anonymisiert.
- surveyid: Bei dieser Methode werden alle Teilnehmerlisten, die einer Umfrage zugeordnet sind anonymisiert. Zusätzlich werden diese Teilnehmerlisten auch unter den globalen Teilnehmerlisten anonymisiert.
Sobald die Anonymisierung ausgeführt wird, werden folgende Felder innerhalb der Teilnehmerliste anonymisiert:
* E-Mail
* Vorname
* Name
* Value 1-25
Anonymisierung über participantlistid
URL |
/api/v2/participants/users/anonymize/[ParticipantListId] |
||||||||||||||||||||||||||||||
Methode |
POST |
||||||||||||||||||||||||||||||
Parameter |
page, limit |
||||||||||||||||||||||||||||||
Rückgabe |
Liste der Ids der anonymisierten Teilnehmer als JSON |
||||||||||||||||||||||||||||||
Rückgabewerte |
|
Anonymisierung über surveyid
URL |
/api/v2/participants/users/anonymize/[SurveyId] |
||||||||||||||||||||||||||||||
Methode |
POST |
||||||||||||||||||||||||||||||
Parameter |
– |
||||||||||||||||||||||||||||||
Rückgabe |
Survey Participant Objekte als JSON |
||||||||||||||||||||||||||||||
Rückgabewerte |
|