배치 탐지 시나리오 변경 이력 목록 조회

지정한 배치 탐지 시나리오의 변경 이력 목록을 조회합니다. 시나리오가 수정될 때마다 새 버전이 자동으로 생성되며, 편집 화면의 변경 이력 패널이 이 API를 호출합니다. 변경 이력 목록을 통해 특정 버전을 식별한 뒤 변경 이력 조회 API와 복원 API를 호출할 수 있습니다.

필요 권한

사용자 이상의 계정으로 이용할 수 있습니다.

HTTP 요청

GET /api/sonar/batch-rules/:guid/versions
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
     "https://HOSTNAME/api/sonar/batch-rules/3b05608f-8dd0-4218-9d6d-391515b6280d/versions?offset=0&limit=20"
요청 매개변수
경로 매개변수
타입설명비고
guid문자열배치 탐지 시나리오 GUID36자
요청 본문 매개변수
필수타입설명비고
offsetX32비트 정수건너뛸 갯수기본값 0
limitX32비트 정수최대 갯수기본값 20

정상 응답

{
  "total_count": 3,
  "versions": [
    {
      "version": 3,
      "user": "관리자",
      "created_at": "2025-04-15 10:30:25+0900",
      "diff": [
        {
          "path": "query_string",
          "diff": "..."
        }
      ],
      "query_string": "..."
    },
    {
      "version": 2,
      "user": "관리자",
      "created_at": "2025-04-10 14:22:10+0900",
      "diff": [
        {
          "path": "description",
          "diff": "..."
        }
      ]
    },
    {
      "version": 1,
      "user": "관리자",
      "created_at": "2025-04-01 09:00:00+0900",
      "diff": null
    }
  ]
}
  • total_count (32비트 정수): 변경 이력 전체 갯수
  • versions (배열): 페이징된 변경 이력 스냅샷 목록. 버전 내림차순으로 정렬됨.
    • version (32비트 정수): 스냅샷 버전 번호
    • user (문자열): 변경을 수행한 사용자 성명
    • created_at (문자열): 스냅샷 생성일시 (yyyy-MM-dd HH:mm:ssZ 형식)
    • diff (배열): 이전 버전 대비 변경 항목 목록. 최초 버전인 경우 null.
      • path (문자열): 변경된 필드 경로
      • diff (문자열): 변경 내용
    • query_string (문자열): 쿼리 문자열이 변경된 경우 해당 차이값. 그 외에는 생략됨.

오류 응답

offset, limit 값이 정수가 아닌 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'offset' parameter should be int type"
}
식별자가 GUID 형식이 아닌 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-param-type",
  "error_msg": "guid should be guid type."
}
지정한 시나리오가 존재하지 않는 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "batch rule not found: 3b05608f-8dd0-4218-9d6d-391515b6280d"
}
권한이 없는 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "no-permission"
}