이 페이지에서

데이터 주체 액세스 요청 API

지역

기본 URL은 프로젝트의 데이터 상주 위치에 따라 달라집니다. 이 페이지의 모든 예제에서 프로젝트가 Amplitude의 EU 데이터 센터를 사용하지 않는 한 기본 URL을 사용하십시오. 이 경우 이 표의 EU 기본 URL을 사용하십시오.

요청은 https://amplitude.com(기본값) 또는 https://analytics.eu.amplitude.com (EU)로 이동합니다. https://analytics.amplitude.com 호스트 이름은 분석 웹 앱(브라우저 UI)이며 이러한 요청에 대한 API 기본 URL이 아닙니다.

고려 사항

  • 사용자가 데이터를 보유하고 있는 앱 당 매월 약 하나의 파일을 예상합니다.
  • 각 다운로드 URL에 액세스하려면 동일한 인증 자격 증명이 필요합니다.
  • API는 비동기적이므로 요청 상태를 확인하려면 폴링을 해야 합니다. 적절한 폴링 속도를 선택하려면 속도 제한 섹션을 참조하십시오.
  • 이 DSAR API는 Amplitude 플랫폼의 데이터만 반환합니다. 여기에는 Statsig 플랫폼의 데이터가 포함되지 않습니다.

이 API는 사용자와 관련된 행동 데이터만 반환합니다. AI 피드백 소스 아래에서 지원 및 서비스 소스(예: Zendesk 또는 Intercom)를 연결하고 이메일 매핑을 활성화한 경우, AI 피드백 탭의 사용자 프로필에서 사용자와 관련된 데이터를 찾으십시오. 사용자 프로필을 열려면 사용자 -> 사용자 프로필 페이지에서 사용자를 검색하십시오.

비동기식 작업

데이터 볼륨을 지원하기 위해 이 API는 비동기식으로 작동합니다. 사용자 데이터를 가져오는 과정은 다음 세 단계로 이루어집니다.

  1. POST 요청을 하면 requestId이 반환됩니다.
  2. requestId을(를) 사용하여 GET 요청을 보내 작업 상태를 확인하십시오.
  3. 작업이 완료되면 GET 요청을 실행하여 데이터 파일을 가져올 URL 목록을 가져옵니다.

출력

각 파일은 gzip으로 압축되며 내용은 다음 규칙을 준수합니다.

  • 이벤트당 한 줄
  • 각 줄은 JSON 객체입니다.
  • 순서 보장 없음

출력 예제

json
{"amplitude_id":123456789,"app":12345,"event_time":"2020-02-15 01:00:00.123456","event_type":"first_event","server_upload_time":"2020-02-18 01:00:00.234567"}
{"amplitude_id":123456789,"app":12345,"event_time":"2020-02-15 01:00:11.345678","event_type":"second_event","server_upload_time":"2020-02-18 01:00:11.456789"}
{"amplitude_id":123456789,"app":12345,"event_time":"2020-02-15 01:02:00.123456","event_type":"third_event","server_upload_time":"2020-02-18 01:02:00.234567"}

속도 제한

모든 DSAR 엔드포인트는 시간당 14.4K "비용"의 예산을 공유합니다. POST 요청의 비용은 8이고 GET 요청의 비용은 1입니다. 이 횟수를 초과하는 요청은 429 응답 코드를 받습니다.

각 POST에 대해 사용자가 이벤트를 처리할 프로젝트당 매월 하나의 출력 파일이 제공될 것으로 예상됩니다.

예를 들어 두 개의 프로젝트에 데이터를 포함한 사용자에 대해 13개월 분량의 데이터를 가져오는 경우 약 26개의 파일이 생성될 것으로 예상됩니다.

시간당 40명의 사용자에 대한 데이터를 가져오려면 요청당 14400 / 40 = 360 비용을 지출해야 합니다. 출력 파일에 대해 52개의 GET(계산된 양의 두 배)과 초기 POST에 대해 8개의 POST를 보수적으로 할당하면 요청 상태를 360 - 8 - 52 = 300회 폴링할 수 있습니다.

결과에 대한 3일 SLA(4,320분)를 고려할 때 이를 통해 3일 동안 4320 / 300 ~= 15분마다 상태를 확인할 수 있습니다. 실용적인 사용법은 20분마다 실행되며 20개의 새로운 요청을 게시하고 모든 미해결 요청의 상태를 확인하는 서비스일 수 있습니다.

서비스 수준 계약

  • 요청 작업은 3일 첫 사용 후 완료됩니다.
  • 요청 결과는 2일 후에 만료됩니다.
  • 매달 10만 개 이상의 이벤트를 가진 사용자는 지원되지 않습니다.

클라이언트 구현 예제

python
base_url = 'https://amplitude.com/api/2/dsar/requests'
payload = {
  "amplitudeId": AMPLITUDE_ID,
  "startDate": "2019-03-01",
  "endDate": "2020-04-01"
}
headers = {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
}
auth = HTTPBasicAuth(API_KEY, SECRET_KEY)
r = requests.post(base_url, headers=headers, auth=auth, data=payload)
request_id = r.json().get('requestId')
time.sleep(POLL_DELAY)
while (True):
    r = requests.get(f'{base_url}/{request_id}', auth=auth, headers=headers)
    response = r.json()
    if response.get('status') == 'failed':
        sys.exit(1)
    if response.get('status') == 'done':
        break
    time.sleep(POLL_INTERVAL)
for url in response.get('urls'):
    r = requests.get(url, headers=headers, auth=auth, allow_redirects=True)
    index = url.split('/')[-1]
    filename = f'{AMPLITUDE_ID}-{index}.gz'
    with open(f'{OUTPUT_DIR}/{filename}','wb') as f:
        f.write(r.content)

데이터 요청 생성

curl --location --request POST 'https://amplitude.com/api/2/dsar/requests' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
-u '{org-api-key}:{org-secret-key}' \
--data-raw '{
"userId": "12345",
"startDate": "2020-04-24",
"endDate": "2022-02-20"
}'

요청 본문

응답

호출이 성공하면 202 Accepted 응답과 requestId을(를) 반환합니다. requestId을(를) 사용하여 작업 상태를 폴링합니다.

json
{
  "requestId": 53367
}

요청 상태 확인

데이터 요청 작업을 폴링하여 해당 상태를 확인합니다.

curl --location --request GET 'https://amplitude.com/api/2/dsar/requests/{request-id}' \
--header 'Accept: application/json' \
-u '{org-api-key}:{org-secret-key}'

경로 변수

응답

출력 파일 가져오기

반환된 출력 파일을 다운로드합니다.

다운로드 링크는 2일 동안 유효합니다. API 요청을 전송하는 데 사용되는 대부분의 클라이언트는 S3 링크에서 데이터를 자동으로 다운로드합니다. API 클라이언트가 링크에서 파일을 자동으로 다운로드하지 않는 경우 사용자 이름으로 조직 API 키를, 암호로 조직 암호 키를 사용하여 수동으로 파일에 액세스하십시오.

curl --location --request GET 'https://amplitude.com/api/2/dsar/requests/:request_id/outputs/:output_id' \
-u '{org-api-key}:{org-secret-key}'

경로 변수

이 내용이 도움이 되었나요?