본문으로 건너뛰기

SHIELDEX File 6.0 — 무해화 결과 응답 명세서 (6.2026.0731.04)

# SHIELDEX File 6.0 — 무해화 결과 응답 명세서 (6.2026.0731.01)

SHIELDEX File 6.0 무해화 API 연동 시 결과 응답 필드를 정의합니다. 최종 결과 분기는 code 로 판단하고, 상세 사유는 logReason / msg(또는 무해화 로그리즌 표)를 참고합니다.

  • 문서 버전: 6.2026.0731.04 (detailCode · server 필드 추가 기준)
  • 출처: SHIELDEX_API(cdrbroker) 6.2026.0731.04 · SHIELDEX_SERVICE_API(cdrApiService) 6.2026.0731.05 — TASK#65613 (detailCode / server) · 문서 업데이트 2026-07-31
  • 관련 문서: 무해화 로그리즌 표
  • 본문 구성: 동기 결과 → 비동기(접수·상태조회·콜백) → 공통 필드(code / detailCode / server)

안내 기존 결과 응답(jobID · code · msg · logReason)에 더해 두 필드가 추가되었습니다.

  • detailCode : code 만으로 세부 분기가 어려운 연동을 위한 부가 분류값 (정수)
  • server : 파일을 처리한 무해화 서버 정보 (serverId / serverName / ipList / macList)

1. 결과 수신 방식 개요

구분방식엔드포인트결과 수신 시점
동기SyncPOST /v5/cdr-sync요청 응답으로 최종 결과를 즉시 수신
비동기접수POST /v5/cdr즉시 접수 응답만 반환 (결과 아님)
비동기상태 조회(폴링)GET /v5/cdr/{jobID}주기 조회(권장 200ms) 후 완료 시 결과 응답
비동기콜백(Callback)요청 시 result.callbackURL 지정완료 시 지정 URL 로 결과 PUSH

접수 응답 ≠ 결과 응답 비동기 POST /v5/cdr 의 즉시 응답은 접수 확인(code · msg · jobID)일 뿐입니다. 실제 무해화 결과는 동기(/v5/cdr-sync) 또는 상태 조회·콜백으로 받습니다.


2. 동기 — 결과 응답 (POST /v5/cdr-sync)

동기 API는 서버가 무해화 완료까지 대기한 뒤 최종 결과를 한 번에 반환합니다. code: 3(진행 중)은 반환되지 않으며, 실제 수신 코드는 0 / 1 / 2 입니다.

2.1 응답 필드

KEYTYPE필수설명
jobIDString필수작업 ID
codeint필수결과 등급 코드 (§5) — 동기에서는 0 / 1 / 2 만 수신
msgString필수결과 사유 메시지 (= logReason 의 사유 텍스트)
logReasonint필수상세 결과(로그리즌) 코드 — 무해화 로그리즌 표 참조
detailCodeint선택부가 분류값 (§6). 연동 협의로 활성화된 경우에만 포함
serverObject필수파일을 처리한 서버 정보 (§7)

2.2 detailCode 별 예시

아래 예시는 동기(/v5/cdr-sync) · 상태 조회 결과 응답에 공통으로 적용됩니다. server 객체는 모든 예시에서 동일 형태입니다.

detailCode: 0 — 위험 요소 없음 (안전)

{
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e",
"code": 0,
"msg": "[안전] 컨텐츠 요소 없음",
"logReason": 200004,
"detailCode": 0,
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
}

detailCode: 1 — 위험 요소 있음 (의심 · 경고 · 위험 · 위변조)

{
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e",
"code": 0,
"msg": "[의심] 컨텐츠 요소 감지",
"logReason": 200005,
"detailCode": 1,
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
}
{
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e",
"code": 2,
"msg": "[차단] 확장자 위변조 파일 차단",
"logReason": 220355,
"detailCode": 1,
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
}

detailCode: 2 — 백신(바이러스) 검출

{
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e",
"code": 2,
"msg": "[심각] 바이러스 검출 (감염 파일 삭제)",
"logReason": 990003,
"detailCode": 2,
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
}

detailCode: 3 — 미지원 파일 (예외 · 차단)

{
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e",
"code": 2,
"msg": "[차단] 미지원 확장자",
"logReason": 210211,
"detailCode": 3,
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
}

detailCode: -1 — 오류

{
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e",
"code": 2,
"msg": "[오류] 인터페이스 통신 오류",
"logReason": 900052,
"detailCode": -1,
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
}

핵심: detailCode: -1오류를 의미합니다. 로그리즌 마스터의 logtype_id=V20(오류)에 해당하는 다수의 로그리즌을 개별 값으로 나누지 않고, 공통으로 -1 로 통합 처리합니다. 어떤 오류인지의 상세 사유는 logReason / msg 로 확인합니다.


3. 비동기 — 접수 응답 (POST /v5/cdr)

비동기 요청의 즉시 응답입니다. 무해화 결과가 아니므로 detailCode · server 는 포함되지 않습니다.

KEYTYPE설명
codeint접수 코드 (0 접수 성공 / 1 중복 요청 / 2 차단 / 3 서비스 연결 실패 / 5 접근 제어 차단)
msgString접수 메시지
jobIDString작업 ID
{
"code": 0,
"msg": "success",
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e"
}

접수 후 결과는 상태 조회(§4) 또는 콜백(§4.2) 으로 수신합니다.


4. 비동기 — 결과 수신 (상태 조회 · 콜백)

4.1 상태 조회 (GET /v5/cdr/{jobID})

응답 필드·의미는 동기 결과(§2) 와 동일합니다. 처리가 끝나지 않은 경우 code: 3(진행 중)이 반환될 수 있습니다.

KEYTYPE필수설명
jobIDString필수작업 ID
codeint필수결과 등급 코드 (§5) — 0 / 1 / 2 / 3(진행 중)
msgString필수결과 사유 메시지
logReasonint필수상세 결과(로그리즌) 코드
detailCodeint선택부가 분류값 (§6, 활성 시에만)
serverObject필수처리 서버 정보 (§7) — 결과 응답에 포함

detailCode 별 JSON 예시는 §2.2 를 참고하세요.

4.2 콜백(Callback) 결과 전문

요청 시 result.callbackURL 을 지정하면 무해화 완료 시 해당 URL 로 결과가 PUSH 됩니다. 동기·상태 조회 응답과 필드 표기만 일부 다릅니다(값의 의미는 동일).

  • 결과 사유 텍스트를 별도 필드 logReasonMsg 로 제공합니다.
  • msg"success" 고정입니다(사유 텍스트는 logReasonMsg 에 담김).
KEYTYPE설명
jobIDString작업 ID
codeint결과 등급 코드 (§5)
detailCodeint부가 분류값 (§6, 활성 시에만)
logReasonint상세 결과(로그리즌) 코드
logReasonMsgString상세 결과 사유 텍스트
msgString"success" 고정
serverObject처리 서버 정보 (§7)
{
"jobID": "ed43f9a5-8caa-11f1-a4cd-f5c4fa6d387e",
"code": 0,
"detailCode": 0,
"logReason": 200004,
"logReasonMsg": "[안전] 컨텐츠 요소 없음",
"msg": "success",
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
}

detailCode 0~3 · -1 의미와 매핑은 §2.2 · §6 과 동일합니다.


5. 결과 code 정의

code의미다운로드성격
0무해화 성공(완료)가능최종
1정책에 의한 원본 파일 반입가능최종
2반입 차단 / 시스템·엔진 오류불가최종
3처리 진행 중미완료(폴링 전용)
  • 동기(/v5/cdr-sync) 는 완료까지 대기 후 반환하므로 실제 수신 코드는 0 / 1 / 2 입니다. 3(진행 중)은 반환되지 않습니다.
  • code 1개에 다수의 logReason 이 매핑됩니다(1:N). 연동 분기는 반드시 code 값을 기준으로 하고, logReason(msg)은 상세 사유 식별·사용자 안내·로그 기록 용도로 사용하세요.
  • 상태 조회 API 에서는 결과가 아닌 조회 제어 응답으로 작업 ID 없음(-3), 유효하지 않은 요청(5)이 반환될 수 있습니다.

6. detailCode — 부가 분류값

code(0/1/2)만으로 세부 분기가 어려운 연동을 위한 정수 부가 분류값입니다.

활성화된 연동에서만 응답에 포함됩니다. 미활성 시 필드 자체가 응답에 나타나지 않으므로 기존 규격과 100% 동일합니다. 활성화 여부는 연동 시 협의합니다.

detailCode의미대표 예시 (logReason)
-1오류 — logtype_id=V20 로그리즌을 공통 -1로 통합900052 등 V20(오류) 계열 다수
0위험 요소 없음 (안전)200004 [안전] 컨텐츠 요소 없음
1위험 요소 있음 (의심 · 경고 · 위험 · 위변조)200005~`200007, 220355` 등
2백신(바이러스) 검출990003 [심각] 바이러스 검출
3미지원 파일 (예외 · 차단)210211, 230213, 240215

산출 기준(요약) — 결과 로그리즌과 위험도로 판정합니다.

  • 명시 매핑: 2000040, 200005~`200007/220355 등→1, 9900032, 210211/230213/240215(미지원)→3`
  • '파일 재구성 완료'(200000/200001)는 위험도에 따라 0(안전)/1(의심·경고·위험·위변조)/2(심각) 로 판정
  • 오류(logtype_id=V20)에 시스템·엔진 오류 해당하는 다수의 로그리즌 → 공통 detailCode: -1

전체 JSON 예시는 §2.2 를 참고하세요.


7. server — 처리 서버 정보

무해화를 실제로 처리한 서버를 식별할 수 있도록 결과 응답에 포함됩니다.

KEYTYPE설명
serverIdString처리 서버 ID
serverNameString서버명
ipListString[]서버 대표 IP (1개)
macListString[]대표 IP 에 대응하는 MAC 주소 (1개)
"server": {
"serverId": "A64B2A42-99AF-CF00-29C1-366B9CCFE002",
"serverName": "SANITIZE-NODE-01",
"ipList": ["10.10.12.226"],
"macList": ["00:50:56:aa:41:ec"]
}
  • ipList · macList 는 서버의 대표 IP/MAC 1쌍만 담습니다(전체 NIC 목록 아님).
  • 서버 정보를 찾지 못한 경우 serverId 만 채우고 serverName 은 빈 문자열, ipList · macList 는 빈 배열([])로 응답합니다.
  • 비동기 접수 응답(§3) 에는 server 가 포함되지 않습니다.

변경 이력

날짜문서 버전내용
2026-07-316.2026.0731.01초안