App Automation API를 사용하여 앱을 대규모로 프로그래매틱 방식으로 생성, 업데이트 및 관리할 수 있습니다. 이 API를 사용하면 템플릿 앱의 설정을 복제하여 앱 설정을 자동화할 수 있어, 여러 애플리케이션을 관리할 때 반복해서 수동으로 구성할 필요가 없습니다.
시작에 앞서
시작하기 전에 알아야 할 사항은 다음과 같습니다.
가용성
- App Automation API는 해당 기능이 활성화된 계정에서 이용 가능합니다. 액세스 관련 내용은 담당 테크니컬 어카운트 매니저에게 문의하시기 바랍니다.
- 이 API를 사용하려면 계정에서 템플릿 앱 을 구성해야 합니다. 담당 테크니컬 어카운트 매니저가 이 과정에 도움을 드릴 수 있습니다.
요구 사항
- Adjust에서의 관리자 또는 편집자 권한이 필요합니다.
- 유효한 Adjust API 토큰. 자세한 내용은 인증 가이드를 참조하시기 바랍니다.
- 계정에 구성된 템플릿 앱 토큰. 이 앱은 신규 또는 기존 앱에 설정을 복사하는 소스 역할을 합니다.
기본 URL
모든 API 요청은 다음으로 전송되어야 합니다.
https://automate.adjust.com/app-automation인증
App Automation API에 액세스하려면 Authorization 헤더(베어러 토큰)를 통해 Adjust API 토큰을 제공해야 합니다.
Single Sign-On (SSO)를 활성화한 경우, Adjust 담당자에게 연락하거나 support@adjust.com 으로 이메일을 보내 API를 찾는 데 도움을 받으시기 바랍니다.
비 SSO 계정의 경우, API는 사용자의 프로필 에서 확인하실 수 있습니다. Adjust API 토큰을 확인하려면 다음 단계를 따르시기 바랍니다.
- 계정(사용자) 아이콘을 선택합니다.
- 계정 설정 을 선택합니다.
- 내 프로필 탭을 선택합니다.
- API 토큰 은 사용자 세부 사항 과 함께 표시됩니다. 시스템 클립보드에 토큰을 복사하기 위해 복사를 선택합니다.
Adjust API 토큰 재설정
Adjust API 토큰은 언제든지 재설정할 수 있습니다. 재설정하면 이전 토큰이 무효화됩니다. 무효화된 토큰에 대한 요청은 Adjust에 의해 거부되므로 해당 토큰이 사용되는 모든 곳에서 토큰을 업데이트해야 합니다.
Adjust API 토큰 재설정:
- 계정(사용자) 아이콘을 선택합니다.
- 계정 설정 을 선택합니다.
- 내 프로필 탭을 선택합니다.
- API 토큰 은 사용자 세부 사항 과 함께 표시됩니다.
- API 토큰 재설정 을 선택합니다.
- 모달에 계정 비밀번호를 입력한 후 API 토큰 재설정을 위해 재설정 을 선택합니다. 화면 우측 상단에 확인 메시지가 나타납니다.
- 시스템 클립보드에 API 토큰 을 복사하기 위해 복사를 선택합니다.
활용법
App Automation API는 다수의 애플리케이션을 관리하는 경우에 가장 유용합니다. 각각의 새로운 앱을 수동으로 설정하면 상당한 간접 비용이 발생합니다. 이 API를 사용하면 다음과 같은 효과를 통해 간접 비용을 최소화할 수 있습니다.
- 대규모 앱 생성 : 템플릿 앱의 설정을 복제하여 단 한 번의 API 요청으로 새로운 앱을 생성할 수 있습니다. 모든 파트너 연동, 이벤트, 어트리뷰션 설정 및 기타 구성은 자동으로 복사됩니다.
- 기존 앱 업데이트 : 템플릿 앱을 업데이트하고 마이그레이션을 트리거하여 여러 앱에 설정 변경 사항을 적용할 수 있습니다.
- 프로그래매틱 방식으로 이벤트 관리 : 대시보드를 사용하지 않고도 단일 앱 또는 여러 앱에서 이벤트를 생성하고 업데이트할 수 있습니다.
- SDK 서명 구성 : Android 앱에 대한 인증서 핑거프린트를 자동으로 설정하고 서명 적용을 관리합니다.
- 작업 상태 추적 : 설정 마이그레이션을 처리하는 백그라운드 작업의 진행 상황을 모니터링합니다.
작동 방식
App Automation API는 템플릿 앱 접근 방식을 사용합니다.
-
템플릿 앱 설정 : 테크니컬 어카운트 매니저와 상의하여 계정에서 템플릿 앱을 구성합니다. 이 앱은 다른 앱에 적용하고자 하는 모든 설정 항목을 포함하고 있습니다.
-
앱 생성 또는 업데이트 : 앱 상세 정보와 함께 POST 요청을
/app엔드포인트로 전송합니다. API는 다음을 수행합니다.- 새로운 앱이 존재하지 않는 경우 새로 생성
- 템플릿 앱에서 설정을 복사하기 위해 백그라운드 작업을 대기열에 추가
- 작업 상태 추적을 위해 티켓 토큰 반환
-
진행 상황 추적 : 티켓 토큰을 사용하여
/status엔드포인트를 통해 설정 마이그레이션 상태를 확인합니다. -
설정 재정의 :
override_settings또는channel_setup에 앱별 값을 전달하여 템플릿의 설정을 대부분 유지하면서 개별 앱을 사용자 지정합니다.
사용 가능한 엔드포인트
| 엔드포인트 | 설명 |
|---|---|
POST /app | 템플릿 앱 설정을 사용하여 새 앱을 생성하거나 기존 앱 업데이트 |
POST /app/{app_token} | 앱 이름, 스토어 ID 또는 번들 ID 업데이트 |
GET /app | 스토어 ID와 플랫폼으로 앱 상세 정보 조회 |
GET /app/{app_token} | 앱 토큰으로 앱 상세 정보 조회 |
GET /app/{app_token}/settings | 섹션별 상세 앱 설정 조회 |
GET /apps/list | 계정의 모든 앱 나열 |
GET /status/{ticket_token} | 백그라운드 작업 상태 확인 |
POST /events | 1개 이상의 앱에 대한 이벤트 생성 또는 업데이트 |
GET /settings/csv | CSV 형식으로 앱 설정 내보내기 |
POST /app/{app_token}/secrets/revoke_outdated | 오래된 SDK 시크릿 취소 |
POST /app/{app_token}/secrets/{secret_id}/revoke | 특정 SDK 시크릿 취소 |
POST /app/{app_token}/secrets/{secret_id}/reactivate | 취소된 SDK 시크릿 재활성화 |
앱 섹션
앱을 생성하거나 업데이트할 때, 템플릿 앱에서 마이그레이션할 설정 섹션을 지정할 수 있습니다. 섹션을 지정하지 않으면 기본 설정에 따라 모든 섹션이 마이그레이션됩니다.
| 섹션 | 설명 |
|---|---|
app_info | 기본 앱 정보 |
attribution_privacy_model | 어트리뷰션 프라이버시 모델 설정(iOS만 해당) |
attribution_settings | 클릭 및 노출 어트리뷰션 윈도우와 리어트리뷰션 설정 |
callbacks | 서버 콜백 URL |
csv_upload_settings | 클라우드 스토리지 업로드 구성 |
events | 이벤트 정의 및 설정 |
external_data_forwarding | 매출 및 파라미터 포워딩 설정 |
fraud_prevention_settings | 해킹 예방 설정 |
partners | 파트너 모듈 구성 및 이벤트 링크 |
purchase_verification | 결제 검증 설정 |
signature | Android 인증서 핑거프린트 및 서명 적용 |
sdk_secrets | SDK 시크릿 구성 |
skad_network | SKAdNetwork v3 설정(iOS만 해당) |
skad_network_v4 | SKAdNetwork v4 설정(iOS만 해당) |
preview_link_settings | 소셜 공유 미리보기 구성 |
s2s | 서버 간 보안 설정 |
trackers | 트래커(링크) 구성 |
빠른 시작
1. 첫 번째 앱 생성
템플릿을 기반으로 새 앱을 생성하기 위해 POST 요청을 전송합니다.
curl --location 'https://automate.adjust.com/app-automation/app' \--header 'Authorization: Bearer {your-adjust-api-token}' \--header 'Content-Type: application/json' \--data '{ "name": "My New App", "bundle_id": "com.example.myapp", "store_id": "com.example.myapp", "platform": "android"}'{ "adjust_app_token": "abc123xyz", "name": "My New App", "bundle_id": "com.example.myapp", "store_id": "com.example.myapp", "ticket_token": "e5b07bb3-b5f3-40a8-8a2d-197d30b6beff", "sk_app_id": null}2. 마이그레이션 상태 확인
응답에서 ticket_token을 사용하여 상태를 확인합니다.
curl --location 'https://automate.adjust.com/app-automation/status/e5b07bb3-b5f3-40a8-8a2d-197d30b6beff' \--header 'Authorization: Bearer {your-adjust-api-token}'{ "status": "completed", "kind": "migration", "result": { "events": { "successes": ["purchase", "registration"], "failures": [] }, "partners": { "successes": ["facebook", "google"], "failures": [] } }}3. 앱 상세 정보 조회
마이그레이션이 완료되면 앱의 상세 정보를 조회합니다.
curl --location 'https://automate.adjust.com/app-automation/app/abc123xyz' \--header 'Authorization: Bearer {your-adjust-api-token}'{ "name": "My New App", "store_id": "com.example.myapp", "platform": "android", "adjust_app_token": "abc123xyz", "additional_info": { "overrides": {} }, "channel_setup": { "facebook": { "app_id": "123456789" } }}오류 처리
API는 표준 HTTP 상태 코드와 JSON 오류 응답을 반환합니다.
| 상태 코드 | 설명 |
|---|---|
200 | 요청 성공 |
400 | 잘못된 요청 - 요청 파라미터 확인 |
401 | 승인 안 됨 - 유효하지 않거나 누락된 API 토큰 |
403 | 금지됨 - 이 리소스에 대한 액세스 권한 없음 |
422 | 검증 오류 - 요청 본문에 유효하지 않은 데이터가 포함됨 |
500 | Internal server error |
{ "error_code": "validation_error", "error_desc": "Human-readable error description", "error_desc_details": [ { "loc": ["body", "platform"], "msg": "field required" } ]}오류 코드
| 오류 코드 | 설명 |
|---|---|
request_error | 일반 요청 오류 |
auth_error | 인증 실패 |
validation_error | 요청 검증 실패 |
service_error | 내부 서버 오류 |