This section of the user guide describes how you can programmatically interact with the MetaDefender Storage Security REST API. Below are some common tasks that can be done using the available REST APIs:

  • Authenticate to obtain a JSON Web Token(JWT)
  • Start or stop a process(scan)
  • Add / remove storage units

About this REST API

The exposed endpoint is located by default at http(s)://md-storage-server/api/ (for example, the authentication endpoint is available at http(s)://md-storage-server/api/user/authenticate). All requests are handled by the NGINX web server before being proxied to the backend API Gateway service.

All endpoints perform authentication and authorization checks. For these checks to succeed, a valid token should be presented in the Authorization header in the form of Bearer.

Please note that all issued tokens have a timestamp and signature associated in order to prevent long-term usage without re - authentication.The lifespan of the token is currently set to 60 minutes, meaning you will have to request a new token before it expires in order to avoid error responses.

Server
http://<MDSS_HOST>
Server Variables
http Bearer

As mentioned earlier, all endpoints perform authentication and authorization checks. In order for these checks to succeed, a valid token should be presented in the Authorization header in the form of Bearer .

Suggested application logic

If you plan to integrate MetaDefender Storage Security in your custom application or workflow, please consider the following scenarios for successfully making REST API requests:

Scenario Possible use cases
Short-lived integration You are building or enhancing an application that requires sporadic or on-demand access to MetaDefender Storage Security REST APIs.
The application is not expected to make more than a few REST API calls per hour.
The application does not need to preserve a session.
Long-lived integration You are building or enhancing an application that requires continuous, uninterrupted, or hard to predict access to MetaDefender Storage Security REST APIs.
Requests are being triggered based on external factors and your application should maintain connectivity with MetaDefender Storage Security REST API.
Session preserving is necessary and authentication should happen without user-interaction.
Your application will make a significant number of REST API requests and you need increased performance
API Key integration You are building or enhancing an application that requires continuous, uninterrupted, or hard to predict access to MetaDefender Storage Security REST APIs.
Requests are being triggered based on external factors and your application should maintain connectivity with MetaDefender Storage Security REST API.
Authentication should happen without user-interaction.
Your application will make a significant number of REST API requests and you need increased performance.

Short-lived integration

  • Obtain a signed accessToken by calling /api/user/authenticate API

  • Use this token to call your desired REST API by providing it in the Authorization header

  • Expire the token by calling /api/user/logout

  • Repeat steps 1-3 the next time your application needs to call a REST API

Long-lived integration

  • Obtain a signed token by calling /api/user/authenticate API

  • Securely save the received accessToken and the refreshToken

  • Use the accessToken to call your desired REST API by providing it in the Authorization header

  • Add an exception handler in case you receive a 401 Unauthorized response because the JWT has expired call /api/user/refreshToken to obtain a new accessToken by providing the saved refreshToken.

    a) the accessToken expires after an hour of creation; the expiry time is represented in UTC format by the accessTokenExpiryTime value.
    b) the refreshToken expires after an hour of creation; the expiry time is represented in UTC format by the refreshTokenExpiryTime value. c) if the refreshToken has expired as well, obtain a signed token by calling /api/user/authenticate API

  • Use the newly issued accessToken to call your desired REST API by providing it in the Authorization header

API Key integration

  • In the MetaDefender Storage Security interface, Navigate to Settings -> Users

  • Find your user entry in the user list, click on the three dots on the right side of the entry, and then click on Generate an API Key

  • Generate the key, copy it, and store it somewhere safe

  • Use the API Key to call your desired REST API by providing it as a header with the Key: "ApiKey" and Value:

General considerations

The access token expiration date cannot be extended. By default, the access token is valid for an hour after calling /api/user/authenticate API to obtain it. The refresh token is also valid for an hour but can be extended by calling /api/user/refreshToken and it is also automatically extended with an hour with each non-GET request.

A refresh token is used to request a new access token when the current one expires without requiring re-authentication using a username and password.

The refresh token is used to forcibly expire any previously issued JWT when the refresh token expires or is removed by calling /api/user/logout.

A 3rd party application that needs persistent connectivity with MetaDefender Storage Security should implement a timeout mechanism to ensure that the refresh token is renewed before it expires by calling /api/user/refreshToken whenever the JWT (access token) is expired but before the refresh token expires as well.


Get Roles

Retrieve all ABAC roles. Set includePermissions to true to include the full permission list for each role.

Auth
Query String
includePermissionsboolean

Default: true

GET /api/abac/roles
curl --get \
--url 'http://<MDSS_HOST>/api/abac/roles' \
--header 'Authorization: Bearer {token}' \
--data includePermissions=true
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
roles3 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"roles": [
{
"id": "{string}",
"name": "{string}",
"permissions": [
{
"id": "{string}",
"action": "{string}",
"resource": "{string}"
}
]
}
]
}
Copy

Create Role

Create a new ABAC role. Provide an optional templateRoleId to inherit all permissions from an existing role; any IDs in permissionIds are merged on top of the template.

Auth
Request Body
objectobject
namestring

maxLength: 100

minLength: 3

permissionIdsarray[string]
templateRoleIdstring
POST /api/abac/roles
curl --request POST \
--url 'http://<MDSS_HOST>/api/abac/roles' \
--header 'Authorization: Bearer {token}' \
--data '{
"name": "{string}",
"permissionIds": [
"{array[string]...}"
],
"templateRoleId": "{string}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
role
objectobject
idstring
namestring
permissions3 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"role": {
"id": "{string}",
"name": "{string}",
"permissions": [
{
"id": "{string}",
"action": "{string}",
"resource": "{string}"
}
]
}
}
Copy

Get Role by ID

Retrieve a single role and its associated permissions by role ID.

Auth
Path Params
roleIdstring
GET /api/abac/roles/{roleId}
curl --get \
--url 'http://<MDSS_HOST>/api/abac/roles/{roleId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
role
objectobject
idstring
namestring
permissions3 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"role": {
"id": "{string}",
"name": "{string}",
"permissions": [
{
"id": "{string}",
"action": "{string}",
"resource": "{string}"
}
]
}
}
Copy

Update Role

Replace an existing role's name and full permission set in a single operation. The supplied permissionIds become the role's complete permission list (previously assigned permissions not in the list are removed). Predefined system roles cannot be updated.

Auth
Path Params
roleIdstring
Request Body
objectobject
namestring

maxLength: 100

minLength: 3

permissionIdsarray[string]
PUT /api/abac/roles/{roleId}
curl --request PUT \
--url 'http://<MDSS_HOST>/api/abac/roles/{roleId}' \
--header 'Authorization: Bearer {token}' \
--data '{
"name": "{string}",
"permissionIds": [
"{array[string]...}"
]
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Delete Role

Permanently delete a role. Predefined system roles cannot be deleted.

Auth
Path Params
roleIdstring
DELETE /api/abac/roles/{roleId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/abac/roles/{roleId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Get Permissions

Retrieve all available ABAC permissions (action + resource pairs).

Auth
GET /api/abac/permissions
curl --get \
--url 'http://<MDSS_HOST>/api/abac/permissions' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
permissions3 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"permissions": [
{
"id": "{string}",
"action": "{string}",
"resource": "{string}"
}
]
}
Copy

Create Permission

Create a new ABAC permission defined by an action and a resource.

Auth
Request Body
objectobject
actionstring

minLength: 1

resourcestring

minLength: 1

POST /api/abac/permissions
curl --request POST \
--url 'http://<MDSS_HOST>/api/abac/permissions' \
--header 'Authorization: Bearer {token}' \
--data '{
"action": "{string}",
"resource": "{string}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
permission
objectobject
idstring
actionstring
resourcestring
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"permission": {
"id": "{string}",
"action": "{string}",
"resource": "{string}"
}
}
Copy

Delete Permission

Permanently delete a permission by ID. Predefined base permissions cannot be deleted.

Auth
Path Params
permissionIdstring
DELETE /api/abac/permissions/{permissionId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/abac/permissions/{permissionId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Assign Permission to Role

Assign a permission to the specified role.

Auth
Path Params
roleIdstring
Request Body
objectobject
permissionIdstring

minLength: 1

POST /api/abac/roles/{roleId}/permissions
curl --request POST \
--url 'http://<MDSS_HOST>/api/abac/roles/{roleId}/permissions' \
--header 'Authorization: Bearer {token}' \
--data '{
"permissionId": "{string}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Remove Permission from Role

Remove a permission from the specified role. Permissions that were assigned to a predefined role during initialization cannot be removed.

Auth
Path Params
roleIdstring
permissionIdstring
DELETE /api/abac/roles/{roleId}/permissions/{permissionId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/abac/roles/{roleId}/permissions/{permissionId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Assign Role to User

Assign a role to a user, optionally with an expiry date after which the assignment is no longer valid.

Auth
Path Params
userIdstring
Request Body
objectobject
roleIdstring

minLength: 1

expiresAtdate-time
POST /api/abac/users/{userId}/roles
curl --request POST \
--url 'http://<MDSS_HOST>/api/abac/users/{userId}/roles' \
--header 'Authorization: Bearer {token}' \
--data '{
"roleId": "{string}",
"expiresAt": "{date-time}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
roleBindingIdstring
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"roleBindingId": "{string}"
}
Copy

Replace User Roles

Atomically replace all role assignments for a user with the provided set of role IDs. All existing role bindings are removed and new ones are created in a single transaction.

Auth
Path Params
userIdstring
Request Body
objectobject
roleIdsarray[string]
PUT /api/abac/users/{userId}/roles
curl --request PUT \
--url 'http://<MDSS_HOST>/api/abac/users/{userId}/roles' \
--header 'Authorization: Bearer {token}' \
--data '{
"roleIds": [
"{array[string]...}"
]
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Remove Role from User

Remove a role binding from a user using the role binding ID.

Auth
Path Params
userIdstring
roleBindingIdstring
DELETE /api/abac/users/{userId}/roles/{roleBindingId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/abac/users/{userId}/roles/{roleBindingId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Assign Permission to User

Assign a permission directly to a user, optionally with an expiry date.

Auth
Path Params
userIdstring
Request Body
objectobject
permissionIdstring

minLength: 1

expiresAtdate-time
POST /api/abac/users/{userId}/permissions
curl --request POST \
--url 'http://<MDSS_HOST>/api/abac/users/{userId}/permissions' \
--header 'Authorization: Bearer {token}' \
--data '{
"permissionId": "{string}",
"expiresAt": "{date-time}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
userPermissionIdstring
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"userPermissionId": "{string}"
}
Copy

Remove Permission from User

Remove a directly assigned permission from a user using the user permission ID.

Auth
Path Params
userIdstring
userPermissionIdstring
DELETE /api/abac/users/{userId}/permissions/{userPermissionId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/abac/users/{userId}/permissions/{userPermissionId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Add an account

Add a new storage account to the system

Auth
Query String
Namestring

display name for the account

Descriptionstring

description of the account purpose or scope

Credentialsstring

access credentials for the storage service

ProtocolType

type of protocol (0 = SMB, 1 = S3, etc.)

VendorType

vendor type of storage (0 = AmazonS3, 1 = OneDrive, etc.)

AutoDiscoveryboolean

if true, enables automatic storage detection

GroupIdstring

id of the group account storages should be added to by default

StorageIdsarray

id's of specific storage units under this account

Request Body
objectobject
CredentialsFilefile
POST /api/account
curl --request POST \
--url 'http://<MDSS_HOST>/api/account' \
--header 'Authorization: Bearer {token}' \
--data Name={Name} \
--data Description={Description} \
--data Credentials={Credentials} \
--data ProtocolType={ProtocolType} \
--data VendorType={VendorType} \
--data AutoDiscovery={AutoDiscovery} \
--data GroupId={GroupId} \
--data StorageIds={StorageIds} \
--form 'file=@{file}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
account
objectobject
idstring
namestring
descriptionstring
credentialsstring
protocolTypeinteger
  • 0: Smb
  • 1: GraphSdk
  • 2: BoxSdk
  • 3: AwsSdk
  • 4: AzureBlobSdk
  • 5: AlibabaCloudSdk
  • 6: GoogleCloudSdk
  • 7: AzureFilesSdk
  • 8: Sftp
  • 9: Nfs
  • 10: Mft
  • 11: SharepointOnPrem
  • 12: Ftp
  • 13: OracleSdk
  • 100: GitHubSdk
  • 101: DockerHubSdk
  • 102: BitbucketSdk
  • 103: AmazonEcrSdk
  • 104: QuaySdk
  • 105: JFrogContainerSdk
  • 106: JFrogBinarySdk
  • 107: AzureAcrSdk
  • 108: GitLabSourceSdk
  • 109: GitLabContainerSdk
  • 110: SvnSdk
  • 111: AzureDevOpsSourceSdk
  • 112: AzureDevOpsBinarySdk
  • 113: DirectFile
  • 114: NexusBinarySdk
  • 115: GiteaSdk

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115

vendorType
integerinteger
  • 0: AmazonS3
  • 1: OneDrive
  • 2: Box
  • 3: DellIsilon
  • 4: AzureFiles
  • 5: SmbCompatible
  • 6: S3Compatible
  • 7: AzureBlob
  • 8: AlibabaCloud
  • 9: GoogleCloud
  • 10: Sftp
  • 11: SharePoint
  • 12: Nfs
  • 13: Wasabi
  • 14: OracleCloud
  • 15: NetAppOntap
  • 16: Cubbit
  • 17: Mft
  • 18: SharepointOnPrem
  • 19: Ftp
  • 20: Oracle
  • 21: NfsSisl
  • 22: ScalityRing
  • 100: GitHub
  • 101: DockerHub
  • 102: Bitbucket
  • 103: AmazonEcr
  • 104: Quay
  • 105: JFrogContainer
  • 106: JFrogBinary
  • 107: AzureAcr
  • 108: GitLabSource
  • 109: GitLabContainer
  • 110: Svn
  • 111: AzureDevOpsSource
  • 112: AzureDevOpsBinary
  • 113: DirectFile
  • 114: NexusBinary
  • 115: Gitea

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115

autoDiscoveryboolean
autodiscoveryDestinationGroupIdstring
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"account": {
"id": "{string}",
"name": "{string}",
"description": "{string}",
"credentials": "{string}",
"protocolType": "{integer}",
"vendorType": "{integer}",
"autoDiscovery": "{boolean}",
"autodiscoveryDestinationGroupId": "{string}"
}
}
Copy

Fetch all accounts

Retrieve a list of all configured accounts

Auth
GET /api/account
curl --get \
--url 'http://<MDSS_HOST>/api/account' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
accounts9 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"accounts": [
{
"id": "{string}",
"name": "{string}",
"description": "{string}",
"storages": [
{
"id": "{string}",
"groupId": "{string}",
"accountId": "{string}",
"name": "{string}",
"storageClientId": "{string}",
"storageType": {
"name": "{string}",
"categoryType": "{integer}",
"protocolType": "{integer}",
"vendorType": "{integer}"
},
"storageStatus": {
"message": "{string}",
"statusType": "{int32}"
},
"scansInProgress": "{boolean}",
"isRtpInProgress": "{boolean}",
"isScheduledScanInProgress": "{boolean}",
"storageFunctionality": "{string}",
"$type": "{string}"
}
],
"credentials": "{string}",
"autoDiscovery": "{boolean}",
"groupId": "{string}",
"protocolType": "{int32}",
"vendorType": "{int32}"
}
]
}
Copy

Update an account

Update an existing account's configuration

Auth
Query String
AccountIdstring

id of the account to update

Namestring

display name for the account

Descriptionstring

description of the account purpose or scope

Credentialsstring

access credentials for the storage service

ProtocolType

type of protocol (0 = SMB, 1 = S3, etc.)

VendorType

vendor type of storage (0 = AmazonS3, 1 = OneDrive, etc.)

AutoDiscoveryboolean

if true, enables automatic storage detection

GroupIdstring

id of the group account storages should be added to by default

Request Body
objectobject
CredentialsFilefile
PATCH /api/account
curl --request PATCH \
--url 'http://<MDSS_HOST>/api/account' \
--header 'Authorization: Bearer {token}' \
--data AccountId={AccountId} \
--data Name={Name} \
--data Description={Description} \
--data Credentials={Credentials} \
--data ProtocolType={ProtocolType} \
--data VendorType={VendorType} \
--data AutoDiscovery={AutoDiscovery} \
--data GroupId={GroupId} \
--form 'file=@{file}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
accountIdstring
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"accountId": "{string}"
}
Copy

Delete an account

Permanently delete an account and its storage references

Auth
Path Params
accountIdstring

id of the account to delete

DELETE /api/account/{accountId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/account/{accountId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
accountIdstring
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"accountId": "{string}"
}
Copy

Fetch account by ID

Retrieve a single account's details by ID

Auth
Path Params
accountIdstring

id of the account to get

GET /api/account/{accountId}
curl --get \
--url 'http://<MDSS_HOST>/api/account/{accountId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
account9 fieldsobject
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"account": {
"id": "{string}",
"name": "{string}",
"description": "{string}",
"storages": [
{
"id": "{string}",
"groupId": "{string}",
"accountId": "{string}",
"name": "{string}",
"storageClientId": "{string}",
"storageType": {
"name": "{string}",
"categoryType": "{integer}",
"protocolType": "{integer}",
"vendorType": "{integer}"
},
"storageStatus": {
"message": "{string}",
"statusType": "{int32}"
},
"scansInProgress": "{boolean}",
"isRtpInProgress": "{boolean}",
"isScheduledScanInProgress": "{boolean}",
"storageFunctionality": "{string}",
"$type": "{string}"
}
],
"credentials": "{string}",
"autoDiscovery": "{boolean}",
"groupId": "{string}",
"protocolType": "{int32}",
"vendorType": "{int32}"
}
}
Copy

Fetch available storage units for an account

List all storage units linked to a particular account

Auth
Path Params
accountIdstring

ID of the account

GET /api/account/{accountId}/storages
curl --get \
--url 'http://<MDSS_HOST>/api/account/{accountId}/storages' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entriesarray[object]
autodiscoverySourcestring
autodiscoverySourceUrlstring
protocolTypeint32
vendorTypeint32
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entries": [
{
"autodiscoverySource": "{string}",
"autodiscoverySourceUrl": "{string}"
}
],
"protocolType": "{int32}",
"vendorType": "{int32}"
}
Copy

Fetch the number of accounts

Get the total number of accounts in the system

Auth
GET /api/account/count
curl --get \
--url 'http://<MDSS_HOST>/api/account/count' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
accountCountobject
countint64
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"accountCount": {
"count": "{int64}"
}
}
Copy

Fetch account sources

Fetch account sources

Auth
Path Params
accountIdstring
Query String
filterstring
GET /api/account/{accountId}/sources
curl --get \
--url 'http://<MDSS_HOST>/api/account/{accountId}/sources' \
--header 'Authorization: Bearer {token}' \
--data filter={filter}
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entriesarray[string]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entries": [
"{array[string]...}"
]
}
Copy

Audit

List audit information

Fetch audit logs

Auth
Path Params
startIndexstring
countstring
Query String
logTypestring
categoryTypestring
logLevelstring
searchTextstring
GET /api/audit/{startIndex}/{count}
curl --get \
--url 'http://<MDSS_HOST>/api/audit/{startIndex}/{count}' \
--header 'Authorization: Bearer {token}' \
--data logType={logType} \
--data categoryType={categoryType} \
--data logLevel={logLevel} \
--data searchText={searchText}
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError

Enum: 0,1,2,3,4,0,1,2

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entries8 fieldsarray[object]
filterCountint64
totalCountint64
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entries": [
{
"id": "{string}",
"logLevel": "{integer}",
"details": "{string}",
"logType": "{integer}",
"userId": "{string}",
"category": "{integer}",
"timeStamp": "{date-time}",
"userName": "{string}"
}
],
"filterCount": "{int64}",
"totalCount": "{int64}"
}
Copy

Export configuration file

Export the current configuration settings to an archive. The file will be encrypted using the provided password.

Auth
Query String
exportLicenseboolean
exportSmtpboolean
exportNotificationsboolean
exportRetentionboolean
exportUsersboolean
passwordstring
GET /api/configuration/export
curl --get \
--url 'http://<MDSS_HOST>/api/configuration/export' \
--header 'Authorization: Bearer {token}' \
--data exportLicense={exportLicense} \
--data exportSmtp={exportSmtp} \
--data exportNotifications={exportNotifications} \
--data exportRetention={exportRetention} \
--data exportUsers={exportUsers} \
--data password={password}
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Import configuration file

Auth
Request Body
objectobject
ConfigurationFilefile
passwordstring
POST /api/configuration/import
curl --request POST \
--url 'http://<MDSS_HOST>/api/configuration/import' \
--header 'Authorization: Bearer {token}' \
--form 'file=@{file}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: FailedToUpgradeConfigFile
  • 2: FailedRequestBodyIsEmpty
  • 3: FailedToActivateLicense
  • 4: FailedToDeserializeConfigFile
  • 5: FailedOutdatedVersion
  • 6: FailedInvalidConfigFile
  • 7: FailedMissingPassword
  • 8: FailedWrongPassword

Enum: 0,1,2,3,4,0,1,2,3,4,5,6,7,8

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
areSmtpSettingsImportedboolean
isLicenseImportedboolean
isRetentionImportedboolean
areNotificationsImportedboolean
hasNotificationsPartialFailureboolean
activationDto
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
newLocalUserIdstring
areUsersImportedboolean
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"areSmtpSettingsImported": "{boolean}",
"isLicenseImported": "{boolean}",
"isRetentionImported": "{boolean}",
"areNotificationsImported": "{boolean}",
"hasNotificationsPartialFailure": "{boolean}",
"activationDto": {
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
},
"newLocalUserId": "{string}",
"areUsersImported": "{boolean}"
}
Copy

Get enabled modules

Auth
GET /api/configuration/enabledModules
curl --get \
--url 'http://<MDSS_HOST>/api/configuration/enabledModules'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
enabledModulesarray[integer]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"enabledModules": [
"{array[integer]...}"
]
}
Copy

Retrieve external loggers

Auth
GET /api/externallogger
curl --get \
--url 'http://<MDSS_HOST>/api/externallogger' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError

Enum: 0,1,2,3,4,0,1,2

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entries4 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entries": [
{
"id": "{string}",
"isEnabled": "{boolean}",
"loggerType": "{integer}",
"connectionSettings": {
"$type": "{string}"
}
}
]
}
Copy

Update external logger state

Auth
Request Body
objectobject
idstring

minLength: 1

isEnabledboolean
PUT /api/externallogger/status
curl --request PUT \
--url 'http://<MDSS_HOST>/api/externallogger/status' \
--header 'Authorization: Bearer {token}' \
--data '{
"id": "{string}",
"isEnabled": "{boolean}"
}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Add a new Syslog server configuration

Auth
Request Body
objectobject
isEnabledboolean
serverAddressstring

minLength: 1

pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$|^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$

portint32

pattern: ^()(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})$

loggerTypeinteger
  • 0: SyslogUdp
  • 1: Kafka
  • 2: TcpSyslog
  • 3: TcpSyslogWithTls

Enum: 0,1,2,3

facilityinteger
  • 0: KernelMessages
  • 1: UserLevelMessages
  • 2: MailSystem
  • 3: SystemDaemons
  • 4: SecurityOrAuthorizationMessages1
  • 5: InternalMessages
  • 6: LinePrinterSubsystem
  • 7: NetworkNewsSubsystem
  • 8: UUCPSubsystem
  • 9: ClockDaemon1
  • 10: SecurityOrAuthorizationMessages2
  • 11: FTPDaemon
  • 12: NTPSubsystem
  • 13: LogAudit
  • 14: LogAlert
  • 15: ClockDaemon2
  • 16: LocalUse0
  • 17: LocalUse1
  • 18: LocalUse2
  • 19: LocalUse3
  • 20: LocalUse4
  • 21: LocalUse5
  • 22: LocalUse6
  • 23: LocalUse7

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23

formatinteger
  • 0: RFC5424

Enum: 0

$typestring
POST /api/externallogger/udpSyslog
curl --request POST \
--url 'http://<MDSS_HOST>/api/externallogger/udpSyslog' \
--header 'Authorization: Bearer {token}' \
--data '{
"isEnabled": "{boolean}",
"serverAddress": "{string}",
"port": "{int32}",
"loggerType": "{integer}",
"facility": "{integer}",
"format": "{integer}",
"$type": "{string}"
}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Update a Syslog server configuration

Auth
Request Body
objectobject
isEnabledboolean
serverAddressstring

minLength: 1

pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$|^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$

portint32

pattern: ^()(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})$

loggerTypeinteger
  • 0: SyslogUdp
  • 1: Kafka
  • 2: TcpSyslog
  • 3: TcpSyslogWithTls

Enum: 0,1,2,3

facilityinteger
  • 0: KernelMessages
  • 1: UserLevelMessages
  • 2: MailSystem
  • 3: SystemDaemons
  • 4: SecurityOrAuthorizationMessages1
  • 5: InternalMessages
  • 6: LinePrinterSubsystem
  • 7: NetworkNewsSubsystem
  • 8: UUCPSubsystem
  • 9: ClockDaemon1
  • 10: SecurityOrAuthorizationMessages2
  • 11: FTPDaemon
  • 12: NTPSubsystem
  • 13: LogAudit
  • 14: LogAlert
  • 15: ClockDaemon2
  • 16: LocalUse0
  • 17: LocalUse1
  • 18: LocalUse2
  • 19: LocalUse3
  • 20: LocalUse4
  • 21: LocalUse5
  • 22: LocalUse6
  • 23: LocalUse7

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23

formatinteger
  • 0: RFC5424

Enum: 0

$typestring
idstring

minLength: 1

PUT /api/externallogger/udpSyslog
curl --request PUT \
--url 'http://<MDSS_HOST>/api/externallogger/udpSyslog' \
--header 'Authorization: Bearer {token}' \
--data '{
"isEnabled": "{boolean}",
"serverAddress": "{string}",
"port": "{int32}",
"loggerType": "{integer}",
"facility": "{integer}",
"format": "{integer}",
"$type": "{string}",
"id": "{string}"
}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Add a new Kafka server configuration

Auth
Request Body
objectobject
isEnabledboolean
serverAddressWithPortListstring

minLength: 1

pattern: ^(?:(?:(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9]):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})))(?:,(?:(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9]):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})))*?$

loggerTypeinteger
  • 0: SyslogUdp
  • 1: Kafka
  • 2: TcpSyslog
  • 3: TcpSyslogWithTls

Enum: 0,1,2,3

topicstring

minLength: 1

configurationstring

minLength: 1

$typestring
POST /api/externallogger/kafka
curl --request POST \
--url 'http://<MDSS_HOST>/api/externallogger/kafka' \
--header 'Authorization: Bearer {token}' \
--data '{
"isEnabled": "{boolean}",
"serverAddressWithPortList": "{string}",
"loggerType": "{integer}",
"topic": "{string}",
"configuration": "{string}",
"$type": "{string}"
}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Update a Kafka server configuration

Auth
Request Body
objectobject
isEnabledboolean
serverAddressWithPortListstring

minLength: 1

pattern: ^(?:(?:(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9]):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})))(?:,(?:(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})|(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9]):(6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]|[1-5][0-9]{4}|[1-9][0-9]{0,3})))*?$

loggerTypeinteger
  • 0: SyslogUdp
  • 1: Kafka
  • 2: TcpSyslog
  • 3: TcpSyslogWithTls

Enum: 0,1,2,3

topicstring

minLength: 1

configurationstring

minLength: 1

$typestring
idstring

minLength: 1

PUT /api/externallogger/kafka
curl --request PUT \
--url 'http://<MDSS_HOST>/api/externallogger/kafka' \
--header 'Authorization: Bearer {token}' \
--data '{
"isEnabled": "{boolean}",
"serverAddressWithPortList": "{string}",
"loggerType": "{integer}",
"topic": "{string}",
"configuration": "{string}",
"$type": "{string}",
"id": "{string}"
}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Delete external logger

Auth
Path Params
idstring
DELETE /api/externallogger/{id}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/externallogger/{id}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Rescan a file on demand

This request is used to update a scanned file with passwords, in case it is an encrypted archive andit could not be scanned because the passwords to decrypt it were not provided. It can also be used withoutproviding any passwords to simply rescan a specific file from a finished scan.

Auth
Request Body
objectobject
fileIdstring

ID of the file to rescan

fileIdsarray[string]

IDs of the files to rescan

scanIdstring

scan ID associated with the file

minLength: 1

storageProtocolTypeint32

protocol used by the storage (e.g., SMB, S3)

passwordsarray[string]

optional passwords for encrypted file scanning

workflowIdstring

workflow ID to be used for the on-demand scan

minLength: 1

PUT /api/file
curl --request PUT \
--url 'http://<MDSS_HOST>/api/file' \
--header 'Authorization: Bearer {token}' \
--data '{
"fileId": "{string}",
"fileIds": [
"{array[string]...}"
],
"scanId": "{string}",
"storageProtocolType": "{int32}",
"passwords": [
"{array[string]...}"
],
"workflowId": "{string}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Enumerate processed files

Auth
Query String
StartIndexinteger

starting position for pagination (0-based index)

maximum: 2147483647

minimum: 0

Countinteger

maximum: 10000

minimum: 1

StartDatestring

filter files by scan date

EndDatestring

filter files by scan date

Searchstring

text filter

ScanTypearray

scan type such as (on-demand, scheduled, real time)

Enum: 0,1,2

StorageIdarray

filter based on a list of possible storage id

ScanIdarray

filter based on a list of possible scan id

ScanWorkflowSnapshotIdarray

filter based on a list of possible scan workflow snapshot id

ProcessingStatearray

Enum: 0,1,2,3,4

Resultarray

filter by scan result (0 = Clean, 1 = Blocked, 2 = Processing)

Enum: 0,1,2

ScanAllResultIarray

filter by MD Core scan result (0 = NoThreatDetected, 1 = Infected, 2 = Suspicious, etc.)

Enum: 0,1,2,3,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,38,39,40,41,42,43,255,1014,9999

ScanResultICountarray

the number of engine results that are not "No threat detected"

SandboxVerdictarray

filter by Sandbox verdict (0 = NoThreat, 1 = Malicious, 2 = Suspicious)

Enum: 0,1,2,3,4,5,999

VulnerabilityCountarray

the number of vulnerabilities detected

HasVulnerabilitiesboolean

filter by presence of vulnerabilities

DlpDetectionboolean

DLP detection

HasBlockedFileVersionsboolean

filter by presence of blocked file versions

Remediationsarray

filter by remediation performed on the file

Enum: 0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100,101,102

SkippedScanboolean

filter by whether the scan was skipped

SortByarray

Enum: 0,1,2,3,4,5,6,7,8

SortOrderarray

Enum: 0,1

Expandarray

Possible values for expand: workflow_snapshot

GET /api/file
curl --get \
--url 'http://<MDSS_HOST>/api/file' \
--header 'Authorization: Bearer {token}' \
--data StartIndex={StartIndex} \
--data Count={Count} \
--data StartDate={StartDate} \
--data EndDate={EndDate} \
--data Search={Search} \
--data ScanType={ScanType} \
--data StorageId={StorageId} \
--data ScanId={ScanId} \
--data ScanWorkflowSnapshotId={ScanWorkflowSnapshotId} \
--data ProcessingState={ProcessingState} \
--data Result={Result} \
--data ScanAllResultI={ScanAllResultI} \
--data ScanResultICount={ScanResultICount} \
--data SandboxVerdict={SandboxVerdict} \
--data VulnerabilityCount={VulnerabilityCount} \
--data HasVulnerabilities={HasVulnerabilities} \
--data DlpDetection={DlpDetection} \
--data HasBlockedFileVersions={HasBlockedFileVersions} \
--data Remediations={Remediations} \
--data SkippedScan={SkippedScan} \
--data SortBy={SortBy} \
--data SortOrder={SortOrder} \
--data Expand={Expand}
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entriesarray
filterCountint64
totalCountint64
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entries": [
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"id": "{string}",
"scanId": "{string}",
"name": "{string}",
"path": "{string}",
"hash": "{string}",
"fileOwner": {
"userId": "{string}",
"fullName": "{string}",
"userName": "{string}",
"emailAddress": "{string}"
},
"size": "{int64}",
"fileTypeCategory": "{integer}",
"extension": "{string}"
}
],
"filterCount": "{int64}",
"totalCount": "{int64}"
}
Copy

Rescan multiple files on demand

This request is used to rescan and update existing files from a scan based on a filter.

Auth
Request Body
objectobject
scanIdstring

scan ID associated with the file

minLength: 1

workflowIdstring

workflow ID to use when re-scanning

minLength: 1

passwordsarray[string]

optional passwords for encrypted file scanning

filterParameters

Filters to select files to be re-scanned

objectobject
expandarray[string]

Possible values for expand: workflow_snapshot

startDatedate-time

filter files by scan date

minLength: 1

endDatedate-time

filter files by scan date

minLength: 1

searchstring

text filter

scanTypearray[integer]

scan type such as (on-demand, scheduled, real time)

Enum: 0,1,2

storageIdarray[string]

filter based on a list of possible storage id

scanIdarray[string]

filter based on a list of possible scan id

scanWorkflowSnapshotIdarray[string]

filter based on a list of possible scan workflow snapshot id

processingStatearray[integer]

Enum: 0,1,2,3,4

resultarray[integer]

filter by scan result (0 = Clean, 1 = Blocked, 2 = Processing)

Enum: 0,1,2

scanAllResultIarray[integer]

filter by MD Core scan result (0 = NoThreatDetected, 1 = Infected, 2 = Suspicious, etc.)

Enum: 0,1,2,3,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,38,39,40,41,42,43,255,1014,9999

scanResultICountarray[integer]

the number of engine results that are not "No threat detected"

sandboxVerdictarray[integer]

filter by Sandbox verdict (0 = NoThreat, 1 = Malicious, 2 = Suspicious)

Enum: 0,1,2,3,4,5,999

vulnerabilityCountarray[integer]

the number of vulnerabilities detected

hasVulnerabilitiesboolean

filter by presence of vulnerabilities

dlpDetectionboolean

DLP detection

hasBlockedFileVersionsboolean

filter by presence of blocked file versions

remediationsarray[integer]

filter by remediation performed on the file

Enum: 0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100,101,102

skippedScanboolean

filter by whether the scan was skipped

sortByarray[integer]

Enum: 0,1,2,3,4,5,6,7,8

sortOrderarray[integer]

Enum: 0,1

storageProtocolTypeint32

storage protocol type to use when re-scanning

PUT /api/file/rescan
curl --request PUT \
--url 'http://<MDSS_HOST>/api/file/rescan' \
--header 'Authorization: Bearer {token}' \
--data '{
"scanId": "{string}",
"workflowId": "{string}",
"passwords": [
"{array[string]...}"
],
"filterParameters": {
"expand": [
"{array[string]...}"
],
"startDate": "{date-time}",
"endDate": "{date-time}",
"search": "{string}",
"scanType": [
"{array[integer]...}"
],
"storageId": [
"{array[string]...}"
],
"scanId": [
"{array[string]...}"
],
"scanWorkflowSnapshotId": [
"{array[string]...}"
],
"processingState": [
"{array[integer]...}"
],
"result": [
"{array[integer]...}"
],
"scanAllResultI": [
"{array[integer]...}"
],
"scanResultICount": [
"{array[integer]...}"
],
"sandboxVerdict": [
"{array[integer]...}"
],
"vulnerabilityCount": [
"{array[integer]...}"
],
"hasVulnerabilities": "{boolean}",
"dlpDetection": "{boolean}",
"hasBlockedFileVersions": "{boolean}",
"remediations": [
"{array[integer]...}"
],
"skippedScan": "{boolean}",
"sortBy": [
"{array[integer]...}"
],
"sortOrder": [
"{array[integer]...}"
]
},
"storageProtocolType": "{int32}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Fetch processing results for a file

File processing is done asynchronously and each analysis request is tracked by a file ID. Because processing a file is a potentially time-consuming operation, scheduling a file for processing and retrieving the results needs to be done using two separate API calls.

This request needs to be made multiple times until the analysis is complete. Analysis completion can be tracked using the processingState and the progress values from the response..

Auth
Path Params
fileIdstring
Query String
expandarray

Possible values for expand: workflow_snapshot

GET /api/file/{fileId}
curl --get \
--url 'http://<MDSS_HOST>/api/file/{fileId}' \
--header 'Authorization: Bearer {token}' \
--data expand={expand}
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
idstring

Deprecated

scanIdstring

Deprecated

namestring

Deprecated

pathstring

Deprecated

hashstring

Deprecated

fileOwner

Deprecated

objectobject
userIdstring
fullNamestring
userNamestring
emailAddressstring
sizeint64

Deprecated

storageType

Deprecated

objectobject
namestring
categoryTypeinteger
  • 0: Local
  • 1: Cloud
  • 2: Object

Enum: 0,1,2

protocolTypeinteger
  • 0: Smb
  • 1: GraphSdk
  • 2: BoxSdk
  • 3: AwsSdk
  • 4: AzureBlobSdk
  • 5: AlibabaCloudSdk
  • 6: GoogleCloudSdk
  • 7: AzureFilesSdk
  • 8: Sftp
  • 9: Nfs
  • 10: Mft
  • 11: SharepointOnPrem
  • 12: Ftp
  • 13: OracleSdk

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13

vendorTypeinteger
  • 0: AmazonS3
  • 1: OneDrive
  • 2: Box
  • 3: DellIsilon
  • 4: AzureFiles
  • 5: SmbCompatible
  • 6: S3Compatible
  • 7: AzureBlob
  • 8: AlibabaCloud
  • 9: GoogleCloud
  • 10: Sftp
  • 11: SharePoint
  • 12: Nfs
  • 13: Wasabi
  • 14: OracleCloud
  • 15: NetAppOntap
  • 16: Cubbit
  • 17: Mft
  • 18: SharepointOnPrem
  • 19: Ftp
  • 20: Oracle
  • 21: NfsSisl
  • 22: ScalityRing

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22

storageNamestring

Deprecated

storageLocationstring

Deprecated

scanNamestring

Deprecated

progress

Deprecated

objectobject
uploadinteger
scaninteger
scanResult

Deprecated

objectobject
extractedFiles
objectobject
dataIdstring
scanResultIint32
detectedByint32
filesExtractedCountint32
scanResults
objectobject
scanDetails7 fieldsarray[object]
dataIdstring
scanAllResultIint32
scanAllResultAstring
startTimestring
totalTimenumber
totalAvsint32
totalDetectionsint32
progressPercentageint32
fileInfo
objectobject
fileSizeint64
uploadTimestampstring
md5string
sha1string
sha256string
fileTypeCategorystring
fileTypeDescriptionstring
fileTypeExtensionstring
displayNamestring
fileTypeIdstring
fileScanInfo
objectobject
finalVerdict
objectobject
blockedboolean
verdictstring
confidencenumber
threatLevelnumber
overviewReport
objectobject
analysisStatestring
signalGroups3 fieldsarray[object]
errorCategorystring
errorCodeint32
errorDetailsstring
processInfo
objectobject
postProcessing
objectobject
actionsRanstring
actionsFailedstring
convertedTostring
copyMoveDestinationstring
convertedDestinationstring
sanitizationDetails
objectobject
failureCategorystring
detailsstring
progressPercentageint32
userAgentstring
profilestring
resultstring
blockedReasonstring
fileTypeSkippedScanboolean
processingTimenumber
queueTimenumber
resultIinteger
  • 0: Allowed
  • 1: Blocked
  • 2: Processing

Enum: 0,1,2

dataIdstring
dlpInfo
objectobject
verdictint64
sbomInfo
objectobject
finalVerdict
objectobject
blockedboolean
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

totalPackageCountint32
verdictstring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
overviewReport
objectobject
isPartialReportboolean
osInfo
objectobject
osNamestring
osVersionstring
scanModestring
steps
objectobject
commandstring
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
archstring
osNamestring
osVersionstring
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
licenseStatusstring
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
stepint32
vulnerabilityCountint32
sha256string
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
targetstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependenciesPackageCountint32
dependenciesVulnerabilityTotalint32
dependenciesVulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
resultTemplateHashstring
vulnerabilityInfo
objectobject
vulnerabilityInfoResult
objectobject
codeint64
hashstring
methodint64
timeStampstring
timingint64
detectedProduct
objectobject
hasVulnerabilityboolean
isCurrentboolean
product
objectobject
idint64
namestring
remediationLinkstring
severitystring
sigNamestring
signatureint64
vendor
objectobject
idint64
namestring
versionstring
versionData
objectobject
countBehindint64
feedIdint64
versionstring
vulnerabilities5 fieldsarray[object]
sessionCookiestring
fileTypeInfo
objectobject
fileInfoExtended
objectobject
extensionsstring
groupIdstring
typeIdstring
scanInstanceUrlstring
scanWorkflowSnapshotIdstring
coreEngines5 fieldsarray[object]
processingState

Deprecated

integerinteger
  • 0: InProgress
  • 1: Failed
  • 2: Canceled
  • 3: Available
  • 4: FailedRemediation

Enum: 0,1,2,3,4

exception

Deprecated

objectobject
exceptionDetailsstring
exceptionMessagestring
createddate-time

Deprecated

lastModifieddate-time

Deprecated

discoveryStarteddate-time

Deprecated

fileProcessingDetails

Deprecated

objectobject
streamingStartedTimedate-time
streamingCompletedTimedate-time
streamingTimeSpanMsint64
scanCompletedTimedate-time
processingTimeSpanMsint64
coreEngines5 fieldsarray[object]

Deprecated

remediation

Deprecated

objectobject
isTaggedboolean
isDeletedboolean
isMovedboolean
isCopiedboolean
deepCdr
objectobject
sanitizationDetails
objectobject
failureCategorystring
detailsstring
cdrObjectState
integerinteger
  • 0: Original
  • 1: CdrOriginal
  • 2: CdrSanitized

Enum: 0,1,2

fileWasReplacedboolean
postActionFailedInformationarray[object]
objectActionTypeinteger
  • 0: Tagging
  • 5: AllowedMoved
  • 6: BlockedMoved
  • 7: BlockedDelete
  • 8: AllowedSanitizedMoved
  • 9: AllowedCopied
  • 10: BlockedCopied
  • 11: AllowedSanitizedCopied
  • 12: AllowedSanitizedDeleted
  • 13: AllowedDeleted
  • 14: AllowedKept
  • 15: BlockedKept
  • 16: AllowedSanitizedKept
  • 17: BlockedSanitizedCopied
  • 18: BlockedSanitizedMoved
  • 19: BlockedSanitizedDeleted
  • 20: BlockedSanitizedKept
  • 21: ScanFileVersions
  • 22: DiscoveredMoved
  • 23: DiscoveredCopied
  • 24: DiscoveredKept
  • 25: DiscoveredDelete
  • 100: SoftDelete
  • 101: PackageDelete
  • 102: Copy

Enum: 0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100,101,102

exception
objectobject
exceptionDetailsstring
exceptionMessagestring
objectRemediationActions10 fieldsarray[object]
metaDefenderCoreUrlstring

Deprecated

discoveryStartedDaySecint64

Deprecated

fileDto
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
idstring
scanIdstring
namestring
pathstring
hashstring
fileOwner4 fieldsobject
sizeint64
fileTypeCategory
integerinteger
  • 0: Other
  • 1: Archive
  • 2: Application
  • 3: Document
  • 4: EncryptedDocument
  • 5: Executable
  • 6: Graphical
  • 7: DiskImage
  • 8: AudioVideo
  • 9: OpenSslEncrypted
  • 10: Pdf
  • 11: Text
  • 12: MailMessage

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12

extensionstring
storageType
objectobject
namestring
categoryTypeinteger
  • 0: Local
  • 1: Cloud
  • 2: Object

Enum: 0,1,2

protocolTypeinteger
  • 0: Smb
  • 1: GraphSdk
  • 2: BoxSdk
  • 3: AwsSdk
  • 4: AzureBlobSdk
  • 5: AlibabaCloudSdk
  • 6: GoogleCloudSdk
  • 7: AzureFilesSdk
  • 8: Sftp
  • 9: Nfs
  • 10: Mft
  • 11: SharepointOnPrem
  • 12: Ftp
  • 13: OracleSdk

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13

vendorTypeinteger
  • 0: AmazonS3
  • 1: OneDrive
  • 2: Box
  • 3: DellIsilon
  • 4: AzureFiles
  • 5: SmbCompatible
  • 6: S3Compatible
  • 7: AzureBlob
  • 8: AlibabaCloud
  • 9: GoogleCloud
  • 10: Sftp
  • 11: SharePoint
  • 12: Nfs
  • 13: Wasabi
  • 14: OracleCloud
  • 15: NetAppOntap
  • 16: Cubbit
  • 17: Mft
  • 18: SharepointOnPrem
  • 19: Ftp
  • 20: Oracle
  • 21: NfsSisl
  • 22: ScalityRing

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22

storageNamestring
storageLocationstring
scanNamestring
progress
objectobject
uploadinteger
scaninteger
scanResult
objectobject
extractedFiles
objectobject
dataIdstring
scanResultIint32
detectedByint32
filesExtractedCountint32
scanResults
objectobject
scanDetails7 fieldsarray[object]
dataIdstring
scanAllResultIint32
scanAllResultAstring
startTimestring
totalTimenumber
totalAvsint32
totalDetectionsint32
progressPercentageint32
fileInfo
objectobject
fileSizeint64
uploadTimestampstring
md5string
sha1string
sha256string
fileTypeCategorystring
fileTypeDescriptionstring
fileTypeExtensionstring
displayNamestring
fileTypeIdstring
fileScanInfo
objectobject
finalVerdict
objectobject
blockedboolean
verdictstring
confidencenumber
threatLevelnumber
overviewReport
objectobject
analysisStatestring
signalGroups3 fieldsarray[object]
errorCategorystring
errorCodeint32
errorDetailsstring
processInfo
objectobject
postProcessing
objectobject
actionsRanstring
actionsFailedstring
convertedTostring
copyMoveDestinationstring
convertedDestinationstring
sanitizationDetails
objectobject
failureCategorystring
detailsstring
progressPercentageint32
userAgentstring
profilestring
resultstring
blockedReasonstring
fileTypeSkippedScanboolean
processingTimenumber
queueTimenumber
resultIinteger
  • 0: Allowed
  • 1: Blocked
  • 2: Processing

Enum: 0,1,2

dataIdstring
dlpInfo
objectobject
verdictint64
sbomInfo
objectobject
finalVerdict
objectobject
blockedboolean
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

totalPackageCountint32
verdictstring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
overviewReport
objectobject
isPartialReportboolean
osInfo
objectobject
osNamestring
osVersionstring
scanModestring
steps
objectobject
commandstring
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
archstring
osNamestring
osVersionstring
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
licenseStatusstring
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
stepint32
vulnerabilityCountint32
sha256string
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
targetstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependenciesPackageCountint32
dependenciesVulnerabilityTotalint32
dependenciesVulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
resultTemplateHashstring
vulnerabilityInfo
objectobject
vulnerabilityInfoResult
objectobject
codeint64
hashstring
methodint64
timeStampstring
timingint64
detectedProduct
objectobject
hasVulnerabilityboolean
isCurrentboolean
product
objectobject
idint64
namestring
remediationLinkstring
severitystring
sigNamestring
signatureint64
vendor
objectobject
idint64
namestring
versionstring
versionData
objectobject
countBehindint64
feedIdint64
versionstring
vulnerabilities5 fieldsarray[object]
sessionCookiestring
fileTypeInfo
objectobject
fileInfoExtended
objectobject
extensionsstring
groupIdstring
typeIdstring
scanInstanceUrlstring
scanWorkflowSnapshotIdstring
coreEngines5 fieldsarray[object]
processingStateinteger
  • 0: InProgress
  • 1: Failed
  • 2: Canceled
  • 3: Available
  • 4: FailedRemediation

Enum: 0,1,2,3,4

exception
objectobject
exceptionDetailsstring
exceptionMessagestring
createddate-time
lastModifieddate-time
discoveryStarteddate-time
fileProcessingDetails
objectobject
streamingStartedTimedate-time
streamingCompletedTimedate-time
streamingTimeSpanMsint64
scanCompletedTimedate-time
processingTimeSpanMsint64
coreEngines5 fieldsarray[object]
remediation
objectobject
isTaggedboolean
isDeletedboolean
isMovedboolean
isCopiedboolean
deepCdr
objectobject
sanitizationDetails
objectobject
failureCategorystring
detailsstring
cdrObjectState
integerinteger
  • 0: Original
  • 1: CdrOriginal
  • 2: CdrSanitized

Enum: 0,1,2

fileWasReplacedboolean
postActionFailedInformationarray[object]
objectActionTypeinteger
  • 0: Tagging
  • 5: AllowedMoved
  • 6: BlockedMoved
  • 7: BlockedDelete
  • 8: AllowedSanitizedMoved
  • 9: AllowedCopied
  • 10: BlockedCopied
  • 11: AllowedSanitizedCopied
  • 12: AllowedSanitizedDeleted
  • 13: AllowedDeleted
  • 14: AllowedKept
  • 15: BlockedKept
  • 16: AllowedSanitizedKept
  • 17: BlockedSanitizedCopied
  • 18: BlockedSanitizedMoved
  • 19: BlockedSanitizedDeleted
  • 20: BlockedSanitizedKept
  • 21: ScanFileVersions
  • 22: DiscoveredMoved
  • 23: DiscoveredCopied
  • 24: DiscoveredKept
  • 25: DiscoveredDelete
  • 100: SoftDelete
  • 101: PackageDelete
  • 102: Copy

Enum: 0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100,101,102

exception
objectobject
exceptionDetailsstring
exceptionMessagestring
objectRemediationActions10 fieldsarray[object]
metaDefenderCoreUrlstring
discoveryStartedDaySecint64
objectStorageMetadatastring
scanWorkflowSnapshotIdstring
scanWorkflowSnapshot
objectobject
idstring
scanIdstring
workflow17 fieldsobject
startTimestampint64
stopTimestampint64
scanPool
objectobject
idstring
namestring
scanPoolTypeinteger
  • 0: MdCore
  • 1: MdCloud

Enum: 0,1

isDefaultboolean
scanInstances6 fieldsarray[object]
scanInstances6 fieldsarray[object]
failOverScanPool
objectobject
idstring
namestring
scanPoolTypeinteger
  • 0: MdCore
  • 1: MdCloud

Enum: 0,1

isDefaultboolean
scanInstances6 fieldsarray[object]
failOverScanInstances6 fieldsarray[object]
storage
objectobject
idstring
namestring
groupIdstring
clientIdstring
accountIdstring
sourcestring
storageFunctionalitystring
storageType4 fieldsobject
storageStatusobject
messagestring
statusTypeinteger
  • 0: NotTested
  • 1: Testing
  • 2: Operational
  • 3: Error

Enum: 0,1,2,3

workflowIdstring
lastUpdateddate-time
tenantIdstring
workflowStatistics12 fieldsobject
account
objectobject
idstring
namestring
descriptionstring
credentialsstring
protocolTypeinteger
  • 0: Smb
  • 1: GraphSdk
  • 2: BoxSdk
  • 3: AwsSdk
  • 4: AzureBlobSdk
  • 5: AlibabaCloudSdk
  • 6: GoogleCloudSdk
  • 7: AzureFilesSdk
  • 8: Sftp
  • 9: Nfs
  • 10: Mft
  • 11: SharepointOnPrem
  • 12: Ftp
  • 13: OracleSdk
  • 100: GitHubSdk
  • 101: DockerHubSdk
  • 102: BitbucketSdk
  • 103: AmazonEcrSdk
  • 104: QuaySdk
  • 105: JFrogContainerSdk
  • 106: JFrogBinarySdk
  • 107: AzureAcrSdk
  • 108: GitLabSourceSdk
  • 109: GitLabContainerSdk
  • 110: SvnSdk
  • 111: AzureDevOpsSourceSdk
  • 112: AzureDevOpsBinarySdk
  • 113: DirectFile
  • 114: NexusBinarySdk
  • 115: GiteaSdk

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115

vendorType
integerinteger
  • 0: AmazonS3
  • 1: OneDrive
  • 2: Box
  • 3: DellIsilon
  • 4: AzureFiles
  • 5: SmbCompatible
  • 6: S3Compatible
  • 7: AzureBlob
  • 8: AlibabaCloud
  • 9: GoogleCloud
  • 10: Sftp
  • 11: SharePoint
  • 12: Nfs
  • 13: Wasabi
  • 14: OracleCloud
  • 15: NetAppOntap
  • 16: Cubbit
  • 17: Mft
  • 18: SharepointOnPrem
  • 19: Ftp
  • 20: Oracle
  • 21: NfsSisl
  • 22: ScalityRing
  • 100: GitHub
  • 101: DockerHub
  • 102: Bitbucket
  • 103: AmazonEcr
  • 104: Quay
  • 105: JFrogContainer
  • 106: JFrogBinary
  • 107: AzureAcr
  • 108: GitLabSource
  • 109: GitLabContainer
  • 110: Svn
  • 111: AzureDevOpsSource
  • 112: AzureDevOpsBinary
  • 113: DirectFile
  • 114: NexusBinary
  • 115: Gitea

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115

autoDiscoveryboolean
autodiscoveryDestinationGroupIdstring
realTimeStartDatedate-time
versionsarray[object]
hasBlockedVersionsboolean
versionsCountint32
objectTypeinteger
  • 0: File
  • 1: FileVersion

Enum: 0,1

skippedScanboolean
$typestring
Response
{…}
Copy

Retrieve archive scan results

Retrieve the archive scan results using either the scanResultId or the parentId

Auth
Query String
scanResultIdstring
parentIdstring
startinteger

Default: 0

countinteger

Default: 1000

GET /api/file/archive
curl --get \
--url 'http://<MDSS_HOST>/api/file/archive' \
--header 'Authorization: Bearer {token}' \
--data scanResultId={scanResultId} \
--data parentId={parentId} \
--data start={start} \
--data count=1000
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
archiveScanResults14 fieldsarray[object]
Response
{…}
Copy

Cancel a file in an ongoing scan

Auth
Request Body
objectobject
fileIdsarray[string]
POST /api/file/cancel
curl --request POST \
--url 'http://<MDSS_HOST>/api/file/cancel' \
--header 'Authorization: Bearer {token}' \
--data '{
"fileIds": [
"{array[string]...}"
]
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
idstring

Deprecated

scanIdstring

Deprecated

namestring

Deprecated

pathstring

Deprecated

hashstring

Deprecated

fileOwner

Deprecated

objectobject
userIdstring
fullNamestring
userNamestring
emailAddressstring
sizeint64

Deprecated

storageType

Deprecated

objectobject
namestring
categoryTypeinteger
  • 0: Local
  • 1: Cloud
  • 2: Object

Enum: 0,1,2

protocolTypeinteger
  • 0: Smb
  • 1: GraphSdk
  • 2: BoxSdk
  • 3: AwsSdk
  • 4: AzureBlobSdk
  • 5: AlibabaCloudSdk
  • 6: GoogleCloudSdk
  • 7: AzureFilesSdk
  • 8: Sftp
  • 9: Nfs
  • 10: Mft
  • 11: SharepointOnPrem
  • 12: Ftp
  • 13: OracleSdk

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13

vendorTypeinteger
  • 0: AmazonS3
  • 1: OneDrive
  • 2: Box
  • 3: DellIsilon
  • 4: AzureFiles
  • 5: SmbCompatible
  • 6: S3Compatible
  • 7: AzureBlob
  • 8: AlibabaCloud
  • 9: GoogleCloud
  • 10: Sftp
  • 11: SharePoint
  • 12: Nfs
  • 13: Wasabi
  • 14: OracleCloud
  • 15: NetAppOntap
  • 16: Cubbit
  • 17: Mft
  • 18: SharepointOnPrem
  • 19: Ftp
  • 20: Oracle
  • 21: NfsSisl
  • 22: ScalityRing

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22

storageNamestring

Deprecated

storageLocationstring

Deprecated

scanNamestring

Deprecated

progress

Deprecated

objectobject
uploadinteger
scaninteger
scanResult

Deprecated

objectobject
extractedFiles
objectobject
dataIdstring
scanResultIint32
detectedByint32
filesExtractedCountint32
scanResults
objectobject
scanDetails7 fieldsarray[object]
dataIdstring
scanAllResultIint32
scanAllResultAstring
startTimestring
totalTimenumber
totalAvsint32
totalDetectionsint32
progressPercentageint32
fileInfo
objectobject
fileSizeint64
uploadTimestampstring
md5string
sha1string
sha256string
fileTypeCategorystring
fileTypeDescriptionstring
fileTypeExtensionstring
displayNamestring
fileTypeIdstring
fileScanInfo
objectobject
finalVerdict
objectobject
blockedboolean
verdictstring
confidencenumber
threatLevelnumber
overviewReport
objectobject
analysisStatestring
signalGroups3 fieldsarray[object]
errorCategorystring
errorCodeint32
errorDetailsstring
processInfo
objectobject
postProcessing
objectobject
actionsRanstring
actionsFailedstring
convertedTostring
copyMoveDestinationstring
convertedDestinationstring
sanitizationDetails
objectobject
failureCategorystring
detailsstring
progressPercentageint32
userAgentstring
profilestring
resultstring
blockedReasonstring
fileTypeSkippedScanboolean
processingTimenumber
queueTimenumber
resultIinteger
  • 0: Allowed
  • 1: Blocked
  • 2: Processing

Enum: 0,1,2

dataIdstring
dlpInfo
objectobject
verdictint64
sbomInfo
objectobject
finalVerdict
objectobject
blockedboolean
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

totalPackageCountint32
verdictstring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
overviewReport
objectobject
isPartialReportboolean
osInfo
objectobject
osNamestring
osVersionstring
scanModestring
steps
objectobject
commandstring
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
archstring
osNamestring
osVersionstring
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
licenseStatusstring
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
stepint32
vulnerabilityCountint32
sha256string
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
targetstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependenciesPackageCountint32
dependenciesVulnerabilityTotalint32
dependenciesVulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
resultTemplateHashstring
vulnerabilityInfo
objectobject
vulnerabilityInfoResult
objectobject
codeint64
hashstring
methodint64
timeStampstring
timingint64
detectedProduct
objectobject
hasVulnerabilityboolean
isCurrentboolean
product
objectobject
idint64
namestring
remediationLinkstring
severitystring
sigNamestring
signatureint64
vendor
objectobject
idint64
namestring
versionstring
versionData
objectobject
countBehindint64
feedIdint64
versionstring
vulnerabilities5 fieldsarray[object]
sessionCookiestring
fileTypeInfo
objectobject
fileInfoExtended
objectobject
extensionsstring
groupIdstring
typeIdstring
scanInstanceUrlstring
scanWorkflowSnapshotIdstring
coreEngines5 fieldsarray[object]
processingState

Deprecated

integerinteger
  • 0: InProgress
  • 1: Failed
  • 2: Canceled
  • 3: Available
  • 4: FailedRemediation

Enum: 0,1,2,3,4

exception

Deprecated

objectobject
exceptionDetailsstring
exceptionMessagestring
createddate-time

Deprecated

lastModifieddate-time

Deprecated

discoveryStarteddate-time

Deprecated

fileProcessingDetails

Deprecated

objectobject
streamingStartedTimedate-time
streamingCompletedTimedate-time
streamingTimeSpanMsint64
scanCompletedTimedate-time
processingTimeSpanMsint64
coreEngines5 fieldsarray[object]

Deprecated

remediation

Deprecated

objectobject
isTaggedboolean
isDeletedboolean
isMovedboolean
isCopiedboolean
deepCdr
objectobject
sanitizationDetails
objectobject
failureCategorystring
detailsstring
cdrObjectState
integerinteger
  • 0: Original
  • 1: CdrOriginal
  • 2: CdrSanitized

Enum: 0,1,2

fileWasReplacedboolean
postActionFailedInformationarray[object]
objectActionTypeinteger
  • 0: Tagging
  • 5: AllowedMoved
  • 6: BlockedMoved
  • 7: BlockedDelete
  • 8: AllowedSanitizedMoved
  • 9: AllowedCopied
  • 10: BlockedCopied
  • 11: AllowedSanitizedCopied
  • 12: AllowedSanitizedDeleted
  • 13: AllowedDeleted
  • 14: AllowedKept
  • 15: BlockedKept
  • 16: AllowedSanitizedKept
  • 17: BlockedSanitizedCopied
  • 18: BlockedSanitizedMoved
  • 19: BlockedSanitizedDeleted
  • 20: BlockedSanitizedKept
  • 21: ScanFileVersions
  • 22: DiscoveredMoved
  • 23: DiscoveredCopied
  • 24: DiscoveredKept
  • 25: DiscoveredDelete
  • 100: SoftDelete
  • 101: PackageDelete
  • 102: Copy

Enum: 0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100,101,102

exception
objectobject
exceptionDetailsstring
exceptionMessagestring
objectRemediationActions10 fieldsarray[object]
metaDefenderCoreUrlstring

Deprecated

discoveryStartedDaySecint64

Deprecated

fileDto
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
idstring
scanIdstring
namestring
pathstring
hashstring
fileOwner4 fieldsobject
sizeint64
fileTypeCategory
integerinteger
  • 0: Other
  • 1: Archive
  • 2: Application
  • 3: Document
  • 4: EncryptedDocument
  • 5: Executable
  • 6: Graphical
  • 7: DiskImage
  • 8: AudioVideo
  • 9: OpenSslEncrypted
  • 10: Pdf
  • 11: Text
  • 12: MailMessage

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12

extensionstring
storageType
objectobject
namestring
categoryTypeinteger
  • 0: Local
  • 1: Cloud
  • 2: Object

Enum: 0,1,2

protocolTypeinteger
  • 0: Smb
  • 1: GraphSdk
  • 2: BoxSdk
  • 3: AwsSdk
  • 4: AzureBlobSdk
  • 5: AlibabaCloudSdk
  • 6: GoogleCloudSdk
  • 7: AzureFilesSdk
  • 8: Sftp
  • 9: Nfs
  • 10: Mft
  • 11: SharepointOnPrem
  • 12: Ftp
  • 13: OracleSdk

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13

vendorTypeinteger
  • 0: AmazonS3
  • 1: OneDrive
  • 2: Box
  • 3: DellIsilon
  • 4: AzureFiles
  • 5: SmbCompatible
  • 6: S3Compatible
  • 7: AzureBlob
  • 8: AlibabaCloud
  • 9: GoogleCloud
  • 10: Sftp
  • 11: SharePoint
  • 12: Nfs
  • 13: Wasabi
  • 14: OracleCloud
  • 15: NetAppOntap
  • 16: Cubbit
  • 17: Mft
  • 18: SharepointOnPrem
  • 19: Ftp
  • 20: Oracle
  • 21: NfsSisl
  • 22: ScalityRing

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22

storageNamestring
storageLocationstring
scanNamestring
progress
objectobject
uploadinteger
scaninteger
scanResult
objectobject
extractedFiles
objectobject
dataIdstring
scanResultIint32
detectedByint32
filesExtractedCountint32
scanResults
objectobject
scanDetails7 fieldsarray[object]
dataIdstring
scanAllResultIint32
scanAllResultAstring
startTimestring
totalTimenumber
totalAvsint32
totalDetectionsint32
progressPercentageint32
fileInfo
objectobject
fileSizeint64
uploadTimestampstring
md5string
sha1string
sha256string
fileTypeCategorystring
fileTypeDescriptionstring
fileTypeExtensionstring
displayNamestring
fileTypeIdstring
fileScanInfo
objectobject
finalVerdict
objectobject
blockedboolean
verdictstring
confidencenumber
threatLevelnumber
overviewReport
objectobject
analysisStatestring
signalGroups3 fieldsarray[object]
errorCategorystring
errorCodeint32
errorDetailsstring
processInfo
objectobject
postProcessing
objectobject
actionsRanstring
actionsFailedstring
convertedTostring
copyMoveDestinationstring
convertedDestinationstring
sanitizationDetails
objectobject
failureCategorystring
detailsstring
progressPercentageint32
userAgentstring
profilestring
resultstring
blockedReasonstring
fileTypeSkippedScanboolean
processingTimenumber
queueTimenumber
resultIinteger
  • 0: Allowed
  • 1: Blocked
  • 2: Processing

Enum: 0,1,2

dataIdstring
dlpInfo
objectobject
verdictint64
sbomInfo
objectobject
finalVerdict
objectobject
blockedboolean
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

totalPackageCountint32
verdictstring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
overviewReport
objectobject
isPartialReportboolean
osInfo
objectobject
osNamestring
osVersionstring
scanModestring
steps
objectobject
commandstring
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
archstring
osNamestring
osVersionstring
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
licenseStatusstring
licensingPackageCounts
objectobject
allowedint32
blockedint32
unknownint32
unsupportedint32
stepint32
vulnerabilityCountint32
sha256string
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
packages
objectobject
authorsstring
releaseDatedate-time
ecosystemstring
groupstring
archiveboolean
executableboolean
uidstring
licenses
objectobject
allowed4 fieldsarray[object]
blocked4 fieldsarray[object]
packageNamestring
packageVersionstring
targetstring
hashesarray[object]
sha256string
fileNamestring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependencies
objectobject
ecosystemstring
groupstring
packageNamestring
packageVersionstring
vulnerabilities
objectobject
idstring
severityinteger
  • 0: None
  • 1: Critical
  • 2: High
  • 3: Medium
  • 4: Low
  • 5: Unknown

Enum: 0,1,2,3,4,5

sourcestring
fixedVersionsstring
cwesarray[string]
vulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
dependenciesPackageCountint32
dependenciesVulnerabilityTotalint32
dependenciesVulnerabilityCounts
objectobject
criticalint32
highint32
mediumint32
lowint32
unknownint32
resultTemplateHashstring
vulnerabilityInfo
objectobject
vulnerabilityInfoResult
objectobject
codeint64
hashstring
methodint64
timeStampstring
timingint64
detectedProduct
objectobject
hasVulnerabilityboolean
isCurrentboolean
product
objectobject
idint64
namestring
remediationLinkstring
severitystring
sigNamestring
signatureint64
vendor
objectobject
idint64
namestring
versionstring
versionData
objectobject
countBehindint64
feedIdint64
versionstring
vulnerabilities5 fieldsarray[object]
sessionCookiestring
fileTypeInfo
objectobject
fileInfoExtended
objectobject
extensionsstring
groupIdstring
typeIdstring
scanInstanceUrlstring
scanWorkflowSnapshotIdstring
coreEngines5 fieldsarray[object]
processingStateinteger
  • 0: InProgress
  • 1: Failed
  • 2: Canceled
  • 3: Available
  • 4: FailedRemediation

Enum: 0,1,2,3,4

exception
objectobject
exceptionDetailsstring
exceptionMessagestring
createddate-time
lastModifieddate-time
discoveryStarteddate-time
fileProcessingDetails
objectobject
streamingStartedTimedate-time
streamingCompletedTimedate-time
streamingTimeSpanMsint64
scanCompletedTimedate-time
processingTimeSpanMsint64
coreEngines5 fieldsarray[object]
remediation
objectobject
isTaggedboolean
isDeletedboolean
isMovedboolean
isCopiedboolean
deepCdr
objectobject
sanitizationDetails
objectobject
failureCategorystring
detailsstring
cdrObjectState
integerinteger
  • 0: Original
  • 1: CdrOriginal
  • 2: CdrSanitized

Enum: 0,1,2

fileWasReplacedboolean
postActionFailedInformationarray[object]
objectActionTypeinteger
  • 0: Tagging
  • 5: AllowedMoved
  • 6: BlockedMoved
  • 7: BlockedDelete
  • 8: AllowedSanitizedMoved
  • 9: AllowedCopied
  • 10: BlockedCopied
  • 11: AllowedSanitizedCopied
  • 12: AllowedSanitizedDeleted
  • 13: AllowedDeleted
  • 14: AllowedKept
  • 15: BlockedKept
  • 16: AllowedSanitizedKept
  • 17: BlockedSanitizedCopied
  • 18: BlockedSanitizedMoved
  • 19: BlockedSanitizedDeleted
  • 20: BlockedSanitizedKept
  • 21: ScanFileVersions
  • 22: DiscoveredMoved
  • 23: DiscoveredCopied
  • 24: DiscoveredKept
  • 25: DiscoveredDelete
  • 100: SoftDelete
  • 101: PackageDelete
  • 102: Copy

Enum: 0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100,101,102

exception
objectobject
exceptionDetailsstring
exceptionMessagestring
objectRemediationActions10 fieldsarray[object]
metaDefenderCoreUrlstring
discoveryStartedDaySecint64
objectStorageMetadatastring
scanWorkflowSnapshotIdstring
scanWorkflowSnapshot
objectobject
idstring
scanIdstring
workflow17 fieldsobject
startTimestampint64
stopTimestampint64
scanPool
objectobject
idstring
namestring
scanPoolTypeinteger
  • 0: MdCore
  • 1: MdCloud

Enum: 0,1

isDefaultboolean
scanInstances6 fieldsarray[object]
scanInstances6 fieldsarray[object]
failOverScanPool
objectobject
idstring
namestring
scanPoolTypeinteger
  • 0: MdCore
  • 1: MdCloud

Enum: 0,1

isDefaultboolean
scanInstances6 fieldsarray[object]
failOverScanInstances6 fieldsarray[object]
storage
objectobject
idstring
namestring
groupIdstring
clientIdstring
accountIdstring
sourcestring
storageFunctionalitystring
storageType4 fieldsobject
storageStatusobject
messagestring
statusTypeinteger
  • 0: NotTested
  • 1: Testing
  • 2: Operational
  • 3: Error

Enum: 0,1,2,3

workflowIdstring
lastUpdateddate-time
tenantIdstring
workflowStatistics12 fieldsobject
account
objectobject
idstring
namestring
descriptionstring
credentialsstring
protocolTypeinteger
  • 0: Smb
  • 1: GraphSdk
  • 2: BoxSdk
  • 3: AwsSdk
  • 4: AzureBlobSdk
  • 5: AlibabaCloudSdk
  • 6: GoogleCloudSdk
  • 7: AzureFilesSdk
  • 8: Sftp
  • 9: Nfs
  • 10: Mft
  • 11: SharepointOnPrem
  • 12: Ftp
  • 13: OracleSdk
  • 100: GitHubSdk
  • 101: DockerHubSdk
  • 102: BitbucketSdk
  • 103: AmazonEcrSdk
  • 104: QuaySdk
  • 105: JFrogContainerSdk
  • 106: JFrogBinarySdk
  • 107: AzureAcrSdk
  • 108: GitLabSourceSdk
  • 109: GitLabContainerSdk
  • 110: SvnSdk
  • 111: AzureDevOpsSourceSdk
  • 112: AzureDevOpsBinarySdk
  • 113: DirectFile
  • 114: NexusBinarySdk
  • 115: GiteaSdk

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115

vendorType
integerinteger
  • 0: AmazonS3
  • 1: OneDrive
  • 2: Box
  • 3: DellIsilon
  • 4: AzureFiles
  • 5: SmbCompatible
  • 6: S3Compatible
  • 7: AzureBlob
  • 8: AlibabaCloud
  • 9: GoogleCloud
  • 10: Sftp
  • 11: SharePoint
  • 12: Nfs
  • 13: Wasabi
  • 14: OracleCloud
  • 15: NetAppOntap
  • 16: Cubbit
  • 17: Mft
  • 18: SharepointOnPrem
  • 19: Ftp
  • 20: Oracle
  • 21: NfsSisl
  • 22: ScalityRing
  • 100: GitHub
  • 101: DockerHub
  • 102: Bitbucket
  • 103: AmazonEcr
  • 104: Quay
  • 105: JFrogContainer
  • 106: JFrogBinary
  • 107: AzureAcr
  • 108: GitLabSource
  • 109: GitLabContainer
  • 110: Svn
  • 111: AzureDevOpsSource
  • 112: AzureDevOpsBinary
  • 113: DirectFile
  • 114: NexusBinary
  • 115: Gitea

Enum: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115

autoDiscoveryboolean
autodiscoveryDestinationGroupIdstring
realTimeStartDatedate-time
versionsarray[object]
hasBlockedVersionsboolean
versionsCountint32
objectTypeinteger
  • 0: File
  • 1: FileVersion

Enum: 0,1

skippedScanboolean
$typestring
Response
{…}
Copy

Add a group

Auth
Request Body
objectobject
namestring

group name

minLength: 1

descriptionstring

description of the group

storageIdsarray[string]

associated storages

POST /api/group
curl --request POST \
--url 'http://<MDSS_HOST>/api/group' \
--header 'Authorization: Bearer {token}' \
--data '{
"name": "{string}",
"description": "{string}",
"storageIds": [
"{array[string]...}"
]
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
group
objectobject
idstring
namestring
descriptionstring
storages12 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"group": {
"id": "{string}",
"name": "{string}",
"description": "{string}",
"storages": [
{
"id": "{string}",
"name": "{string}",
"groupId": "{string}",
"clientId": "{string}",
"accountId": "{string}",
"source": "{string}",
"storageFunctionality": "{string}",
"storageType": {
"name": "{string}",
"categoryType": "{integer}",
"protocolType": "{integer}",
"vendorType": "{integer}"
},
"storageStatus": {
"message": "{string}",
"statusType": "{integer}"
},
"workflowId": "{string}",
"lastUpdated": "{date-time}",
"tenantId": "{string}"
}
]
}
}
Copy

Fetch all groups

Auth
GET /api/group
curl --get \
--url 'http://<MDSS_HOST>/api/group' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
groups4 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"groups": [
{
"id": "{string}",
"name": "{string}",
"description": "{string}",
"storages": [
{
"id": "{string}",
"groupId": "{string}",
"accountId": "{string}",
"name": "{string}",
"storageClientId": "{string}",
"storageType": {
"name": "{string}",
"categoryType": "{integer}",
"protocolType": "{integer}",
"vendorType": "{integer}"
},
"storageStatus": {
"message": "{string}",
"statusType": "{int32}"
},
"scansInProgress": "{boolean}",
"isRtpInProgress": "{boolean}",
"isScheduledScanInProgress": "{boolean}",
"storageFunctionality": "{string}",
"$type": "{string}"
}
]
}
]
}
Copy

Update a group

Auth
Request Body
objectobject
namestring

group name

descriptionstring

description of the group

groupIdstring

group id to update

minLength: 1

PATCH /api/group
curl --request PATCH \
--url 'http://<MDSS_HOST>/api/group' \
--header 'Authorization: Bearer {token}' \
--data '{
"name": "{string}",
"description": "{string}",
"groupId": "{string}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
updatedGroup
objectobject
idstring
namestring
descriptionstring
storages12 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"updatedGroup": {
"id": "{string}",
"name": "{string}",
"description": "{string}",
"storages": [
{
"id": "{string}",
"name": "{string}",
"groupId": "{string}",
"clientId": "{string}",
"accountId": "{string}",
"source": "{string}",
"storageFunctionality": "{string}",
"storageType": {
"name": "{string}",
"categoryType": "{integer}",
"protocolType": "{integer}",
"vendorType": "{integer}"
},
"storageStatus": {
"message": "{string}",
"statusType": "{integer}"
},
"workflowId": "{string}",
"lastUpdated": "{date-time}",
"tenantId": "{string}"
}
]
}
}
Copy

Delete a group

Auth
Path Params
groupIdstring
DELETE /api/group/{groupId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/group/{groupId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Fetch group by ID

Auth
Path Params
groupIdstring
GET /api/group/{groupId}
curl --get \
--url 'http://<MDSS_HOST>/api/group/{groupId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
group4 fieldsobject
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"group": {
"id": "{string}",
"name": "{string}",
"description": "{string}",
"storages": [
{
"id": "{string}",
"groupId": "{string}",
"accountId": "{string}",
"name": "{string}",
"storageClientId": "{string}",
"storageType": {
"name": "{string}",
"categoryType": "{integer}",
"protocolType": "{integer}",
"vendorType": "{integer}"
},
"storageStatus": {
"message": "{string}",
"statusType": "{int32}"
},
"scansInProgress": "{boolean}",
"isRtpInProgress": "{boolean}",
"isScheduledScanInProgress": "{boolean}",
"storageFunctionality": "{string}",
"$type": "{string}"
}
]
}
}
Copy

Fetch the number of groups

Auth
GET /api/group/count
curl --get \
--url 'http://<MDSS_HOST>/api/group/count' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
groupCountobject
countint64
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"groupCount": {
"count": "{int64}"
}
}
Copy

Health Status

API that responds with 200 OK if application is running.

Get health status

Auth
Query String
verboseboolean

whether to include extra details

Default: false

GET /api/health
curl --get \
--url 'http://<MDSS_HOST>/api/health' \
--data verbose={verbose}
Copy
Responses
200
objectobject
apiStatusstring
Response
{
"apiStatus": "{string}"
}
Copy

Fetch onboarding configuration

Auth
Query String
newConfigSetupboolean
newDefaultWorkflowboolean
GET /api/onboarding
curl --get \
--url 'http://<MDSS_HOST>/api/onboarding' \
--data newConfigSetup={newConfigSetup} \
--data newDefaultWorkflow={newDefaultWorkflow}
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
hasUserConfiguredboolean
hasStorageConfiguredboolean
hasScanInstanceConfiguredboolean
isOnboardingDoneboolean
isEulaAgreedboolean
isCloudTypeboolean
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"hasUserConfigured": "{boolean}",
"hasStorageConfigured": "{boolean}",
"hasScanInstanceConfigured": "{boolean}",
"isOnboardingDone": "{boolean}",
"isEulaAgreed": "{boolean}",
"isCloudType": "{boolean}"
}
Copy

Finish onboarding

Auth
POST /api/onboarding
curl --request POST \
--url 'http://<MDSS_HOST>/api/onboarding' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Accept Eula

Auth
POST /api/onboarding/eula
curl --request POST \
--url 'http://<MDSS_HOST>/api/onboarding/eula' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Get Remediations by workflow id

Auth
Path Params
idstring
GET /api/remediations/workflow/{id}
curl --get \
--url 'http://<MDSS_HOST>/api/remediations/workflow/{id}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entries6 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entries": [
{
"id": "{string}",
"workflowId": "{string}",
"isEnabled": "{boolean}",
"configuration": "{string}",
"type": "{integer}",
"handlingType": "{integer}"
}
]
}
Copy

Get Remediation by id

Auth
Path Params
idstring
GET /api/remediations/{id}
curl --get \
--url 'http://<MDSS_HOST>/api/remediations/{id}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entry
objectobject
idstring
workflowIdstring
isEnabledboolean
configurationstring
typeinteger
  • 0: FileTagging
  • 1: DeepCdr
  • 2: BlockedFileRemediation
  • 3: AllowedSanitizedFileRemediation
  • 4: AllowedFileRemediation
  • 5: BlockedSanitizedFileRemediation
  • 6: DeleteEmptyFoldersRemediation
  • 7: ScanFileVersions
  • 8: DiscoveredFileRemediation

Enum: 0,1,2,3,4,5,6,7,8

handlingTypeinteger
  • 0: Delete
  • 1: Move
  • 2: Copy
  • 3: Keep
  • 999: NotApplicable

Enum: 0,1,2,3,999

Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entry": {
"id": "{string}",
"workflowId": "{string}",
"isEnabled": "{boolean}",
"configuration": "{string}",
"type": "{integer}",
"handlingType": "{integer}"
}
}
Copy

Delete Remediation

Auth
Path Params
idstring
DELETE /api/remediations/{id}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/remediations/{id}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Add Remediation

Auth
Request Body
objectobject
workflowIdstring
isEnabledboolean
configurationstring
typeinteger
  • 0: FileTagging
  • 1: DeepCdr
  • 2: BlockedFileRemediation
  • 3: AllowedSanitizedFileRemediation
  • 4: AllowedFileRemediation
  • 5: BlockedSanitizedFileRemediation
  • 6: DeleteEmptyFoldersRemediation
  • 7: ScanFileVersions
  • 8: DiscoveredFileRemediation

Enum: 0,1,2,3,4,5,6,7,8

handlingTypeinteger
  • 0: Delete
  • 1: Move
  • 2: Copy
  • 3: Keep
  • 999: NotApplicable

Enum: 0,1,2,3,999

POST /api/remediations
curl --request POST \
--url 'http://<MDSS_HOST>/api/remediations' \
--header 'Authorization: Bearer {token}' \
--data '{
"workflowId": "{string}",
"isEnabled": "{boolean}",
"configuration": "{string}",
"type": "{integer}",
"handlingType": "{integer}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Update Remediation

Auth
Request Body
objectobject
idstring
workflowIdstring
isEnabledboolean
configurationstring
type
integerinteger
  • 0: FileTagging
  • 1: DeepCdr
  • 2: BlockedFileRemediation
  • 3: AllowedSanitizedFileRemediation
  • 4: AllowedFileRemediation
  • 5: BlockedSanitizedFileRemediation
  • 6: DeleteEmptyFoldersRemediation
  • 7: ScanFileVersions
  • 8: DiscoveredFileRemediation

Enum: 0,1,2,3,4,5,6,7,8

handlingType
integerinteger
  • 0: Delete
  • 1: Move
  • 2: Copy
  • 3: Keep
  • 999: NotApplicable

Enum: 0,1,2,3,999

PATCH /api/remediations
curl --request PATCH \
--url 'http://<MDSS_HOST>/api/remediations' \
--header 'Authorization: Bearer {token}' \
--data '{
"id": "{string}",
"workflowId": "{string}",
"isEnabled": "{boolean}",
"configuration": "{string}",
"type": "{integer}",
"handlingType": "{integer}"
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {}
}
Copy

Report

Generate reports

Get scans report

Auth
Query String
storageIdstring
namestring
scanTypesFilterarray

Enum: 0,1,2

scanStatesFilterarray

Enum: 0,1,2,3,4

realTimeHandlingType
startDatestring
endDatestring
sortByarray

Enum: 0,1,2

sortOrderarray

Enum: 0,1

startIndexinteger
countinteger
workflowIdstring
GET /api/report
curl --get \
--url 'http://<MDSS_HOST>/api/report' \
--header 'Authorization: Bearer {token}' \
--data storageId={storageId} \
--data name={name} \
--data scanTypesFilter={scanTypesFilter} \
--data scanStatesFilter={scanStatesFilter} \
--data realTimeHandlingType={realTimeHandlingType} \
--data startDate={startDate} \
--data endDate={endDate} \
--data sortBy={sortBy} \
--data sortOrder={sortOrder} \
--data startIndex={startIndex} \
--data count={count} \
--data workflowId={workflowId}
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: StorageNotFound
  • 2: Error

Enum: 0,1,2,3,4,0,1,2

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
entriesarray
totalCountint64
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"entries": [
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"id": "{string}",
"name": "{string}",
"startTime": "{date-time}",
"stopTime": "{date-time}",
"scanType": "{string}",
"scanningState": "{integer}",
"scanStatusDto": {
"pendingFilesCount": "{int64}",
"pendingFilesSize": "{int64}",
"allowedFilesCount": "{int64}",
"allowedFilesSize": "{int64}",
"blockedFilesCount": "{int64}",
"blockedFilesSize": "{int64}",
"sanitizedFilesCount": "{int64}",
"failedSanitizedFilesCount": "{int64}",
"remediatedFilesCount": "{int64}",
"totalFilesCount": "{int64}",
"totalFilesSize": "{int64}",
"processingFailedCount": "{int64}",
"processingFailedSize": "{int64}",
"processingFailedRemediationCount": "{int64}",
"processedFilesCount": "{int64}",
"processedFilesSize": "{int64}",
"canceledFilesCount": "{int64}",
"canceledFilesSize": "{int64}"
Copy

Download PDF Report

Auth
Path Params
scanIdstring
Query String
TypeOfReportinteger

Enum: 0,1

StartIndexinteger

starting position for pagination (0-based index)

maximum: 2147483647

minimum: 0

Countinteger

maximum: 10000

minimum: 1

StartDatestring

filter files by scan date

EndDatestring

filter files by scan date

Searchstring

text filter

ScanTypearray

scan type such as (on-demand, scheduled, real time)

Enum: 0,1,2

StorageIdarray

filter based on a list of possible storage id

ScanIdarray

filter based on a list of possible scan id

ScanWorkflowSnapshotIdarray

filter based on a list of possible scan workflow snapshot id

ProcessingStatearray

Enum: 0,1,2,3,4

Resultarray

filter by scan result (0 = Clean, 1 = Blocked, 2 = Processing)

Enum: 0,1,2

ScanAllResultIarray

filter by MD Core scan result (0 = NoThreatDetected, 1 = Infected, 2 = Suspicious, etc.)

Enum: 0,1,2,3,7,8,9,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36,38,39,40,41,42,43,255,1014,9999

ScanResultICountarray

the number of engine results that are not "No threat detected"

SandboxVerdictarray

filter by Sandbox verdict (0 = NoThreat, 1 = Malicious, 2 = Suspicious)

Enum: 0,1,2,3,4,5,999

VulnerabilityCountarray

the number of vulnerabilities detected

HasVulnerabilitiesboolean

filter by presence of vulnerabilities

DlpDetectionboolean

DLP detection

HasBlockedFileVersionsboolean

filter by presence of blocked file versions

Remediationsarray

filter by remediation performed on the file

Enum: 0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,100,101,102

SkippedScanboolean

filter by whether the scan was skipped

SortByarray

Enum: 0,1,2,3,4,5,6,7,8

SortOrderarray

Enum: 0,1

Expandarray

Possible values for expand: workflow_snapshot

GET /api/report/download/{scanId}
curl --get \
--url 'http://<MDSS_HOST>/api/report/download/{scanId}' \
--header 'Authorization: Bearer {token}' \
--data TypeOfReport={TypeOfReport} \
--data StartIndex={StartIndex} \
--data Count={Count} \
--data StartDate={StartDate} \
--data EndDate={EndDate} \
--data Search={Search} \
--data ScanType={ScanType} \
--data StorageId={StorageId} \
--data ScanId={ScanId} \
--data ScanWorkflowSnapshotId={ScanWorkflowSnapshotId} \
--data ProcessingState={ProcessingState} \
--data Result={Result} \
--data ScanAllResultI={ScanAllResultI} \
--data ScanResultICount={ScanResultICount} \
--data SandboxVerdict={SandboxVerdict} \
--data VulnerabilityCount={VulnerabilityCount} \
--data HasVulnerabilities={HasVulnerabilities} \
--data DlpDetection={DlpDetection} \
--data HasBlockedFileVersions={HasBlockedFileVersions} \
--data Remediations={Remediations} \
--data SkippedScan={SkippedScan} \
--data SortBy={SortBy} \
--data SortOrder={SortOrder} \
--data Expand={Expand}
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Get scan by ID

Auth
Path Params
scanIdstring
GET /api/scan/{scanId}
curl --get \
--url 'http://<MDSS_HOST>/api/scan/{scanId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
scan
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
idstring
namestring
startTimedate-time
stopTimedate-time
scanTypestring
scanningStateinteger
  • 0: NotStarted
  • 1: Running
  • 2: Cancelled
  • 3: Failed
  • 4: Completed

Enum: 0,1,2,3,4

scanStatusDto18 fieldsobject
scanStatsDto7 fieldsobject
realTimeStartDatedate-time
scanSequenceDto
objectobject
previousScanIdstring
nextScanIdstring
scanPartitionstring
workflowIdstring

WorkflowId required if ScanConfigurationId is null

minLength: 1

scanConfigurationIdstring

This property is obsolete and will be removed in the future. Use WorkflowId instead.

errorsarray[string]
priorityinteger
  • 0: Low
  • 1: Medium
  • 2: High

Enum: 0,1,2

scanWorkflowSnapshotDtos13 fieldsarray[object]
storageIdstring
$typestring
Response
{…}
Copy

Start a scan

To scan a specific folder using the optional Folder parameter, provide the absolute folder path: For Amazon S3 / S3 Compatible Types, Azure Blob, Azure Files, Google Cloud, Alibaba Cloud and Oracle Native: Including the Folder Location integrated in MDSS and excluding the Bucket Name, Container, etc. For Box: With or without the "All Files" folder For Sharepoint and Onedrive: Excluding the Document Library, Site, or Group For OPSWAT MFT Storage: The desired Folder Path when integrating with user For NFS / SMB / SFTP / FTP / SharePoint OnPrem: Only the folder path beyond your configured storage root (do not include the base path set during integration) Provide the absolute folder path in the following format "{"Folder":"PATH_TO_SCAN"}

Auth
Request Body
objectobject
storageIdstring

This property is obsolete and will be removed in the future. Use StorageIds instead.

Deprecated

namestring

user-defined name for the scan

pattern: ^[^@#$%&*"';:.|,{}?+=><~^[]!\]+$`

folderstring

This property is obsolete and will be removed in the future. Use ScanPartition instead.

Deprecated

scanPartitionstring

partiton of storage where the scan will run

priorityint32

priority such as (low, medium, high)

storageIdsarray[string]

id's of storages to be scanned

workflowIdstring

associated workflow to be executed

minLength: 1

mdssBaseUrlstring

base URL for MDSS, if not provided will use Request.Host

scanConfigDto
objectobject
realTimeScanConfig
objectobject
isEnabledboolean
startDatedate-time
handlingTypeinteger
  • 0: Polling
  • 1: EventBased

Enum: 0,1

POST /api/scan/start
curl --request POST \
--url 'http://<MDSS_HOST>/api/scan/start' \
--header 'Authorization: Bearer {token}' \
--data '{
"storageId": "{string}",
"name": "{string}",
"folder": "{string}",
"scanPartition": "{string}",
"priority": "{int32}",
"storageIds": [
"{array[string]...}"
],
"workflowId": "{string}",
"mdssBaseUrl": "{string}",
"scanConfigDto": {
"realTimeScanConfig": {
"isEnabled": "{boolean}",
"startDate": "{date-time}",
"handlingType": "{integer}"
}
}
}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
scanIdstring
scanIdsarray[string]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"scanId": "{string}",
"scanIds": [
"{array[string]...}"
]
}
Copy

Stop a scan

Auth
Path Params
scanIdstring
POST /api/scan/stop/{scanId}
curl --request POST \
--url 'http://<MDSS_HOST>/api/scan/stop/{scanId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
filefile
Response
{
"schema": "{file}"
}
Copy

Delete scans

Auth
Path Params
storageIdstring
Query String
forceDeleteRtpboolean
Request Body
arrayarray[string]
DELETE /api/scan/{storageId}
curl --request DELETE \
--url 'http://<MDSS_HOST>/api/scan/{storageId}' \
--header 'Authorization: Bearer {token}' \
--data forceDeleteRtp={forceDeleteRtp} \
--data '[
"{array[string]...}"
]'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
deletedScans18 fieldsarray[object]
Response
{
"result": "{integer}",
"responseKey": "{string}",
"responseMessage": "{string}",
"responseMessageParams": {},
"deletedScans": [
{
"id": "{string}",
"storageId": "{string}",
"workflowId": "{string}",
"scanScheduleId": "{string}",
"executionId": "{string}",
"name": "{string}",
"userId": "{string}",
"scanConfigDto": {
"realTimeScanConfig": {
"isEnabled": "{boolean}",
"startDate": "{date-time}",
"handlingType": "{integer}"
}
},
"discoveryState": "{integer}",
"scanningState": "{integer}",
"scanType": "{integer}",
"startTime": "{date-time}",
"stopTime": "{date-time}",
"scanPartition": "{string}",
"priority": "{integer}",
"additionalProperties": "{string}",
"tenantId": "{string}",
"errors": [
"{array[string]...}"
]
}
]
}
Copy

Fetch last completed scan

Auth
Path Params
storageIdstring
GET /api/scan/last_completed/{storageId}
curl --get \
--url 'http://<MDSS_HOST>/api/scan/last_completed/{storageId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
scan
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
idstring
namestring
startTimedate-time
stopTimedate-time
scanTypestring
scanningStateinteger
  • 0: NotStarted
  • 1: Running
  • 2: Cancelled
  • 3: Failed
  • 4: Completed

Enum: 0,1,2,3,4

scanStatusDto18 fieldsobject
scanStatsDto7 fieldsobject
realTimeStartDatedate-time
scanSequenceDto
objectobject
previousScanIdstring
nextScanIdstring
scanPartitionstring
workflowIdstring

WorkflowId required if ScanConfigurationId is null

minLength: 1

scanConfigurationIdstring

This property is obsolete and will be removed in the future. Use WorkflowId instead.

errorsarray[string]
priorityinteger
  • 0: Low
  • 1: Medium
  • 2: High

Enum: 0,1,2

scanWorkflowSnapshotDtos13 fieldsarray[object]
storageIdstring
$typestring
Response
{…}
Copy

Get an active scan by scan ID

Auth
Path Params
scanIdstring
GET /api/scan/active/{scanId}
curl --get \
--url 'http://<MDSS_HOST>/api/scan/active/{scanId}' \
--header 'Authorization: Bearer {token}'
Copy
Responses
200
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
scan
objectobject
resultinteger
  • 0: Success
  • 1: Error
  • 2: InternalError
  • 3: NotFound
  • 4: Forbidden

Enum: 0,1,2,3,4

responseKeystring
responseMessagestring
responseMessageParamsobject
*string
idstring
namestring
startTimedate-time
stopTimedate-time
scanTypestring
scanningStateinteger
  • 0: NotStarted
  • 1: Running
  • 2: Cancelled
  • 3: Failed
  • 4: Completed

Enum: 0,1,2,3,4

scanStatusDto18 fieldsobject
scanStatsDto7 fieldsobject
realTimeStartDatedate-time
scanSequenceDto
objectobject
previousScanIdstring
nextScanIdstring
scanPartitionstring
workflowIdstring

WorkflowId required if ScanConfigurationId is null

minLength: 1

scanConfigurationIdstring

This property is obsolete and will be removed in the future. Use WorkflowId instead.

errorsarray[string]
priorityinteger
  • 0: Low
  • 1: Medium
  • 2: High

Enum: 0,1,2

scanWorkflowSnapshotDtos13 fieldsarray[object]