
Black Duck Continuous Dynamic
Application Security- Overview
- Setup
- Data & mappings
- Operations & API
- Changelog
The WhiteHat Sentinel connector integrates with Black Duck DAST (formerly Synopsys WhiteHat / Sentinel), a dynamic application security testing platform. It synchronizes scanned web applications and mobile apps, sites, vulnerability definitions, dynamic-code findings (DAST), source-code issues, and individual attack vectors into the Brinqa platform.
Data retrieved from Black Duck Continuous Dynamic
| Connector Object | Required | Maps to Data Model |
|---|---|---|
| Application | Yes | Application |
| Site | Yes | Site |
| Vulnerability Definition | Yes | Dynamic Code Finding Definition |
| Finding | Yes | Dynamic Code Finding |
| Issue | Yes | Static Code Finding |
| Attack Vector | Yes | Attack Vector |
Model relationships
For detailed steps on how to view the data retrieved from Black Duck Continuous Dynamic in the Brinqa Platform, see How to view your data.
Connection settings
When setting up a data integration, select Black Duck Continuous Dynamic from the Connector dropdown and provide the following:
| Setting | Required | Default | Description |
|---|---|---|---|
| Service URL | Yes | https://sentinel.whitehatsec.com | Black Duck Continuous Dynamic Service URL |
| API Key | No | — | Each Black Duck Continuous Dynamic account uses a unique 32-character API key like a password to authenticate requests. |
| Page size | No | 100 | Maximum number of records to get per API request |
| Parallel requests | No | min(4, availableProcessors) | Maximum number of parallel API requests |
Authentication
Method
API-key authentication via the Key request header. There is no separate authentication call; the key is attached to every request.
Endpoint
No dedicated authentication endpoint. A connection test is performed against GET /api/user?format=json.
Request Headers
| Header | Value |
|---|---|
Key | <api-key> |
Content-Type | application/json |
Usage
The Key header is set on every outgoing request via setHeaders() in SentinelConnector. Generate API keys from the Sentinel UI under Account → API Keys.
Sync Behavior
- Parameter:
since(Instant). - Logic:
sincehandling depends on the model:- Application, Site, and Vulnerability Definition —
sinceis accepted but not used; the assets, sites, and vulnerability-classes endpoints do not support timestamp filtering, so these models are always fully enumerated. - Finding —
sinceis formatted asyyyy-MM-dd'T'HH:mm:ss'Z'and applied as theopenedStartandclosedStartquery params. - Issue and Attack Vector —
sinceis formatted asyyyy-MM-dd'T'HH:mm:ss'Z'and applied as thequery_modifiedquery param.
- Application, Site, and Vulnerability Definition —
How to obtain Black Duck Continuous Dynamic credentials
Generate a Black Duck Continuous Dynamic API key
For the Black Duck Continuous Dynamic connector to use the Black Duck API, you must provide an API key. You can access an existing API key or generate a new one. To obtain an API key, follow these steps:
-
Log in to your organization's Black Duck Continuous Dynamic account.
-
Click My Profile and then the API Key tab.
-
Type your password in the Verify password field and click Authenticate.
The API key displays. If this is your first time requesting an API key, a new key is generated. Click Regenerate API key if you want to replace your existing key.
Note: If you do not have the permissions to create an API key, contact your Black Duck Continuous Dynamic administrator. For additional information, see Black Duck Continuous Dynamic documentation.
Attribute mappings
Expand the sections below to view the mappings between the source and the Brinqa data model attributes:
Application
| Source Field Name | SDM Attribute |
|---|---|
ApplicationResource.lang | LANGUAGES |
ApplicationResource.packageName | PACKAGE_NAME |
ApplicationResource.platform | PLATFORM |
AssetResource.actionItems | ACTION_ITEMS |
AssetResource.activeUser | ACTIVE_USER |
AssetResource.applianceID | INSTANCE_ID |
AssetResource.assetOwnerID | ASSET_OWNER_ID |
AssetResource.assetOwnerName | OWNER |
AssetResource.assetSize | ASSET_SIZE |
AssetResource.averageFileSize | AVERAGE_FILE_SIZE |
AssetResource.averageLinesScanned | AVERAGE_LINES_SCANNED |
AssetResource.client.name | ORG |
AssetResource.clientRatingMethod | CLIENT_RATING_METHOD |
AssetResource.creationT | SOURCE_CREATED_DATE |
AssetResource.customAssetID | APP_ID |
AssetResource.customPolicyID | CUSTOM_POLICY_ID |
AssetResource.id | UID |
AssetResource.id | NAME |
AssetResource.industry | INDUSTRY |
AssetResource.isWhiteHatEnabled | IS_WHITEHAT_ENABLED |
AssetResource.lastScanDateT | LAST_SCANNED |
AssetResource.location | LOCATIONS |
AssetResource.phase | PHASE |
AssetResource.preScanStatus | PRE_SCAN_STATUS |
AssetResource.remainingScans | REMAINING_SCANS |
AssetResource.scanStatus | SCAN_STATUS |
AssetResource.scheduleName | SCHEDULE_NAME |
AssetResource.scheduleTimeZone | SCHEDULE_TIME_ZONE |
AssetResource.serviceLevel | SE |
AssetResource.status | SOURCE_STATUS |
AssetResource.subID | SUB_ID |
AssetResource.tags | TAGS |
AssetResource.type | ASSET_TYPE |
AssetResource.weight | WEIGHT |
constant | CATEGORIES |
normalized from AssetResource.status | STATUS |
| sync timestamp | LAST_CAPTURED |
Site
| Source Field Name | SDM Attribute |
|---|---|
constant | CATEGORIES |
constant | STATUS |
SiteResource.abbreviation | ABBREVIATION |
SiteResource.applianceID | APPLIANCE_ID |
SiteResource.associatedHostname | ASSOCIATED_HOSTNAME |
SiteResource.clientID | CLIENT_ID |
SiteResource.customAssetID | CUSTOM_ASSET_ID |
SiteResource.hostname | HOSTNAMES |
SiteResource.id | UID |
SiteResource.industry | INDUSTRY |
SiteResource.name | NAME |
SiteResource.notes | NOTES |
SiteResource.organization | ORG |
SiteResource.speed | SPEED |
SiteResource.usesSatellite | USES_SATELLITE |
SiteResource.weight | WEIGHT |
| sync timestamp | LAST_CAPTURED |
Vulnerability Definition
| Source Field Name | SDM Attribute |
|---|---|
derived from VulnerabilityClassResource.cvssV3Vector | CVSS_V3_VECTOR |
| parsed CVSS v3 metrics | CVSS_V3_AV / _AC / _PR / _UI / _CI / _II / _AI / _E / _RL / _RC |
| sync timestamp | LAST_CAPTURED |
VulnerabilityClassResource.cvssV3Score | CVSS_V3_BASE_SCORE |
VulnerabilityClassResource.defaultRisk | RISK |
VulnerabilityClassResource.description | DESCRIPTION |
VulnerabilityClassResource.hasApplications | HAS_APPLICATIONS |
VulnerabilityClassResource.hasSites | HAS_SITES |
VulnerabilityClassResource.id | UID |
VulnerabilityClassResource.name | TITLE |
VulnerabilityClassResource.retired | RETIRED |
VulnerabilityClassResource.shortName | NAME |
VulnerabilityClassResource.solution | RECOMMENDATION |
Finding
| Source Field Name | SDM Attribute |
|---|---|
| aggregated from attack-vector requests | REQUEST |
| aggregated from attack-vector responses | RESPONSE |
derived from cvssV3.environmentalVector | CVSS_ENV_VECTOR |
derived from FindingResource.cvssV3.vector | CVSS_V3_VECTOR |
| derived from normalized severity | SEVERITY_SCORE |
| derived from STATUS | STATUS_CATEGORY |
derived risk text from FindingResource.customRisk | CUSTOM_RISK |
derived risk text from FindingResource.risk | RISK |
filtered CVE entries from FindingResource.cveTags | CVE_IDS |
filtered CVE entries from FindingResource.cveTags | CVE_RECORDS |
FindingResource.asset.id | SITE_ID |
FindingResource.asset.name | SITE_NAME |
FindingResource.asset.subID | SUB_ID |
FindingResource.asset.subID | TARGETS |
FindingResource.attackVectors | ATTACK_VECTOR_IDS |
FindingResource.class.id | TYPE |
FindingResource.class.name | CATEGORIES |
FindingResource.closed | LAST_FIXED |
FindingResource.customAccepted | ACCEPTED |
FindingResource.cvssScore (fallback when v3 absent) | CVSS_V2_BASE_SCORE |
FindingResource.cvssV3.environmentalScore | CVSS_ENV_SCORE |
FindingResource.cvssV3.score | CVSS_V3_BASE_SCORE |
FindingResource.directRemediationAvailable | PATCHABLE |
FindingResource.firstOpened | FIRST_FOUND |
FindingResource.foundRevision | REVISION |
FindingResource.hasInstanceLevelCustomization | HAS_INSTANCE_LEVEL_CUSTOMIZATION |
FindingResource.hasInstanceLevelCVSSCustomization | HAS_INSTANCE_LEVEL_CVSS_CUSTOMIZATION |
FindingResource.id | UID |
FindingResource.id | NAME |
FindingResource.impact | IMPACT |
FindingResource.impactRating | IMPACT_RATING |
FindingResource.isAccessible | IS_ACCESSIBLE |
FindingResource.lastModified | SOURCE_LAST_MODIFIED |
FindingResource.lastRetested | LAST_RETESTED |
FindingResource.likelihood | LIKELIHOOD |
FindingResource.likelihoodRating | LIKELIHOOD_RATING |
FindingResource.location | URL |
FindingResource.manual | MANUAL |
FindingResource.nonAcceptedStatus | NON_ACCEPTED_STATUS |
FindingResource.notesCount | NOTES_COUNT |
FindingResource.opened | LAST_FOUND |
FindingResource.outOfScopeReasons | OUT_OF_SCOPE_REASONS |
FindingResource.reason | REASON |
FindingResource.retestStatus | RETEST_STATUS |
FindingResource.severity | SOURCE_SEVERITY |
FindingResource.status | SOURCE_STATUS |
FindingResource.subTypeTags | SUB_TYPE_TAGS |
FindingResource.tags | TAGS |
FindingResource.threat | THREAT |
FindingResource.unreachable | UNREACHABLE |
FindingResource.verificationStatus | VERIFICATION_STATUS |
FindingResource.zeroDayTags | ZERO_DAY_TAGS |
| normalized from severity | SEVERITY |
| normalized from status | STATUS |
| parsed CVSS v3 metrics | CVSS_V3_AV / _AC / _PR / _UI / _CI / _II / _AI / _E / _RL / _RC |
| sync timestamp | LAST_CAPTURED |
Issue
| Source Field Name | SDM Attribute |
|---|---|
capitalized vuln.custom_risk | CUSTOM_RISK |
capitalized vuln.risk | RISK |
| derived from STATUS | STATUS_CATEGORY |
derived from vuln.cvss_v3_vector | CVSS_V3_VECTOR |
normalized from vuln.status | STATUS |
parsed CVSS v2 metrics (fallback) | CVSS_V2_VECTOR / _AV / _AC / _AU / _CI / _II / _AI / _E / _RL / _RC |
| parsed CVSS v3 metrics | CVSS_V3_AV / _AC / _PR / _UI / _CI / _II / _AI / _E / _RL / _RC |
SourceVulnResource.id | UID |
SourceVulnResource.location | NAME |
| sync timestamp | LAST_CAPTURED |
vuln.application_id | TARGETS |
vuln.class_readable | CATEGORIES |
vuln.clean_description | DESCRIPTION |
vuln.clean_solution | SOLUTION |
vuln.closed | LAST_FIXED |
vuln.cve_reference[].title | CVE_IDS |
vuln.cve_reference[].title | CVE_RECORDS |
vuln.cvss_score (fallback when v3 absent) | CVSS_V2_BASE_SCORE |
vuln.cvss_v3_environmental_score | CVSS_ENV_SCORE |
vuln.cvss_v3_environmental_vector | CVSS_ENV_VECTOR |
vuln.cvss_v3_score | CVSS_V3_BASE_SCORE |
vuln.dast_classes[].name | DAST_CLASSES |
vuln.found | FIRST_FOUND |
vuln.impact | IMPACT |
vuln.likelihood | LIKELIHOOD |
vuln.modified | SOURCE_LAST_MODIFIED |
vuln.opened | LAST_FOUND |
vuln.score | SCORE |
vuln.status | SOURCE_STATUS |
vuln.tags | TAGS |
vuln.threat | THREAT |
VulnerabilityClassResource.id | TYPE |
VulnerabilityClassResource.id | DEFINITION_ID |
Attack Vector
| Source Field Name | SDM Attribute |
|---|---|
[VulnResource.id, VulnResource.site] | TARGETS |
AttackVectorResource.auth_details | AUTH_DETAILS |
AttackVectorResource.found | FIRST_FOUND |
AttackVectorResource.id | UID |
AttackVectorResource.id | NAME |
AttackVectorResource.opened | OPENED |
AttackVectorResource.scanner_tags | TAGS |
AttackVectorResource.state | STATE |
AttackVectorResource.tested | TESTED |
serialized AttackVectorResource.request | REQUEST |
serialized AttackVectorResource.response | RESPONSE |
| sync timestamp | LAST_CAPTURED |
VulnResource.id | FINDING_ID |
VulnResource.site | SITE_ID |
VulnResource.url + AttackVectorResource.request.url | URL |
Operations & API
Expand each connector object to see its operation options, delta-sync behavior, and the API it uses. See connector operation options for how to apply operation options (keys and values are case-sensitive).
Application
Operation options
This object does not support any operation options.
Delta sync
Not supported. The connector performs a full sync of Application on every run and applies no incremental date filter.
API
- Type: REST · Endpoint:
GET /api/assets?type=,mobile_application,application
Site
Operation options
This object does not support any operation options.
Delta sync
Not supported. The connector performs a full sync of Site on every run and applies no incremental date filter.
API
- Type: REST · Endpoint:
GET /api/v2/sites
Vulnerability Definition
Operation options
This object does not support any operation options.
Delta sync
Not supported. The connector performs a full sync of Vulnerability Definition on every run and applies no incremental date filter.
API
- Type: REST · Endpoint:
GET /api/vulnerabilityClasses
Finding
Operation options
| Option | Type | Default | Description |
|---|---|---|---|
status | Comma-separated finding statuses | open,closed,mitigated,accepted,out_of_scope,invalid |
Delta sync
Supported. The connector performs an incremental (delta) sync via the since sync token.
API
- Type: REST
Issue
Operation options
| Option | Type | Default | Description |
|---|---|---|---|
status | Comma-separated issue statuses | open,closed,false,discovered |
Delta sync
Supported. The connector performs an incremental (delta) sync via the query_modified sync token, filtering on modified.
API
- Type: REST
Attack Vector
Operation options
| Option | Type | Default | Description |
|---|---|---|---|
status | Comma-separated vulnerability statuses | open, closed, certified, accepted |
Delta sync
Supported. The connector performs an incremental (delta) sync via the query_modified sync token, filtering on modified.
API
- Type: REST · Endpoint:
GET /api/vuln
Changelog
The Black Duck Continuous Dynamic connector has undergone the following changes:
| Version | Description | Migration Steps |
|---|---|---|
| 3.2.8 | No changes in this release. | N/A |
| 3.2.7 | Improvements - Models now write attributes through the platform's shared, type-validating attribute helper instead of connector-local helpers. Attribute values are now validated against the declared schema type at write time, which surfaces type mismatches early rather than silently storing the wrong type. Bug Fixes - Corrected numerous date/time attributes that were being stored as numbers instead of proper timestamps, which caused data integration failures on the affected syncs. The values are now stored as timestamps, matching the connector schema: - Attack Vector — "Tested", "Opened", "First found" - Asset — "Source created date", "Last scanned" - Dynamic Code Finding — "Last retested", "First found", "Last found", "Last fixed", "Source last modified" - Issue — "First found", "Last found", "Last fixed", "Source last modified" | • The date attributes listed above changed from numbers to timestamps. Re-sync the WhiteHat Sentinel connector to repopulate these records with the corrected type. |
| 3.2.6 | Improvements - Connector-sourced attribute values now take precedence over non-connector data channels (manual edits, bulk imports, UI input) when the platform consolidates records, so Synopsys data is no longer overridden by lower-priority sources. Bug Fixes - Corrected the finding "Solution" attribute from a numeric type to text (it is populated with the remediation/solution text). | • Findings: the "Solution" attribute changed from numeric to text. Re-sync the WhiteHat Sentinel connector to repopulate these records with the corrected type. |
| 3.2.5 | New Features - Expanded asset and dynamic code finding ingestion with additional fields from the WhiteHat Sentinel API, including asset locations, action items, scheduling details, scan metrics, ownership, and finding-level ratings, customization flags, sub-type and zero-day tags, attack vector IDs, and CVE references. - Added the LAST_CAPTURED attribute to all models (Application, Site, Dynamic Code Finding, Dynamic Code Finding Definition, Issue, Attack Vector). The connector now stamps each captured record with the sync start timestamp so the platform can identify records that have not been seen on a recent sync. Bug Fixes - Fixed a deserialization error in Dynamic Code Finding sync caused by the location field on nested asset data being returned as a single string in the findings endpoint while returned as an array in the assets endpoint, resulting in failed finding retrieval. | N/A |
| 3.2.4 | New Features - Expanded asset and dynamic code finding ingestion with many additional fields from the WhiteHat Sentinel API, including asset locations, action items, ownership and scheduling details, scan metrics (average file size, average lines scanned, remaining scans), policy and weighting attributes, finding-level impact and likelihood ratings, instance-level customization flags, sub-type and zero-day tags, attack vector IDs, and CVE references. | N/A |
| 3.2.3 | No changes in this release. | N/A |
| 3.2.2 | No changes in this release. | N/A |
| 3.2.1 | No changes in this release. | N/A |
| 3.2.0 | No changes in this release. | N/A |
| 3.1.2 | No changes in this release. | N/A |
| 3.1.1 | No changes in this release. | N/A |
| 3.1.0 | No changes in this release. | N/A |
| 3.0.5 | No changes in this release. | N/A |
| 3.0.4 | New Features - Added a "Custom asset ID" attribute to the Site model, exposing the customer-defined asset identifier from the WhiteHat Sentinel API. | N/A |
| 3.0.3 | Improvements - Renamed the "Patch available" finding attribute to "Patchable" on Dynamic Code Findings to align with the platform's standard finding schema. | • Dynamic Code Finding: the "Patch available" attribute was re-keyed to "Patchable". Re-sync the WhiteHat Sentinel connector so findings repopulate under the new attribute. |
| 3.0.2 | New Features - Added a "Source severity" attribute to Dynamic Code Findings, carrying the raw severity reported by WhiteHat Sentinel. Bug Fixes - Corrected the Dynamic Code Finding "Manual" attribute from text to a true/false value, matching the boolean flag returned by the API. | • Dynamic Code Finding: the "Manual" attribute changed from text to a boolean. Re-sync the WhiteHat Sentinel connector to repopulate these records with the corrected type. |
| 3.0.1 | No changes in this release. | N/A |
| 3.0.0 | Overview The WhiteHat Sentinel connector integrates with WhiteHat Sentinel (Synopsys) to synchronize dynamic application security testing assets and findings, including sites, dynamic code findings, and their attack vectors. Category: Application Security Models | N/A |