앱 설치 시작

업로드 토큰으로 식별되는 앱 패키지 파일의 설치를 시작합니다. 서버는 패키지가 설치 가능한지 검증한 결과(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
요청 매개변수
요청 본문 매개변수
필수타입설명비고
tokenO문자열앱 패키지 업로드 시 발급된 설치 토큰36자 GUID
overwriteX불리언동일 앱이 이미 설치된 경우 덮어쓰기 여부미지정 시 신규 설치만 허용

정상 응답

{
  "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_validfalse인 경우에만 포함
      • version-mismatch: 이미 설치된 앱과 버전이 다름
      • already-installed: 이미 같은 버전이 설치되어 있음
      • invalid-file: 잘못된 패키지 파일
      • invalid-manifest: 잘못된 매니페스트
      • dependency-unresolved: 의존성 해결 실패
      • invalid-object: 앱이 포함하는 객체가 유효하지 않음
      • inner-app: 내부 전용 앱
    • app_code (문자열): 기존 설치된 앱의 코드. reasonversion-mismatch 또는 already-installed인 경우에만 포함
    • app_name (문자열): 기존 설치된 앱의 이름. reasonversion-mismatch 또는 already-installed인 경우에만 포함
    • app_version (문자열): 기존 설치된 앱의 버전. reasonversion-mismatch 또는 already-installed인 경우에만 포함
  • result (불리언): 설치 시작 실패 시 false. 정상 시작 또는 덮어쓰기로 해결 가능한 경우에는 포함되지 않음
  • error_msg (문자열): 설치 시작 실패 사유. resultfalse일 때 포함

오류 응답

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"
}