소스코드 분석 요청 API
POSThttps://ondemand.sparrowcloud.ai/api/v1/analysis/tool/sast
설명
소스코드 보안약점이나 품질 상 문제를 분석하기 위해 사용자가 API 요청을 전송하고 해당 요청의 상태에 대한 응답을 수신할 수 있습니다.
요청
a. 분석할 파일의 저장소 위치와 필요한 경우 해당 저장소의 권한 정보 및 b. 분석 결과를 전달 받을 콜백 URL 정보가 필요합니다. 요청을 참고하여 API를 입력하세요.
응답
분석 요청을 전송한 직후에 성공 또는 실패 응답을 받게 됩니다. 자세한 내용은 소스코드 분석 요청 API의 응답을 참고하세요.
콜백
요청에 입력한 콜백 정보에 따라 진행 상황 혹은 분석 완료 콜백을 받게 됩니다. 자세한 내용은 콜백을 참고하세요.
정보
분석 요청 과정에 대한 정보는 분석 요청과 콜백을 참고하세요.
요청
{
"resultVersion": `2`,
"callbacks": [
{
"type": [
"ANALYSIS_COMPLETE"
],
"url": "CALLBACK_URL",
"headers": [
{
"key": "HEADER_KEY",
"value": "HEADER_VALUE"
}
]
}
],
"memo": "MEMO",
"sastOptions": {
"maxSourceSize": "SOURCE_SIZE",
"analysisSource": {
"type": "VCS",
"vcsInfo": {
"type": "git",
"url": "VCS_URL",
"auth": {
"id": "VCS_ID",
"password": "VCS_PASSWORD",
"authToken": "VCS_TOKEN"
},
"branch": "BRANCH_NAME",
"commitId": "COMMIT_ID",
"tag": "TAG_NAME"
}
},
"extensions": ["FILE_EXTENSION1", "FILE_EXTENSION2"],
"excludedPath": ["EXCLUDED_PATH1", "EXCLUDED_PATH2", "EXCLUDED_PATH3"]
}
}
.sparrow파일 생성
sastOption:
excludedPath:
- "EXCLUDED_PATH1"
- "EXCLUDED_PATH2"
- 분석 요청에 입력
"sastOptions":[
{
"key":"sparrowPropertyPath",
"value": "test"
}
]
- key : sparrowPropertyPath
- value : root 경로를 기준으로 옵션 파일의 상대 경로
- 우선 순위
sparrowPropertyPath에서 설정한 파일이 .sparrow 파일보다 우선 순위가 높습니다.응답
✔️ 성공 응답
요청 성공
분석 요청을 정상적으로 처리하면 200 OK와 함께 다음과 같은 응답을 받습니다.
{
"requestId": "REQUEST_ID",
"accountId": "ACCOUNT_ID",
"operationType": "SCAN",
"requestVersion": "v1Sast",
"stopAnalysisId": null,
"status": "ING",
"result": "S",
"requestText": "REQUEST_TEXT",
"tokenId": 1,
"insertTime": "YYYY-MM-DDThh:mm:ss.sss±hh:mm",
"updateTime": "YYYY-MM-DDThh:mm:ss.sss±hh:mm",
"analysisList": [
{
"analysisId": "ANALYSIS_ID",
"requestId": "REQUEST_ID",
"status": "INIT",
"result": null,
"progress": null,
"toolType": "SAST",
"memo": "MEMO",
"startTime": null,
"endTime": null,
"issueCount": null,
"issueCountRisk1": null,
"issueCountRisk2": null,
"issueCountRisk3": null,
"issueCountRisk4": null,
"issueCountRisk5": null,
"insertTime": "YYYY-MM-DDThh:mm:ss.sss±hh:mm",
"updateTime": "YYYY-MM-DDThh:mm:ss.sss±hh:mm",
"extensions": null,
"fileCount": null,
"cloneSize": null,
"codeSize": null
}
]
}
❌ 실패 응답
인증 실패
인증 정보가 올바르지 않은 경우 401 Unauthorized 응답을 받습니다.
잘못된 요청
잘못된 요청인 경우 400 Bad Request 응답과 함께 다음 정보를 수신하게 됩니다.
resultCode: 요청에 대한 결과를 코드로 표시합니다. 자세한 내용은 결과 코드 모음을 참고하세요.message: 오류 메시지를 표시합니다.콜백
✅ 분석 상태 콜백
{
"analysisId": "ANALYSIS_ID"
"requestId": "REQUEST_ID"
"type": "ANALYSIS_PROGRESS"
"status": "PRE_PROCESS"
"result": null
"progress": null
"step": "STEP"
"totalStep": 5
"updateTime": 1750312561610
}
☑️ 분석 종료 콜백
{
"analysisId": "ANALYSIS_ID"
"requestId": "REQUEST_ID"
"type": "ANALYSIS_COMPLETE"
"errorCode": null
"analysis": {
"analysisId": 2992
"requestId": 3837
"status": "COMPLETE"
"result": "SUCCESS"
"progress": null
"toolType": "SCA"
"memo": "MEMO"
"startTime": 1750312561610
"endTime": 1750312561610
"issueCount": "TOTAL_ISSUES"
}
}