CDR 무해화 요청
SHIELDEX CDR 무해화 요청을 위해 사용한다.
Method
POST
{{url}}/v5/cdr
{{url}}/v5/cdr/
{{url}}/v5/cdr/{jobID}
Request Path Parameter
KEY OBJECT DESC jobIDString 작업 ID (선택사항, 최대 36자)
Request Parts (multipart/form-data)
KEY OBJECT DESC dataJSON 무해화 요청 데이터 fileFile 무해화 대상 파일 (upload 타입인 경우 필수)
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 userinfo.departmentString No 사용자 부서 userinfo.nameString No 사용자 이름 userinfo.dutynameString No 사용자 직책명 userinfo.sysCodeString No 시스템 코드 userinfo.businessCodeString No 비즈니스 코드 userinfo.userNumberNumber No 사용자 번호 fileinfo.filenameString Yes* 파일명 result.callbackURLString No 콜백 URL
Response Body (json)
KEY OBJECT DESC code int 응답 코드 msg String 응답 메시지 jobID String 작업 ID
Exception Response Body (json)
KEY OBJECT DESC code int 오류 코드 msg String 오류 메시지 jobID String 작업 ID
Response Code
CODE MESSAGE DESC 0 success 성공 (SUCCESS) 1 - 중복 요청 (DUPLICATION) -1 fail 일반적인 실패 (FAIL) 2 block 차단 (유효성 검사 실패, BLOCK) 3 unavailable agent service 서비스 연결 실패 (CONNECTION_FAIL) 5 - API 접근 차단 (API_ACCESS_BLOCK)
Exception Messages
CODE MESSAGE DESC 2 jobID is no more than 36 characters jobID 길이 초과 2 Missing required field: 'request.type', The 'request.type' object is required in the request body. 필수 필드 누락 2 Missing required file: 'file', The request must include a file upload in the 'file' field. 파일 누락 (upload 타입) 2 Missing required field: 'fileinfo.filename', The 'fileinfo.filename' object is required in the request body. 파일명 누락 (shared 타입) 2 Missing required field: 'userinfo.id', The 'userinfo.id' object is required in the request body. 사용자 ID 누락 2 Request body is missing or empty. A valid JSON body is required. 요청 바디 누락
Sample
REQUEST - Upload Type
curl -X POST "{{url}}/v5/cdr" \
-H "Content-Type: multipart/form-data" \
-F 'data={
"FI_IDX": "test-job-001",
"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 - Success
{
"code": 0,
"msg": "success",
"jobID": "test-job-001"
}RESPONSE - Service Connection Fail
{
"code": 3,
"msg": "unavailable agent service",
"jobID": "test-job-001"
}RESPONSE - Validation Error
{
"code": 2,
"msg": "Missing required field: 'request.type', The 'request.type' object is required in the request body.",
"jobID": "test-job-001"
}RESPONSE - File Missing Error
{
"code": 2,
"msg": "Missing required file: 'file', The request must include a file upload in the 'file' field.",
"jobID": "test-job-001"
}
Processing Flow
Important Notes
- Field Mapping: JSON 필드명과 Java 객체의 필드명이 다를 수 있습니다 (@JsonProperty, @JsonAlias 사용).
- Response Codes: V5CdrCode enum에 정의된 코드값 사용 (SUCCESS=0, DUPLICATION=1, FAIL=-1, BLOCK=2, CONNECTION_FAIL=3, API_ACCESS_BLOCK=5).
- Validation Options:
optionProperties.isUseValidate()설정에 따라 유효성 검사 수준이 달라집니다.- Default Values: 유효성 검사를 사용하지 않는 경우, 일부 필드에 기본값이 자동 설정됩니다.
- File Parameters:
file또는files파라미터 모두 사용 가능하며,multipartFile = multipartFile == null ? files : multipartFile로직이 적용됩니다.- Tenant: 기본 테넌트는
main(TenantConstant.TENANT_MAIN)이며, 사용자별 테넌트 설정이 가능합니다.- Access Control: 요청 헤더의
sysCode와businessCode를 통해 접근 제어가 수행됩니다.- Callback: 콜백 URL은
result.callbackURL필드에 설정하며, 무해화 완료 후 결과를 받을 수 있습니다.- Error Handling: 모든 예외는
exceptionHandlerService.exceptionHandling()메서드를 통해 처리되며, 로그 사유 코드 900020이 사용됩니다.- JSON Aliases: userinfo, fileinfo 필드는 userInfo, fileInfo로도 허용됩니다 (@JsonAlias 사용).
- Job ID Length: 최대 36자까지 허용되며, 초과시 유효성 검사 실패로 처리됩니다.