RGPD

  • Annonceurs
  • Agences
  • Réseaux publicitaires
  • Développeurs

Respect du RGPD

Le Règlement général sur la protection des données (RGPD) est une  réglementation de la législation européenne relative à la protection des données et à la vie privée des citoyens de l'Union européenne. Il stipule que les marques contrôlant les données personnelles doivent être en mesure d'honorer, dans un délai d'un mois, les demandes d'accès, de portabilité, de rectification et d'effacement

En ce qui concerne l'attribution mobile, puisqu'il est impossible de savoir à l'avance quels utilisateurs sont citoyens européens, le RGPD s'applique à tous les utilisateurs mobiles, européens ou non.

L'initiative RGPD

Pour répondre aux demandes des personnes concernées et les gérer, conformément au RGPD, AppsFlyer, ainsi que mParticle, Amplitude et Braze,  ont lancé le protocole OpenGDPR.

OpenGDPR est un cadre unifié et open-source, facilitant la coopération entre les entreprises technologiques pour l'utilisation équitable et transparente des données des consommateurs. Il permet aux fournisseurs de prendre facilement des mesures de confidentialité des données sur systèmes multiples pour traiter et stocker les données client.

Pour en savoir plus sur cette initiative, cliquez ici.

Entités du RGPD

Personne concernée L'utilisateur final de l'app mobile pour laquelle les données sont collectées
Responsable du traitement des données L'annonceur détermine le but et les moyens par lesquels les données personnelles sont traitées.
Processeur de données AppsFlyer et ses partenaires traitent les données personnelles au nom du responsable du traitement des données

Exigences du RGPD

Le RGPD détaille les droits obligatoires de la personne concernée, que l'annonceur doit respecter.

Droits

Définition du RGPD

Comment AppsFlyer aide le responsable du traitement des données

Droit d'accès

  1. Si nécessaire, les personnes concernées ont le droit de savoir si, pourquoi et pendant combien de temps le responsable du traitement des données traitera leurs données.
  2. Si les données sont partagées avec des tiers (comme AppsFlyer), les personnes concernées ont le droit de savoir qui sont ces tiers.
  3. Le droit de savoir quelles catégories de données sont traitées.
  4. En cas de traitement automatisé, si ce dernier a un effet significatif sur celles-ci.
Lors de l'envoi d'une demande « d'accès », les responsable du traitement des données reçoivent une copie des données personnelles traitées.

Droit à la portabilité des données

La personne concernée doit recevoir toutes ses données personnelles dans un format structuré, communément utilisé et lisible par une machine tel qu'un fichier CSV.

Lors de l'envoi d'une demande de « portabilité », le responsable du traitement des données reçoit une copie des données personnelles traitées des personnes concernées

Droit à la rectification

Permet aux personnes concernées de corriger leurs données s'ils voient que ces dernières sont inexactes ou fausses. Les responsables du traitement des données doivent alors effacer ou corriger les données inexactes ou incomplètes.

Lorsque le responsable du traitement des données soumet une demande de « rectification », AppsFlyer supprime les données antérieures de la personne concernée et les nouvelles données sont mises à jour

Droit à l'effacement

Le droit d'effacement oblige les responsables du traitement des données à supprimer les données personnelles dans un délai d'un mois.

Les annonceurs peuvent supprimer les données collectées des personnes concernées avec une demande « d'effacement ».

GDPR_logo2.png

API de demande RGPD d'AppsFlyer

AppsFlyer prend en charge les exigences ci-dessus via son API de demande RGPD (à partir du 25 mai 2018 - les demandes reçues avant cette date ne sont pas gérées) :

  1. Demande RGPD - Effectuer l'un des types de demande ci-dessus : « accès », « portabilité », « effacement » ou « rectification ».
  2. Demande d'état - Interroger l'état actuel d'une demande RGPD
  3. Demande de découverte - Se renseigner sur la version de l'API et le format de données pris en charge
  4. Annulation - Annuler une demande RGPD pendant sa phase pending

Il appartient au responsable du traitement des données d'implémenter les modifications de l'interface graphique, afin que ses utilisateurs finaux puissent soumettre ces demandes. Notez que les demandes RGPD concernent un utilisateur à la fois.

1. Demande RGPD

Flux de demande RGPD

Tous les types de demande RGPD, « accès », « portabilité », « effacement » et « rectification » ont le même flux commun :

  1. La personne concernée (utilisateur final) soumet une demande.
  2. Le responsable du traitement des données (annonceur) construit la demande RGPD (voir ci-dessous) et l'envoie à AppsFlyer.
  3. Le processeur des données (AppsFlyer) reçoit la demande et répond aux demandes valides par « 201 OK ».
  4. Dans les prochaines 48 heures, la demande passe à l'état pending et peut toujours être annulée.
  5. Par la suite, la demande passe à l'état in_progress, et AppsFlyer envoie un postback de « changement d'état ». La demande ne peut désormais PLUS être annulée.
  6. a) AppsFlyer répond à la demande au cours des 28 prochains jours.
    En cas « d'effacement »/« rectification » - l'utilisateur final est supprimé.
    En cas de « portabilité »/« accès » - les données de l'utilisateur final peuvent être consultées sur le tableau de bord d'AppsFlyer� sous la section RGPD, ou via l'API de demande (voir ci-dessous).
    b) L'état de la demande passe à completed, et AppsFlyer envoie un postback de « changement d'état ». 

Format de la demande RGPD

Une API de demande RGPD peut être envoyée via HTTP POST au point de terminaison suivant - 

https://hq1.appsflyer.com/gdpr/opengdpr_requests?api_token=[api token]

avec les propriétés suivantes : 

Nom de la propriété Obligatoire/Optionnelle Description
subject_request_id OBLIGATOIRE Chaîne UUID v4. Elle doit être générée par le responsable du traitement au moment de la soumission de la demande à un processeur.
subject_request_type OBLIGATOIRE Valeur de chaîne représentant le type de demande RGPD. Valeurs prises en charge : « accès », « portabilité », « effacement » et « rectification »
subject_identities OBLIGATOIRE Tableau d'objets d'identité couvrant le type, la valeur et le format de l'ID de l'appareil (voir ci-dessous).  Chaque demande ne peut avoir qu'un ID d'appareil.
submitted_time OBLIGATOIRE Chaîne de date RFC 3339 représentant l'heure de la demande d'origine par la personne concernée. Notez que  tous les horodateurs sont envoyés en UTC
property_id OBLIGATOIRE Chaîne représentant l'application mobile à laquelle cette demande est étendue, par exemple com.example pour Android, id123456789 pour iOS
api_version OPTIONNELLE Chaîne de version représentant la version souhaitée de l'API de demandes RGPD
status_callback_urls  OPTIONNELLE Tableau de points de terminaison pour les callbacks d'état à envoyer aux changements d'état de demande suivants. Notez que SEULS les points de terminaison https sont pris en charge.

Une demande RGPD DOIT contenir un ou plusieurs objets d'identité utilisés pour répondre à la demande.

  1. identity_type - Valeur de chaîne OBLIGATOIRE représentant la forme de l'identité. Les types d'identité pris en charge par AppsFlyer sontios_advertising_id, android_advertising_id, fire_advertising_id et microsoft_advertising_id
  2. identity_value - Valeur de chaîne OBLIGATOIRE représentant l'identité.
  3. identity_format - Valeur de chaîne OBLIGATOIRE représentant le codage de l'identité. Le format raw est actuellement le seul format d'identité pris en charge par AppsFlyer.   

Exemple de demande RGPD d'effacement

HTTP POST 
https://hq1.appsflyer.com/gdpr/opengdpr_requests?api_token={api token] 
HTTP/1.1Host: example.processo.com
Accept: application/json
Content-Type: application/json
{  
   "subject_request_id":"a7551968-d5d6-44b2-9831-815ac9017798",
   "subject_request_type":"erasure",
   "submitted_time":"2018-10-02T15:00:00Z",
   "subject_identities":[  
      {  
         "identity_type":"android_advertising_id",
         "identity_value":"a55684fd-j661-46df-9149-f7bfd652egge",
         "identity_format":"raw"
      }
   ],
   "api_version":"0.1",
   "property_id":"com.example",
   "status_callback_urls":[  
      "https://examplecontroller.com/opengdpr_callbacks"
   ]
}
 

 

Exemple de code de demande RGPD d'effacement

Java Python Node.js C#
/* 
using the okhttp package install from maven
https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
 */

import okhttp3.*;
import java.io.IOException;

public class GdprSendRequest {
    public static void main(String[] args){

        OkHttpClient client = new OkHttpClient();
        RequestBody body = RequestBody.create(null, "" +
        "{\r\n\"subject_request_id\": \"<SUBJECT_ID>\"," +
        "\r\n\"subject_request_type\": \"erasure\"," +
        "\r\n\"submitted_time\": \"2018-11-02T15:00:00Z\"," +
        "\r\n\"subject_identities\": [\r\n" +
        "{\r\n\"identity_type\": \"android_advertising_id\"," +
        "\r\n\"identity_value\": \"<ADVERTISING_ID>\"," +
        "\r\n\"identity_format\": \"raw\"\r\n}" +
         "\r\n]," +
         "\r\n\"property_id\": \"com.example.application\"}");

        Request request = new Request.Builder()
        .url("https://hq1.appsflyer.com/gdpr/opengdpr_requests?api_token=<API_TOKEN>")
        .post(body)
        .addHeader("Content-Type", "application/json")
         .addHeader("Accept", "application/json")
        .build();

        try {
            Response response = client.newCall(request).execute();
            System.out.println(response.code());
            System.out.println(response.body().string());
            System.exit(0);
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}

2. État de la demande

Chaque demande RGPD peut être interrogée ultérieurement pour connaître son état, en spécifiant le subject_request_id. Il existe 4 types d'état pris en charge :

  1. pending - Une demande correcte a été reçue et est actuellement en file d'attente
  2. in_progress - Une demande est actuellement en cours d'exécution
  3. completed - Une demande a été satisfaite
  4. cancelled - Une demande a été annulée

Format de l'état de la demande

Une demande d'état peut être envoyée via HTTP GET au point de terminaison suivant :

https://hq1.appsflyer.com/gdpr/opengdpr_requests/[subject_request_id]?api_token=[api token]

Exemple de réponse concernant l'état

HTTP/1.1 200 OK
Content-Type: application/json
X-OpenGDPR-Processor Domain: example processor.com
X-OpenGDPR-Signature:
kiGlog3PdQx+FQmB8wYwFC1fekbJG7Dm9WdqgmXc9uKkFRSM4uPzylLi7j083461xLZ+mUloo3tpsmyIZpt5eMfgo7ejXPh6lqB4ZgCnN6+1b6Q3NoNcn/+11UOrvmDj772wvg6uIAFzsSVSjMQxRs8LAmHqFO4cF2pbuoPuK2diHOixxLj6+t97q0nZM7u3wmgkwF9EHIo3C6G1SI04/odvyY/VdMZgj3H1fLnz+X5rc42/wU4974u3iBrKgUnv0fcB4YB+L6Q3GsMbmYzuAbe0HpVA17ud/bVoyQZAkrW2yoSy1x4Ts6XKba6pLifIHf446Bubsf5r7x1kg6Eo7B8zur666NyWOYrglkOzU4IYO8ifJFRZZXazOgk7ggn9obEd78GBc3kjKKZdwaCrLx7WV5y9TMDCf+2FILOJM/MwTUy1dLZiaFHhGdzld2AjbjK1CfVzyPssch0iQYYtbR49GhumvkYl11S4oDfu0c3t/xUCZWg0hoR3XL3B7NjcrlrQinB1KbyTNZccKR0F4Lk9fDgwTVkrAg152UqPyzXxpdzXjfkDkSEgAevXQwVJWBNf18bMIEgdH2usF/XauQoyrne7rcMIWBISPgtBPj3mhcrwscjGVsxqJva8KCVCKD/4Axmo9DISib5/7A6uczJxQG2Bcrdj++vQqK2succ=
{
  "controller_id":"example_controller_id",
  "expected_completion_time":"2018-11-01T15:00:01Z",
  "subject_request_id":"a7551968-d5d6-44b2-9831-815ac9017798",
  "request_status":"pending",
  "api_version":"0.1"
}

Postbacks de l'état

Tel que décrit dans la section Flux de demande RGPD ci-dessus, lorsque l'état de la demande RGPD passe de pending à in_progress à completed, AppsFlyer envoi un postback RGPD aux points de terminaisons demandeurs, spécifiée avec la propriété status_callback_urls .

Exemple de postback d'état :

POST /opengdpr_callbacks HTTP/1.1
Host: examplecontroller.com
Content-Type: application/json
X-OpenGDPR-Processor Domain: appsflyer.com
X-OpenGDPR-Signature: kiGlog3PdQx+FQmB8wYwFC1fekbJG7Dm9WdqgmXc9uKkFRSM4uPzylLi7j083461xLZ+mUloo3tpsmyIZpt5eMfgo7ejXPh6lqB4ZgCnN6+1b6Q3NoNcn/+11UOrvmDj772wvg6uIAFzsSVSjMQxRs8LAmHqFO4cF2pbuoPuK2diHOixxLj6+t97q0nZM7u3wmgkwF9EHIo3C6G1SI04/odvyY/VdMZgj3H1fLnz+X5rc42/wU4974u3iBrKgUnv0fcB4YB+L6Q3GsMbmYzuAbe0HpVA17ud/bVoyQZAkrW2yoSy1x4Ts6XKba6pLifIHf446Bubsf5r7x1kg6Eo7B8zur666NyWOYrglkOzU4IYO8ifJFRZZXazOgk7ggn9obEd78GBc3kjKKZdwaCrLx7WV5y9TMDCf+2FILOJM/MwTUy1dLZiaFHhGdzld2AjbjK1CfVzyPssch0iQYYtbR49GhumvkYl11S4oDfu0c3t/xUCZWg0hoR3XL3B7NjcrlrQinB1KbyTNZccKR0F4Lk9fDgwTVkrAg152UqPyzXxpdzXjfkDkSEgAevXQwVJWBNf18bMIEgdH2usF/XauQoyrne7rcMIWBISPgtBPj3mhcrwscjGVsxqJva8KCVCKD/4Axmo9DISib5/7A6uczJxQG2Bcrdj++vQqK2succ=

{
"controller_id":"example controller id at the processor",
"expected_completion_time":"2018-11-01T15:00:01Z",
"status_callback_url":"https://examplecontroller.com/opengdpr_callbacks",
"Subject_request_id":"a7551968-d5d6-44b2-9831-815ac9017798",
"Request_status":"pending"
}

3. Demande de rapport

Une fois qu'une demande d'accès ou une demande de portabilité a été effectuée, vous pouvez télécharger le rapport via HTTP GET au point de terminaison suivant :

https://hq1.appsflyer.com/gdpr/download/[REQUEST_ID]?api_token=[TOKEN]

Le rapport généré est disponible pendant sept jours à compter de la date d'achèvement.

4. Demande de découverte

Pour en savoir plus sur les formats pris en charge par AppsFlyer, une demande de découverte peut être soumise via HTTP GET au point de terminaison suivant :

https://hq1.appsflyer.com/gdpr/discovery?api_token=[api token]

Exemple de réponse à une demande de découverte

HTTP/1.1 200 OK
Content-Type: application/json
{
  "api_version": "0.1",
  "supported_identities": [
    {
      "identity_type": "android_advertising_id",
      "identity_format": "raw"
    },
  ],
  "supported_subject_request_types": [
    "erasure", "access", "portability", "rectification"
  ],
  "processor_certificate": "https://exampleprocessor.com/cert.pem"
}

5. Demande d'annulation

Il est possible d'annuler une demande RGPD selon son subject_request_id, mais uniquement pendant la phase pending

Pour ce faire, envoyez un HTTP DELETE avec subject_request_id à :

https://hq1.appsflyer.com/gdpr/opengdpr_requests/[subject_request_id]?api_token=[api token]

Réponse à une demande d'annulation

Lors de la réception d'une demande d'annulation RGPD, AppsFlyer renvoie une réponse HTTP avec le code d'état 202 et plusieurs autres paramètres. Pour plus de détails, réferez-vous au chapitre « Propriétés d'une réponse à une demande d'annulation » du RGPD.

Une fois l'annulation de la demande effectuée, AppsFlyer envoie un postback avec l'état cancelled

6. API de test des demandes RGPD

Cette API AppsFlyer est une API test pour l'API des demandes RGPD d'AppsFlyer. 

Comment fonctionne l'API de test ?

L'API de test fonctionne comme suit :

1. Une fois qu'une demande RGPD a été effectuée, celle-ci passe immédiatement à l'état « Pending ». À des fins de test, l'état change toutes les 30 secondes.

2. Si un point de terminaison pour un postback d'état a été inséré dans la demande RGPD, un premier postback est envoyé directement après la demande, et deux autres postbacks d'état sont envoyées par intervalles de 30 secondes.

Point de terminaison du test de demande RGPD :

https://hq1.appsflyer.com/gdpr/stub?api_token=[api token]

Point de terminaison du test de demande d'état :

https://hq1.appsflyer.com/gdpr/stub/[request id]?api_token=[api token]

Point de terminaison du test de demande de découverte :

https://hq1.appsflyer.com/gdpr/stub/discovery?api_token=[api token]

Point de terminaison du test de demande d'annulation :

https://hq1.appsflyer.com/gdpr/stub/[request id]?api_token=[api token]

 Remarques

  • Un token d'API valide doit être inséré avec la demande.
  • Dans la propriété « property_id », l'ID de l'app doit appartenir au propriétaire du compte (en fonction du token de l'API).

Demande de Logs

Toutes les demandes RGPD soumises peuvent être consultées uniquement par les propriétaires du compte dans le tableau de bord Logs.

Pour les demandes d'accès et de portabilité terminées, il est également possible de télécharger le rapport depuis ce tableau de bord.

Pour accéder au tableau de bord Logs :

1. Rendez-vous sur le tableau de bord principal et cliquez sur votre nom d'utilisateur.

2. Cliquez sur Logs, la fenêtre suivante s'affiche :

GDPR_Table.png

 

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 1 sur 2