Scan Results API v1
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Describes the API calls used to retrieve the results of Constellations scans.
Base URLs:
Authentication
- HTTP Authentication, scheme: bearer
ScanResults
Retrieve the CDR result for a given scan
Code samples
# You can also use wget
curl -X GET /api/v1/scan-results/{scanId}/summary \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /api/v1/scan-results/{scanId}/summary HTTP/1.1
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/api/v1/scan-results/{scanId}/summary',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/api/v1/scan-results/{scanId}/summary',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/api/v1/scan-results/{scanId}/summary', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/api/v1/scan-results/{scanId}/summary', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/api/v1/scan-results/{scanId}/summary");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/api/v1/scan-results/{scanId}/summary", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /scan-results/{scanId}/summary
The response provides a summary of the CDR processing that has been carried out on the scanned files.
Requests submitted with the ‘StandardUser’ role are only permitted to retrieve self-started scans.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scanId | path | string(uuid) | true | Unique identifier for a scan. Example: 56d61ae4-8147-4778-acb1-1f1f9c881fa7 |
Example responses
200 Response
{
"scanDetails": {
"scanOwner": "string",
"scanId": "fda3f490-eac1-4267-a13b-69d14aceb1f0",
"scanStatus": "Processing",
"scanStartTime": "2019-08-24T14:15:22Z",
"scanEndTime": "2019-08-24T14:15:22Z",
"sourceStorage": "scan-source.blob.core.windows.net",
"sourceContainerPath": "SourceContainer",
"targetStorage": "output-location.blob.core.windows.net",
"targetContainerPath": "TargetContainerName",
"quarantineContainerPath": "QuarantineContainerName",
"autoRescan": true,
"parentScan": "f18eda36-7eb5-477a-a1b1-51c71ab2ba81",
"childScans": null
},
"processingResults": {
"numberOfFiles": 0,
"numberOfProcessedFiles": 0,
"numberOfFailedFiles": 0,
"numberOfRebuiltFiles": 0,
"numberOfErroredFiles": 0
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | CDR Summary Results for the specified scan | ScanStatusSummary |
401 | Unauthorized | Insufficient authorisation | None |
404 | Not Found | Specified scan not found | None |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
200 | Cache-Control | undefined | Prevent sensitive information from being cached. Example: no-store |
|
200 | Content-Type | undefined | Indicates the response content type. Example: application/json |
|
200 | X-Content-Type-Options | undefined | To prevent browsers from performing MIME sniffing, and inappropriately interpreting responses as HTML. Example: nosniff |
|
200 | X-Frame-Options | undefined | To protect against drag-and-drop style clickjacking attacks. Example: DENY |
|
200 | Content-Security-Policy | undefined | To protect against drag-and-drop style clickjacking attacks. Example: frame-ancestors ‘none’ |
|
200 | Strict-Transport-Security | undefined | Uses a week long max-age to prevent any communications from being sent to this domain over HTTP.Example: max-age=604800 |
Retrieve the status of each file processed by CDR engine for a given scan
Code samples
# You can also use wget
curl -X GET /api/v1/scan-results/{scanId}/files \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /api/v1/scan-results/{scanId}/files HTTP/1.1
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/api/v1/scan-results/{scanId}/files',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/api/v1/scan-results/{scanId}/files',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/api/v1/scan-results/{scanId}/files', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/api/v1/scan-results/{scanId}/files', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/api/v1/scan-results/{scanId}/files");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/api/v1/scan-results/{scanId}/files", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /scan-results/{scanId}/files
The response provides the status of each file that was processed by the CDR Engine for a given scan along with the file metadata.
Requests submitted with the ‘StandardUser’ role are only permitted to retrieve self-started scans.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scanId | path | string(uuid) | true | Unique identifier for a scan. Example: 56d61ae4-8147-4778-acb1-1f1f9c881fa7 |
pageSize | query | integer | false | Limits the number of records returned in the response. |
page | query | integer | false | Identifies which page in the results is returned. If the value exceeds the number of available pages, then the last page is returned. |
includeRebuilt | query | boolean | false | Indicates whether the details of files that have been rebuilt should be included in the returned results |
Detailed descriptions
pageSize: Limits the number of records returned in the response.
page: Identifies which page in the results is returned. If the value exceeds the number of available pages, then the last page is returned. required: false
includeRebuilt: Indicates whether the details of files that have been rebuilt should be included in the returned results
Example responses
200 Response
{
"scanDetails": {
"scanOwner": "string",
"scanId": "fda3f490-eac1-4267-a13b-69d14aceb1f0",
"scanStatus": "Processing",
"scanStartTime": "2019-08-24T14:15:22Z",
"scanEndTime": "2019-08-24T14:15:22Z",
"sourceStorage": "scan-source.blob.core.windows.net",
"sourceContainerPath": "SourceContainer",
"targetStorage": "output-location.blob.core.windows.net",
"targetContainerPath": "TargetContainerName",
"quarantineContainerPath": "QuarantineContainerName",
"autoRescan": true,
"parentScan": "f18eda36-7eb5-477a-a1b1-51c71ab2ba81",
"childScans": null
},
"scanFiles": [
{
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
}
],
"pageLinks": {
"totalPages": 4,
"curr": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=3",
"next": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=4",
"prev": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=2"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | CDR Results for the specified scan | ScanStatusResults |
400 | Bad Request | Invalid request parameters | None |
401 | Unauthorized | Insufficient authorisation | None |
404 | Not Found | Specified scan not found | None |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
200 | Cache-Control | undefined | Prevent sensitive information from being cached. Example: no-store |
|
200 | Content-Type | undefined | Indicates the response content type. Example: application/json |
|
200 | X-Content-Type-Options | undefined | To prevent browsers from performing MIME sniffing, and inappropriately interpreting responses as HTML. Example: nosniff |
|
200 | X-Frame-Options | undefined | To protect against drag-and-drop style clickjacking attacks. Example: DENY |
|
200 | Content-Security-Policy | undefined | To protect against drag-and-drop style clickjacking attacks. Example: frame-ancestors ‘none’ |
|
200 | Strict-Transport-Security | undefined | Uses a week long max-age to prevent any communications from being sent to this domain over HTTP.Example: max-age=604800 |
Retrieve detailed CDR results for a given file in a given scan
Code samples
# You can also use wget
curl -X GET /api/v1/scan-results/{scanId}/files/{fileId} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /api/v1/scan-results/{scanId}/files/{fileId} HTTP/1.1
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/api/v1/scan-results/{scanId}/files/{fileId}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/api/v1/scan-results/{scanId}/files/{fileId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/api/v1/scan-results/{scanId}/files/{fileId}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/api/v1/scan-results/{scanId}/files/{fileId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/api/v1/scan-results/{scanId}/files/{fileId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/api/v1/scan-results/{scanId}/files/{fileId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /scan-results/{scanId}/files/{fileId}
The response contains the detailed CDR results for a given file in a given scan if the file is not an archive.
The response structure varies for the archive file based on the archive mode. There are 2 archive modes that can be configured for the product which are “basic” and “detailed”.
If the archive mode was configured as “basic” during the scan processing, then this endpoint will report the CDR result of the archive file without expanding the files within the archive. Refer schema, “ScanStatusFileResults”.
If the archive mode was configured as “detailed” during the scan processing, then this endpoint will report the CDR results of the individual files within the archive file. Refer schema, “ScanStatusArchiveResults”
Requests submitted with the ‘StandardUser’ role are only permitted to retrieve self-started scans.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scanId | path | string(uuid) | true | Unique identifier for a scan. Example: 56d61ae4-8147-4778-acb1-1f1f9c881fa7 |
fileId | path | string(uuid) | true | Unique identifier for a file. Example: 48e3cece-37c6-4d92-b0d8-3620ef27d219 |
Example responses
CDR Detailed Results for the specified scan and file
{
"fileDetails": {
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "null",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
},
"processingResults": {
"status": "Failed",
"remedyItems": [
{
"technicalDescription": "Object specified as free in original will be removed",
"remedyId": 198311939,
"instanceCount": 3
}
],
"sanitisationItems": [
{
"technicalDescription": "Action of type /URI removed by content management policy.",
"sanitisationId": 346815988,
"instanceCount": 2
}
],
"issueItems": [
{
"technicalDescription": "Validation of this MTEF Version not supported",
"issueId": 289311464,
"instanceCount": 1,
"riskLevel": "Medium"
}
],
"errors": [
{
"errorCode": 12,
"errorDescription": "Invalid Content Management Policy"
}
]
}
}
{
"fileDetails": {
"fileLocation": "supported/1/test.zip",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "null",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
},
"processingResults": {
"archiveList": [
{
"fileLocation": "supported/1/test1.png",
"fileSize": 123456,
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
},
{
"fileLocation": "supported/1/test2.pdf",
"fileSize": 123456,
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
}
]
},
"pageLinks": {
"totalPages": 6,
"curr": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=3",
"next": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=4",
"prev": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=2"
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | CDR Detailed Results for the specified scan and file | Inline |
400 | Bad Request | Invalid request parameters | None |
401 | Unauthorized | Insufficient authorisation | None |
404 | Not Found | Specified scan not found | None |
Response Schema
Enumerated Values
Property | Value |
---|---|
status | Failed |
status | Errored |
status | Rebuilt |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
200 | Cache-Control | undefined | Prevent sensitive information from being cached. Example: no-store |
|
200 | Content-Type | undefined | Indicates the response content type. Example: application/json |
|
200 | X-Content-Type-Options | undefined | To prevent browsers from performing MIME sniffing, and inappropriately interpreting responses as HTML. Example: nosniff |
|
200 | X-Frame-Options | undefined | To protect against drag-and-drop style clickjacking attacks. Example: DENY |
|
200 | Content-Security-Policy | undefined | To protect against drag-and-drop style clickjacking attacks. Example: frame-ancestors ‘none’ |
|
200 | Strict-Transport-Security | undefined | Uses a week long max-age to prevent any communications from being sent to this domain over HTTP.Example: max-age=604800 |
Retrieve the detailed CDR results for a given file within an archive for a given scan. Detailed archive mode is required.
Code samples
# You can also use wget
curl -X GET /api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId} \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId} HTTP/1.1
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId}',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId}',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId}', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId}', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId}");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/api/v1/scan-results/{scanId}/files/{fileId}/content/{archiveContentId}", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /scan-results/{scanId}/files/{fileId}/content/{archiveContentId}
This endpoint is applicable only if the archive mode is set to “detailed”.
The response provides the CDR analysis results for a given file within the archive. {fileId} corresponds to the fileId of the archive and {archiveContentId} corresponds to the fileId of the file within the archive.
Requests submitted with the ‘StandardUser’ role are only permitted to retrieve self-started scans.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scanId | path | string(uuid) | true | Unique identifier for a scan. Example: 56d61ae4-8147-4778-acb1-1f1f9c881fa7 |
fileId | path | string(uuid) | true | Unique identifier for a file. Example: 48e3cece-37c6-4d92-b0d8-3620ef27d219 |
archiveContentId | path | string(uuid) | true | Unique identifier for a file within an archive. Example: b2b1766d-bdb8-4076-b9e5-6ae76f275f03 |
Example responses
200 Response
{
"fileDetails": {
"archiveId": "lk09f362-6c83-49a1-bbcb-7c08389a0mnb",
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
},
"processingResults": {
"status": "Failed",
"remedyItems": [
{
"technicalDescription": "Object specified as free in original will be removed",
"remedyId": 198311939,
"instanceCount": 3
}
],
"sanitisationItems": [
{
"technicalDescription": "Action of type /URI removed by content management policy.",
"sanitisationId": 346815988,
"instanceCount": 2
}
],
"issueItems": [
{
"technicalDescription": "Validation of this MTEF Version not supported",
"issueId": 289311464,
"instanceCount": 1,
"riskLevel": "Medium"
}
],
"errors": [
{
"errorCode": 12,
"errorDescription": "Invalid Content Management Policy"
}
]
}
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Detailed CDR results for a given file within an archive | ScanStatusArchiveResultsDetailed |
400 | Bad Request | Invalid request parameters | None |
401 | Unauthorized | Insufficient authorisation | None |
404 | Not Found | Specified scan not found | None |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
200 | Cache-Control | undefined | Prevent sensitive information from being cached. Example: no-store |
|
200 | Content-Type | undefined | Indicates the response content type. Example: application/json |
|
200 | X-Content-Type-Options | undefined | To prevent browsers from performing MIME sniffing, and inappropriately interpreting responses as HTML. Example: nosniff |
|
200 | X-Frame-Options | undefined | To protect against drag-and-drop style clickjacking attacks. Example: DENY |
|
200 | Content-Security-Policy | undefined | To protect against drag-and-drop style clickjacking attacks. Example: frame-ancestors ‘none’ |
|
200 | Strict-Transport-Security | undefined | Uses a week long max-age to prevent any communications from being sent to this domain over HTTP.Example: max-age=604800 |
Retrieve the filetype information for a given scan
Code samples
# You can also use wget
curl -X GET /api/v1/scan-results/{scanId}/files-format \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'
GET /api/v1/scan-results/{scanId}/files-format HTTP/1.1
Accept: application/json
const headers = {
'Accept':'application/json',
'Authorization':'Bearer {access-token}'
};
fetch('/api/v1/scan-results/{scanId}/files-format',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}'
}
result = RestClient.get '/api/v1/scan-results/{scanId}/files-format',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('/api/v1/scan-results/{scanId}/files-format', headers = headers)
print(r.json())
<?php
require 'vendor/autoload.php';
$headers = array(
'Accept' => 'application/json',
'Authorization' => 'Bearer {access-token}',
);
$client = new \GuzzleHttp\Client();
// Define array of request body.
$request_body = array();
try {
$response = $client->request('GET','/api/v1/scan-results/{scanId}/files-format', array(
'headers' => $headers,
'json' => $request_body,
)
);
print_r($response->getBody()->getContents());
}
catch (\GuzzleHttp\Exception\BadResponseException $e) {
// handle exception or api errors.
print_r($e->getMessage());
}
// ...
URL obj = new URL("/api/v1/scan-results/{scanId}/files-format");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"Authorization": []string{"Bearer {access-token}"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "/api/v1/scan-results/{scanId}/files-format", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /scan-results/{scanId}/files-format
The response provides the counts on the different filetypes that are recognized by Glasswall CDR Engine during the scan.
Requests submitted with the ‘StandardUser’ role are only permitted to retrieve self-started scans.
Parameters
Name | In | Type | Required | Description |
---|---|---|---|---|
scanId | path | string(uuid) | true | Unique identifier for a scan. Example: 56d61ae4-8147-4778-acb1-1f1f9c881fa7 |
Example responses
200 Response
{
"pdfCount": 0,
"excelCount": 0,
"powerpointCount": 0,
"wordCount": 0,
"mediaCount": 0,
"imagesCount": 0,
"archiveCount": 0,
"metafilesCount": 0,
"executableCount": 0,
"unrecognizedCount": 0
}
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Recognized file types by the Glasswall CDR Engine | ScanFileFormatResults |
401 | Unauthorized | Insufficient authorisation | None |
404 | Not Found | Specified scan not found | None |
Response Headers
Status | Header | Type | Format | Description |
---|---|---|---|---|
200 | Cache-Control | undefined | Prevent sensitive information from being cached. Example: no-store |
|
200 | Content-Type | undefined | Indicates the response content type. Example: application/json |
|
200 | X-Content-Type-Options | undefined | To prevent browsers from performing MIME sniffing, and inappropriately interpreting responses as HTML. Example: nosniff |
|
200 | X-Frame-Options | undefined | To protect against drag-and-drop style clickjacking attacks. Example: DENY |
|
200 | Content-Security-Policy | undefined | To protect against drag-and-drop style clickjacking attacks. Example: frame-ancestors ‘none’ |
|
200 | Strict-Transport-Security | undefined | Uses a week long max-age to prevent any communications from being sent to this domain over HTTP.Example: max-age=604800 |
Schemas
ScanStatusItem
{
"scanOwner": "string",
"scanId": "fda3f490-eac1-4267-a13b-69d14aceb1f0",
"scanStatus": "Processing",
"scanStartTime": "2019-08-24T14:15:22Z",
"scanEndTime": "2019-08-24T14:15:22Z",
"sourceStorage": "scan-source.blob.core.windows.net",
"sourceContainerPath": "SourceContainer",
"targetStorage": "output-location.blob.core.windows.net",
"targetContainerPath": "TargetContainerName",
"quarantineContainerPath": "QuarantineContainerName",
"autoRescan": true,
"parentScan": "f18eda36-7eb5-477a-a1b1-51c71ab2ba81",
"childScans": null
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scanOwner | string | true | none | Identity of User that started the scan |
scanId | string(uuid) | true | none | Unique identifier for a scan |
scanStatus | string | true | none | Reports the current processing status of the scan |
scanStartTime | string(date-time) | true | none | The time at which the scan started |
scanEndTime | string(date-time)¦null | false | none | The time at which the scan finished, or was cancelled. Null if scan still in progress. |
sourceStorage | string | true | none | Storage account containing the sourceContainerPath . |
sourceContainerPath | string | true | none | Name of the container to be scanned in the specified storage account |
targetStorage | string | true | none | Storage account containing the targetContainerPath and quarantineContainerPath . |
targetContainerPath | string | true | none | Name of the container in the destination storage account into which rebuilt files are to be written |
quarantineContainerPath | string | true | none | Name of the container in the destination storage account into which quarantine reports are to be written |
autoRescan | boolean | true | none | Flag is set to ‘true’ if an automatic rescan has been configured to start when the original scan is completed. |
parentScan | string(uuid) | false | none | If this scan is a rescan, then the parent scan’s identity is recorded in this property. |
childScans | [string] | false | none | If and rescans have been requested, based on this scan, then the identities of the rescans are recorded in this property. |
Enumerated Values
Property | Value |
---|---|
scanStatus | Listing |
scanStatus | Processing |
scanStatus | Cancelled |
scanStatus | Completed |
scanStatus | Error |
scanStatus | Unknown |
ScanStatusSummary
{
"scanDetails": {
"scanOwner": "string",
"scanId": "fda3f490-eac1-4267-a13b-69d14aceb1f0",
"scanStatus": "Processing",
"scanStartTime": "2019-08-24T14:15:22Z",
"scanEndTime": "2019-08-24T14:15:22Z",
"sourceStorage": "scan-source.blob.core.windows.net",
"sourceContainerPath": "SourceContainer",
"targetStorage": "output-location.blob.core.windows.net",
"targetContainerPath": "TargetContainerName",
"quarantineContainerPath": "QuarantineContainerName",
"autoRescan": true,
"parentScan": "f18eda36-7eb5-477a-a1b1-51c71ab2ba81",
"childScans": null
},
"processingResults": {
"numberOfFiles": 0,
"numberOfProcessedFiles": 0,
"numberOfFailedFiles": 0,
"numberOfRebuiltFiles": 0,
"numberOfErroredFiles": 0
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scanDetails | ScanStatusItem | true | none | none |
processingResults | ProcessingSummaryItem | true | none | none |
ProcessingSummaryItem
{
"numberOfFiles": 0,
"numberOfProcessedFiles": 0,
"numberOfFailedFiles": 0,
"numberOfRebuiltFiles": 0,
"numberOfErroredFiles": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
numberOfFiles | integer(int64) | true | none | The number of file files found in the scanned container |
numberOfProcessedFiles | integer(int64) | true | none | The number of files processed through the CDR engine |
numberOfFailedFiles | integer(int64) | true | none | The number of file files that could not be processed through the CDR engine |
numberOfRebuiltFiles | integer(int64) | true | none | The number of files that have been successfully rebuilt through the CDR Engine |
numberOfErroredFiles | integer(int64) | true | none | The number of files that experienced errors during the CDR processing |
ScanStatusResults
{
"scanDetails": {
"scanOwner": "string",
"scanId": "fda3f490-eac1-4267-a13b-69d14aceb1f0",
"scanStatus": "Processing",
"scanStartTime": "2019-08-24T14:15:22Z",
"scanEndTime": "2019-08-24T14:15:22Z",
"sourceStorage": "scan-source.blob.core.windows.net",
"sourceContainerPath": "SourceContainer",
"targetStorage": "output-location.blob.core.windows.net",
"targetContainerPath": "TargetContainerName",
"quarantineContainerPath": "QuarantineContainerName",
"autoRescan": true,
"parentScan": "f18eda36-7eb5-477a-a1b1-51c71ab2ba81",
"childScans": null
},
"scanFiles": [
{
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
}
],
"pageLinks": {
"totalPages": 4,
"curr": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=3",
"next": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=4",
"prev": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=2"
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
scanDetails | ScanStatusItem | true | none | none |
scanFiles | ScanFilesItemList | true | none | none |
pageLinks | PageLinksForFiles | false | none | These links provide access to the paged results either side of the current page segment, along with the total number of pages. If the number of results returned is within a single page segment, then these links are not included in the response. |
ScanStatusFileResults
{
"fileDetails": {
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
},
"processingResults": {
"status": "Failed",
"remedyItems": [
{
"technicalDescription": "Object specified as free in original will be removed",
"remedyId": 198311939,
"instanceCount": 3
}
],
"sanitisationItems": [
{
"technicalDescription": "Action of type /URI removed by content management policy.",
"sanitisationId": 346815988,
"instanceCount": 2
}
],
"issueItems": [
{
"technicalDescription": "Validation of this MTEF Version not supported",
"issueId": 289311464,
"instanceCount": 1,
"riskLevel": "Medium"
}
],
"errors": [
{
"errorCode": 12,
"errorDescription": "Invalid Content Management Policy"
}
]
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
fileDetails | ScanFileMetadata | true | none | none |
processingResults | ScanFilesAssessmentProcessingResults | true | none | none |
ScanStatusArchiveResults
{
"fileDetails": {
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
},
"processingResults": {
"status": "Failed",
"archiveList": [
{
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
}
]
},
"pageLinks": {
"totalPages": 4,
"curr": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=3",
"next": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=4",
"prev": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=2"
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
fileDetails | ScanFileMetadata | true | none | none |
processingResults | ScanFilesAssessmentArchiveList | true | none | none |
pageLinks | PageLinksForArchives | false | none | These links provide access to the paged results either side of the current page segment, along with the total number of pages. If the number of results returned is within a single page segment, then these links are not included in the response. |
ScanStatusArchiveResultsDetailed
{
"fileDetails": {
"archiveId": "lk09f362-6c83-49a1-bbcb-7c08389a0mnb",
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
},
"processingResults": {
"status": "Failed",
"remedyItems": [
{
"technicalDescription": "Object specified as free in original will be removed",
"remedyId": 198311939,
"instanceCount": 3
}
],
"sanitisationItems": [
{
"technicalDescription": "Action of type /URI removed by content management policy.",
"sanitisationId": 346815988,
"instanceCount": 2
}
],
"issueItems": [
{
"technicalDescription": "Validation of this MTEF Version not supported",
"issueId": 289311464,
"instanceCount": 1,
"riskLevel": "Medium"
}
],
"errors": [
{
"errorCode": 12,
"errorDescription": "Invalid Content Management Policy"
}
]
}
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
fileDetails | ScanArchiveFileMetadata | true | none | none |
processingResults | ScanFilesAssessmentProcessingResults | true | none | none |
ScanResultsLinks
{
"totalPages": 4,
"curr": "/scans?startDate=2022-12-20T16:44:41.741Z?endDate=2022-12-20T16:44:41.741Z?scanStatus=Processing&scanStatus=Completed?pageSize=10?page=3",
"next": "/scans?startDate=2022-12-20T16:44:41.741Z?endDate=2022-12-20T16:44:41.741Z?scanStatus=Processing&scanStatus=Completed?pageSize=10?page=4",
"prev": "/scans?startDate=2022-12-20T16:44:41.741Z?endDate=2022-12-20T16:44:41.741Z?scanStatus=Processing&scanStatus=Completed?pageSize=10?page=2"
}
These links provide access to the paged results either side of the current page segment, along with the total number of pages.
If the number of results returned is within a single page segment, then these links are not included in the response.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
totalPages | integer | false | none | The total number of pages |
curr | string | false | none | URL providing access to the current page of results |
next | string | false | none | URL providing access to the next page of results |
prev | string | false | none | URL providing access to the previous page of results |
ScanResultsLinksAllUsers
{
"totalPages": 4,
"curr": "/scans/allusers?startDate=2022-12-20T16:44:41.741Z?endDate=2022-12-20T16:44:41.741Z?scanStatus=Processing&scanStatus=Completed?pageSize=10?page=3",
"next": "/scans/allusers?startDate=2022-12-20T16:44:41.741Z?endDate=2022-12-20T16:44:41.741Z?scanStatus=Processing&scanStatus=Completed?pageSize=10?page=4",
"prev": "/scans/allusers?startDate=2022-12-20T16:44:41.741Z?endDate=2022-12-20T16:44:41.741Z?scanStatus=Processing&scanStatus=Completed?pageSize=10?page=2"
}
These links provide access to the paged results either side of the current page segment, along with the total number of pages.
If the number of results returned is within a single page segment, then these links are not included in the response.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
totalPages | integer | false | none | The total number of pages |
curr | string | false | none | URL providing access to the current page of results |
next | string | false | none | URL providing access to the next page of results |
prev | string | false | none | URL providing access to the previous page of results |
PageLinksForFiles
{
"totalPages": 4,
"curr": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=3",
"next": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=4",
"prev": "/scan-results/{scanId}/files?pageSize=100?includeRebuilt=true?page=2"
}
These links provide access to the paged results either side of the current page segment, along with the total number of pages.
If the number of results returned is within a single page segment, then these links are not included in the response.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
totalPages | integer | false | none | The total number of pages |
curr | string | false | none | URL providing access to the current page of results |
next | string | false | none | URL providing access to the next page of results |
prev | string | false | none | URL providing access to the previous page of results |
PageLinksForArchives
{
"totalPages": 4,
"curr": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=3",
"next": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=4",
"prev": "/scan-results/{scanId}/files/{fileId}?pageSize=100?includeRebuilt=true?page=2"
}
These links provide access to the paged results either side of the current page segment, along with the total number of pages.
If the number of results returned is within a single page segment, then these links are not included in the response.
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
totalPages | integer | false | none | The total number of pages |
curr | string | false | none | URL providing access to the current page of results |
next | string | false | none | URL providing access to the next page of results |
prev | string | false | none | URL providing access to the previous page of results |
ScanFilesItemList
[
{
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
}
]
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
anonymous | [ScanFilesAssessmentMetadata] | false | none | none |
ScanFilesAssessmentArchiveList
{
"status": "Failed",
"archiveList": [
{
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
status | string | false | none | Status of the processed file from CDR Engine - Failed : File was not rebuilt due to policy- Errored : File was not rebuilt due to processing error- Rebuilt : File was successfully rebuilt |
archiveList | ScanFilesItemList | false | none | none |
ScanFilesAssessmentMetadata
{
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa",
"status": "Failed"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
fileLocation | string | false | none | Full file path locating the processed file |
fileSize | integer | false | none | Size of the processed file in bytes |
sourceFileHash | string | false | none | Hash value of the source file for the configured algorithm |
rebuiltFileHash | string | false | none | Hash value of the rebuilt file for the configured algorithm |
hashingAlgorithm | string | false | none | Configured hashing algorithm with a default of SHA256 |
fileId | string(uuid) | false | none | Uniquely identifies the file |
status | string | false | none | Status of the processed file from CDR Engine - Failed : File was not rebuilt due to policy- Errored : File was not rebuilt due to processing error- Rebuilt : File was successfully rebuilt |
Enumerated Values
Property | Value |
---|---|
status | Failed |
status | Errored |
status | Rebuilt |
ScanFileMetadata
{
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"sourceFileHash": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"rebuiltFileHash": "r6hWfYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=",
"hashingAlgorithm": "SHA256",
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
fileLocation | string | false | none | Full file path locating the processed file |
fileSize | integer | false | none | Size of the processed file in bytes |
sourceFileHash | string | false | none | Hash value of the source file for the configured algorithm |
rebuiltFileHash | string | false | none | Hash value of the rebuilt file for the configured algorithm |
hashingAlgorithm | string | false | none | Configured hashing algorithm with a default of SHA256 |
fileId | string(uuid) | false | none | Uniquely identifies the file |
ScanArchiveFileMetadata
{
"archiveId": "lk09f362-6c83-49a1-bbcb-7c08389a0mnb",
"fileLocation": "supported/1/test.png",
"fileSize": 123456,
"fileId": "cd88f362-6c83-49a1-bbcb-7c08389a0caa"
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
archiveId | string(uuid) | false | none | Uniquely identifies the archive file |
fileLocation | string | false | none | Full file path locating the processed file |
fileSize | integer | false | none | Size of the processed file in bytes |
fileId | string(uuid) | false | none | Uniquely identifies the file |
ScanFilesAssessmentProcessingResults
{
"status": "Failed",
"remedyItems": [
{
"technicalDescription": "Object specified as free in original will be removed",
"remedyId": 198311939,
"instanceCount": 3
}
],
"sanitisationItems": [
{
"technicalDescription": "Action of type /URI removed by content management policy.",
"sanitisationId": 346815988,
"instanceCount": 2
}
],
"issueItems": [
{
"technicalDescription": "Validation of this MTEF Version not supported",
"issueId": 289311464,
"instanceCount": 1,
"riskLevel": "Medium"
}
],
"errors": [
{
"errorCode": 12,
"errorDescription": "Invalid Content Management Policy"
}
]
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
status | string | false | none | Provides an assessment of the processing outcome - Unprocessed : File was not rebuilt due to Local checks failing file not submitted to CDR Engine- Failed : File was not rebuilt due to policy- Errored : File was not rebuilt due to processing error- Rebuilt : File was successfully rebuilt |
remedyItems | [object] | false | none | Collection of remedy items found in the file by the CDR processing |
» technicalDescription | string | false | none | Description of remedy item from CDR Analysis Report |
» remedyId | integer | false | none | Unique identifier of the remedy type |
» instanceCount | integer | false | none | Number of instances of this remedy found in the file |
sanitisationItems | [object] | false | none | Collection of sanitisation items found in the file by the CDR processing |
» technicalDescription | string | false | none | Description of sanitisation item from CDR Analysis Report |
» sanitisationId | integer | false | none | Unique identifier of the sanitisation type |
» instanceCount | integer | false | none | Number of instances of this sanitisation found in the file |
issueItems | [object] | false | none | Collection of issue items found in the file by the CDR processing |
» technicalDescription | string | false | none | Description of issue item from CDR Analysis Report |
» issueId | integer | false | none | Unique identifier of the issue type |
» instanceCount | integer | false | none | Number of instances of this issue found in the file |
» riskLevel | string | false | none | Indication of the risk posed by this issue |
errors | [object] | false | none | Collection of errors found in the file by the CDR processing |
» errorCode | integer | false | none | Error code from CDR processing |
» errorDescription | string | false | none | Error description for the error code |
ScanFileFormatResults
{
"pdfCount": 0,
"excelCount": 0,
"powerpointCount": 0,
"wordCount": 0,
"mediaCount": 0,
"imagesCount": 0,
"archiveCount": 0,
"metafilesCount": 0,
"executableCount": 0,
"unrecognizedCount": 0
}
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
pdfCount | integer | false | none | Count of the files that the Glasswall engine recognized as “pdf” |
excelCount | integer | false | none | Count of the files that the Glasswall engine recognized as “xls” or “xlt” or “xlsx” or “xltx” or “xlsm” or “xltm” |
powerpointCount | integer | false | none | Count of the files that the Glasswall engine recognized as “ppt”, "“pps”, “pptx”, “pptm”, “ppsx”, “ppam”, “potm”, “ppsm”, “potx”, “pot” |
wordCount | integer | false | none | Count of the files that the Glasswall engine recognized as “doc”, “dot”,“docx”, “docm”, “dotx”, “dotm” |
mediaCount | integer | false | none | Count of the files that the Glasswall engine recognized as “webp”, “wav”, “wave”, “mpg”, “mpeg”, “mp1”, “mp2”, “mp3”, “mp4”, “m4a”, “m4p”, “m4b”, “m4r”, “m4v” |
imagesCount | integer | false | none | Count of the files that the Glasswall engine recognized as “tif”, “tiff”, “geotiff”, “svg”, “jpeg”, “jpg”, “jpe”, “jif”, “jfif”, “jfi”, “png”,“gif”, “bmp”, “dib” |
archiveCount | integer | false | none | Count of the files that the Glasswall engine recognized as “zip”, “zip64”, “7z”, “bz2”, “gz”, “rar”, “tar”, “xz” |
metafilesCount | integer | false | none | Count of the files that the Glasswall engine recognized as “emf” or “wmf” |
executableCount | integer | false | none | Count of the files that the Glasswall engine recognized as “acm”, “ax”, “cpl”, “dll”, “drv”, “mui”, “exe”, “ocx”, “scr”, “sys”, “efi”, “tsp”, “o”, “dylib” “obj”, “elf”, “so”, “axf”, “bin”, “ko”, “mod”, “out” |
unrecognizedCount | integer | false | none | Count of the files that could not be recognized by the Glasswall engine |
ErrorResponseList
[
{
"errorCode": 105,
"errorDescription": "The signed start (se) parameter must be in the future for the source connection string."
}
]
List of errors found during validation
Properties
Name | Type | Required | Restrictions | Description |
---|---|---|---|---|
errorCode | integer | false | none | Error code from the validation |
errorDescription | string | false | none | Error description for the error code |