Android 앱 업그레이드 전략 API 문서
API 설명: 클라이언트의 버전 번호에 기반하여 해당 업그레이드 전략을 가져옵니다
📮요청 정보
요청 URL
POST https://api.upgrade.toolsetlink.com/v1/apk/upgrade
요청 헤더
| 매개변수 이름 | 필수 여부 | 유형 | 예제 값 | 설명 |
|---|---|---|---|---|
| X-Timestamp | 예 | string | 2025-02-17T10:34:55+08:00 | RFC3339 형식의 요청 시간 |
| X-Nonce | 예 | string | fc812cc0b9b51e8c | 고유한 랜덤 문자열 (최소 16자) |
| X-AccessKey | 예 | string | mui2W50H1j-OC4xD6PgQag | AccessKey 비밀 키 |
| X-Signature | 예 | string | 3603437250c2df51fc46426ac79d8995 | 요청 서명 서명 규칙 |
| Content-Type | 예 | string | application/json |
🔐 재생 공격 방지 메커니즘
- 서버는 서버 시간과의 타임스탬프 차이가 ±5분을 초과하지 않는지 확인합니다
- 서버는 Nonce 값이 이미 존재하는지 확인합니다 (중복 요청 방지)
요청 본문
json
{
"apkKey": "isVZBUvkFhv6oHxk_X-D0Q",
"versionCode": 1,
"appointVersionCode": 0,
"devModelKey": "stv1",
"devKey": "LOYlLXNy7w",
"patchAlgo": 0
}요청 본문 매개변수 설명
| 매개변수 이름 | 필수 여부 | 유형 | 예제 값 | 설명 |
|---|---|---|---|---|
| apkKey | 예 | string | isVZBUvkFhv6oHxk_X-D0Q | Android 앱 고유 식별자 |
| versionCode | 예 | int | 1 | 클라이언트 버전 코드 |
| appointVersionCode | 아니오 | int | 0 | 예상 업그레이드 버전 코드, 0 또는 전달되지 않으면 최신 버전 요청 의미 |
| devModelKey | 아니오 | string | stv1 | 기기 모델 고유 식별자 |
| devKey | 아니오 | string | LOYlLXNy7w | 기기 고유 식별자 (mac을 고유 식별자로 사용할 수 있음) |
| patchAlgo | 아니오 | int | 0 | 업그레이드 알고리즘: 0: 전체 업그레이드; 1: HDiffPatch 알고리즘 |
📮응답 정보
성공 응답 본문
json
{
"code": 200,
"msg": "새 버전 획득",
"data": {
"apkKey": "isVZBUvkFhv6oHxk_X-D0Q",
"packageName": "com.a.c",
"versionName": "v2",
"versionCode": 2,
"urlPath": "http://file.com/2.apk",
"urlFileSize": 7213,
"urlFileMd5": "36ee2a36b5d20d1008507d253423eea7",
"patchAlgo": 0,
"patchUrlPath": "http://file.com/1-2.patch",
"patchUrlFileSize": 203,
"patchUrlFileMd5": "36ee2a36b5d20d1008507d253423eea7",
"upgradeType": 1,
"promptUpgradeContent": "알림 내용"
}
}응답 본문 매개변수 설명
| 매개변수 이름 | 유형 | 예제 값 | 설명 |
|---|---|---|---|
| apkKey | string | isVZBUvkFhv6oHxk_X-D0Q | Android 앱 고유 식별자 |
| packageName | string | com.a.c | Android 앱 패키지 이름 |
| versionName | string | v1 | 버전 이름 |
| versionCode | int | 1 | 버전 코드 |
| urlPath | string | http://file.com/2.apk | 파일 다운로드 주소 |
| urlFileSize | int | 7213 | 파일 크기 (바이트) |
| urlFileMd5 | string | 36ee2a36b5d20d1008507d253423eea7 | 파일 MD5 |
| patchAlgo | int | 0 | 업그레이드 알고리즘: 0: 전체 업그레이드; 1: HDiffPatch 알고리즘 |
| patchUrlPath | string | http://file.com/1-2.patch | 패치 파일 다운로드 주소 |
| patchUrlFileSize | int | 7213 | 패치 파일 크기 (바이트) |
| patchUrlFileMd5 | string | 36ee2a36b5d20d1008507d253423eea7 | 패치 파일 MD5 |
| upgradeType | int | 1 | 업그레이드 방법: 1: 알림 업그레이드; 2: 무음 업그레이드; 3: 강제 업그레이드 |
| promptUpgradeContent | string | 알림 내용 | 알림 업그레이드 설명 내용 |
일반적인 오류 응답 본문
json
{
"code": 404001,
"msg": "사용 가능한 버전을 획득할 수 없음",
"docs": "해당 앱 버전을 찾을 수 없습니다. 시스템에 올바르게 생성되었는지 확인하세요. 문서를 참조하세요: https://upgrade.toolsetlink.com/ko/upgrade/recommend/apk/app-version.html",
"data": null
}📊상태 코드
| HTTP 상태 코드 | code | 시나리오 설명 | 해결 방법 |
|---|---|---|---|
| 200 | 0 | 요청 성공, 이미 최신 버전 | |
| 200 | 200 | 요청 성공, 버전 업그레이드 전략 획득 | |
| 400 | 400001 | 잘못된 요청 | |
| 400 | 400002 | 매개변수 누락 | |
| 400 | 400003 | 잘못된 매개변수 | |
| 400 | 400004 | 잘못된 헤더 | |
| 400 | 400005 | 잘못된 본문 | |
| 401 | 401001 | 인증 실패 | |
| 401 | 401002 | 서명 확인 실패 | |
| 404 | 404001 | 리소스를 찾을 수 없음 | |
| 404 | 404002 | 쿼리 레코드를 찾을 수 없음 | |
| 404 | 404003 | 처리 방법을 찾을 수 없음 | |
| 404 | 404004 | 요청을 찾을 수 없음 | |
| 429 | 429001 | 애플리케이션 작업 전략 요청 흐름 제어 제한 | 현재 업그레이드 작업에 대한 요청 흐름 제어 전략이 제한에 도달했습니다. 나중에 다시 시도하세요. |
| 500 | 500001 | 서버 내부 오류 | 문의하기 연락처 |
| 500 | 500002 | 서버 내부 데이터 검증 실패 | 문의하기 연락처 |