Import security vulnerabilities
https://api.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.us3.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.us5.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.datadoghq.eu/api/v2/security/vulnerabilitieshttps://api.ap1.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.ap2.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.uk1.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.ddog-gov.com/api/v2/security/vulnerabilitieshttps://api.us2.ddog-gov.com/api/v2/security/vulnerabilitiesOverview
Import security vulnerabilities from an external scanner in CycloneDX 1.5 format.
The payload is validated against the CycloneDX 1.5 JSON schema and the following additional constraints:
metadata,metadata.component, andmetadata.component.nameare required.metadata.tools.componentsmust contain exactly one element with anamefield.componentscannot be empty. Each component requiresbom-ref,type,name, andversion.- When
typeislibrary,purlis required and must be a valid PURL. - When
typeisoperating-system,namemust be one of the supported OS values:alma,alpine,amazon,azurelinux,bottlerocket,cbl-mariner,chainguard,centos,debian,fedora,opensuse,opensuse-leap,opensuse-tumbleweed,oracle,photon,redhat,rocky,slem,sles,ubuntu,wolfi,windows,macos. vulnerabilitiescannot be empty. Each vulnerability requiresid, exactly oneratingsentry, and at least oneaffectsentry.- Each
affects[].refmust match abom-refvalue incomponents.
OAuth apps require the security_monitoring_findings_write authorization scope to access this endpoint.
Request
Body Data (required)
bomFormat [required]The BOM format identifier. Must be CycloneDX.
components [required]The list of scanned software components. Cannot be empty.
bom-ref [required]A unique reference identifier used to link vulnerabilities to this component.
name [required]The name of the component.
purlThe Package URL (PURL) of the component. Required when type is library.
type [required]The type of the scanned component.
library, application, operating-systemversion [required]The version of the component.
metadata [required]Metadata about the BOM, including the scanned asset and the scanner tool.
component [required]The asset that was scanned (for example, a host or container image).
bom-refA unique reference identifier for this metadata component. If set, must match a bom-ref in components.
name [required]The name or identifier of the scanned asset (for example, an instance ID or hostname).
typeThe type of the scanned asset.
tools [required]Information about the scanner tool that produced this BOM.
components [required]The scanner tool components. Must contain exactly one element.
name [required]The name of the scanner tool.
typeThe type of the tool component.
specVersion [required]The CycloneDX specification version. Must be 1.5.
versionThe version number of the BOM document.
vulnerabilities [required]The list of detected vulnerabilities. Cannot be empty.
advisoriesExternal advisory references for the vulnerability.
urlThe URL of the advisory.
affects [required]The components affected by this vulnerability. Must be non-empty. Each ref must match a bom-ref in components.
ref [required]The bom-ref of the affected component.
analysisThe exploitability analysis for the vulnerability. When state is set to resolved
or resolved_with_pedigree, the vulnerability is closed in Datadog.
Other state values are accepted but have no effect on the vulnerability status.
stateThe vulnerability analysis state.
cwesCWE identifiers associated with the vulnerability.
descriptionA short description of the vulnerability.
detailDetailed information about the vulnerability.
id [required]The vulnerability identifier (for example, a CVE ID).
ratings [required]The severity ratings for the vulnerability. Must contain exactly one element.
scoreThe CVSS score.
severityThe severity level.
vectorThe CVSS vector string.
referencesExternal reference identifiers for the vulnerability.
idThe identifier of the external reference (for example, a GHSA ID).
sourceThe source of an external vulnerability reference.
urlThe URL of the reference source.
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}Response
Vulnerabilities accepted successfully.
Bad Request
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Forbidden
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Too many requests
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Internal Server Error
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Code Example
# Set your Datadog site and credentials
export DD_SITE="datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="us3.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="us5.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="datadoghq.eu"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="ap1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="ap2.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="uk1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="us2.ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF// Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
package main
import (
"context"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
body := datadogV2.CycloneDXBom{
BomFormat: "CycloneDX",
Components: []datadogV2.CycloneDXComponent{
{
BomRef: "a3390fca-c315-41ae-ae05-af5e7859cdee",
Name: "lodash",
Purl: datadog.PtrString("pkg:npm/lodash@4.17.21"),
Type: datadogV2.CYCLONEDXCOMPONENTTYPE_LIBRARY,
Version: "4.17.21",
},
},
Metadata: datadogV2.CycloneDXMetadata{
Component: datadogV2.CycloneDXMetadataComponent{
BomRef: datadog.PtrString("host-ref-abc123"),
Name: "i-12345",
Type: datadog.PtrString("operating-system"),
},
Tools: datadogV2.CycloneDXMetadataTools{
Components: []datadogV2.CycloneDXToolComponent{
{
Name: "my-scanner",
Type: datadog.PtrString("application"),
},
},
},
},
SpecVersion: "1.5",
Version: datadog.PtrInt64(1),
Vulnerabilities: []datadogV2.CycloneDXVulnerability{
{
Advisories: []datadogV2.CycloneDXVulnerabilityAdvisory{
{
Url: datadog.PtrString("https://example.com/advisory/CVE-2021-1234"),
},
},
Affects: []datadogV2.CycloneDXVulnerabilityAffects{
{
Ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
},
},
Analysis: &datadogV2.CycloneDXVulnerabilityAnalysis{
State: datadog.PtrString("resolved"),
},
Cwes: []int64{
123,
345,
},
Description: datadog.PtrString("Sample vulnerability detected in the application."),
Detail: datadog.PtrString("Details about the vulnerability."),
Id: "CVE-2021-1234",
Ratings: []datadogV2.CycloneDXVulnerabilityRating{
{
Score: datadog.PtrFloat64(9.0),
Severity: datadog.PtrString("high"),
Vector: datadog.PtrString("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"),
},
},
References: []datadogV2.CycloneDXVulnerabilityReference{
{
Id: datadog.PtrString("GHSA-35m5-8cvj-8783"),
Source: &datadogV2.CycloneDXVulnerabilityReferenceSource{
Url: datadog.PtrString("https://example.com"),
},
},
},
},
},
}
ctx := datadog.NewDefaultContext(context.Background())
ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
configuration := datadog.NewConfiguration()
configuration.SetUnstableOperationEnabled("v2.ImportSecurityVulnerabilities", true)
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewSecurityMonitoringApi(apiClient)
r, err := api.ImportSecurityVulnerabilities(ctx, body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `SecurityMonitoringApi.ImportSecurityVulnerabilities`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
}
Instructions
First install the library and its dependencies and then save the example to main.go and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"// Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.SecurityMonitoringApi;
import com.datadog.api.client.v2.model.CycloneDXBom;
import com.datadog.api.client.v2.model.CycloneDXComponent;
import com.datadog.api.client.v2.model.CycloneDXComponentType;
import com.datadog.api.client.v2.model.CycloneDXMetadata;
import com.datadog.api.client.v2.model.CycloneDXMetadataComponent;
import com.datadog.api.client.v2.model.CycloneDXMetadataTools;
import com.datadog.api.client.v2.model.CycloneDXToolComponent;
import com.datadog.api.client.v2.model.CycloneDXVulnerability;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityAdvisory;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityAffects;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityAnalysis;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityRating;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityReference;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityReferenceSource;
import java.util.Arrays;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
defaultClient.setUnstableOperationEnabled("v2.importSecurityVulnerabilities", true);
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);
CycloneDXBom body =
new CycloneDXBom()
.bomFormat("CycloneDX")
.components(
Collections.singletonList(
new CycloneDXComponent()
.bomRef("a3390fca-c315-41ae-ae05-af5e7859cdee")
.name("lodash")
.purl("pkg:npm/lodash@4.17.21")
.type(CycloneDXComponentType.LIBRARY)
.version("4.17.21")))
.metadata(
new CycloneDXMetadata()
.component(
new CycloneDXMetadataComponent()
.bomRef("host-ref-abc123")
.name("i-12345")
.type("operating-system"))
.tools(
new CycloneDXMetadataTools()
.components(
Collections.singletonList(
new CycloneDXToolComponent()
.name("my-scanner")
.type("application")))))
.specVersion("1.5")
.version(1L)
.vulnerabilities(
Collections.singletonList(
new CycloneDXVulnerability()
.advisories(
Collections.singletonList(
new CycloneDXVulnerabilityAdvisory()
.url("https://example.com/advisory/CVE-2021-1234")))
.affects(
Collections.singletonList(
new CycloneDXVulnerabilityAffects()
.ref("a3390fca-c315-41ae-ae05-af5e7859cdee")))
.analysis(new CycloneDXVulnerabilityAnalysis().state("resolved"))
.cwes(Arrays.asList(123L, 345L))
.description("Sample vulnerability detected in the application.")
.detail("Details about the vulnerability.")
.id("CVE-2021-1234")
.ratings(
Collections.singletonList(
new CycloneDXVulnerabilityRating()
.score(9.0)
.severity("high")
.vector("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N")))
.references(
Collections.singletonList(
new CycloneDXVulnerabilityReference()
.id("GHSA-35m5-8cvj-8783")
.source(
new CycloneDXVulnerabilityReferenceSource()
.url("https://example.com"))))));
try {
apiInstance.importSecurityVulnerabilities(body);
} catch (ApiException e) {
System.err.println(
"Exception when calling SecurityMonitoringApi#importSecurityVulnerabilities");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Instructions
First install the library and its dependencies and then save the example to Example.java and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java""""
Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
"""
from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
from datadog_api_client.v2.model.cyclone_dx_bom import CycloneDXBom
from datadog_api_client.v2.model.cyclone_dx_component import CycloneDXComponent
from datadog_api_client.v2.model.cyclone_dx_component_type import CycloneDXComponentType
from datadog_api_client.v2.model.cyclone_dx_metadata import CycloneDXMetadata
from datadog_api_client.v2.model.cyclone_dx_metadata_component import CycloneDXMetadataComponent
from datadog_api_client.v2.model.cyclone_dx_metadata_tools import CycloneDXMetadataTools
from datadog_api_client.v2.model.cyclone_dx_tool_component import CycloneDXToolComponent
from datadog_api_client.v2.model.cyclone_dx_vulnerability import CycloneDXVulnerability
from datadog_api_client.v2.model.cyclone_dx_vulnerability_advisory import CycloneDXVulnerabilityAdvisory
from datadog_api_client.v2.model.cyclone_dx_vulnerability_affects import CycloneDXVulnerabilityAffects
from datadog_api_client.v2.model.cyclone_dx_vulnerability_analysis import CycloneDXVulnerabilityAnalysis
from datadog_api_client.v2.model.cyclone_dx_vulnerability_rating import CycloneDXVulnerabilityRating
from datadog_api_client.v2.model.cyclone_dx_vulnerability_reference import CycloneDXVulnerabilityReference
from datadog_api_client.v2.model.cyclone_dx_vulnerability_reference_source import CycloneDXVulnerabilityReferenceSource
body = CycloneDXBom(
bom_format="CycloneDX",
components=[
CycloneDXComponent(
bom_ref="a3390fca-c315-41ae-ae05-af5e7859cdee",
name="lodash",
purl="pkg:npm/lodash@4.17.21",
type=CycloneDXComponentType.LIBRARY,
version="4.17.21",
),
],
metadata=CycloneDXMetadata(
component=CycloneDXMetadataComponent(
bom_ref="host-ref-abc123",
name="i-12345",
type="operating-system",
),
tools=CycloneDXMetadataTools(
components=[
CycloneDXToolComponent(
name="my-scanner",
type="application",
),
],
),
),
spec_version="1.5",
version=1,
vulnerabilities=[
CycloneDXVulnerability(
advisories=[
CycloneDXVulnerabilityAdvisory(
url="https://example.com/advisory/CVE-2021-1234",
),
],
affects=[
CycloneDXVulnerabilityAffects(
ref="a3390fca-c315-41ae-ae05-af5e7859cdee",
),
],
analysis=CycloneDXVulnerabilityAnalysis(
state="resolved",
),
cwes=[
123,
345,
],
description="Sample vulnerability detected in the application.",
detail="Details about the vulnerability.",
id="CVE-2021-1234",
ratings=[
CycloneDXVulnerabilityRating(
score=9.0,
severity="high",
vector="CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N",
),
],
references=[
CycloneDXVulnerabilityReference(
id="GHSA-35m5-8cvj-8783",
source=CycloneDXVulnerabilityReferenceSource(
url="https://example.com",
),
),
],
),
],
)
configuration = Configuration()
configuration.access_token = environ["DD_BEARER_TOKEN"]
configuration.unstable_operations["import_security_vulnerabilities"] = True
with ApiClient(configuration) as api_client:
api_instance = SecurityMonitoringApi(api_client)
api_instance.import_security_vulnerabilities(body=body)
Instructions
First install the library and its dependencies and then save the example to example.py and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"# Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.access_token = ENV["DD_BEARER_TOKEN"]
config.unstable_operations["v2.import_security_vulnerabilities".to_sym] = true
end
api_instance = DatadogAPIClient::V2::SecurityMonitoringAPI.new
body = DatadogAPIClient::V2::CycloneDXBom.new({
bom_format: "CycloneDX",
components: [
DatadogAPIClient::V2::CycloneDXComponent.new({
bom_ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
name: "lodash",
purl: "pkg:npm/lodash@4.17.21",
type: DatadogAPIClient::V2::CycloneDXComponentType::LIBRARY,
version: "4.17.21",
}),
],
metadata: DatadogAPIClient::V2::CycloneDXMetadata.new({
component: DatadogAPIClient::V2::CycloneDXMetadataComponent.new({
bom_ref: "host-ref-abc123",
name: "i-12345",
type: "operating-system",
}),
tools: DatadogAPIClient::V2::CycloneDXMetadataTools.new({
components: [
DatadogAPIClient::V2::CycloneDXToolComponent.new({
name: "my-scanner",
type: "application",
}),
],
}),
}),
spec_version: "1.5",
version: 1,
vulnerabilities: [
DatadogAPIClient::V2::CycloneDXVulnerability.new({
advisories: [
DatadogAPIClient::V2::CycloneDXVulnerabilityAdvisory.new({
url: "https://example.com/advisory/CVE-2021-1234",
}),
],
affects: [
DatadogAPIClient::V2::CycloneDXVulnerabilityAffects.new({
ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
}),
],
analysis: DatadogAPIClient::V2::CycloneDXVulnerabilityAnalysis.new({
state: "resolved",
}),
cwes: [
123,
345,
],
description: "Sample vulnerability detected in the application.",
detail: "Details about the vulnerability.",
id: "CVE-2021-1234",
ratings: [
DatadogAPIClient::V2::CycloneDXVulnerabilityRating.new({
score: 9.0,
severity: "high",
vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N",
}),
],
references: [
DatadogAPIClient::V2::CycloneDXVulnerabilityReference.new({
id: "GHSA-35m5-8cvj-8783",
source: DatadogAPIClient::V2::CycloneDXVulnerabilityReferenceSource.new({
url: "https://example.com",
}),
}),
],
}),
],
})
p api_instance.import_security_vulnerabilities(body)
Instructions
First install the library and its dependencies and then save the example to example.rb and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"// Import security vulnerabilities returns "Vulnerabilities accepted
// successfully." response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
use datadog_api_client::datadogV2::model::CycloneDXBom;
use datadog_api_client::datadogV2::model::CycloneDXComponent;
use datadog_api_client::datadogV2::model::CycloneDXComponentType;
use datadog_api_client::datadogV2::model::CycloneDXMetadata;
use datadog_api_client::datadogV2::model::CycloneDXMetadataComponent;
use datadog_api_client::datadogV2::model::CycloneDXMetadataTools;
use datadog_api_client::datadogV2::model::CycloneDXToolComponent;
use datadog_api_client::datadogV2::model::CycloneDXVulnerability;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityAdvisory;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityAffects;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityAnalysis;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityRating;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityReference;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityReferenceSource;
#[tokio::main]
async fn main() {
let body = CycloneDXBom::new(
"CycloneDX".to_string(),
vec![CycloneDXComponent::new(
"a3390fca-c315-41ae-ae05-af5e7859cdee".to_string(),
"lodash".to_string(),
CycloneDXComponentType::LIBRARY,
"4.17.21".to_string(),
)
.purl("pkg:npm/lodash@4.17.21".to_string())],
CycloneDXMetadata::new(
CycloneDXMetadataComponent::new("i-12345".to_string())
.bom_ref("host-ref-abc123".to_string())
.type_("operating-system".to_string()),
CycloneDXMetadataTools::new(vec![CycloneDXToolComponent::new(
"my-scanner".to_string(),
)
.type_("application".to_string())]),
),
"1.5".to_string(),
vec![CycloneDXVulnerability::new(
vec![CycloneDXVulnerabilityAffects::new(
"a3390fca-c315-41ae-ae05-af5e7859cdee".to_string(),
)],
"CVE-2021-1234".to_string(),
vec![CycloneDXVulnerabilityRating::new()
.score(9.0 as f64)
.severity("high".to_string())
.vector("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N".to_string())],
)
.advisories(vec![CycloneDXVulnerabilityAdvisory::new()
.url("https://example.com/advisory/CVE-2021-1234".to_string())])
.analysis(CycloneDXVulnerabilityAnalysis::new().state("resolved".to_string()))
.cwes(vec![123, 345])
.description("Sample vulnerability detected in the application.".to_string())
.detail("Details about the vulnerability.".to_string())
.references(vec![CycloneDXVulnerabilityReference::new()
.id("GHSA-35m5-8cvj-8783".to_string())
.source(
CycloneDXVulnerabilityReferenceSource::new().url("https://example.com".to_string()),
)])],
)
.version(1);
let mut configuration = datadog::Configuration::new();
configuration.set_unstable_operation_enabled("v2.import_security_vulnerabilities", true);
let api = SecurityMonitoringAPI::with_config(configuration);
let resp = api.import_security_vulnerabilities(body).await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
Instructions
First install the library and its dependencies and then save the example to src/main.rs and run following commands:
DD_SITE="datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us3.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us5.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="datadoghq.eu" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap2.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="uk1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run/**
* Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration({
authMethods: {
AuthZ: {
accessToken: process.env.DD_BEARER_TOKEN as string,
},
},
});
configuration.unstableOperations["v2.importSecurityVulnerabilities"] = true;
const apiInstance = new v2.SecurityMonitoringApi(configuration);
const params: v2.SecurityMonitoringApiImportSecurityVulnerabilitiesRequest = {
body: {
bomFormat: "CycloneDX",
components: [
{
bomRef: "a3390fca-c315-41ae-ae05-af5e7859cdee",
name: "lodash",
purl: "pkg:npm/lodash@4.17.21",
type: "library",
version: "4.17.21",
},
],
metadata: {
component: {
bomRef: "host-ref-abc123",
name: "i-12345",
type: "operating-system",
},
tools: {
components: [
{
name: "my-scanner",
type: "application",
},
],
},
},
specVersion: "1.5",
version: 1,
vulnerabilities: [
{
advisories: [
{
url: "https://example.com/advisory/CVE-2021-1234",
},
],
affects: [
{
ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
},
],
analysis: {
state: "resolved",
},
cwes: [123, 345],
description: "Sample vulnerability detected in the application.",
detail: "Details about the vulnerability.",
id: "CVE-2021-1234",
ratings: [
{
score: 9.0,
severity: "high",
vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N",
},
],
references: [
{
id: "GHSA-35m5-8cvj-8783",
source: {
url: "https://example.com",
},
},
],
},
],
},
};
apiInstance
.importSecurityVulnerabilities(params)
.then((data: any) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
Instructions
First install the library and its dependencies and then save the example to example.ts and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"