앱 설치 시작
업로드 토큰으로 식별되는 앱 패키지 파일의 설치를 시작합니다. 서버는 패키지가 설치 가능한지 검증한 결과(installable_status)를 반환하며, 검증이 통과되면 백그라운드에서 설치를 진행합니다.
필요 권한
관리자 이상의 계정으로 이용할 수 있습니다.
HTTP 요청
POST /api/sonar/apps/start-install
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-X POST \
-d '{"token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"}' \
https://HOSTNAME/api/sonar/apps/start-install
요청 매개변수
요청 본문 매개변수
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| token | O | 문자열 | 앱 패키지 업로드 시 발급된 설치 토큰 | 36자 GUID |
| overwrite | X | 불리언 | 동일 앱이 이미 설치된 경우 덮어쓰기 여부 | 미지정 시 신규 설치만 허용 |
정상 응답
{
"installable_status": {
"is_valid": true,
"reason": null
}
}
설치 불가능하지만 덮어쓰기로 진행할 수 있는 경우(이미 설치된 앱이거나 버전이 다른 경우):
{
"installable_status": {
"is_valid": false,
"reason": "already-installed",
"app_code": "logpresso-sample-app",
"app_name": "샘플 앱",
"app_version": "1.0.0"
}
}
설치를 시작할 수 없는 경우(덮어쓰기로도 해결되지 않는 사유):
{
"installable_status": {
"is_valid": false,
"reason": "invalid-file"
},
"result": false,
"error_msg": "app installation failed to start: installable status: isValid = [false], reason = [invalid-file], appCode = [null], appFile = [/opt/logpresso/sonar/upload/sample.jar]"
}
- installable_status (객체): 설치 가능 여부 검증 결과
- is_valid (불리언): 설치 가능 여부 (
true: 설치 진행,false: 설치 불가) - reason (문자열): 설치 불가 사유.
is_valid가false인 경우에만 포함version-mismatch: 이미 설치된 앱과 버전이 다름already-installed: 이미 같은 버전이 설치되어 있음invalid-file: 잘못된 패키지 파일invalid-manifest: 잘못된 매니페스트dependency-unresolved: 의존성 해결 실패invalid-object: 앱이 포함하는 객체가 유효하지 않음inner-app: 내부 전용 앱
- app_code (문자열): 기존 설치된 앱의 코드.
reason이version-mismatch또는already-installed인 경우에만 포함 - app_name (문자열): 기존 설치된 앱의 이름.
reason이version-mismatch또는already-installed인 경우에만 포함 - app_version (문자열): 기존 설치된 앱의 버전.
reason이version-mismatch또는already-installed인 경우에만 포함
- is_valid (불리언): 설치 가능 여부 (
- result (불리언): 설치 시작 실패 시
false. 정상 시작 또는 덮어쓰기로 해결 가능한 경우에는 포함되지 않음 - error_msg (문자열): 설치 시작 실패 사유.
result가false일 때 포함
오류 응답
token이 누락되었거나 GUID 형식이 아닌 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-param-type",
"error_msg": "token should be guid type."
}
설치 세션이 만료된 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "main install session was expired : token-[a1b2c3d4-e5f6-7890-abcd-ef1234567890]"
}
이미 설치 단계가 진행된 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "main install session alreay START_INSTALL_APP : token-[a1b2c3d4-e5f6-7890-abcd-ef1234567890] app symbol-[com.logpresso.sample.app]"
}
권한이 없는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "no-permission"
}