Comply with GDPR using APIs

  • Pengiklan
  • Agensi
  • Jaringan Iklan
  • Pengembang

Pemenuhan GDPR

Peraturan Proteksi Data Umum (GDPR) adalah regulasi dalam hukum EU tentang proteksi data dan privasi untuk warga negara Uni Eropa. Agar sesuai dengan GDPR, brand yang mengontrol data pribadi, dalam satu bulan, diwajibkan untuk mengabulkan permintaan akses, protabilitas, rektifikasi, dan penghapusan data pribadi.

Dalam industri atribusi mobile, tidak dimungkinkan untuk mengetahui terlebih dahulu user mana yang merupakan warga negara Eropa, oleh karena itu GDPR berlaku untuk semua user mobile, baik warga negara Eropa atau bukan.

Inisiatif GDPR

Untuk menangani dan mengelola permintaan dari subjek data, agar sesuai dengan GDPR, AppsFlyer, bersama dengan mParticle, Amplitude, dan Braze, telah memulai protokol OpenGDPR.

OpenGDPR adalah framework open source terpadu, yang memfasilitasi kerja sama antara perusahaan teknologi untuk penggunaan data konsumen yang wajar dan transparan. OpenGDPR memungkinkan vendor untuk melakukan tindakan privasi data dengan mudah di berbagai sistem untuk memproses dan menyimpan data kustomer.

Anda dapat membaca inisiatif tersebut lebih lanjut di sini.

Entitas GDPR

User User aplikasi yang datanya dikumpulkan
Pengontrol Data Pemasang iklan menentukan tujuan dan sarana yang digunakan untuk memproses data pribadi.
Pemroses Data AppsFlyer dan partnernya memproses data pribadi atas nama pengontrol data

Persyaratan GDPR

GDPR merinci hak wajib dari subjek data yang harus dipenuhi pemasang iklan.

Hak

Definisi GDPR

Cara AppsFlyer membantu Pengontrol

Hak untuk Mengakses

  • Jika diminta, user memiliki hak untuk mengetahui apa, mengapa, dan berapa lama pengontrol data akan memproses data miliknya.
  • Jika data dibagikan dengan pihak ketiga (seperti AppsFlyer), user memiliki hak untuk mengetahui siapa pihak ketiga tersebut.
  • Hak untuk mengetahui kategori data yang sedang diproses.
  • Jika ada pemrosesan otomatis yang memiliki efek signifikan pada user
Saat mengirim permintaan ‘access’, pengontrol Data menerima salinan data pribadi User yang diproses.

Hak untuk Portabilitas Data

User harus menerima semua data pribadi mereka dalam format yang terstruktur, umum digunakan, dan dapat dibaca sistem – seperti file CSV.

Saat mengirim permintaan ‘portability’, pengontrol Data akan menerima salinan data pribadi User yang diproses.

Hak untuk Rektifikasi

Mengizinkan User untuk mengoreksi data jika mereka menganggapnya tidak akurat atau palsu. Pengontrol data selanjutnya harus menghapus atau memperbaiki data yang tidak akurat atau tidak lengkap.

Saat pengontrol data mengirimkan permintaan ‘rectification’, AppsFlyer akan menghapus data lama milik subjek data hingga pada saat itu, namun data yang diterima setelahnya akan diperbarui oleh AppsFlyer.

Hak untuk Menghapus

Hak untuk menghapus mengatur pengontrol agar menghapus data pribadi dalam waktu satu bulan.

Pemasang iklan dapat menghapus data yang dikumpulkan dari subjek data dengan permintaan penghapusan.

GDPR_logo2.png

GDPR Requests API AppsFlyer

Kepatuhan terhadap persyaratan GDPR yang dijelaskan dalam dokumen ini dicapai menggunakan GDPR Requests API AppsFlyer (mulai 25 Mei 2018 - permintaan yang diterima sebelum tanggal tersebut tidak ditangani):

  1. Permintaan GDPR - Melakukan salah satu dari jenis permintaan di atas: 'access', 'portability', 'erasure' atau 'rectification'.
  2. Permintaan Status - Kueri terhadap status permintaan GDPR saat ini
  3. Permintaan Keterangan: Pertanyaan tentang versi API dan Format Data yang didukung
  4. Pembatalan: Membatalkan permintaan GDPR selama fase pending

Pengontrol data bebas untuk menerapkan perubahan GUI, sehingga user akhir dapat mengajukan permintaan ini. Harap perhatikan bahwa permintaan GDPR adalah per satu user dalam satu waktu.

1. Permintaan GDPR

Alur Permintaan GDPR

Semua jenis permintaan GDPR, 'access', 'portability', 'erasure' dan 'rectification', memiliki alur umum yang sama:

  1. User  mengirimkan permintaan.
  2. Pengontrol Data (pemasang iklan) menyusun permintaan GDPR (lihat di bawah) dan mengirimkannya ke AppsFlyer.
  3. Pemroses Data (AppsFlyer) menerima permintaan dan memberi respons "201 OK" untuk permintaan yang valid.
  4. Dalam waktu 48 jam ke depan, permintaan diantrekan dengan status pending , dan masih mungkin dibatalkan.
  5. Kemudian, status permintaan berubah menjadi in_progress, dan AppsFlyer mengirimkan postback ‘status change’. Mulai tahap ini, permintaan TIDAK DAPAT dibatalkan.
  6. a) AppsFlyer akan memenuhi permintaan dalam waktu 28 hari ke depan.
    Dalam kasus ‘erasure’ / 'rectification' - data user akhir akan dihapus.
    Dalam kasus ‘portability’ / ‘access’ - data user akhir dapat diakses melalui dashboard AppsFlyer di bagian GDPR, atau via Request API (lihat di bawah).
    b) Status permintaan berubah menjadi completed, dan AppsFlyer mengirimkan postback ‘status change’. 

Format Permintaan GDPR

GDPR Request API dapat dikirimkan via HTTP POST ke endpoint berikut ini - 

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

 Tips

Token API yang digunakan adalah token API yang sama yang digunakan untuk pull API. Anda dapat memperolehnya dari dashboard di bagian API Access.

Parameter

Nama Properti Wajib / Opsional Deskripsi
subject_request_id WAJIB String UUID v4. String ini harus dihasilkan oleh pengontrol pada saat pengajuan permintaan ke Pemroses. String ini dapat digunakan untuk memeriksa status permintaan, memperbarui, atau membatalkannya.
subject_request_type WAJIB Nilai string yang mewakili jenis Permintaan GDPR.  Nilai yang didukung: "erasure", "portability", "access" dan "rectification"
subject_identities WAJIB Array Identity Objects mencakup jenis, nilai, dan format device ID (lihat di bawah).  Setiap permintaan hanya dapat memiliki satu device ID.
submitted_time WAJIB String tanggal RFC 3339 yang mewakili waktu permintaan aktual dari user. Harap perhatikan bahwa semua stempel waktu dikirim dalam zona waktu UTC
property_id WAJIB String yang mewakili aplikasi di platform  terkait, misalnya, com.example untuk Android, id123456789 untuk iOS
api_version OPSIONAL Versi string yang diinginkan dari API GDPR Requests
status_callback_urls OPSIONAL Array untuk status callback endpoint yang akan dikirim ke perubahan status permintaan. Harap perhatikan bahwa HANYA endpoint https yang didukung.

Permintaan GDPR HARUS berisi satu atau beberapa Objek Identitas yang digunakan untuk memenuhi permintaan. 

  1. identity_type - REQUIRED string value representing the form of identity. The supported Identity Types by AppsFlyer are ios_advertising_id, android_advertising_id, fire_advertising_id and microsoft_advertising_id.
  2. identity_value - nilai string WAJIB yang mewakili identitas.
  3. identity_format - REQUIRED string value representing the encoding of the identity. Currently raw is the only supported Identity Format by AppsFlyer.

Contoh Permintaan Penghapusan GDPR

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"
  ]
}
 

 

Contoh Kode Permintaan Penghapusan GDPR

JavaPythonNode.jsC#
/* 
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. Permintaan Status

Setiap permintaan GDPR yang diajukan nanti akan dapat dilihat statusnya dengan menentukan subject_request_id. Ada empat jenis status yang tersedia:

  1. pending - Permintaan valid telah diterima dan sedang dalam antrean
  2. in_progress - Permintaan sedang diproses
  3. completed - Permintaan telah diselesaikan
  4. canceled - Permintaan telah dibatalkan

Format Permintaan Status

Permintaan dapat dikirimkan via HTTP GET ke endpoint berikut:

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

Contoh Respons Status

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"
}

Postback Status

Seperti dijelaskan pada Alur Permintaan GDPR di atas, saat status permintaan GDPR berubah, dari pending menjadi in_progress kemudian completed, AppsFlyer mengirimkan postback GDPR ke endpoint yang meminta, disertai dengan properti status_callback_urls .

Contoh Status Postback:

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. Permintaan Laporan

Saat Permintaan Akses atau Permintaan Portabilitas selesai, Anda dapat mendownload laporan via HTTP GET ke endpoint berikut:

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

Laporan yang dihasilkan akan tersedia selama tujuh hari dari waktu penyelesaian.

4. Permintaan Keterangan

Untuk mempelajari format yang didukung oleh AppsFlyer, permintaan keterangan dapat dikirimkan via HTTP GET ke endpoint berikut:

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

Contoh Respons Keterangan

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. Permintaan Pembatalan

Anda dapat membatalkan permintaan GDPR, berdasarkan  subject_request_id, tetapi hanya selama fase pending . 

Untuk melakukan itu, kirimkan HTTP DELETE dengan subject_request_id ke:

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

Respons Pembatalan

Saat permintaan pembatalan GDPR diterima, AppsFlyer akan mengembalikan respons HTTP dengan kode status 202 dan beberapa parameter lainnya. Untuk informasi lebih lanjut, lihat GDPR bab "Properti Respons Pembatalan".

Setelah pembatalan permintaan diproses, AppsFlyer mengirimkan postback dengan status cancelled

6. Menguji API untuk Permintaan GDPR

API AppsFlyer ini adalah API pengujian untuk Requests GDPR API AppsFlyer. 

Bagaimana Cara Kerja API ini?

API pengujian bekerja seperti berikut:

1. Setelah permintaan GDPR dibuat, permintaan tersebut langsung mendapat status ‘Pending’. Untuk tujuan pengujian, status berubah setiap 30 detik.

2. Jika endpoint untuk postback status telah disertakan ke dalam permintaan GDPR, postback pertama akan dikirim segera setelah permintaan dan dua postback status tambahan akan dikirim dalam interval waktu 30 detik.

Endpoint Pengujian Permintaan GDPR:

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

Endpoint Pengujian Permintaan Status:

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

Endpoint Pengujian Permintaan Keterangan:

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

Endpoint Permintaan Pembatalan:

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

 Catatan

  • Token API yang valid harus disertakan bersamaan dengan permintaan API.
  • Pada properti ‘property_id’, ID App harus dimiliki oleh pemilik akun (berdasarkan token API).

Log Permintaan

Semua permintaan GDPR yang dikirimkan dapat dilihat di Log Dashboard, dan hanya dapat diakses oleh pemilik akun.

Laporan permintaan akses dan portabilitas lengkap juga dapat didownload dari dashboard ini.

Untuk mengakses Log Dashboard:

1.  Buka dashboard utama dan klik nama user.

2.  Klik Log dan jendela berikut ini muncul:

GDPR_Table.png

 

Apakah artikel ini membantu?
2 dari 4 menganggap ini berguna