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.

http Bearer

apiKey ApiKey

Fields
KeyIn
ApiKeyHeader

Manage Audit

List audit events

Auth
Query String
Startstring

pattern: ^[0-9]*$

Countstring

pattern: ^[0-9]*$

LogTypestring

pattern: ^[0-9]*$

CategoryTypestring

pattern: ^[0-9]*$

LogLevelstring

pattern: ^[0-9]*$

SearchTextstring

pattern: ^[0-9]*$

GET /api/v1/audit
Copy
Responses
200

OK

objectobject
entriesarray[object]
idstring
levelinteger
propertiesobject
logTypeinteger
categoryinteger
eventTimestampdate-time
userIdstring
userNamestring
renderedMessagestring
totalCountint64
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Export a CycloneDX report for repository

Auth
Path Params
repoIdstring
Query String
Referencestring

pattern: ^[0-9]*$

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

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTagobject
tagobject
bufferstring
offsetint32
lengthint32
valuestring
hasValueboolean
isWeakboolean
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export an SPDX v3 report for repository

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

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTagobject
tagobject
bufferstring
offsetint32
lengthint32
valuestring
hasValueboolean
isWeakboolean
enableRangeProcessingboolean
400

Bad Request

404

Not Found

Response
Copy

Export a PDF report for all scans

Auth
Query String
ProductAddressstring

pattern: ^[0-9]*$

Typearray
TimeFramestring

pattern: ^[0-9]*$

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Connectionstring

pattern: ^[0-9]*$

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

ConnectionTypestring

pattern: ^[0-9]*$

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

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTagobject
tagobject
bufferstring
offsetint32
lengthint32
valuestring
hasValueboolean
isWeakboolean
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]*$

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

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTagobject
tagobject
bufferstring
offsetint32
lengthint32
valuestring
hasValueboolean
isWeakboolean
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]*$

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

OK

objectobject
fileStreamfile
contentTypestring
fileDownloadNamestring
lastModifieddate-time
entityTagobject
tagobject
bufferstring
offsetint32
lengthint32
valuestring
hasValueboolean
isWeakboolean
enableRangeProcessingboolean
400

Bad Request

404

Not Found

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
connectionSettingsobject
serverAddressstring
portint32
facilityinteger
formatinteger
POST /api/v1/externallogger
Copy
Responses
200

OK

No response body
Response
Copy

Update an external logger

Auth
Path Params
idstring
Request Body
objectobject
connectionSettingsobject
serverAddressstring
portint32
facilityinteger
formatinteger
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
globalKeysarray[object]
idstring
namestring
descriptionstring
valueTypestring
optionsarray[string]
createddate-time
updateddate-time
tenantIdstring
createdAtdate-time
lastUpdateddate-time
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
globalKeyobject
idstring
namestring
descriptionstring
valueTypestring
optionsarray[string]
createddate-time
updateddate-time
tenantIdstring
createdAtdate-time
lastUpdateddate-time
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
globalKeyobject
idstring
namestring
descriptionstring
valueTypestring
optionsarray[string]
createddate-time
updateddate-time
tenantIdstring
createdAtdate-time
lastUpdateddate-time
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

Activate an online license

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

OK

objectobject
resultinteger
responseMessagestring
400

Bad Request

Response
Copy

Get licenses

Auth
GET /api/v1/licenses
Copy
Responses
200

OK

objectobject
resultinteger
licenseobject
productIdstring
productNamestring
expirationint64
deploymentIdstring
activationKeystring
licenseContentstring
maxDevelopersint32
responseMessagestring
400

Bad Request

404

Not Found

Response
Copy

Remove licenses

Auth
DELETE /api/v1/licenses
Copy
Responses
200

OK

objectobject
resultinteger
responseMessagestring
400

Bad Request

404

Not Found

Response
Copy

Manage Opswat Central Management Ocm

Get an OCM instance

Auth
GET /api/v1/ocm
Copy
Responses
200

OK

objectobject
ocmInformationobject
idstring
apiKeystring
serverApistring
registrationCodestring
deploymentIdstring
cmVersionstring
scanConfigurationHashstring
storageConfigurationHashstring
retentionConfigurationHashstring
externalLoggerConfigurationHashstring
userConfigurationHashstring
licenseConfigurationHashstring
smtpConfigurationHashstring
notificationConfigurationHashstring
enrollStatusinteger
lastServerConnectionint64
lastConfigurationSyncint64
connectionStatusinteger
createdAtdate-time
lastUpdateddate-time
tenantIdstring
responseKeystring
responseMessagestring
Response
Copy

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

Retrieves a list of packages based on search criteria

Auth
Query String
Namestring

pattern: ^[0-9]*$

Ecosystemstring

pattern: ^[0-9]*$

Versionstring

pattern: ^[0-9]*$

Vulnerabilitiesarray
LicenseRisksarray
Connectionstring

pattern: ^[0-9]*$

Repositorystring

pattern: ^[0-9]*$

Referencestring

pattern: ^[0-9]*$

ScanIdstring

pattern: ^[0-9]*$

StepSha256string

pattern: ^[0-9]*$

Searchstring

pattern: ^[0-9]*$

GET /api/v1/packages
Copy
Responses
200

OK

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

Retrieves a package by ID

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

OK

Response
Copy

Retrieves CVEs associated with a specific package

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

OK

objectobject
cvesarray[object]
idstring
fixedVersionsarray[string]
severityinteger
sourcestring
cwesarray[string]
responseKeystring
responseMessagestring
Response
Copy

Retrieves all labels for a specific package

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

OK

objectobject
labelsarray[object]
Keystring
Valuestring
ValueTypestring
Createddate-time
Updateddate-time
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
labelobject
Keystring
Valuestring
ValueTypestring
Createddate-time
Updateddate-time
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
GET /api/v1/packages/search/labels
Copy
Responses
200

OK

Response
Copy

List projects

Auth
GET /api/v1/projects
Copy
Responses
200

OK

arrayarray[object]
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
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
projectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Get a project by ID

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

OK

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

Not Found

Response
Copy

Update a project

Auth
Path Params
idstring
Request Body
objectobject
namestring

maxLength: 50

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

OK

objectobject
projectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Delete a project

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

OK

objectobject
projectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Attach workflows to a project

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

OK

objectobject
projectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Detach workflows from a project

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

OK

objectobject
projectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Attach connections (services) to a project

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

OK

objectobject
projectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Detach connections (services) from a project

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

OK

objectobject
projectobject
idstring
namestring
workflowIdsarray[string]
storageIdsarray[string]
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

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
Copy
Responses
207

Multi-Status

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

409

Conflict

Response
Copy

Disable real-time protection for connection

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

OK

No response body
Response
Copy

Disable real-time protection for repository

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

OK

No response body
Response
Copy

List connections with real-time protection enabled

Auth
GET /api/v1/realtime
Copy
Responses
200

OK

objectobject
storagesarray[object]
idstring
namestring
storageTypeobject
namestring
categoryTypeinteger
protocolTypeinteger
vendorTypeinteger
storageStatusobject
messagestring
statusTypeinteger
Response
Copy

List ongoing real-time protection scans for connection

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

OK

Delete real-time scan protection for connection

Auth
Path Params
storageIdstring
Query String
forceDeleteboolean
DELETE /api/v1/realtime/{storageId}
Copy
Responses
200

OK

No response body
Response
Copy

Delete real-time scan protection for repository

Auth
Path Params
storageIdstring
repositoryIdstring
Query String
forceDeleteboolean
DELETE /api/v1/realtime/{storageId}/{repositoryId}
Copy
Responses
200

OK

No response body
Response
Copy

Get all scan configurations

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

OK

400

Bad Request

404

Not Found

Response
Copy

Add a scan configuration

Auth
Request Body
objectobject
namestring

maxLength: 50

minLength: 3

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

OK

400

Bad Request

502

Bad Gateway

Response
Copy

Get a scan configuration by ID

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

OK

400

Bad Request

404

Not Found

Response
Copy

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}
Copy
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Delete a scan configuration

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

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Get all scan configurations by scan pool ID

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

OK

400

Bad Request

Response
Copy

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
Copy
Responses
200

OK

objectobject
scanInstanceIdstring
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Get a scan instance by ID

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

OK

objectobject
scanInstanceobject
idstring
scanPoolIdstring
urlstring
apiKeystring
timeoutstring

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

resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

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}
Copy
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Delete a scan instance

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

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Get scan pools

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

OK

objectobject
scanPoolsarray[object]
idstring
namestring
scanPoolTypeinteger
isDefaultboolean
scanInstancesarray[object]
idstring
scanPoolIdstring
urlstring
apiKeystring
timeoutstring

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

resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Add a new scan pool

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

OK

objectobject
scanPoolIdstring
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Get a scan pool by ID

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

OK

objectobject
scanPoolobject
idstring
namestring
scanPoolTypeinteger
isDefaultboolean
scanInstancesarray[object]
idstring
scanPoolIdstring
urlstring
apiKeystring
timeoutstring

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

resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Update an existing scan pool

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

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Delete a scan pool

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

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

404

Not Found

Response
Copy

Get all rules from a scan pool

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

OK

arrayarray[object]
namestring
user_agentsarray[string]
400

Bad Request

Response
Copy

Enumerate scan results

Auth
Query String
Typearray
TimeFramestring

pattern: ^[0-9]*$

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Connectionstring

pattern: ^[0-9]*$

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

ConnectionTypestring

pattern: ^[0-9]*$

GET /api/v1/scans
Copy
Responses
200

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

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
Copy
Responses
200

OK

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

Delete multiple scans by their scan IDs

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

OK

No response body
400

Bad Request

500

Internal Server Error

Response
Copy

Get scan results by scan ID

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

OK

404

Not Found

Response
Copy

Stop a scan

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

OK

objectobject
statusCodeint32
Response
Copy

Enumerate all latest scan results

Auth
Query String
Typearray
TimeFramestring

pattern: ^[0-9]*$

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Connectionstring

pattern: ^[0-9]*$

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

ConnectionTypestring

pattern: ^[0-9]*$

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

OK

404

Not Found

Enumerate all latest scan results by service ID

Auth
Path Params
serviceIdstring
Query String
Typearray
TimeFramestring

pattern: ^[0-9]*$

Vulnerabilitiesarray
LicenseRisksarray
Statusarray
TriggerEventarray
Workflowstring

pattern: ^[0-9]*$

Connectionstring

pattern: ^[0-9]*$

Secretsboolean
Threatsboolean
Searchstring

pattern: ^[0-9]*$

ConnectionTypestring

pattern: ^[0-9]*$

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

OK

Get scan overview by scan ID

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

OK

Enumerate all scan results by repository ID

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

OK

Enumerate all scan schedules

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

OK

Response
Copy

Clean up historical scan results older than the specified time frame

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

OK

objectobject
deletedScansCountint32
totalScansFoundint32
responseKeystring
responseMessagestring
207

Multi-Status

400

Bad Request

500

Internal Server Error

Response
Copy

Enumerate files by scan ID

Auth
Path Params
scanIdstring
Query String
pageinteger
pageSizeinteger
searchstring
includeArchivesboolean
GET /api/v1/scans/{scanId}/files
Copy
Responses
200

OK

404

Not Found

Response
Copy

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

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

OK

Response
Copy

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
Copy
Responses
200

OK

Response
Copy

Get all services

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

OK

objectobject
serviceDtosarray[object]
idstring
credentialsTypeint32
scanWorkflowIdstring
domainstring
realTimeStatusinteger
namestring
vendorTypeinteger
protocolTypeinteger
statusMessagestring
206

Partial Content

400

Bad Request

Response
Copy

Add a service

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

OK

objectobject
idstring
namestring
typeobject
namestring
categoryTypeinteger
protocolTypeinteger
vendorTypeinteger
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Get a service by ID

Auth
Path Params
serviceIdstring
Query String
contentboolean
Searchstring
Pageinteger
PageSizeinteger
FilterValuestring

pattern: ^[0-9]*$

Cursorstring

pattern: ^[0-9]*$

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

OK

objectobject
idstring
credentialsTypeint32
scanWorkflowIdstring
domainstring
realTimeStatusinteger
namestring
vendorTypeinteger
protocolTypeinteger
400

Bad Request

404

Not Found

Response
Copy

Update a service by ID

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

OK

objectobject
idstring
namestring
typeobject
namestring
categoryTypeinteger
protocolTypeinteger
vendorTypeinteger
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Delete a service by ID

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

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
404

Not Found

Response
Copy

Get service references by service ID

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

OK

objectobject
serviceIdstring
serviceNamestring
repositoryReferenceInfoArrayarray[object]
repositoryIdstring
defaultReferencestring
referencesarray[string]
404

Not Found

Response
Copy

Get service resources by service ID

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

OK

objectobject
resourcesarray[string]
404

Not Found

Response
Copy

Get service references by service ID and repository ID

Auth
Path Params
serviceIdstring
repositoryIdstring
Query String
Pageinteger
PageSizeinteger
FilterValuestring

pattern: ^[0-9]*$

Cursorstring

pattern: ^[0-9]*$

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

OK

objectobject
referencesarray[string]
totalReferencesuint32
404

Not Found

Response
Copy

Add service references

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

OK

arrayarray[object]
serviceIdstring
serviceNamestring
repositoryReferenceInfoArrayarray[object]
repositoryIdstring
defaultReferencestring
referencesarray[string]
204

No Content

404

Not Found

Response
Copy

Get a SMTP configuration

Auth
GET /api/v1/smtp
Copy
Responses
200

OK

objectobject
smtpobject
idstring
hoststring
portint32
senderAddressstring
senderNamestring
domainstring
baseUrlstring
userNamestring
passwordstring
secureSocketOptioninteger
ignoreCertWarningsboolean
isEnabledboolean
tenantIdstring
createdAtdate-time
lastUpdateddate-time
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Update a SMTP configuration

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

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Get all Jira configurations

Auth
GET /api/v1/jira
Copy
Responses
200

OK

objectobject
jiraEntriesarray[object]
idstring
namestring
apiKeystring
baseAddressstring
productAddressstring
usernamestring
tenantIdstring
createdAtdate-time
lastUpdateddate-time
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Add a Jira configuration

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

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Get a Jira configuration by ID

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

OK

objectobject
jiraobject
idstring
namestring
apiKeystring
baseAddressstring
productAddressstring
usernamestring
tenantIdstring
createdAtdate-time
lastUpdateddate-time
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Update a Jira configuration by ID

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

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Delete a Jira configuration by ID

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

OK

objectobject
jiraIdstring
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Get Jira projects

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

OK

objectobject
projectsarray[object]
idstring
namestring
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Get all Teams configurations

Auth
GET /api/v1/teams
Copy
Responses
200

OK

objectobject
teamsConnectionsarray[object]
namestring
apiKeystring
webhookUrlstring
productAddressstring
createdAtdate-time
lastUpdateddate-time
idstring
tenantIdstring
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Add a Teams configuration

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

Created

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Get a Teams configuration by ID

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

OK

objectobject
teamsobject
namestring
apiKeystring
webhookUrlstring
productAddressstring
createdAtdate-time
lastUpdateddate-time
idstring
tenantIdstring
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Update a Teams configuration by ID

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

OK

objectobject
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Delete a Teams configuration by ID

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

OK

objectobject
teamsIdstring
responseKeystring
responseMessagestring
404

Not Found

Response
Copy

Get users

Auth
Query String
Typestring

pattern: ^[0-9]*$

StartIndexinteger
Countinteger
SearchTermstring

pattern: ^[0-9]*$

GET /api/v1/users
Copy
Responses
200

OK

objectobject
enumerateUsersDtoobject
entriesarray[object]
userIdstring
usernamestring
fullNamestring
emailstring
roleinteger
showTutorialboolean
totalCountint64
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Update a user

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

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Add a new user

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

OK

objectobject
createUserParametersobject
roleinteger
fullNamestring
userNamestring
passwordstring
emailstring
currentUserIdstring
400

Bad Request

Response
Copy

Get current user

Auth
GET /api/v1/user
Copy
Responses
200

OK

objectobject
userDtoobject
userIdstring
usernamestring
fullNamestring
emailstring
roleinteger
showTutorialboolean
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Delete a user

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

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Login user

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

OK

objectobject
jwtTokenobject
tokenstring
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Remove all tokens for an user

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

OK

objectobject
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Get a new Access Token

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

OK

objectobject
jwtTokenobject
tokenstring
responseKeystring
responseMessagestring
400

Bad Request

Response
Copy

Request a password reset

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

OK

objectobject
responseKeystring
responseMessagestring
Response
Copy

Reset a user password

Auth
Request Body
objectobject
newPasswordstring

minLength: 12

newPasswordConfirmationstring

minLength: 12

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

OK

objectobject
userobject
userIdstring
usernamestring
fullNamestring
emailstring
roleinteger
showTutorialboolean
responseKeystring
responseMessagestring
Response
Copy

Manage Versions

Get application version

Auth
Query String
api-versionstring

pattern: ^[0-9]*$

GET /api/version
Copy
Responses
200

OK

objectobject
versionstring
lastSupportedConfigVersionstring
responseKeystring
responseMessagestring
Response
Copy

Get application version

Auth
GET /api/v1/version
Copy
Responses
200

OK

objectobject
versionstring
lastSupportedConfigVersionstring
responseKeystring
responseMessagestring
Response
Copy

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}
Copy
Responses
200

OK

No response body
400

Bad Request

500

Internal Server Error

Response
Copy

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}
Copy
Responses
200

OK

No response body
400

Bad Request

500

Internal Server Error

Response
Copy

List all workflows

Auth
Query String
includeDeletedboolean
GET /api/v1/workflows
Copy
Responses
200

OK

Create a workflow

Auth
Request Body
POST /api/v1/workflows
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Get a workflow by ID

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

OK

Update a workflow

Auth
Path Params
idstring
Request Body
PUT /api/v1/workflows/{id}
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Delete a workflow by ID

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

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

Update a workflow scan source

Auth
Path Params
idstring
Request Body
objectobject
serviceIdstring
serviceNamestring
repositoriesarray[object]
repositoryIdstring
repositoryNamestring
typestring
connectionstring
packageTypestring
organizationstring
registrystring
referencesToScanarray[string]
PUT /api/v1/workflows/{id}/scan-source
Copy
Responses
200

OK

objectobject
resultinteger
responseKeystring
responseMessagestring
responseMessageParamsobject
*string
400

Bad Request

Response
Copy

List all workflows by repository ID

Auth
Path Params
repositoryIdstring
GET /api/v1/workflows/repositories/{repositoryId}
Copy
Responses
200

OK