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

MyOpswat Central Management US tenant

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

MyOpswat Central Management EU tenant

Server Variables

Authentication

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

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_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

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

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 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

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

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 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

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

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
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
Response
Copy

Get Kiosk session detail

Auth
GET /o/pmp/v1/devices/{deviceId}/report/scan/{sessionId}
Copy
Responses
200
Root Type for GetKioskSessionDetailReqobject
deviceIdstring
sessionIdstring
malwareInfectedint32
vulnerableAppint32
exploitProtectionint32
malwareSandboxint32
cooViolationint32
privacyViolationint32
skippedFileint32
Response
Copy

Get Kiosk Detail

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

Get Kiosk List

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