CDR 무해화 요청
SHIELDEX CDR 무해화 요청을 위해 사용합니다.
비동기로 동작하며, 요청을 대기열에 삽입한 뒤, 즉시 응답합니다.
검사 결과는 별도의 상태 조회 API 또는 Callback을 통해 확인할 수 있습니다.
Important Notes
- Protocol:
HTTP Form전송 방식(multipart/form-data)을 사용합니다.- Encoding: 모든 텍스트 데이터는 UTF-8로 인코딩되어야 합니다.
- Callback: 콜백 URL은
result.callbackURL필드에 설정하며, 무해화 완료 후 결과를 받을 수 있습니다.- Job ID Length: 최대 36자까지 허용되며, 초과시 유효성 검사 실패로 처리됩니다.
Method
POST
/v5/cdr
/v5/cdr/{jobID}
Request Path Parameter
KEY OBJECT DESC jobIDString 작업 ID (선택사항, 미입력 시에 시간 기반 UUID가 자동 생성됩니다. 최대 36자)
Request Parts (multipart/form-data)
KEY OBJECT DESC dataJSON 무해화 요청 데이터 (필수) fileFile 무해화 대상 파일 (필수)
Request Data JSON Structure
{
"request": {
"type": "upload"
},
"userinfo": {
"id": "string",
"department": "string",
"name": "string",
"dutyname": "string",
"sysCode": "string",
"businessCode": "string"
},
"fileinfo": {
"filename": "string"
},
"result": {
"callbackURL": "string"
}
}
Request Data Fields
KEY OBJECT REQUIRED DESC request.typeString Yes* 요청 타입 ( upload고정)userinfo.idString Yes 사용자 ID (최대 40자) userinfo.departmentString No 사용자 부서 (최대 256자) userinfo.nameString No 사용자 이름 (최대 40자) userinfo.dutynameString No 사용자 직책명 (최대 40자) userinfo.sysCodeString No 채널 코드, API 접근제어에 사용됩니다. (최대 40자) userinfo.businessCodeString No 업무 코드, API 접근제어에 사용됩니다. (최대 40자) userinfo.userNumberNumber No 사용자 번호 fileinfo.filenameString Yes* 파일명 (multipart 파일의 이름과 동일해야 함) result.callbackURLString No 콜백 URL (결과 통지용)
Response Body (json)
KEY OBJECT DESC code int 응답 코드 (아래 테이블 참조) msg String 응답 메시지 jobID String 작업 ID (검사 결과 조회 시 사용)
Response Code
CODE MESSAGE DESC 0 success 무해화 요청이 정상적 접수되었습니다. 무해화 결과는 상태조회 API로 확인하세요. 1 중복 무해화 요청 동일 요청 발생 (jobID 중복) 2 차단 메시지 차단 (유효성 검사 실패, 파일 생성 실패) 3 unavailable agent service 무해화 서비스 연결 실패 5 Sanitization Request Blocked by API Access control. API 접근제어에 의해 요청이 차단되었습니다. -1 에러 메시지 서버 요청 처리 실패
Sample
REQUEST - Upload Type
curl -X POST "{{url}}/v5/cdr" \
-H "Content-Type: multipart/form-data" \
-F 'data={
"request": {
"type": "upload"
},
"userinfo": {
"id": "user001",
"name": "홍길동",
"department": "개발팀",
"dutyname": "개발자",
"sysCode": "SYS001",
"businessCode": "BIZ001"
},
"fileinfo": {
"filename": "test.pdf"
},
"result": {
"callbackURL": "https://your-callback-url.com/callback"
}
};type=application/json' \
-F "file=@/path/to/test.pdf"RESPONSE - 무해화 요청 성공 (200 OK)
{
"code": 0,
"msg": "success",
"jobID": "test-job-001"
}RESPONSE - 서비스 연결 실패 (200 OK)
{
"code": 3,
"msg": "unavailable agent service",
"jobID": "test-job-001"
}RESPONSE - 필수 필드 누락 (400 BAD_REQUEST)
{
"timestamp": 1767768931518,
"status": 400,
"error": "Bad Request",
"message": "400 BAD_REQUEST \"Invalid or missing fields in JSON: 'request.type'\"",
"path": "/v5/cdr"
}RESPONSE - 파일 필드 누락 (400 BAD_REQUEST)
{
"code": 2,
"msg": "Missing required file: 'file', The request must include a file upload in the 'file' field.",
"jobID": "test-job-001"
}RESPONSE - Access Denied (200 OK)
{
"code": 5,
"msg": "Sanitization Request Blocked by API Access control.",
"jobID": "test-job-001"
}
Callback
요청 시
result.callbackURL필드에 URL을 입력한 경우, 무해화 처리가 완료되면 해당 URL로 결과를 전송합니다.
상태 조회 API 또는 Callback으로 무해화 결과를 전달받을 수 있습니다Callback API JSON
{
"jobID": "test-job-001",
"code": 0,
"msg": "success",
"logReason": 200000,
"logReasonMsg": "파일 재구성 완료"
}{
"jobID": "test-job-001",
"code": 2,
"msg": "success",
"logReason": 220355,
"logReasonMsg": "[차단] 확장자 위변조 파일 차단"
}
Processing Flow
- 여기서 부터는 외부에 공개하지 않아야하는, 개발 정보 입니다.