OpenDSR API

한눈에 보기: 이 기사는 플랫폼을 사용하여 앱 사용 및 귀속을 기록하는 AppsFlyer 클라이언트, 종종 광고주 또는 앱 소유자라고 불리는 사용자를 위한 것입니다. 앱 소유자는 GDPR(유럽), CCPA(캘리포니아), LGPD(브라질), PDPA(태국) 및 PIPA(한국)와 같은 적용 가능한 데이터 보호 법률을 준수하기 위해 OpenDSR(데이터 주체 요청) API를 구현합니다.

변호사로부터의 한마디: 여기에 명시된 내용은 법적 조언이 아닙니다. 정보와 편의를 위해 제공됩니다. 귀하는 GDPR, CCPA 또는 기타 법률이 귀하에게 어떻게 적용될 수 있는지 또는 적용되지 않을 수 있는지를 정확히 판단하기 위해 법률 및 기타 전문 자문가와 긴밀히 협력해야 합니다. 사용자와 앱스플라이어간의 프라이버시 관계는 앱스플라이어 서비스 개인정보 보호 정책에 의해 관리됩니다. 본 서비스 개인 정보 보호 정책과 관련하여 질문이 있거나 데이터 보호 책임자에게 문의하려면 privacy@appsflyer.com. 일반 데이터 보호 규정(General Data Protection Regulation) 제27조에 의거하여, 앱스플라이어의 EU 내 대리인은 AppsFlyer Germany GmbH, Schönhauser Allee 180, 10119 Berlin, Germany (연락처 privacy@appsflyer.com; +49-30-166373500)입니다.

개인정보 보호 규정

본 기사에서 개인정보 보호정책에 대한 참조에는 다음 테이블에 기재한 규정이 포함됩니다.

규정 로고 설명
GDPR GDPR.png 개인정보보호 규정(GDPR)은 유럽 연합(EU) 시민의 데이터 보호 및 개인정보보호에 관한 EU 규정입니다.
CCPA CCPA.png 캘리포니아 소비자 프라이버시 보호법  
LGPD LGPD.png 브라질 일반 개인정보 보호법
PDPA 6137_Privacy_Shield_Thailand-01.png 개인 데이터 보호법

용어 프라이버시 규정, GDPR, CCPA, LGPD 및 PDPA는 본 기술자료에서 상호 교환 가능하게 사용됩니다.  

OpenDSR 이니셔티브

개인 정보 보호 규정에 따라 제출된 데이터 주체의 요청을 처리하고 관리하기 위해 앱스플라이어는 mParticle, Amplitude 및 Braze와 함께 OpenDSR 프로토콜(이전의 OpenGDPR)을 시작했습니다.

OpenDSR은 소비자 데이터의 공정하고 투명한 사용을 위해 기술 회사들 간의 협력을 지원하는 오픈 소스 프레임워크입니다. 이 프로토콜을 사용하면 공급업체가 고객 데이터를 처리하고 저장하는 여러 시스템에서 데이터 정보 보호 작업을 수행할 수 있습니다.

OpenDSR 이니셔티브에 대해 자세히 알아보세요.

정의

DSR 용어 앱스플라이어 용어 설명
데이터 주체 앱 사용자 또는 최종 사용자 데이터가 수집되는 앱 사용자
데이터 처리자 앱 소유자 또는 광고주 앱 소유자는 개인 데이터가 처리되는 목적 및 수단을 판별합니다.  
데이터 처리 수탁자 앱스플라이어 및 파트너 AppsFlyer 및 관련 파트너가 데이터 처리자를 대신해 개인 데이터를 처리합니다.

DSR 요구 사항

DSR은 데이터 처리자가 준수해야 하는 데이터 주체의 필수 권리를 자세히 규정합니다. API 목적상 이러한 권리는 요청 유형으로 변환됩니다. 아래에서 앱스플라이어가 다른 요청 유형을 처리하는 방법을 자세히 설명합니다.  

요청 유형

(권리)

GDPR 정의 앱스플라이어에서 요청 처리  
액세스
  • 요청되면, 앱 사용자는 앱 소유자가 자신의 데이터를 처리하는 시간, 이유 및 시간을 알 권리가 있습니다.
  • 앱스플라이어와 같은 제3자와 데이터를 공유하는 경우 앱 사용자는 이러한 제3자가 누구인지 알 권리가 있습니다.
  • 처리되는 데이터의 범주를 데이터 주체가 알 권리를 포함합니다.
  • 데이터 주체에게 유의미한 영향을 미치는 자동화 처리가 있는지 여부를 포함합니다.
앱 소유자는 앱 사용자의 처리된 개인 데이터의 사본을 수신합니다.
 이동성 앱 사용자에게 제공되는 모든 개인 데이터는 CSV 파일처럼 흔히 사용되는, 기계로 판독 가능한 구조화된 형식이어야 합니다. 앱 소유자는 앱 사용자의 처리된 개인 데이터의 사본을 수신합니다.
정정 데이터가 정확하지 않거나 사실이 아닌 경우 앱 사용자에게 이를 정정할 수 있도록 허용합니다. 앱 소유자는 부정확하거나 불완전한 데이터를 지우거나 정정해야 합니다.
  • 앱스플라이어는 정정 요청 이전에 기록된 앱 사용자의 데이터를 삭제합니다.
  • 이후에 수신된 데이터는 앱스플라이어에서 기록합니다.
삭제 삭제 권리에 따라 앱 소유자가 요청을 받은 날로부터 14일 이내에 개인 데이터를 제거해야 합니다. 데이터를 삭제합니다.

AppsFlyer의 GDPR 요청 API

본 절에 설명된 대로 GDPR 요청 API를 사용하여 DSR 준수를 구현합니다.  

  • GDPR 요청 GDPR 요청: 열람, 이동, 삭제 또는 정정 중 하나의 요청을 수행합니다.
  • 2. 상태 요청 GDPR 요청의 현재 상태를 조회하십시오.
  • 4. 검색 요청 지원되는 API 버전 및 데이터 형식에 대해 문의하십시오.
  • 취소 진행 중인 단계에서 GDPR 요청을 취소합니다.

앱 소유자는 앱에 UI 변경을 구현하여 앱 사용자가 요청을 제출할 수 있도록 해야 합니다. GDPR 요청은 한 번에 한 사용자만 제출할 수 있습니다.

1. GDPR 요청

GDPR 요청 과정

GDPR 요청 유형인 열람, 이동, 삭제 및 정정 과정은 모두 동일합니다.

  1. 앱 사용자는 요청을 제출합니다.
  2. 앱 소유자는 GDPR 요청을 구성하고 (아래 참조) 앱스플라이어로 전송합니다.
  3. 앱스플라이어는 요청을 수신하고 유효한 요청에 대해 "201 OK"로 응답합니다.
  4. 접근성과 휴대성을 위해: 요청이 즉시 이행됩니다.
    삭제 및 수정의 경우:
    • 다음 48시간 동안 요청이 큐에 대기되고 보류 중 상태가 됩니다. 앱 사용자는 요청을 취소할 수 있습니다.  
    • 48시간 후 요청 상태가 in_progress로 변경됩니다. 앱스플라이어가 상태 변경 포스트백을 보냅니다. 이 시점에서는 요청을 취소할 수 없습니다.
    • 앱스플라이어는 14일 이내에(아래 참고 사항 참조) 요청을 이행하고 요청 상태가 완료됨으로 업데이트됩니다. 앱스플라이어가 상태 변경 포스트백을 보냅니다.

      • 삭제 또는 정정의 경우, 앱 사용자의 데이터가 삭제됩니다.
      • 이식성 또는 액세스의 경우, 앱 사용자의 데이터는 GDPR 에 따라 앱스플라이어 대시보드 또는 요청 API(아래 참조)를 통해 액세스할 수 있습니다.

      참고: 이 10일 기간은 앱 소유자가 요청을 제출할 때 시작됩니다. 48시간 후, 요청 상태가 진행 중으로 변경되며 추가 8일 이내에 완료되어 총 10일이 소요됩니다.

GDPR 요청 형식

HTTP POST를 통해 GDPR 요청 API를 다음 엔드포인트로 제출할 수 있습니다.

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests

API 권한 부여의 경우 Pull API와 동일한 V2 API 토큰을 사용합니다. 관리자는 대시보드의 API 토큰 페이지에서 토큰을 검색할 수 있습니다. 요청 헤더에 토큰을 다음과 같이 추가하세요:

파라미터

속성 이름 필수 설명
subject_request_id UUID v4 문자열입니다. 데이터 처리 수탁자에게 요청을 제출할 때 데이터 처리자가 생성합니다. 요청의 상태를 체크하고 요청을 업데이트 또는 취소하기 위해 사용할 수 있습니다.
subject_request_type GDPR 요청 유형을 나타내는 문자열 값입니다. 지원 값:
  • erasure
  • portability
  • 액세스
  • rectification
subject_identities
  • 요청자의 신원을 정의하는 ID 오브젝트의 배열(아래 참조).
  • 각 요청은 하나의 주체만 포함할 수 있습니다.
submitted_time
  • 데이터 주체가 최초로 요청한 시간에 대한 RFC 3339 날짜 문자열
  • UTC의 타임 스탬프
property_id

이 요청을 시도한 모바일 앱을 나타내는 문자열입니다.

:

  • iOS: id123456789 
  • 안드로이드: com.example, com.publishers.name  
  • 스토어 외 안드로이드: com.publisher.name-channel
    일러두기 일부 경우에는 앱 소유자가 Android Google Play 이름을 사용하여 스토어 외 어트리뷰션을 기록하는 경우도 있습니다. 이러한 경우 대시보드에 표시되는 대로 일반 앱 이름을 사용하십시오.
api_version 아니요 GDPR 요청 API의 알맞은 버전을 나타내는 버전 문자열
status_callback_urls 아니요, 하지만 추천합니다
  • 다음 요청 상태 변경으로 보낼 상태 콜백에 대한 최대 3개의 엔드포인트 배열입니다.
  • HTTPS 엔드포인트만 지원됩니다.
  • 잘못된 URL은 거부됩니다.
플랫폼

 
아니요 가치는 지원되는 DSR 플랫폼 중 하나입니다:
android, ios, web, windowsphone

CTV, PC 또는 콘솔 플랫폼 요청의 경우 다음 플랫폼 중 하나를 포함합니다.  

 nativepcplaystationrokusteamwebos
vidaa,tizensmartcastchatgptbattlenet
questswitchxboxepic

Subject_identities 오브젝트

오브젝트 유형 필수 설명
identity_type
  • 다음 플랫폼의 문자열 형식의 ID 유형은 다음 중 하나입니다: 
    • ios_advertising_id
    • android_advertising_id
    • fire_advertising_id
    • microsoft_advertising_id
    • appsflyer_id
    • customer_user_id(CUID) 
  • 다음과 같은 플랫폼에 대해서만:  
    • appsflyer_id 
    • customer_user_id(CUID)
  • 예: android_advertising_id

    중요!

    OpenDSR API를 통해 CUID를 사용하려면, 인앱 이벤트에서 CUID를 /와 함께 전송해야 합니다 : 또는

identity_value
  • 형식: 문자열
  • 예시: "a7551968-d5d6-44b2-9831-815ac9017798"
identity_format
  • identity_value를 인코딩하는 데 사용되는 방법: rawrawraw만 지원됩니다.
  • 예시: "raw"

예시: GDPR 삭제 요청 

다음은 , , , 플랫폼에 대한 삭제 요청의 예입니다:

curl --location --request POST 'https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer %AuthTokenv2% \
--data-raw '{ 
 "subject_request_id":"f4e5a271-f25e-4107-b681-************",
 "subject_request_type":"erasure",
 "submitted_time":"2020-07-05T10:00:00Z",
 "platform": "android",
 "subject_identities":[ 
  { 
   "identity_type":"android_advertising_id",
   "identity_value":"55*****-****-****-************",
   "identity_format":"raw"
  }
 ],
 "api_version":"0.1",
 "property_id":"com.*********.*******.********",
 "status_callback_urls":[ 
  "https://examplecontroller.com/opengdpr_callbacks"
 ]
}'
 

플랫폼에 대한 삭제 요청의 예:

curl --location --request POST 'https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer %AuthTokenv2% \
--data-raw '
{"requester": "test@email.com",
"subject_request_id":"valid-uuid4-string",
"subject_request_type":"erasure",
"submitted_time":"2020-07-05T10:00:00Z",
"subject_identities":[ 
 { 
  "identity_type":"appsflyer_id",
  "identity_value":"valid-appsflyer-id-string",
  "identity_format":"raw"
 }
],
"api_version":"0.1",
"property_id":"app-id",
"platform": "roku",
"status_callback_urls":[ 
 "https://examplecontroller.com/opengdpr_callbacks"
 ]
}'

 

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\": \"\"," +
  "\r\n\"subject_request_type\": \"erasure\"," +
  "\r\n\"platform\": \"android\"," +
  "\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\": \"\"," +
  "\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/api/gdpr/v1/opendsr_requests/opendsr_requests")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Accept", "application/json")
  .addHeader("Authorization: Bearer", "")
  .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. 2. 상태 요청

모든 제출된 GDPR 요청에 대해서 나중에 subject_request_idsubject_request_idsubject_request_id를 지정하여 상태를 확인할 수 있습니다. 다음의 4가지 상태 유형이 있습니다.

  1. pending - 요청이 올바르게 수신되었고 현재 대기열에 있습니다.
  2. in_progress - 요청이 현재 처리 중입니다.
  3. completed - 요청이 처리되었습니다.
  4. canceled - 요청이 취소되었습니다.

상태 요청 형식

HTTP GET을 통해 상태 요청을 다음 엔드포인트로 제출할 수 있습니다.

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>

상태 응답 예시

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

상태 포스트백

위의 GDPR 요청 흐름에서 설명한 바와 같이, GDPR 요청의 상태가 pending에서 in_progress로, 그리고 completed로 변경되는 경우, 앱스플라이어는 status_callback_urls 속성으로 지정된 요청 엔드포인트로 GDPR 포스트백을 전송합니다.

상태 포스트백 예시:

POST /opengdpr_callbacks HTTP/1.1
Host: examplecontroller.com
Content-Type: application/json
X-OpenGDPR-Processor Domain: gdpr.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"
}

포스트백 유효성 검사

수신 포스트백의 유효성 검사 방법:

  1. 콜백을 수행할 수 있는 모든 프로세서 도메인의 허용 목록을 만듭니다.
  2. 헤더 값이 허용 목록에 있으면 인증서를 가져옵니다.
    • 인증서 URL은 응답 본문의 값입니다.
    • 앱스플라이어 엔드포인트에서 V2 API 토큰을 권한 부여 헤더의 베어러 토큰으로 사용하여 인증서를 직접 가져올 수도 있습니다.
  3. 라이브러리를 사용하여 인증서의 유효성을 검사하여 인증서가 다음과 같은지 확인합니다.
    1. 신뢰할 수 있는 기관에서 발급되었습니다.
    2. 헤더 값에 제공된 동일한 문자열에 발급됩니다.
    3. 만료되지 않았습니다.
  4. 인증서가 유효하다고 확인되면, 이를 사용하여 원시 요청 본문에 대한 헤더를 검증하십시오. 앱스플라이어는 SHA256 RSA를 서명 알고리즘으로 사용합니다.
  5. 상태 헤더에서 응답을 가져옵니다.
    1. 유효성이 성공하면.
    2. 401 Unauthorized401 Unauthorized 서명의 유효성을 검사하지 못하거나 프로세서 도메인이 허용 목록에 없는 경우.

3. 3. 보고서 요청

열람 요청 또는 이동 요청이 완료되고 나면 보고서를 다음 엔드포인트로 HTTP GET을 활용하여 다운로드할 수 있습니다.

https://hq1.appsflyer.com/api/gdpr/v1/download/[REQUEST_ID]

생성된 보고서는 완료 시점부터 14일간 다운로드할 수 있습니다.

4. 4. 검색 요청 프로세스

AppsFlyer가 지원하는 형식을 알아보기 위해 HTTP GET을 통한 검색 요청을 다음 엔드포인트로 제출할 수 있습니다.

https://hq1.appsflyer.com/api/gdpr/v1/discovery

검색 응답 예시

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. 5. 취소 요청

GDPR 요청은 그에 따라 취소할 수 있지만, 대기 중인 단계에서만 가능합니다.

HTTP DELETE를 제출하려면 :

https://hq1.appsflyer.com/api/gdpr/v1/opendsr_requests/<req_id>

취소 응답

GDPR 취소 요청을 받으면 AppsFlyer는 상태 코드 202 및 기타 여러 파라미터와 함께 HTTP 응답을 반환합니다. 

요청 취소가 이루어지면 AppsFlyer는 cancelled 상태의 포스트백을 전송합니다.

6. 6. GDPR 요청 테스트 API

이 AppsFlyer API는 AppsFlyer의 GDPR 요청 API용 테스트 API입니다.

어떻게 작동하나요?

이 테스트 API가 동작하는 방식은 다음과 같습니다.

1. 1. GDPR 요청이 생성되고 나면 요청이 즉시 승인 대기 상태로 변경됩니다. 테스트 목적으로 30초마다 상태가 변경됩니다.

2. 2. 상태 포스트백의 엔드포인트가 GDPR 요청에 삽입된 경우 첫 번째 포스트백이 요청 직후에 전송되고 이후 상태 포스트백 두 개가 30초 간격으로 추가 전송됩니다.

GDPR 요청 테스트 엔드포인트 POST

https://hq1.appsflyer.com/api/gdpr/v1/stub

상태 요청 테스트 엔드포인트 GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId

검색 요청 테스트 엔드포인트 GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/discovery

취소 요청 테스트 엔드포인트 DELETE

https://hq1.appsflyer.com/api/gdpr/v1/stub/:requestId

인증서 테스트 엔드포인트: GET GET

https://hq1.appsflyer.com/api/gdpr/v1/stubcertificate

열람/이식성 리포트 테스트 엔드포인트: GET GET

https://hq1.appsflyer.com/api/gdpr/v1/stub/download/:requestId

 참고

  • 유효한 V2 API 토큰은 다음과 같이 요청 헤더에 삽입되어야 합니다:
  • 'property_id' 속성에서 App ID는 계정 소유자(API 토큰에 따름)에 속해야 합니다.

7. 요청 로그

관리자는 로그 대시보드에 제출된 GDPR 요청에 액세스할 수 있습니다.

완료된 열람 및 이동 요청의 경우 이 대시보드에서 보고서를 다운로드할 수도 있습니다.

로그 대시보드 액세스 방법

  1. 화면 상단 표시줄에서 계정(이메일 주소) 아래 드롭다운 메뉴를 펼치고 로그아웃을 클릭합니다.
  2. 다음 창이 열립니다:

GDPR_Table.png

8. 8. GDPR API 리턴 코드 및 오류 메시지

이 절에서는 GDPR API HTTP 리턴 코드 및 오류 메시지를 자세히 설명합니다.  

GDPR API 리턴 코드

리턴 코드 설명
201 생성됨
202 취소 요청 수신함
400 잘못된 요청. 본문에는 다음 표에 나열된 오류 코드 및 메시지가 포함되어 있습니다.

HTTP 리턴 코드 400-잘못된 요청

리턴 코드 400을 가진 메시지에는 오류 코드 및 메시지와 함께 JSON이 포함되어 있습니다.

{ "error": { "code":400, "af_gdpr_code": "%AF error code%", "message":"%error message text%" } }

리턴 코드 400 잘못된 요청 메시지

오류 코드 오류 설명(메시지)
e111 속도 제한 초과
e211 잘못된 상태의 요청 취소 불가
e212 요청이 허용되지 않음. 식별자에 대한 삭제가 진행 중입니다.
e213 요청이 이미 존재함
e214 요청을 찾을 수 없음
e311 잘못된 요청 콘텐츠-유형
e312 잘못된 API 버전
e313 잘못된 subject_request_id
e314 잘못된 submitted_time 형식
e315 잘못된 status_callback_url 길이
e316 잘못된 status_callback_url 형식
e317 잘못된 app_id 형식
e318 잘못된 identity_type
e319 애플리케이션 플랫폼이 식별 유형과 일치하지 않음
e320 잘못된 identity_type
e321 LAT 사용자가 API를 통해 지원되지 않음
e322 잘못된 subject_request_type
e323 잘못된 subject_identities 형식
e324 잘못된 subject_identities 길이
e325 잘못된 subject_identities 값
e411 AppID가 올바르지 않거나 사용자 계정에 속하지 않음
e412 삭제 요청을 취소할 수 있는 권한이 없음
e413 요청을 볼 수 있는 권한이 없음
e511 내부 문제, 60분 기다렸다가 다시 시도하십시오. 문제가 지속되면 AppsFlyer 지원팀에 문의하십시오. support@AppsFlyer.com 

특징 및 제약 사항

  • OpenDSR API 속도 제한: 분당 350건의 요청 이 한도를 초과하면 오류가 발생하여 요청을 다시 보내야 합니다. 이 비율 제한 내에서 유지하면 하루에 최대 504,000개의 요청이 가능합니다.
  • 60일 이상 전의 요청 상태를 확인하면 "요청을 찾을 수 없음"이 반환됩니다.