Authentication

This section of the user guide describes how you can programmatically interact with the MetaDefender Software Supply Chain 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 service units

About this REST API

The exposed endpoint is located by default at http(s)://mdssc-server/api/ (for example, the authentication endpoint is available at http(s)://mdssc-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://localhost:8001
Server Variables
http Bearer

apiKey ApiKey

Fields
KeyIn
ApiKeyHeader

monitored-files

Auth
Request Body
objectobject
filefile
workflowIdstring

Default: null

intervalMinutesint32

Default: null

groupIdstring

Default: null

groupNamestring

Default: null

POST /api/v1/monitored-files
Copy
Responses
200

OK

objectobject
idstring
originalFileNamestring
sha256string
groupIdstring
groupNamestring
enabledboolean
rescanIntervalMinutesint32
newCveCountint32
lastRunAtdate-time
nextRunAtdate-time
createdAtdate-time
Response
Copy

monitored-files

Auth
GET /api/v1/monitored-files
Copy
Responses
200

OK

arrayarray[object]
idstring
originalFileNamestring
sha256string
groupIdstring
groupNamestring
enabledboolean
rescanIntervalMinutesint32
newCveCountint32
lastRunAtdate-time
nextRunAtdate-time
createdAtdate-time
Response
Copy

history

Auth
Path Params
idstring
GET /api/v1/monitored-files/{id}/history
Copy
Responses
200

OK

arrayarray[object]
idstring
scanIdstring
runAtdate-time
newCveIdsstring
Response
Copy

scan-now

Auth
Path Params
idstring
POST /api/v1/monitored-files/{id}/scan-now
Copy
Responses
200

OK

objectobject
idstring
originalFileNamestring
sha256string
groupIdstring
groupNamestring
enabledboolean
rescanIntervalMinutesint32
newCveCountint32
lastRunAtdate-time
nextRunAtdate-time
createdAtdate-time
Response
Copy

enabled

Auth
Path Params
idstring
Request Body
objectobject
enabledboolean
POST /api/v1/monitored-files/{id}/enabled
Copy
Responses
200

OK

objectobject
idstring
originalFileNamestring
sha256string
groupIdstring
groupNamestring
enabledboolean
rescanIntervalMinutesint32
newCveCountint32
lastRunAtdate-time
nextRunAtdate-time
createdAtdate-time
Response

interval

Auth
Path Params
idstring
Request Body
objectobject
intervalMinutesint32
POST /api/v1/monitored-files/{id}/interval
Copy
Responses
200

OK

objectobject
idstring
originalFileNamestring
sha256string
groupIdstring
groupNamestring
enabledboolean
rescanIntervalMinutesint32
newCveCountint32
lastRunAtdate-time
nextRunAtdate-time
createdAtdate-time
Response
Copy

{id}

Auth
Path Params
idstring
DELETE /api/v1/monitored-files/{id}
Copy
Responses
204

No Content

No response body
Response
Copy

Get Roles

Auth
Query String
includePermissionsboolean

Default: true

GET /api/v1/abac/roles
Copy
Responses
200

OK

objectobject
roles3 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Create Role

Auth
Request Body
objectobject
namestring

maxLength: 100

minLength: 3

permissionIdsarray[string]
templateRoleIduuid
POST /api/v1/abac/roles
Copy
Responses
200

OK

objectobject
role3 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Get Role by ID

Auth
Path Params
roleIdstring
GET /api/v1/abac/roles/{roleId}
Copy
Responses
200

OK

objectobject
role3 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Update Role

Auth
Path Params
roleIdstring
Request Body
objectobject
namestring

maxLength: 100

minLength: 3

permissionIdsarray[string]
PUT /api/v1/abac/roles/{roleId}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Delete Role

Auth
Path Params
roleIdstring
DELETE /api/v1/abac/roles/{roleId}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Get Permissions

Auth
GET /api/v1/abac/permissions
Copy
Responses
200

OK

objectobject
permissions3 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Create Permission

Auth
Request Body
objectobject
actionstring
resourcestring
POST /api/v1/abac/permissions
Copy
Responses
200

OK

objectobject
permission3 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Delete Permission

Auth
Path Params
permissionIdstring
DELETE /api/v1/abac/permissions/{permissionId}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Assign Permission to Role

Auth
Path Params
roleIdstring
Request Body
objectobject
permissionIduuid
POST /api/v1/abac/roles/{roleId}/permissions
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Remove Permission from Role

Auth
Path Params
roleIdstring
permissionIdstring
DELETE /api/v1/abac/roles/{roleId}/permissions/{permissionId}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Assign Role to User

Auth
Path Params
userIdstring
Request Body
objectobject
roleIduuid
expiresAtdate-time
POST /api/v1/abac/users/{userId}/roles
Copy
Responses
200

OK

objectobject
roleBindingIduuid
responseKeystring
responseMessagestring
Response
Copy

Replace User Roles

Auth
Path Params
userIdstring
Request Body
objectobject
roleIdsarray[string]
PUT /api/v1/abac/users/{userId}/roles
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Remove Role from User

Auth
Path Params
userIdstring
roleBindingIdstring
DELETE /api/v1/abac/users/{userId}/roles/{roleBindingId}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Assign Permission to User

Auth
Path Params
userIdstring
Request Body
objectobject
permissionIduuid
expiresAtdate-time
POST /api/v1/abac/users/{userId}/permissions
Copy
Responses
200

OK

objectobject
userPermissionIduuid
responseKeystring
responseMessagestring
Response
Copy

Remove Permission from User

Auth
Path Params
userIdstring
userPermissionIdstring
DELETE /api/v1/abac/users/{userId}/permissions/{userPermissionId}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Manage Audit

List audit events

Auth
Query String
Startstring

pattern: ^[0-9]*$

Countstring

pattern: ^[0-9]*$

LogTypearray
CategoryTypestring

pattern: ^[0-9]*$

LogLevelstring

pattern: ^[0-9]*$

Searchstring

pattern: ^[0-9]*$

GET /api/v1/audit
Copy
Responses
200

OK

objectobject
entries4 fieldsarray[object]
totalCountint64
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Manage Configuration

Get application configuration

Auth
GET /api/v1
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Receive a full file as a single framed binary stream with manifest in headers

Auth
Headers
receiveFileStreamDto9 fieldsobject
POST /api/v1/cross-domain/file-stream
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

500

Internal Server Error

Response
Copy

Get global lowside configuration

Auth
GET /api/v1/cross-domain/global-config/lowside
Copy
Responses
200

OK

objectobject
configurationobject
highsideAddressstring
enabledboolean
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Set global lowside configuration

Auth
Request Body
objectobject
highsideAddressstring
authorizationTokenstring
enabledboolean
PUT /api/v1/cross-domain/global-config/lowside
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Disable global lowside configuration

Auth
POST /api/v1/cross-domain/global-config/lowside/disable
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Get global highside configuration

Auth
GET /api/v1/cross-domain/global-config/highside
Copy
Responses
200

OK

objectobject
configuration8 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Set global highside configuration

Auth
Request Body
objectobject
pushBehaviourinteger
enabledboolean
scanBeforeImportboolean
scanWorkflowIdstring
maxAllowedSeverityinteger
blockOnSecretsboolean
scanTimeoutSecondsint32
pollIntervalSecondsint32
PUT /api/v1/cross-domain/global-config/highside
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Disable global highside configuration

Auth
POST /api/v1/cross-domain/global-config/highside/disable
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Get cross-domain operation logs

Auth
Query String
pageinteger

Default: null

pageSizeinteger

Default: null

sortBystring

pattern: ^[0-9]*$

Default: null

sortOrderstring

pattern: ^[0-9]*$

Default: null

filterstring

pattern: ^[0-9]*$

Default: null

searchstring

pattern: ^[0-9]*$

Default: null

GET /api/v1/cross-domain/logs
Copy
Responses
200

OK

objectobject
logs12 fieldsarray[object]
hasNextPageboolean
hasPreviousPageboolean
responseKeystring
responseMessagestring
Response
Copy

Delete a cross-domain activity-log entry by transmission id

Auth
Path Params
transmissionIdstring
DELETE /api/v1/cross-domain/logs/{transmissionId}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Receive a lowside configuration change notification

Auth
Request Body
objectobject
storageNamestring
protocolTypeinteger
changeTypeinteger
POST /api/v1/cross-domain/lowside-configuration-notifications
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Get all cross-domain notifications

Auth
GET /api/v1/cross-domain/notifications
Copy
Responses
200

OK

objectobject
notifications6 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Get a lowside configuration by storage ID

Auth
GET /api/v1/cross-domain/storage-config/lowside
Copy
Responses
200

OK

objectobject
configurations5 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Add a lowside configuration

Auth
Request Body
objectobject
storageIdstring
POST /api/v1/cross-domain/storage-config/lowside
Copy
Responses
200

OK

objectobject
configurationIdstring
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Update a lowside configuration by ID

Auth
Path Params
idstring
Request Body
objectobject
storageIdstring
PUT /api/v1/cross-domain/storage-config/lowside/{id}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Delete a lowside configuration by ID

Auth
Path Params
idstring
DELETE /api/v1/cross-domain/storage-config/lowside/{id}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Get a highside storage configuration by storage ID

Auth
GET /api/v1/cross-domain/storage-config/highside
Copy
Responses
200

OK

objectobject
configurations6 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Add a highside configuration

Auth
Request Body
objectobject
storageIdstring
notificationIdstring
POST /api/v1/cross-domain/storage-config/highside
Copy
Responses
200

OK

objectobject
configurationIdstring
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Update a highside configuration by ID

Auth
Path Params
idstring
Request Body
objectobject
storageIdstring
storageNamestring
lowsideStorageNamestring
PUT /api/v1/cross-domain/storage-config/highside/{id}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Delete a highside configuration by ID

Auth
Path Params
idstring
DELETE /api/v1/cross-domain/storage-config/highside/{id}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Get top-risky repositories across all connections

Auth
Query String
windowstring
countinteger

Default: null

GET /api/v1/dashboard/top-risky
Copy
Responses
200

OK

arrayarray[object]
connectionIdstring
connectionNamestring
repositoryIdstring
repositoryNamestring
riskScoreint32
400

Bad Request

500

Internal Server Error

Response
Copy

Export a CycloneDX report for repository

Auth
Path Params
repoIdstring
Query String
Referencestring

pattern: ^[0-9]*$

Default: null

GET /api/v1/export/cyclonedx/{repoId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a CycloneDX report for a specific file scan

Auth
Path Params
fileIdstring
GET /api/v1/export/cyclonedx/file/{fileId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export an SPDX report for a specific scan

Auth
Path Params
scanIdstring
Query String
formatstring
versionstring
GET /api/v1/export/spdx/{scanId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export an SPDX report for a specific file scan

Auth
Path Params
fileIdstring
Query String
formatstring
versionstring
GET /api/v1/export/spdx/file/{fileId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a PDF report for all scans

Auth
Query String
ProductAddressstring

pattern: ^[0-9]*$

Default: null

Typearray
TimeFramestring

pattern: ^[0-9]*$

Default: null

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Default: null

Connectionstring

pattern: ^[0-9]*$

Default: null

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

Default: null

ConnectionTypestring

pattern: ^[0-9]*$

Default: null

RepositoryIdstring

pattern: ^[0-9]*$

Default: null

Latestboolean
GET /api/v1/export/pdf/all-scans
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a PDF overview report for repository

Auth
Path Params
scanIdstring
Query String
ProductAddressstring

pattern: ^[0-9]*$

Default: null

GET /api/v1/export/pdf/overview/{scanId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a PDF SBOM report for repository

Auth
Path Params
scanIdstring
Query String
ProductAddressstring

pattern: ^[0-9]*$

Default: null

GET /api/v1/export/pdf/sbom/{scanId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a PDF SBOM report for a specific batch of files

Auth
Path Params
fileIdstring
Query String
ProductAddressstring

pattern: ^[0-9]*$

Default: null

GET /api/v1/export/pdf/sbom/file/{fileId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a CSV report for repository

Auth
Path Params
scanIdstring
GET /api/v1/export/csv/sbom/{scanId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a CSV report for a specific batch of files

Auth
Path Params
fileIdstring
GET /api/v1/export/csv/sbom/file/{fileId}
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a CSV report of all CVEs from latest scans

Auth
Query String
Severityarray
GET /api/v1/export/csv/cves
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

Response
Copy

Export a CSV report of all packages from latest scans

Auth
GET /api/v1/export/csv/packages
Copy
Responses
200

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTag2 fieldsobject
enableRangeProcessingboolean
400

Bad Request

Response
Copy

Get all external loggers

Auth
GET /api/v1/externallogger
Copy
Responses
200

OK

No response body
Response
Copy

Add an external logger

Auth
Request Body
objectobject
connectionSettings4 fieldsobject
POST /api/v1/externallogger
Copy
Responses
200

OK

No response body
Response
Copy

Update an external logger

Auth
Path Params
idstring
Request Body
objectobject
connectionSettings4 fieldsobject
PUT /api/v1/externallogger/{id}
Copy
Responses
200

OK

No response body
Response
Copy

Delete an external logger

Auth
Path Params
idstring
DELETE /api/v1/externallogger/{id}
Copy
Responses
200

OK

No response body
Response
Copy

Returns all global label keys

Auth
GET /api/v1/global-label-keys
Copy
Responses
200

OK

objectobject
globalKeys10 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Adds a new global label key

Auth
Request Body
objectobject
namestring
descriptionstring
valueTypestring
optionsarray[string]
POST /api/v1/global-label-keys
Copy
Responses
200

OK

objectobject
globalKey10 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Updates an global label key

Auth
Path Params
idstring
Request Body
objectobject
namestring
descriptionstring
valueTypestring
optionsarray[string]
PUT /api/v1/global-label-keys/{id}
Copy
Responses
200

OK

objectobject
globalKey10 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Deletes an global label key

Auth
Path Params
idstring
DELETE /api/v1/global-label-keys/{id}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Start a Scan Now job over one or more targets (each target carries its own StorageId, so a single job may mix protocols)

Auth
Request Body
objectobject
namestring
priorityinteger
workflowIdstring
targets9 fieldsarray[object]
POST /api/v1/jobs
Copy
Responses
200

OK

objectobject
jobIdsarray[string]
priorityinteger
enabledRepositoriesarray[string]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
207

Multi-Status

400

Bad Request

Response
Copy

List jobs (paginated, queryable by trigger type)

Auth
Query String
TriggerTypearray

Enum: ScanNow,Scheduled,RealTime,DirectFile

Priorityarray
Statusarray
WorkflowIdarray
Searchstring

pattern: ^[0-9]*$

Default: null

TimeFramestring

pattern: ^[0-9]*$

Default: null

Typearray
ConnectionTypestring

pattern: ^[0-9]*$

Default: null

Repositorystring

pattern: ^[0-9]*$

Default: null

Servicestring

pattern: ^[0-9]*$

Default: null

Vulnerabilitiesarray
LicenseRisksarray
Threatsboolean
Secretsboolean
SortBystring

pattern: ^[0-9]*$

Default: null

SortDirstring

pattern: ^[0-9]*$

Default: null

Pageinteger
PageSizeinteger
GET /api/v1/jobs
Copy
Responses
200

OK

objectobject
pageint32
pageSizeint32
totalCountint32
hasMoreItemsboolean
jobs9 fieldsarray[object]
Response
Copy

Bulk delete jobs (trigger-agnostic)

Auth
Request Body
objectobject
jobIdsarray[string]
DELETE /api/v1/jobs
Copy
Responses
200

OK

objectobject
deletedJobIdsarray[string]
failedJobIdsarray[string]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Start a Real-Time Protection job over one or more targets (each target carries its own StorageId)

Auth
Request Body
objectobject
namestring
priorityinteger
workflowIdstring
targets9 fieldsarray[object]
POST /api/v1/jobs/rtp
Copy
Responses
200

OK

objectobject
jobIdsarray[string]
priorityinteger
enabledRepositoriesarray[string]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
207

Multi-Status

400

Bad Request

Response
Copy

Create a scheduled job with a recurrence pattern

Auth
Request Body
objectobject
namestring
priorityinteger
workflowIdstring
recurrencePattern5 fieldsobject
targets9 fieldsarray[object]
POST /api/v1/jobs/scheduled
Copy
Responses
200

OK

objectobject
jobIdsarray[string]
priorityinteger
nextRunTimedate-time
failedRepositoriesarray[string]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
207

Multi-Status

400

Bad Request

Response
Copy

Delete all upcoming jobs

Auth
DELETE /api/v1/jobs/scheduled
Copy
Responses
200

OK

objectobject
deletedJobIdsarray[string]
failedJobIdsarray[string]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
207

Multi-Status

400

Bad Request

Response
Copy

Cancel a job (for RealTime jobs this disables RTP)

Auth
Path Params
idstring
POST /api/v1/jobs/{id}/cancel
Copy
Responses
200

OK

objectobject
jobIdstring
statusstring
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
404

Not Found

Response
Copy

Get a single job by id

Auth
Path Params
idstring
GET /api/v1/jobs/{id}
Copy
Responses
200

OK

objectobject
jobIdstring
namestring
priorityinteger
storage7 fieldsobject
repository6 fieldsobject
scanInformation11 fieldsobject
scanStatus4 fieldsobject
404

Not Found

Response
Copy

Activate a license online

Auth
Request Body
objectobject
keystring
POST /api/v1/licenses/online
Copy
Responses
200

OK

objectobject
resultinteger
responseMessagestring
400

Bad Request

Response
Copy

Activate a license offline

Auth
Request Body
objectobject
LicenseContentfile
POST /api/v1/licenses/offline
Copy
Responses
200

OK

objectobject
resultinteger
responseMessagestring
400

Bad Request

Response
Copy

Remove licenses

Auth
DELETE /api/v1/licenses
Copy
Responses
200

OK

objectobject
resultinteger
responseMessagestring
400

Bad Request

404

Not Found

Response
Copy

Get licenses

Auth
GET /api/v1/licenses
Copy
Responses
200

OK

objectobject
resultinteger
license8 fieldsobject
responseMessagestring
400

Bad Request

404

Not Found

Response
Copy

Get current deployment Id for offline license activation

Auth
GET /api/v1/licenses/current-deployment-id
Copy
Responses
200

OK

objectobject
resultinteger
currentDeploymentIdstring
responseMessagestring
400

Bad Request

Response
Copy

Manage Opswat Central Management Ocm

Update an OCM instance

Auth
Request Body
objectobject
serverApistring
regCodestring
PUT /api/v1/ocm
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Delete an OCM instance

Auth
DELETE /api/v1/ocm
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Get an OCM instance

Auth
GET /api/v1/ocm
Copy
Responses
200

OK

objectobject
ocmInformation29 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Get onboarding

Auth
GET /api/v1/onboarding
Copy
Responses
200

OK

objectobject
hasUserConfiguredboolean
hasLicenseConfiguredboolean
hasScanInstanceConfiguredboolean
hasConnectionConfiguredboolean
isCloudTypeboolean
isEulaAgreedboolean
isOnboardingDoneboolean
responseKeystring
responseMessagestring
Response
Copy

Complete onboarding

Auth
POST /api/v1/onboarding/complete
Copy
Responses
200

OK

No response body
Response
Copy

Agree to onboarding EULA

Auth
POST /api/v1/onboarding/accept-eula
Copy
Responses
200

OK

No response body
Response
Copy

Retrieves a paginated, sortable list of packages

Auth
Query String
Namestring

pattern: ^[0-9]*$

Default: null

Ecosystemstring

pattern: ^[0-9]*$

Default: null

Versionstring

pattern: ^[0-9]*$

Default: null

Vulnerabilitiesarray
LicenseRisksarray
Connectionstring

pattern: ^[0-9]*$

Default: null

Repositorystring

pattern: ^[0-9]*$

Default: null

Referencestring

pattern: ^[0-9]*$

Default: null

ScanIdstring

pattern: ^[0-9]*$

Default: null

StepSha256string

pattern: ^[0-9]*$

Default: null

Searchstring

pattern: ^[0-9]*$

Default: null

IncludeDirectFilesboolean
sortBystring

Default: null

sortDirstring

Default: null

pageinteger

Default: null

pageSizeinteger

Default: null

GET /api/v1/packages
Copy
Responses
200

OK

objectobject
pageint32
pageSizeint32
totalCountint32
hasMoreItemsboolean
packages22 fieldsarray[object]
207

Multi-Status

401

Unauthorized

Response
Copy

Retrieves all versions of a specific package by its name and ecosystem

Auth
Query String
ecosystemstring
packageNamestring
GET /api/v1/packages/versions
Copy
Responses
200

OK

objectobject
packageNamestring
ecosystemstring
versions6 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Retrieves a package by its internal database ID

Auth
Path Params
idstring
Query String
includeDirectFilesboolean

Default: false

GET /api/v1/packages/{id}
Copy
Responses
200

OK

objectobject
package22 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Retrieves a package by its universal package UID

Auth
Path Params
uidInB64string
GET /api/v1/packages/by-uid/{uidInB64}
Copy
Responses
200

OK

objectobject
package22 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Retrieves CVEs associated with a specific package

Auth
Path Params
idstring
GET /api/v1/packages/{id}/cves
Copy
Responses
200

OK

objectobject
cves8 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Retrieves the ecosystem-specific upgrade command for a package

Auth
Path Params
idstring
GET /api/v1/packages/{id}/update-instructions
Copy
Responses
200

OK

objectobject
packageIdstring
ecosystemstring
commandstring
messagestring
responseKeystring
responseMessagestring
401

Unauthorized

404

Not Found

500

Internal Server Error

Response
Copy

Retrieves all labels for a specific package

Auth
Path Params
idstring
GET /api/v1/packages/{id}/labels
Copy
Responses
200

OK

objectobject
labels5 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Adds a label to a package

Auth
Path Params
idstring
Request Body
objectobject
Keystring
Valuestring
ValueTypestring
Createddate-time
Updateddate-time
POST /api/v1/packages/{id}/labels
Copy
Responses
200

OK

objectobject
label5 fieldsobject
responseKeystring
responseMessagestring
Response
Copy

Updates a label in a package

Auth
Path Params
idstring
keystring
Request Body
objectobject
valuestring
valueTypestring
PUT /api/v1/packages/{id}/labels/{key}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Deletes a label from a package

Auth
Path Params
idstring
keystring
DELETE /api/v1/packages/{id}/labels/{key}
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Searches for packages by label key and optionally value

Auth
Query String
keystring
valuestring

Default: null

GET /api/v1/packages/search/labels
Copy
Responses
200

OK

objectobject
packages22 fieldsarray[object]
responseKeystring
responseMessagestring
Response
Copy

Create a project

Auth
Request Body
objectobject
namestring

maxLength: 50

workflowIdsarray[string]
storageIdsarray[string]
POST /api/v1/projects
Copy
Responses
200

OK

objectobject
project4 fieldsobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

List projects

Auth
GET /api/v1/projects
Copy
Responses
200

OK

arrayarray[object]
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
Response

Get a project by ID

Auth
Path Params
idstring
GET /api/v1/projects/{id}
Responses
200

OK

objectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
404

Not Found

Response

Update a project

Auth
Path Params
idstring
Request Body
objectobject
namestring

maxLength: 50

PUT /api/v1/projects/{id}
Responses
200

OK

objectobject
project4 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Delete a project

Auth
Path Params
idstring
DELETE /api/v1/projects/{id}
Responses
200

OK

objectobject
project4 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Attach workflows to a project

Auth
Path Params
idstring
Request Body
objectobject
idsarray[string]
POST /api/v1/projects/{id}/workflows/attach
Responses
200

OK

objectobject
project4 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Detach workflows from a project

Auth
Path Params
idstring
Request Body
objectobject
idsarray[string]
POST /api/v1/projects/{id}/workflows/detach
Responses
200

OK

objectobject
project4 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Attach connections (services) to a project

Auth
Path Params
idstring
Request Body
objectobject
idsarray[string]
POST /api/v1/projects/{id}/storages/attach
Responses
200

OK

objectobject
project4 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Detach connections (services) from a project

Auth
Path Params
idstring
Request Body
objectobject
idsarray[string]
POST /api/v1/projects/{id}/storages/detach
Responses
200

OK

objectobject
project4 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Enable real-time protection for multiple repositories

Auth
Path Params
storageIdstring
Request Body
objectobject
repositoriesarray[object]
repositoryIdstring
repositoryNamestring
connectionstring
workflowIdstring
POST /api/v1/realtime/{storageId}/enable
Responses
207

Multi-Status

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

409

Conflict

Response

Disable real-time protection for connection

Auth
Path Params
storageIdstring
PATCH /api/v1/realtime/{storageId}/disable
Responses
200

OK

No response body
Response

Disable real-time protection for repository

Auth
Path Params
storageIdstring
repositoryIdstring
PATCH /api/v1/realtime/{storageId}/{repositoryId}/disable
Responses
200

OK

No response body
Response

List connections with real-time protection enabled

Auth
GET /api/v1/realtime
Responses
200

OK

objectobject
storages4 fieldsarray[object]
Response

List ongoing real-time protection scans for connection

Auth
Path Params
storageIdstring
GET /api/v1/realtime/{storageId}
Responses
200

OK

objectobject
storageIdstring
realTimeScans5 fieldsarray[object]
scanInformation7 fieldsobject
Response

Delete real-time scan protection for connection

Auth
Path Params
storageIdstring
Query String
forceDeleteboolean

Default: false

DELETE /api/v1/realtime/{storageId}
Responses
200

OK

No response body
Response

Delete real-time scan protection for repository

Auth
Path Params
storageIdstring
repositoryIdstring
Query String
forceDeleteboolean

Default: false

DELETE /api/v1/realtime/{storageId}/{repositoryId}
Responses
200

OK

No response body
Response

Add a scan configuration

Auth
Request Body
objectobject
namestring

maxLength: 50

minLength: 3

scanPoolIdstring
rulesarray[string]
userAgentstring
POST /api/v1/scan-configurations
Responses
200

OK

objectobject
idstring
scanPoolIdstring
rulesarray[string]
typeinteger
namestring
scanPool5 fieldsobject
userAgentstring
filters5 fieldsobject
400

Bad Request

502

Bad Gateway

Response

Get all scan configurations

Auth
GET /api/v1/scan-configurations
Responses
200

OK

objectobject
Workflows8 fieldsarray[object]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Update a scan configuration

Auth
Path Params
idstring
Request Body
objectobject
namestring

maxLength: 50

minLength: 3

scanPoolIdstring
rulesarray[string]
userAgentstring
PUT /api/v1/scan-configurations/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Delete a scan configuration

Auth
Path Params
idstring
DELETE /api/v1/scan-configurations/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Get a scan configuration by ID

Auth
Path Params
idstring
GET /api/v1/scan-configurations/{id}
Responses
200

OK

objectobject
Workflow8 fieldsobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Get all scan configurations by scan pool ID

Auth
Path Params
idstring
GET /api/v1/scan-configurations/scan-pools/{id}
Responses
200

OK

objectobject
Workflows8 fieldsarray[object]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response

Add a new scan instance

Auth
Request Body
objectobject
scanPoolIdstring
urlstring
apiKeystring
timeoutstring

pattern: ^-?(\d+\.)?\d{2}:\d{2}:\d{2}(\.\d{1,7})?$

scanInstanceTypeinteger
POST /api/v1/scan-instances
Responses
200

OK

objectobject
scanInstanceIdstring
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Delete a scan instance

Auth
Path Params
idstring
DELETE /api/v1/scan-instances/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Get a scan instance by ID

Auth
Path Params
idstring
GET /api/v1/scan-instances/{id}
Responses
200

OK

objectobject
scanInstance5 fieldsobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Update a scan instance

Auth
Path Params
idstring
Request Body
objectobject
urlstring
apiKeystring
timeoutstring

pattern: ^-?(\d+\.)?\d{2}:\d{2}:\d{2}(\.\d{1,7})?$

PUT /api/v1/scan-instances/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Add a new scan pool

Auth
Request Body
objectobject
namestring
scanPoolTypeinteger
POST /api/v1/scan-pools
Responses
200

OK

objectobject
scanPoolIdstring
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Get scan pools

Auth
GET /api/v1/scan-pools
Responses
200

OK

objectobject
scanPools5 fieldsarray[object]
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Delete a scan pool

Auth
Path Params
idstring
DELETE /api/v1/scan-pools/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Get a scan pool by ID

Auth
Path Params
idstring
GET /api/v1/scan-pools/{id}
Responses
200

OK

objectobject
scanPool5 fieldsobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Update an existing scan pool

Auth
Path Params
idstring
Request Body
objectobject
namestring
PUT /api/v1/scan-pools/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response

Get all rules from a scan pool

Auth
Path Params
idstring
GET /api/v1/scan-pools/{id}/rules
Responses
200

OK

arrayarray[object]
namestring
user_agentsarray[string]
400

Bad Request

Response

Add or start a scan

Auth
Request Body
objectobject
storageIdstring
storageNamestring
scanTypeinteger
workflowIdstring
repositoryIdstring
repositoryNamestring
protocolTypeinteger
repositoryReferencesarray[string]
organizationstring
connectionstring
packageTypestring
repositoryTypestring
POST /api/v1/scans
Responses
200

OK

objectobject
scanIdsarray[string]
referencesUsedForScanningarray[string]
protocolTypeinteger
repositoryIdstring
repositoryNamestring
serviceIdstring
storageNamestring
workflowIdstring
workflowNamestring
triggerEventstring
triggerBystring
responseKeystring
responseMessagestring
Response

Enumerate scan results

Auth
Query String
Typearray
TimeFramestring

pattern: ^[0-9]*$

Default: null

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Default: null

Connectionstring

pattern: ^[0-9]*$

Default: null

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

Default: null

ConnectionTypestring

pattern: ^[0-9]*$

Default: null

RepositoryIdstring

pattern: ^[0-9]*$

Default: null

Latestboolean
GET /api/v1/scans
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response

Delete multiple scans by their scan IDs

Auth
Request Body
arrayarray[string]
DELETE /api/v1/scans
Responses
200

OK

No response body
400

Bad Request

500

Internal Server Error

Response

Upload and scan a file immediately

Uploads and scans files immediately. Optional 'jobName' labels the scan; if omitted, a name is generated automatically.

Auth
Request Body
objectobject
filesarray[string]
workflowIdstring
metadatastring
jobNamestring
POST /api/v1/scans/direct
Responses
200

OK

objectobject
scanIdsarray[string]
referencesUsedForScanningarray[string]
protocolTypeinteger
repositoryIdstring
repositoryNamestring
serviceIdstring
storageNamestring
workflowIdstring
workflowNamestring
triggerEventstring
triggerBystring
responseKeystring
responseMessagestring
Response

Stop a scan

Auth
Path Params
idstring
POST /api/v1/scans/{id}
Responses
200

OK

objectobject
statusCodeint32
Response

Get scan results by scan ID

Auth
Path Params
idstring
GET /api/v1/scans/{id}
Responses
200

OK

objectobject
serviceIdstring
repositoryIdstring
repositoryNamestring
repositoryTypestring
referenceUsedForScanningstring
scanIdstring
protocolTypeinteger
connectionstring
packageTypestring
organizationstring
startTimedate-time
stopTimedate-time
durationstring

pattern: ^-?(\d+\.)?\d{2}:\d{2}:\d{2}(\.\d{1,7})?$

vulnerabilityIssues5 fieldsobject
scanStatusinteger
discoveryStatusinteger
errorsarray[string]
blockedLicensesCountint32
infectedFilesint32
filesWithSecretsint32
404

Not Found

Response

Enumerate all latest scan results

Auth
Query String
Typearray
TimeFramestring

pattern: ^[0-9]*$

Default: null

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Default: null

Connectionstring

pattern: ^[0-9]*$

Default: null

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

Default: null

ConnectionTypestring

pattern: ^[0-9]*$

Default: null

RepositoryIdstring

pattern: ^[0-9]*$

Default: null

Latestboolean
GET /api/v1/scans/latest
Responses
200

OK

arrayarray[object]
scanIdstring
repository7 fieldsobject
scanInformation12 fieldsobject
scanStatus3 fieldsobject
metadatastring
sbomDocument3 fieldsobject
404

Not Found

Response

Enumerate all latest scan results by service ID

Auth
Path Params
serviceIdstring
Query String
Typearray
TimeFramestring

pattern: ^[0-9]*$

Default: null

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Default: null

Connectionstring

pattern: ^[0-9]*$

Default: null

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

Default: null

ConnectionTypestring

pattern: ^[0-9]*$

Default: null

RepositoryIdstring

pattern: ^[0-9]*$

Default: null

Latestboolean
GET /api/v1/scans/{serviceId}/latest
Responses
200

OK

objectobject
scanIdstring
repository7 fieldsobject
scanInformation12 fieldsobject
scanStatus3 fieldsobject
metadatastring
sbomDocument3 fieldsobject
Response

Get scan overview by scan ID

Auth
Path Params
idstring
GET /api/v1/scans/{id}/overview
Responses
200

OK

arrayarray[object]
scanIdstring
repository7 fieldsobject
scanInformation12 fieldsobject
scanStatus3 fieldsobject
metadatastring
sbomDocument3 fieldsobject
Response

Enumerate all scan results by repository ID

Auth
Path Params
serviceIdstring
repositoryIdstring
GET /api/v1/scans/{serviceId}/{repositoryId}
Responses
200

OK

arrayarray[object]
scanIdstring
repository7 fieldsobject
scanInformation12 fieldsobject
scanStatus3 fieldsobject
metadatastring
sbomDocument3 fieldsobject
Response

Enumerate all scan schedules

Auth
GET /api/v1/scans/schedules
Responses
200

OK

arrayarray[object]
idstring
workflowIdstring
storageIdstring
userIdstring
namestring
priorityinteger
createdAtdate-time
lastUpdateddate-time
lastScanTimedate-time
nextScanTimedate-time
recurrenceTypeinteger
startDatedate-time
timeToStartdate-time
everyNumberOfHoursint32
everyNumberOfDaysint32
everyNumberOfWeeksint32
everyNumberOfMonthsint32
daysOfWeekarray[integer]
dayOfMonthint32
workflow14 fieldsobject
scans33 fieldsarray[object]
Response

Enumerate all CVEs across scanned packages

Auth
Query String
severitiesstring

Default: null

searchstring

Default: null

pageinteger

Default: null

pageSizeinteger

Default: null

GET /api/v1/scans/cves
Responses
200

OK

objectobject
pageint32
pageSizeint32
totalCountint32
hasMoreItemsboolean
cves7 fieldsarray[object]
400

Bad Request

401

Unauthorized

500

Internal Server Error

Response

Clean up historical scan results older than the specified time frame

Auth
Request Body
objectobject
timeFrameinteger
POST /api/v1/scans/cleanup
Responses
200

OK

objectobject
deletedScansCountint32
totalScansFoundint32
responseKeystring
responseMessagestring
207

Multi-Status

400

Bad Request

500

Internal Server Error

Response

Enumerate files by scan ID

Auth
Path Params
scanIdstring
Query String
pageinteger

Default: null

pageSizeinteger

Default: null

searchstring

Default: null

includeArchivesboolean

Default: null

includePackagesboolean

Default: null

GET /api/v1/scans/{scanId}/files
Responses
200

OK

arrayarray[object]
objectIdentityIdstring
objectIdentityHashstring
scanResultIdstring
progressUploadint16
progressScanint16
processingStateinteger
exceptionDetailsstring
createddate-time
discoveryStarteddate-time
discoveryStartedDaySecint64
streamingStartedTimedate-time
streamingCompletedTimedate-time
streamingTimeSpanMsint64
scanCompletedTimedate-time
processingTimeSpanMsint64
processingFailedTimedate-time
processingRetryCountint16
objectTriggeredActionsarray[object]
actionStatusinteger
triggeredActionTypeinteger
skippedScanboolean
hasAppliedRemediationboolean
hasAppliedSanitizationboolean
hasFailedSanitizationboolean
createdAtdate-time
lastUpdateddate-time
tenantIdstring
objectRemediationActions12 fieldsarray[object]
versions41 fieldsarray[object]
idstring
scanIdstring
storageIdstring
scanWorkflowSnapshotIdstring
metaDefenderCoreUrlstring
namestring
pathstring
hashstring
objectStorageMetadatastring
sizeint64
lastModifieddate-time
storageLocationstring
fileTypeCategoryinteger
pathForDisplaystring
extensionstring
404

Not Found

Response

Get the core result of a file by its scan result ID

Auth
Path Params
scanResultIdstring
GET /api/v1/scans/{scanResultId}/core-result
Responses
200

OK

objectobject
extracted_files5 fieldsobject
scan_results8 fieldsobject
file_info13 fieldsobject
process_info9 fieldsobject
data_idstring
sourcestring
scanned_onstring
dlp_info3 fieldsobject
sbom_info3 fieldsobject
vulnerability_info1 fieldobject
engine_statobject
sessionCookiestring
isFailedboolean
Response

Get the core results of files in an archive by their scan result ID

Auth
Path Params
scanResultIdstring
Query String
countinteger
offsetinteger
GET /api/v1/scans/{scanResultId}/archive
Responses
200

OK

objectobject
coreScanResults13 fieldsarray[object]
hasMoreboolean
Response

Get per-CVE new/fixed details for each trend period

Auth
Query String
intervalinteger

Default: 1

periodsinteger

Default: 4

GET /api/v1/scans/vulnerability-trends/details
Responses
200

OK

arrayarray[object]
periodStartdate
periodEnddate
newCves6 fieldsarray[object]
fixedCvesarray
500

Internal Server Error

Response

Add a service

Auth
Request Body
objectobject
credentialsstring
namestring
vendorTypeinteger
protocolTypeinteger
POST /api/v1/services
Responses
200

OK

objectobject
idstring
namestring
type4 fieldsobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response

Get all services

Auth
Query String
contentboolean
typearray
GET /api/v1/services
Responses
200

OK

objectobject
serviceDtos9 fieldsarray[object]
statusMessagestring
206

Partial Content

400

Bad Request

Response

Update a service by ID

Auth
Path Params
serviceIdstring
Request Body
objectobject
namestring
credentialsstring
hasNewCredentialsboolean
PUT /api/v1/services/{serviceId}
Responses
200

OK

objectobject
idstring
namestring
type4 fieldsobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response

Get a service by ID

Auth
Path Params
serviceIdstring
Query String
contentboolean
Searchstring

Default: null

Pageinteger

Default: null

PageSizeinteger

Default: null

FilterValuestring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

Cursorstring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

Searchstring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

PrioritizedRepositoriesReferencestring

Default: null

GET /api/v1/services/{serviceId}
Responses
200

OK

objectobject
idstring
credentialsTypeint32
scanWorkflowIdstring
domainstring
realTimeStatusinteger
namestring
vendorTypeinteger
protocolTypeinteger
400

Bad Request

404

Not Found

Response

Delete a service by ID

Auth
Path Params
serviceIdstring
DELETE /api/v1/services/{serviceId}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
404

Not Found

Response

Get service references by service ID

Auth
Path Params
serviceIdstring
GET /api/v1/services/{serviceId}/references
Responses
200

OK

objectobject
serviceIdstring
serviceNamestring
repositoryReferenceInfoArray3 fieldsarray[object]
404

Not Found

Response

Get service resources by service ID

Auth
Path Params
serviceIdstring
GET /api/v1/services/{serviceId}/resources
Responses
200

OK

objectobject
resourcesarray[string]
404

Not Found

Response

Get top-risky repositories for a service

Auth
Path Params
serviceIdstring
Query String
countinteger

Default: null

GET /api/v1/services/{serviceId}/top-risky
Responses
200

OK

arrayarray[object]
connectionIdstring
connectionNamestring
repositoryIdstring
repositoryNamestring
riskScoreint32
500

Internal Server Error

Response

Get service references by service ID and repository ID

Auth
Path Params
serviceIdstring
repositoryIdstring
Query String
Pageinteger

Default: null

PageSizeinteger

Default: null

FilterValuestring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

Cursorstring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

Searchstring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

GET /api/v1/services/{serviceId}/{repositoryId}/references
Responses
200

OK

objectobject
referencesarray[string]
totalReferencesuint32
404

Not Found

Response

Add service references

Auth
Request Body
arrayarray[object]
serviceIdstring
repositoryIdsarray[string]
POST /api/v1/services/references
Responses
200

OK

arrayarray[object]
serviceIdstring
serviceNamestring
repositoryReferenceInfoArray3 fieldsarray[object]
204

No Content

404

Not Found

Response

Add a SMTP configuration

Auth
Request Body
objectobject
hoststring
baseUrlstring
portint32
senderAddressstring
senderNamestring
domainstring
usernamestring
passwordstring
secureSocketOptioninteger
ignoreCertWarningsboolean
isEnabledboolean
POST /api/v1/smtp
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Partially update SMTP configuration

Auth
Request Body
objectobject
hoststring
baseUrlstring
portint32
senderAddressstring
senderNamestring
domainstring
usernamestring
passwordstring
secureSocketOptioninteger
ignoreCertWarningsboolean
isEnabledboolean
PATCH /api/v1/smtp
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Get a SMTP configuration

Auth
GET /api/v1/smtp
Responses
200

OK

objectobject
smtp15 fieldsobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Add a Jira configuration

Auth
Request Body
objectobject
namestring
apiKeystring
baseAddressstring
productAddressstring
usernamestring
POST /api/v1/jira
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Get all Jira configurations

Auth
GET /api/v1/jira
Responses
200

OK

objectobject
jiraEntries9 fieldsarray[object]
responseKeystring
responseMessagestring
400

Bad Request

Response

Get a Jira configuration by ID

Auth
Path Params
idstring
GET /api/v1/jira/{id}
Responses
200

OK

objectobject
jira9 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Update a Jira configuration by ID

Auth
Path Params
idstring
Request Body
objectobject
namestring
apiKeystring
baseAddressstring
productAddressstring
usernamestring
PUT /api/v1/jira/{id}
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response

Delete a Jira configuration by ID

Auth
Path Params
idstring
DELETE /api/v1/jira/{id}
Responses
200

OK

objectobject
jiraIdstring
responseKeystring
responseMessagestring
404

Not Found

Response

Get Jira projects

Auth
Path Params
idstring
GET /api/v1/jira/{id}/projects
Responses
200

OK

objectobject
projectsarray[object]
idstring
namestring
responseKeystring
responseMessagestring
404

Not Found

Response

Add a Teams configuration

Auth
Request Body
objectobject
namestring
apiKeystring
webhookUrlstring
productAddressstring
POST /api/v1/teams
Responses
201

Created

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Get all Teams configurations

Auth
GET /api/v1/teams
Responses
200

OK

objectobject
teamsConnections8 fieldsarray[object]
responseKeystring
responseMessagestring
400

Bad Request

Response

Get a Teams configuration by ID

Auth
Path Params
idstring
GET /api/v1/teams/{id}
Responses
200

OK

objectobject
teams8 fieldsobject
responseKeystring
responseMessagestring
404

Not Found

Response

Update a Teams configuration by ID

Auth
Path Params
idstring
Request Body
objectobject
namestring
apiKeystring
webhookUrlstring
productAddressstring
PUT /api/v1/teams/{id}
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response

Delete a Teams configuration by ID

Auth
Path Params
idstring
DELETE /api/v1/teams/{id}
Responses
200

OK

objectobject
teamsIdstring
responseKeystring
responseMessagestring
404

Not Found

Response

telemetry

Auth
GET /api/v1/telemetry
Responses
200

OK

objectobject
enabledboolean
sendToOpswatEnabledboolean
collectors4 fieldsarray[object]
responseKeystring
responseMessagestring
Response

enabled

Auth
Request Body
objectobject
enabledboolean
PUT /api/v1/telemetry/enabled
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

opswat

Auth
Request Body
objectobject
sendToOpswatEnabledboolean
PUT /api/v1/telemetry/opswat
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

collectors

Auth
Request Body
objectobject
endpointUrlstring
metricProtocolstring
apiKeystring
POST /api/v1/telemetry/collectors
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

collectors

Auth
Request Body
objectobject
endpointUrlstring
metricProtocolstring
apiKeystring
PUT /api/v1/telemetry/collectors
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response

collectors

Auth
Query String
endpointUrlstring
DELETE /api/v1/telemetry/collectors
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response

Add a new user

Auth
Request Body
objectobject
roleinteger
fullNamestring
userNamestring
passwordstring
emailstring
POST /api/v1/users
Responses
200

OK

objectobject
createUserParameters5 fieldsobject
currentUserIdstring
400

Bad Request

Response

Get users

Auth
Query String
Typestring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

StartIndexinteger

Default: null

Countinteger

Default: null

SearchTermstring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

GET /api/v1/users
Responses
200

OK

objectobject
enumerateUsersDto2 fieldsobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Update a user

Auth
Request Body
objectobject
userIdstring
roleinteger
userNamestring
fullNamestring
emailstring
currentPasswordstring
newPasswordstring
showTutorialboolean
PUT /api/v1/users
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Get current user

Auth
GET /api/v1/user
Responses
200

OK

objectobject
userDto6 fieldsobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Delete a user

Auth
Path Params
userIdstring
DELETE /api/v1/users/{userId}
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Login user

Auth
Request Body
objectobject
usernamestring
passwordstring
POST /api/v1/user/login
Responses
200

OK

objectobject
jwtTokenobject
tokenstring
responseKeystring
responseMessagestring
400

Bad Request

Response

Remove all tokens for an user

Auth
Path Params
userIdstring
DELETE /api/v1/user/login/{userId}
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response

Get a new Access Token

Auth
Request Body
objectobject
accessTokenstring
PUT /api/v1/user/token
Responses
200

OK

objectobject
jwtTokenobject
tokenstring
responseKeystring
responseMessagestring
400

Bad Request

Response

Request a password reset

Auth
Request Body
objectobject
emailInputstring
POST /api/v1/user/password/request-reset
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response

Reset a user password

Auth
Request Body
objectobject
newPasswordstring

minLength: 12

newPasswordConfirmationstring

minLength: 12

secureTokenstring
userIdstring
POST /api/v1/user/password/new-password
Responses
200

OK

objectobject
user6 fieldsobject
responseKeystring
responseMessagestring
Response

Manage Versions

Get application version

Auth
Query String
api-versionstring

maxLength: 256

minLength: 0

pattern: ^[0-9]*$

Default: null

GET /api/version
Responses
200

OK

objectobject
versionstring
lastSupportedConfigVersionstring
responseKeystring
responseMessagestring
Response

Get application version

Auth
GET /api/v1/version
Responses
200

OK

objectobject
versionstring
lastSupportedConfigVersionstring
responseKeystring
responseMessagestring
Response

Handles a scan event triggered by a webhook. Requires a custom header and a body.

Auth
Path Params
routeParameterstring
Request Body
No request body
POST /api/v1/webhook/hmac/{routeParameter}
Responses
200

OK

No response body
400

Bad Request

500

Internal Server Error

Response

Handles a scan event triggered by a webhook. Requires a custom body.

Auth
Path Params
routeParameterstring
Request Body
No request body
POST /api/v1/webhook/{routeParameter}
Responses
200

OK

No response body
400

Bad Request

500

Internal Server Error

Response

Create a workflow

Auth
Request Body
objectobject
namestring
descriptionstring
scanConfigurationIdstring
blockedFileDefinition2 fieldsobject
fileRemediations3 fieldsobject
remediationsarray[object]
isEnabledboolean
typestring
crossDomainTransfer3 fieldsobject
POST /api/v1/workflows
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response

List workflows (paginated)

Auth
Query String
pageinteger

Default: 1

pageSizeinteger

Default: 10

includeDeletedboolean

Default: false

GET /api/v1/workflows
Responses
200

OK

objectobject
entries13 fieldsarray[object]
totalCountint64
Response

Partially update a workflow

Auth
Path Params
idstring
Request Body
objectobject
namestring
descriptionstring
scanConfigurationIdstring
blockedFileDefinition2 fieldsobject
fileRemediations3 fieldsobject
remediationsarray[object]
isEnabledboolean
typestring
crossDomainTransfer3 fieldsobject
PATCH /api/v1/workflows/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response

Get a workflow by ID

Auth
Path Params
idstring
GET /api/v1/workflows/{id}
Responses
200

OK

objectobject
idstring
namestring
descriptionstring
userIdstring
scanConfigurationIdstring
deletedboolean
blockedFileDefinition2 fieldsobject
fileRemediations3 fieldsobject
remediationsarray[object]
isEnabledboolean
typestring
crossDomainTransfer3 fieldsobject
securityint32
scanPoolstring
Response

Delete a workflow by ID

Auth
Path Params
idstring
DELETE /api/v1/workflows/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response

Retrieve MetaDefender Core technology states for a workflow

Auth
Path Params
idstring
GET /api/v1/workflows/{id}/technologies
Responses
200

OK

objectobject
sbominteger
metaScaninteger
dlpinteger
enabledCountint32
404

Not Found

500

Internal Server Error

Response