Overview

Branch Data Subject Request API는 일반 데이터 보호 규정 2016/679 (GDPR) 및 캘리포니아 소비자 개인 정보 보호법 (CCPA)과 같은 데이터 보호법의 두 가지 주요 구성 요소인 개인 데이터에 액세스할 수 있는 권리와 개인 데이터 삭제를 요청할 수 있는 권리(잊힐 권리라고도 함)로 고객을 서포트합니다.

해당 API를 사용하여 Branch 고객은 프로그래밍 방식으로 다음을 수행할 수 있습니다.

  • Branch가 저장한 엔드 유저 개인 데이터에 액세스합니다.
  • Branch에서 엔드 유저 개인 데이터를 삭제합니다.

🚧

이 API는 Branch 고객 전용입니다.

Branch를 사용하는 앱 또는 웹 사이트의 유저인 경우 개인 데이터에 액세스하거나 Branch에서 데이터 삭제를 요청하거나 기타 Data Subject Request 를 위해 (GDPR에 따라 개인 데이터를 제어하는) 해당 앱 또는 웹 사이트로 직접 요청해야 합니다. 그러면 Branch를 사용하는 앱과 웹 사이트는 해당 요청을 당사에 전달합니다. 앱 및 웹 사이트 파트너와 협력하여 해당 데이터 보호법에 따른 개인의 권리를 다루고자 최선을 다하고 있습니다.

🚧

요청 전용

Access to the GDPR API is by request only. Please contact our support team to gain access to this feature.

권한인증

Data Subject Request API의 호출은 각 요청과 함께 api_key 쿼리 string 파라미터를 전달해야 합니다. API 키는 유저 별로 생성되며 영구적입니다.

Learn how to retrieve your API key (a.k.a. Access Token)

Access Level

Data Subject Request API에 액세스하려면 유저에게 Sensitive Data 액세스와 App Level 읽기/편집 액세스가 있어야 합니다.

For more details on how to give a user the required access, please read Default Access Levels, Users Roles & Permissions.

써드파티 액세스

Data Subject Request API의 고유한 목적으로 인해 에이전시와 같은 써드파티는 해당 API에 액세스할 수 없습니다. 위에서 언급한 필수 access levels이 있는 에이전시가 포함됩니다.

사용량 제한

Data Subject Request API에는 다음 제한이 포함됩니다.

  • 요청당 ID 객체 제한 1,000개
  • 초당 요청 5개
  • 분당 요청 10개
  • API 액세스 시간당 요청 100개

액세스 엔드 포인트

POST https://api2.branch.io/v1/gdpr?app_id=<App-ID>
Content-type: application/json
Host: api2.branch.io

Branch Metrics에서 알려진 특정 ID와 관련된 모든 개인 데이터를 액세스합니다.

HTTP 헤더 파라미터

HTTP 헤더 파라미터

api_key / access token | REQUIRED | String

API 키 / 액세스 토큰.

쿼리 파라미터

쿼리 파라미터

app_id | REQUIRED | Long

Branch가 할당한 앱 ID이며 대시보드 -> Account Settings -> Profile 탭 -> About your App 에서 이용 가능합니다.

본문 파라미터

본문 파라미터

subject_request_type | REQUIRED | String

전송되는 포스트(Post) 요청의 유형입니다. 해당 경우 “access” Branch가 할당한 앱 ID이며 대시보드 -> Account Settings -> Profile 탭 -> About your App 에서 이용 가능합니다.

subject_identities | REQUIRED | String

아래 JSON 형식의 디바이스 ID가 포함된 배열입니다.

identity_type | REQUIRED | String

전송되는 ID 유형입니다. “BROWSER_ID”,“DEVICE_ID”, “USER_ID” 또는 “DEVELOPER_ID”일 수 있습니다.

BROWSER_ID | Either of one identity_type mandatory | String

browser_fingerprint_id와 같은 브라우저 유저 식별자

DEVICE_ID | Either of one identity_type mandatory | String

The device user identifier such as IDFA, IDFV, Google_advertising_id.

USER_ID | Either of one identity_type mandatory | String

앱 범위 user-id 입니다.

identity_value | REQUIRED | String

identity_type, 애플 광고 식별자 (IDFA), Google_advertising_id에 따른 값.

identity_format | NOT REQUIRED | String

“raw”로 전송됩니다. Branch는 현재 "raw"만 서포트합니다.

샘플 액세스 요청

curl -X POST 'https://api2.branch.io/v1/gdpr?app_id=<YOUR _APP_ID_HERE>'
    -H "Content-Type: application/json"
    -H "Access-Token: YOUR_ACCESS_TOKEN_HERE"
    -d '{ "subject_request_type": "access",
                  "subject_identities": [
                      {
                           "identity_type": "BROWSER_ID",
                           "identity_value": "123",
                           "identity_format": "raw"
                       }
                       {
                            "identity_type": "BROWSER_ID",
                            "identity_value": "123",
                            "identity_format": "raw"
                       }
                    ]
                 }

샘플 액세스 응답

응답 코드: 200

액세스 요청 등록 성공

{
  "request_id": "79c03c22-e8a7-4ae4-a4f6-a8349ef0016a",
  "request_status": "PENDING"
}

응답 파라미터

request_id | String

요청에 대해 생성된 UUID입니다. 나중에 요청 상태를 확인하는 데 사용할 수 있습니다.

request_status | String

다음은 요청 상태를 나타냅니다. 가능한 값:

  • "SUCCESS": 요청이 이행되었습니다.
  • “PENDING”: 올바른 요청이 수신되었으며 현재 큐에 있습니다.
  • “IN_PROGRESS”: 현재 요청을 처리 중입니다.

삭제 엔드 포인트

POST https://api2.branch.io/v1/gdpr/status
Content-type: application/json
Host: api2.branch.io

Branch Metrics에서 알려진 특정 ID와 관련된 모든 개인 데이터를 삭제합니다.

HTTP 헤더 파라미터

HTTP 헤더 파라미터

iapi_key / access token | REQUIRED | String

API 키 / 액세스 토큰.

쿼리 파라미터

쿼리 파라미터

iapp_id | REQUIRED | Long

Branch가 할당한 앱 ID이며 대시보드 -> Account Settings -> Profile 탭 -> About your App 에서 이용 가능합니다.

본문 파라미터

본문 파라미터

subject_request_type | REQUIRED | String

전송되는 포스트(Post) 요청의 유형입니다. 이 경우에는 “삭제

subject_identities | REQUIRED | String

아래 JSON 형식의 디바이스 ID가 포함된 배열입니다.

identity_type | REQUIRED | String

전송되는 ID 유형입니다. “BROWSER_ID”,“DEVICE_ID”, “USER_ID” 또는 “DEVELOPER_ID”일 수 있습니다.

BROWSER_ID | Either of one identity_type mandatory | String

browser_fingerprint_id와 같은 브라우저 유저 식별자

DEVICE_ID | Either of one identity_type mandatory | String

The device user identifier such as IDFA, IDFV, Google_advertising_id.

USER_ID | Either of one identity_type mandatory | String

앱 범위 user-id 입니다.

identity_value | REQUIRED | String

identity_type, 애플 광고 식별자 (IDFA), Google_advertising_id에 따른 값.

identity_format | NOT REQUIRED | String

“raw”로 전송됩니다. Branch는 현재 "raw"만 서포트합니다.

샘플 삭제 요청

curl -X POST 'https://api2.branch.io/v1/gdpr?app_id=<YOUR _APP_ID_HERE>'
    -H "Content-Type: application/json"
    -H "Access-Token: YOUR_ACCESS_TOKEN_HERE"
    -d '{ "subject_request_type": "erasure",
                   "subject_identities": [
                      {
                           "identity_type": "BROWSER_ID",
                           "identity_value": "123",
                           "identity_format": "raw"
                       }
                       {
                             "identity_type": "USER_ID",
                             "identity_value": "ABC123",
                             "identity_format": "raw"
                       }
                    ]
                 }

샘플 삭제 응답

응답 코드: 200
삭제 요청 등록 성공

{
  "request_id": "79c03c22-e8a7-4ae4-a4f6-a8349ef0016a",
  "request_status": "PENDING"
}

응답 파라미터

request_id | String

요청에 대해 생성된 UUID입니다. 나중에 요청 상태를 확인하는 데 사용할 수 있습니다.

request_status | String

다음과 같은 요청 상태를 나타냅니다. "SUCCESS":
요청이 이행되었습니다.
“PENDING”: 올바른 요청이 수신되었으며 현재 큐에 있습니다.
“IN_PROGRESS”: 현재 요청을 처리 중입니다.

다운로드 / 상태 요청

액세스/삭제 포스트(POST) 요청에서 생성된 특정 request_id에 대한 현재 요청 상태를 가져옵니다.

HTTP 헤더 파라미터

HTTP 헤더 파라미터

api_key / access token | REQUIRED | String

API 키 / 액세스 토큰.

쿼리 파라미터

쿼리 파라미터

app_id | REQUIRED | Long

Branch가 할당한 앱 ID이며 대시보드 -> Account Settings -> Profile 탭 -> About your App 에서 이용 가능합니다.

본문 파라미터

본문 파라미터

request_id | String

요청에 대해 생성된 UUID입니다. 나중에 요청 상태를 확인하는 데 사용할 수 있습니다.

샘플 다운로드 / 상태 요청

curl -X POST 'https://api2.branch.io/v1/gdpr/status?app_id=<YOUR _APP_ID_HERE>'
-H "Content-Type: application/json"
-H "Access-Token: YOUR_ACCESS_TOKEN_HERE"
-d '{"request_id": "<ID>"}'

샘플 상태 응답

응답 코드: 200
상태 요청 등록 성공

{
  "request_id": "79c03c22-e8a7-4ae4-a4f6-a8349ef0016a",
  "request_status": "SUCCESS"
}

응답 파라미터

request_id | String

요청에 대해 생성된 UUID입니다. 나중에 요청 상태를 확인하는 데 사용할 수 있습니다.

request_status | String

다음과 같은 요청 상태를 나타냅니다. "SUCCESS":
요청이 이행되었습니다.
“PENDING”: 올바른 요청이 수신되었으며 현재 큐에 있습니다.
“IN_PROGRESS”: 현재 요청을 처리 중입니다.

샘플 다운로드 응답

응답 코드: 200
상태 요청 등록 성공

{
  "request_id": "79c03c22-e8a7-4ae4-a4f6-a8349ef0016a",
  "request_status": "COMPLETED",
  "export_url": "presigned_s3_link"
}

응답 파라미터

request_id | String

요청에 대해 생성된 UUID입니다. 나중에 요청 상태를 확인하는 데 사용할 수 있습니다.

request_status | String

다음과 같은 요청 상태를 나타냅니다. "SUCCESS":
요청이 이행되었습니다.
“PENDING”: 올바른 요청이 수신되었으며 현재 큐에 있습니다.
“IN_PROGRESS”: 현재 요청을 처리 중입니다.

export_url | String

요청된 ID 객체가 포함된 CSV 파일을 다운로드하기 위해 미리 할당된 s3 URL 링크입니다.

부록

오류 코드

1. RC 400 잘못된 요청

  • 누락되거나 유효하지 않은 Branch 키:
{
    "error": {
        "message": "Invalid or missing app id, Branch key, or secret",
        "code": 400
    }
}
  • 잘못된 JSON:
{
    "error": {
        "code": 400,
        "message": "Invalid JSON"
    }
}
  • 필수 필드 누락/잘못된 형식 유형:
{
    "error": {
        "subject_request_type": "not a valid option",
        "submitted_time": "wrong field type",
        "subject_identities": [
            "identity_type": "not a valid option",
            "identity_value": "wrong field type",
            "identity_format": "not a valid option"
        ]
    }
}

2. RC 429: 사용량 제한에 도달했습니다.

{
    "error": {
        "code": 429,
        "message": "Rate limit reached."
    }
}

3. RC 404: 찾을 수 없음/잘못된 API URL

<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>openresty/1.13.6.2</center>
</body>
</html>