API

Eine Schnittstelle, viele Möglichkeiten

Teilnehmer oder Ergebnisse anonymisieren

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

ResultId

int

ID des Datensatzes

MemberId

int

ID des Umfrage-Teilnehmers

QuestionId

int

ID der Frage

AnswerId

int

ID der Antwortoption

LevelId

int

ID, wenn es bei den Antworten Abstufungen gibt, wie z. B. bei der Variablen-Frage

AnswerText

str

Anonymisierter Text ** anonymized **

Beispiel: Anonymisiere alle Textantworten einer Umfrage
PHP
<?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
<?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:

  1. 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.
  2. 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

ParticipantListId

int

ID des Datensatzes

Email

str

Anonymisierter Text ** anonymized **

Title

str

z.B. “Herr“

FirstName

str

Anonymisierter Text ** anonymized **

LastName

str

Anonymisierter Text ** anonymized **

ReferenceText

str

Wert aus Spalte „Referenztext“

AccessCode

str

Zugriffscode für die Teilnahme an der Umfrage

Value 1-25

str

Anonymisierter Text ** anonymized **

CreatedAt

date

Anlagedatum des Teilnehmers in der Teilnehmerliste

UpdatedAt

date

Änderungsdatum des Teilnehmers in der Teilnehmerliste

Anonymisierung über surveyid

URL

/api/v2/participants/users/anonymize/[SurveyId]

Methode

POST

Parameter

Rückgabe

Survey Participant Objekte als JSON

Rückgabewerte

ParticipantListId

int

ID des Datensatzes

Email

str

Anonymisierter Text ** anonymized **

Title

str

z.B. “Herr“

FirstName

str

Anonymisierter Text ** anonymized **

LastName

str

Anonymisierter Text ** anonymized **

ReferenceText

str

Wert aus Spalte „Referenztext“

AccessCode

str

Zugriffscode für die Teilnahme an der Umfrage

Value 1-25

str

Anonymisierter Text ** anonymized **

CreatedAt

date

Anlagedatum des Teilnehmers in der Teilnehmerliste

UpdatedAt

date

Änderungsdatum des Teilnehmers in der Teilnehmerliste

Bereit zu starten? Erstellen Sie jetzt großartige Umfragen!