Direct Connection Support in CM10

My OPSWAT Central Management (MOCM) supports initiating a direct connection to MetaDefender (MD) product instances, enabling the execution of product-specific APIs and supported commands. The following OPSWAT products currently support this feature:

  • MetaDefender CORE (version 5.15.0 and above)
  • MetaDefender ICAP (version 5.9.0 and above)

How it works

MD Core/ICAP must first be registered with the MOCM. Once enrolled, MOCM can effectively manage MD Core/ICAP instances.

When an administrator invokes MOCM APIs, MOCM authenticates the request and then forwards it to the appropriate Product Instance APIs.

Administrators do not need to enable inbound traffic from users to MD instances. All requests are securely routed from MOCM directly to the MD instances.

Steps to make API requests

Once the product instance is enrolled in CM10, adminstrator can follow these steps to make an api request to the instance

  1. Get OAuth API Access token from MOCM
    Go to MOCM console page and setup application to get an access token:
  2. Obtain the connectionID
    Retrieve the connectionID from the relevant product instance.
  3. Construct the API Request
    • Build the URL: Combine the MOCM endpoint URL with the retrieved connectionID.
    • Prepare the Request Body: Include the required data exactly as specified in the product support documentation.
    • Set the Required Headers:
      • X-App-Method: Specify the original HTTP method (e.g., GET, POST).
      • X-App-Url: Provide the original request path.
      • Include any optional headers from the original request using the format: X-App-Header-{headerKey}.

For detailed examples, please refer to the documentation: View Documentation

Server
https://product.my.us.opswat.com

My OPSWAT Central Management US tenant

https://product.my.eu.opswat.com

My OPSWAT Central Management EU tenant

Server Variables

Users authenticate using a Client ID and Client Secret, which can be obtained from My OPSWAT Central Management.

Auth

BearerToken

Get Oauth API Token

To retrieve your Client ID and Client Secret, please follow this link: https://www.opswat.com/docs/cm/developer-guidelines/how-to-work-with-apis

Auth
Request Body

Required information to generate token

objectobject
client_idstring

Client Id of MyOpswat Central Management Account

client_secretstring

Client Secret of MyOpswat Central Management Account

grant_typestring

client_credentials

POST /o/oauth2/token
Copy
Responses
200

response

Root Type for Oauth_reponse_dataobject
access_tokenstring
token_typestring
expires_inint32
Response
Copy

GetConnection status

Get Connection status by Connection ID

Auth
GET /fusion/console/services/connection/{connectionId}
Copy
Responses
200

Get Connection Status successfully

Root Type for InitConnectionData_reponse_successobject
connIdstring
statusstring
400

Invalid ConnectionId

Response
Copy

Close connection

Close a direct connection

Auth
DELETE /fusion/console/services/connection/{connectionId}
Copy
Responses
200

desc

No response body
Response
Copy

Initiate Direct Instance Connection

Initiate a direct communication channel from CM10 to the product instance.

Auth
Path Params
productTypestring

OPSWAT product types

Enum: mdcore,mdicap

Request Body
Root Type for InitConnectionDataobject

Data for initiating a connection from MyOpswat Central Management

deploymentIdstring
Purposestring
POST /fusion/console/services/connection/request/{productType}
Copy
Responses
200

Init Connection successfull

Root Type for InitConnectionData_reponse_successobject
connIdstring
statusstring
404

Incorrect DeploymentId

Response
Copy

Sending_requests

Sending requests directly from My OPSWAT Central Management to product instances.

Sending Requests/Commands

Sending Requests or Commands to Product Instances

To view the list of supported APIs for each product, please refer to the following link: Supported Product APIs

Auth
Headers
X-App-Methodstring
X-App-URLstring
Request Body
stringstring
POST /fusion/console/services/connection/{connectionId}
Copy
Responses
200
stringstring
Response
Copy

Get PMP Report Details

Retrieve the details of a PMP report - including MetaDefender Kiosk, MetaDefender Drive - using the report's session ID. This API returns data as a stream.

Auth
Request Body
objectobject
session_idstring

session ID.

filterobject
issue_typearray[string]

Specify what issue type used to filter along with the field.

Enum: VUL(vulnerability),COO,SENSITIVE,SKIPPED,INFECTED

POST /o/pmp/v1/reports/details
Copy
Responses
200

Successful response

objectobject
idstring

ID

timestamplong

timestamp when the report occurs

sync_timelong

timestamp when the report sent to My Opswat Central Management

session_idstring

session id of the report

file_namestring

file name

file_pathstring

file path

pmp_typestring

issue type

device_idstring

Device id of a device that the report occurred on

device_typestring

Device type of a device that the event occurred on

device_namestring

Device name of a device that the report occurred on

md5string

md5 of the file

sha1string

sha1 of the file

sha256string

sha256 of the file

Response
Copy

Get PMP Reports

Retrieve reports of PMP devices - including MetaDefender Kiosk, MetaDefender Endpoint - in the cursor fashion, sorted by reported time in ascending order.

Auth
Request Body
objectobject
tokenstring

Pagination token to retrieve the next set of items.

limitinteger

Maximum number of devices to return. The value should be in [1,100].

Default: 20

start_timelong

Specify a start time of the query's duration. The format should be Unix epoch time in milliseconds The value must be greater than zero, and it must not be more than 30 days from the current date.

end_timelong

Specify an end time of the query's duration. The format should be Unix epoch time in milliseconds.

filterobject
device_typearray[string]

Specify what device type used to filter along with the field.

Enum: EM,KIOSK,MK5

media_typearray[string]

Specify what media type used to filter along with the field.

issue_typearray[string]

Specify what issue type used to filter along with the field.

Enum: VUL(vulnerability),COO,SENSITIVE,SKIPPED,INFECTED

POST /o/pmp/v1/reports
Copy
Responses
200

Successful response

objectobject
tokenstring

Pagination token

dataarray[object]
timestamplong

timestamp when the report occurs

sync_timelong

timestamp when the report sent to My Opswat Central Management

session_idstring

session id of the report

report_idstring

report id of the report

user_namestring

User logged-in ID who logged into a device when the report occurred

device_namestring

Device name that the report occurred on

device_idstring

Device id of a device that the report occurred on

device_typestring

Device type of a device that the event occurred on

device_groupstring

A device's group name

media_typestring

media type

total_infectedinteger

total infected files in the report

total_vulnerabilityinteger

total vulnerable files in the report

total_sensitiveinteger

total sensitive files in the report

total_coointeger

total coo detection files in the report

total_skippedinteger

total skipped files in the report

total_files_scannedinteger

total scanned files in the report

total_sanitizedinteger

total sanitized files in the report

total_threatinteger

total issued files in the report

Response
Copy

Update Yara rules and file hashes for MetaDefender Kiosk

Update Yara rules and file hashes for MetaDefender Kiosk

Auth
Request Body
objectobject
apply_typestring

Values: - all: apply for all instances - instances: apply for specific instances in

apply_toarray[string]

The list of instance IDs will be updated the file hashes and Yara rules.

yara_sourcesobject
typestring

Possible values: - append: will append to existing yara rules - overwrite: will overwrite all yara rules

skip_by_hashobject
typestring

Possible values: - append: will append to existing yara rules - overwrite: will overwrite all yara rules

POST /o/pmp/v1/kiosk/configuration
Copy
Responses
200

Successful response

objectobject
total_appliedinteger

The number of instances will be applied the Yara rules and file hashes. Note that My OPSWAT Central Management will save this change and will send to MetaDefender Kiosk next time it checks in with My OPSWAT Central Management.

Response
Copy

Meta Defender Drive

MetaDefender Drive.

Get MetaDefender Drive Reports

Receive MetaDefender Drive's reports in the cursor fashion, sorted by reported time in ascending order.

Auth
Request Body
objectobject
tokenstring

Pagination token to retrieve the next set of items.

limitinteger

Maximum number of devices to return. The value should be in [1,100].

Default: 20

start_timelong

Specify a start time of the query's duration. The format should be Unix epoch time in milliseconds The value must be greater than zero, and it must not be more than 30 days from the current date.

end_timelong

Specify an end time of the query's duration. The format should be Unix epoch time in milliseconds.

filterobject
scanned_hostarray[string]
scanned_byarray[string]
issue_typearray[string]

Specify what issue type used to filter along with the field.

Enum: VUL(vulnerability),COO,SENSITIVE,SKIPPED,INFECTED

POST /o/mdd/v1/reports
Copy
Responses
200

Successful response

objectobject
tokenstring

Pagination token

dataarray[object]
timestamplong

timestamp when the report occurs

sync_timelong

timestamp when the report sent to My Opswat Central Management

session_idstring

session id of the report

hardware_modelstring

hardware model of a device that the report occurred on

scan_profilestring

scanning profile

scanned_hoststring
scanned_bystring
device_groupstring

A device's group name

total_infectedinteger

total infected files in the report

total_vulnerabilityinteger

total vulnerable files in the report

total_sensitiveinteger

total sensitive files in the report

total_coointeger

total coo detection files in the report

total_skippedinteger

total skipped files in the report

total_files_scannedinteger

total scanned files in the report

total_sanitizedinteger

total sanitized files in the report

total_threatinteger

total issued files in the report

Response
Copy

Get MetaDefender Drive Report Details

Retrieve the MetaDefender Drive report details by using the report ID and device ID. This API returns data as a stream.

Auth
Request Body
objectobject
device_idstring

the device ID

report_idstring

the report ID

filterobject
issue_typearray[string]

Specify what issue type used to filter along with the field.

Enum: VUL(vulnerability),COO,SENSITIVE,SKIPPED,INFECTED

POST /o/mdd/v1/reports/details
Copy
Responses
200

Successful response

objectobject
idstring

ID

timestamplong

timestamp when the report occurs

sync_timelong

timestamp when the report sent to My Opswat Central Management

session_idstring

session id of the report

file_pathstring

file path

threat_typestring

issue type

device_idstring

Device id of a device that the report occurred on

device_groupstring

Device group of a device that the report occurred on

sha256string

sha256 of the file

Response
Copy

Get MetaDefender Core Instances

Retrieve MetaDefender Core instances.

Auth
Request Body
objectobject
limitinteger

Maximum number of devices to return. The value should be in [1,100].

pageinteger

The specific page number from which instances will be returned

verboseobject
enabledboolean

If verbose is set to true, the system returns statistical data about the processing history within the specified start_time and end_time

Default: false

start_datelong

Specify a start time of the query's duration. The format should be Unix epoch time in milliseconds.
The value must be greater than zero, and it must not exceed one year from the current date.

end_datelong

Specify an end time of the query's duration. The value must be a Unix epoch timestamp in milliseconds, greater than zero, and no more than 90 days after the start_date.

filterobject
deployment_idsarray[string]

List of deployment ID

group_idsarray[string]

List of group ID

tagsarray[object]
keystring
valuestring
POST /o/core/v1/instances
Copy
Responses
200

Successful response

arrayarray[object]
idstring
namestring
deployment_idstring
statusstring
health_statusstring
versionstring
group_idstring
group_namestring
public_ipstring
last_seenstring
last_reportedstring
licenseobject
expirationinteger
typestring
tagsarray[object]
keystring
valuestring
verboseobject
total_processed_filesinteger
total_blocked_filesinteger
total_sanitized_filesinteger
total_quarantined_filesinteger
coo_detectioninteger
spoofinginteger
vulnerabilitiesinteger
sensitive_datainteger
zero_day_protectioninteger
threat_analysisinteger
oss_vulnerabilitiesinteger
insights_threat_intelligenceinteger
known_good_badinteger
threat_detectioninteger
Response
Copy

Get MetaDefender Core Reports

Retrieve MetaDefender Core's processing history reports using cursor-based pagination, sorted by report time in ascending order.

Auth
Request Body
objectobject
tokenstring

Pagination token to retrieve the next set of items.

limitinteger

Maximum number of devices to return. The value should be in [1,100].

Default: 20

start_timelong

Specify a start time of the query's duration. The format should be Unix epoch time in milliseconds.
The value must be greater than zero, and it must not exceed one year from the current date.

end_timelong

Specify an end time of the query's duration. The value must be a Unix epoch timestamp in milliseconds, greater than zero, and no more than 30 days after the start_date.

filterobject
deployment_idsarray[string]

List of deployment ID

group_idsarray[string]

List of group ID

statusarray[string]

Enum: Blocked,Allowed

request_typearray[string]

Enum: batch,batched,extracted,rest

POST /o/core/v1.1/reports
Copy
Responses
200

Successful response

objectobject
tokenstring

Pagination token

dataarray[object]
timestamplong

timestamp when the report occurs

userstring

MD Core's user associated with an API Key used to scan the file

file_namestring

file name

statusstring

status

resultstring

result

data_idstring
parent_data_idstring
workflowstring

workflow

sha256string

sha256 of the file

deployment_idstring

deployment ID

request_typestring
progress_percentinteger
start_timeinteger
file_sizeinteger
upload_time_msinteger
processing_time_msinteger
incident_typesarray[string]

Security incident categories detected during the scan

verdictsarray[string]
actionsarray[string]

Post-processing actions applied during the scan (e.g., "sanitize", "quarantine")

parent_session_idsarray[string]

dataIds of all ancestors from root to direct parent

instance_idstring

The ObjectId of the Instance that processed this scan request.

clientsarray[object]

records the file's transfer log, showing who (clients.user_name) uploaded it to which product instance (clients.deployment_id, clients.product_type), and when (clients.timestamp).

file_typeobject
Response
Copy

Retrieve account inventory or a specific product inventory

Retrieve account inventory or a specific product inventory based on filter criteria. productTypes: MDD (MetaDefender Drive), KIOSK (MetaDefender Kiosk K-Series), MK5 (MetaDefender Kiosk L-Series), MDCORE (MetaDefender Core), MDICAP (MetaDefender ICAP Server)

Auth
Headers
Content-Typestring

application/json

Request Body
Root Type for filterProductTypesobject
filtersobject
productTypesarray[string]
POST /o/fusion/v1/account/inventory
Copy
Responses
200

OK

Root Type for RetrieveAccountObjarray[object]
productNamestring
productTypestring

Enum: MDCORE

totalInstancesint32
connectivityobject
connectedint32
nolicenseint32
disconnectedint32
healthobject
operationalint32
minorIssuesint32
criticalIssuesint32
unknownint32
significantIssuesint32
blockerIssuesint32
versionarray[object]
valuestring
totalint32
statusstring
licenseobject
expiredIn30Daysint32
expiredIn90Daysint32
expiredIn90PlusDaysint32
expiredint32
nolicenseint32
400

Bad Request

401

Unauthorized

500

Internal Server Error

Response
Copy

Processing Overview from MetaDefender Kiosk instances

Retrieve processing overview from MetaDefender Kiosk K-Series and L-Series instances based on filter criteria over a specified time period

Auth
Headers
Content-Typestring

application/json

Request Body
Root Type for KioskOverviewReqobject
endTimeint32

timestamp in miliseconds

startTimeint32

timestamp in miliseconds

filtersobject
instanceIdsarray
groupIdsarray
groupBystring

Enum: groups,instances

POST /o/pmp/v1/scan-report/overview
Copy
Responses
200

OK

Root Type for KioskResObjobject
numberOfSessionsint32

total number of scan sessions during the selected time period and based on the applied filters

numberOfFilesProcessedint32
numberOfSessionsWithThreatsDetectedint32
numberOfThreatsFoundint32
numberOfFilesSanitizedint32
instancesarray[object]

this array will be returned when groupBy is set to 'instances'

idstring
namestring
numberOfSessionsint32
numberOfFilesProcessedint32
numberOfSessionsWithThreatsDetectedint32
numberOfThreatsFoundint32
numberOfFilesSanitizedint32
400

Bad Request

401

Unauthorized

500

Internal Server Error

Response
Copy

Get Kiosk session detail

Auth
GET /o/pmp/v1/devices/{deviceId}/report/scan/{sessionId}
Copy
Responses
200

OK

Root Type for GetKioskSessionDetailReqobject
deviceIdstring
sessionIdstring
malwareInfectedint32
vulnerableAppint32
exploitProtectionint32
malwareSandboxint32
cooViolationint32
privacyViolationint32
skippedFileint32
401

Unauthorized

500

Internal Server Error

Response
Copy

Get Kiosk Detail

Auth
GET /o/pmp/v1/kiosk/devices/{deviceId}
Copy
Responses
200

OK

Root Type for GetKioskDetailResobject
deviceIdstring
productTypestring
deviceNamestring
healthStatusstring
statusMessagesarray[string]
modelIdstring
hardwareVersionIdstring
deviceTypestring
agentVersionstring
isRequiredboolean
publicIpstring
locationstring
groupIdstring
groupNamestring
policyIdstring
groupPolicyIdstring
groupPolicyNamestring
lastSeenint32
enrolledAtint32
lastReportint32
tagsarray
coreInfoobject
coreDeploymentIdstring
coreVersionstring
coreIdstring
coreNamestring
isCoreEnrolledboolean
geolocationobject
coordinatesobject
latitudestring
longitudestring
countryobject
friendlyNamestring
iso2Codestring
propertiesobject
biosVersionstring
hardwareobject
manufacturerstring
modelstring
serialNumberstring
networkarray[object]
adapterNamestring
ipv4string
macAddressstring
hostNamestring
kioskVersionstring
osInfostring
hardenedImageVersionstring
configurationStatusobject
statusstring
lastFetchedint32
401

Unauthorized

404

Not Found

500

Internal Server Error

Response
Copy

Get Kiosk List

Auth
GET /o/pmp/v1/kiosk/devices
Copy
Responses
200

OK

Root Type for GetKioskListResobject
totalint32
itemsarray[object]
deviceIDstring
deviceNamestring
modelIDstring
HardwareVersionIDstring
deviceTypestring
productTypestring
osstring
usernamestring
groupNamestring
locationstring
versionstring
localIPstring
lastSeenint32
isRequiredboolean
healthStatusstring
statusMessagesarray[string]
productStatusstring
scanSessionint32
tagsarray
configurationStatusobject
statusstring
lastFetchedint32
hardwareNamestring
hardenedImageVersionstring
hardwareModelstring
hardwareSerialNumberstring
coreNamestring
biosVersionstring
401

Unauthorized

500

Internal Server Error

Response
Copy