Skip to main content

CDR Declassification Request

Used for SHIELDEX CDR decontamination requests.
It operates asynchronously, inserting the request into a queue and responding immediately.
The inspection results can be checked 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: Callback URL isresult.callbackURLYou can set it in the field, and you can receive the results after the decontamination is completed.
  • 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)
fileFileDecontamination Target File (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.businessCodeStringNoUsed for business code and 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 Code (see table below)
msgStringResponse Message
jobIDStringWork ID (used when querying inspection results)

Response Code

CODEMESSAGEDESC
0successThe declassification request has been received normally. You can check the declassification results through the status inquiry API.
1Duplicate harmless 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.Access to the API has been blocked by access control.
-1Error messageServer request processing failed

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 callchannelandWorkregister.
  • requestdataofuserinfo.sysCodeis registeredChannel Code, userinfo.businessCodeis registeredWork Codeis added. (of the sampleSYS001, BIZ001is changed to match the actual registration value.)
  • During the test, the two values areMust match the value registered in code registrationshould be normal reception(code: 0) becomes.

2. Access Control Logs (Block·Allow Confirmation)

  • Menu:Settings → API Access Control → Access Control Logs
  • in the list, the corresponding request (orjobID·Find the row that matches the time zone.
  • API Application StatusColumn: Check whether the API usage application for application and approval, etc. has been reflected.
  • Control StateColumn:BlockcognitionAllowedCognitive confirmation. If blocked, it is blocked by access control policies, and requests only pass 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 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.