メインコンテンツまでスキップ

CDR 무해화 요청

SHIELDEX CDR 무해화 요청을 위해 사용한다.


Method

POST

{{url}}/v5/cdr
{{url}}/v5/cdr/
{{url}}/v5/cdr/{jobID}

Request Path Parameter

KEYOBJECTDESC
jobIDString작업 ID (선택사항, 최대 36자)

Request Parts (multipart/form-data)

KEYOBJECTDESC
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

KEYOBJECTREQUIREDDESC
request.typeStringYes요청 타입 (upload)
userinfo.idStringYes사용자 ID
userinfo.departmentStringNo사용자 부서
userinfo.nameStringNo사용자 이름
userinfo.dutynameStringNo사용자 직책명
userinfo.sysCodeStringNo시스템 코드
userinfo.businessCodeStringNo비즈니스 코드
userinfo.userNumberNumberNo사용자 번호
fileinfo.filenameStringYes*파일명
result.callbackURLStringNo콜백 URL

Response Body (json)

KEYOBJECTDESC
codeint응답 코드
msgString응답 메시지
jobIDString작업 ID

Exception Response Body (json)

KEYOBJECTDESC
codeint오류 코드
msgString오류 메시지
jobIDString작업 ID

Response Code

CODEMESSAGEDESC
0success성공 (SUCCESS)
1-중복 요청 (DUPLICATION)
-1fail일반적인 실패 (FAIL)
2block차단 (유효성 검사 실패, BLOCK)
3unavailable agent service서비스 연결 실패 (CONNECTION_FAIL)
5-API 접근 차단 (API_ACCESS_BLOCK)

Exception Messages

CODEMESSAGEDESC
2jobID is no more than 36 charactersjobID 길이 초과
2Missing required field: 'request.type', The 'request.type' object is required in the request body.필수 필드 누락
2Missing required file: 'file', The request must include a file upload in the 'file' field.파일 누락 (upload 타입)
2Missing required field: 'fileinfo.filename', The 'fileinfo.filename' object is required in the request body.파일명 누락 (shared 타입)
2Missing required field: 'userinfo.id', The 'userinfo.id' object is required in the request body.사용자 ID 누락
2Request 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: 요청 헤더의 sysCodebusinessCode를 통해 접근 제어가 수행됩니다.
  • Callback: 콜백 URL은 result.callbackURL 필드에 설정하며, 무해화 완료 후 결과를 받을 수 있습니다.
  • Error Handling: 모든 예외는 exceptionHandlerService.exceptionHandling() 메서드를 통해 처리되며, 로그 사유 코드 900020이 사용됩니다.
  • JSON Aliases: userinfo, fileinfo 필드는 userInfo, fileInfo로도 허용됩니다 (@JsonAlias 사용).
  • Job ID Length: 최대 36자까지 허용되며, 초과시 유효성 검사 실패로 처리됩니다.