Skip to main content

CDR Declassification Request

Used to request the decontamination of SHIELDEX CDR.
It operates asynchronously, inserting the request into a queue and responding immediately.
You can check the inspection results through a separate status inquiry API or Callback.

Important Notes

  • Protocol: HTTP FormUses the transmission method (multipart/form-data).
  • Encoding: All text data isUTF-8must be encoded.
  • Callback: The callback URL isresult.callbackURLYou can set it in the field and receive the results after the defanging is complete.
  • Job ID Length: Up to 36 characters are allowed, and exceeding this will result in a validation failure.

Method

POST

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

Request Path Parameter

KEYOBJECTDESC
jobIDStringTask ID (optional, a time-based UUID will be automatically generated if not entered. Maximum 36 characters)

Request Parts (multipart/form-data)

KEYOBJECTDESC
dataJSONDecontamination Request Data (Required)
fileFileFiles subject to decontamination (required)

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*Request Type (uploadfixed)
userinfo.idStringYesUser ID (up to 40 characters)
userinfo.departmentStringNoUser Department (up to 256 characters)
userinfo.nameStringNoUsername (up to 40 characters)
userinfo.dutynameStringNoUser Job Title (up to 40 characters)
userinfo.sysCodeStringNoChannel code, used for API access control. (up to 40 characters)
userinfo.businessCodeStringNoBusiness code, used for API access control. (up to 40 characters)
userinfo.userNumberNumberNoUser Number
fileinfo.filenameStringYes*File name (must be the same as the name of the multipart file)
result.callbackURLStringNoCallback URL (for result notification)

Response Body (json)

KEYOBJECTDESC
codeintResponse Codes (see table below)
msgStringResponse Message
jobIDStringWork ID (used when checking inspection results)

Response Code

CODEMESSAGEDESC
0successThe declassification request has been received successfully. You can check the declassification results through the status inquiry API.
1Duplicate Neutralization RequestDuplicate request occurred (duplicate jobID)
2Block messageBlock (Validation failure, File creation failure)
3unavailable agent serviceDecontamination service connection failed
5Sanitization Request Blocked by API Access control.The request has been blocked due to API access control.
-1Error MessageFailed to process server request

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 - Demilitarization request successful (200 OK)

{
"code": 0,
"msg": "success",
"jobID": "test-job-001"
}

RESPONSE - Service Connection Failed (200 OK)

{
"code": 3,
"msg": "unavailable agent service",
"jobID": "test-job-001"
}

RESPONSE - Required field missing (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 - Missing file field (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"
}

:::info[Note -code5 (API Access Control) The above response isHTTP 200but, the main textcodea5It is when the API access control has blocked the deactivation request.

1. Code Registration (Preparation)

  • Menu:Settings → API Access Control → Code Registration
  • to use for the callChannelandWorkregisters.
  • requestdataofuserinfo.sysCodeis registeredChannel Code, userinfo.businessCodeis registeredWork Codeis added. (of the sampleSYS001, BIZ001will be changed to match the actual registration value.)
  • During the test, the two values are**Must match the value registered in the code registration.**should be normal reception(code: 0) becomes.

2. Access Control Logs (Block/Allow Verification)

  • Menu:Settings → API Access Control → Access Control Logs
  • the request in the list (orjobIDFind the row that matches the time zone.
  • API Application StatusColumn: Check if the API usage application for application and approval has been reflected.
  • Control StatusColumn:BlockCognitionAllowIt confirms recognition. If blocked, it is prevented by access control policies, and requests only pass through when allowed.

Callback

upon requestresult.callbackURLIf a URL is entered in the field, the results will be sent to that URL once the de-identification process is complete.
You can receive the deactivation results through the status inquiry API or via 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

  • From here on, this is development information that should not be disclosed to the public.