Skip to main content

NetSPI

NetSPI is a penetration testing and vulnerability management platform that provides security assessment services across network, application, and cloud environments. You can bring project, asset, finding, and identity data from NetSPI into Brinqa to gain a unified view of your attack surface, thus strengthening your cybersecurity posture.

This document details the information you must provide for the connector to authenticate with NetSPI and how to obtain that information from NetSPI. See create a data integration for step-by-step instructions on setting up the integration.

Required connection settings

When setting up a data integration, select NetSPI from the Connector dropdown. If you cannot find the connector in the dropdown, make sure that you have installed it first. You must provide the following information to authenticate NetSPI with Brinqa:

  • API URL: The NetSPI API base URL. The default format is https://<server>/.

  • API Token: The API token used to authenticate with the NetSPI API. The connector includes this token in the Authorization: Token <token> header for all API requests.

  • Client ID (optional): The client ID included in the query payload to scope data retrieval to a specific client.

Additional settings

The NetSPI connector contains additional options for specific configuration:

  • Page size: The maximum number of records to get per API request. The default setting is 100.
  • Parallel requests: The maximum number of parallel API requests. The default setting is the minimum of 4 or the number of available CPU cores.
  • Maximum retries: The maximum number of times that the integration attempts to connect to the NetSPI API before giving up and reporting a failure. The default setting is 5.
  • Request timeout: The maximum number of seconds allotted before an API request times out. The default setting is 120. The maximum allowed value is 300 seconds.

Types of data to retrieve

The NetSPI connector can retrieve the following types of data from the NetSPI API:

Table 1: Data retrieved from NetSPI

Connector ObjectRequiredMaps to Data Model
AD ForestNoNot Mapped
AD DomainNoNot Mapped
AD Organizational UnitNoNot Mapped
AD Service Principal NameNoNot Mapped
AD Trusted DomainNoNot Mapped
Application InstanceNoNot Mapped
Cloud ResourceYesCloud Resource
CompanyNoNot Mapped
DNS DomainYesSite
DNS RecordNoNot Mapped
FileNoNot Mapped
File ShareNoNot Mapped
FindingYesPentest Finding
Finding DefinitionYesPentest Finding Definition
Generic AssetNoNot Mapped
GroupNoNot Mapped
HostYesHost
IdentityYesPerson
IP AddressYesHost
LocationNoNot Mapped
Network DeviceNoNot Mapped
Operating SystemNoNot Mapped
PersonYesPerson
Physical ComponentNoNot Mapped
PolicyNoNot Mapped
ProjectYesApplication
Source CodeYesCode Project
SubnetNoNot Mapped
info

The NetSPI connector does not currently support operation options for the types of data it retrieves.

For detailed steps on how to view the data retrieved from NetSPI in the Brinqa Platform, see How to view your data.

Attribute mappings

Expand the sections below to view the mappings between the source and the Brinqa data model attributes.

AD Forest

Table 2: AD Forest attribute mappings

Source Field NameSDM Attribute
adForest.clientName()CLIENT_NAME
adForest.createdAt()SOURCE_CREATED_DATE
adForest.description()DESCRIPTION
adForest.details()DETAILS
adForest.environment()ENVIRONMENT
adForest.id()UID
adForest.name()NAME
adForest.projectId()PROJECT_ID
adForest.projectName()PROJECT_NAME
adForest.riskScore()RISK_SCORE
adForest.tags[].nameTAGS
adForest.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
AD Domain

Table 3: AD Domain attribute mappings

Source Field NameSDM Attribute
domain.adObjectSid()AD_OBJECT_SID
domain.clientName()CLIENT_NAME
domain.commonName()COMMON_NAME
domain.createdAt()SOURCE_CREATED_DATE
domain.distinguishedName()DISTINGUISHED_NAME
domain.forest()FOREST
domain.id()NAME
domain.id()UID
domain.parentDomain()PARENT_DOMAIN
domain.projectId()PROJECT_ID
domain.projectName()PROJECT_NAME
domain.riskScore()RISK_SCORE
domain.tags[].nameTAGS
domain.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Domain")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
AD Organizational Unit

Table 4: AD Organizational Unit attribute mappings

Source Field NameSDM Attribute
organizationalUnit.adObjectSid()AD_OBJECT_SID
organizationalUnit.clientName()CLIENT_NAME
organizationalUnit.createdAt()SOURCE_CREATED_DATE
organizationalUnit.description()DESCRIPTION
organizationalUnit.details()DETAILS
organizationalUnit.distinguishedName()DISTINGUISHED_NAME
organizationalUnit.environment()ENVIRONMENT
organizationalUnit.id()NAME
organizationalUnit.id()UID
organizationalUnit.projectId()PROJECT_ID
organizationalUnit.projectName()PROJECT_NAME
organizationalUnit.riskScore()RISK_SCORE
organizationalUnit.tags[].nameTAGS
organizationalUnit.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
AD Service Principal Name

Table 5: AD Service Principal Name attribute mappings

Source Field NameSDM Attribute
servicePrincipalName.adDomain()AD_DOMAIN
servicePrincipalName.clientName()CLIENT_NAME
servicePrincipalName.createdAt()SOURCE_CREATED_DATE
servicePrincipalName.description()DESCRIPTION
servicePrincipalName.details()DETAILS
servicePrincipalName.host()HOST
servicePrincipalName.id()NAME
servicePrincipalName.id()UID
servicePrincipalName.port()PORT
servicePrincipalName.projectId()PROJECT_ID
servicePrincipalName.projectName()PROJECT_NAME
servicePrincipalName.riskScore()RISK_SCORE
servicePrincipalName.serviceClass()SERVICE_CLASS
servicePrincipalName.serviceIdentity()SERVICE_IDENTITY
servicePrincipalName.serviceName()SERVICE_NAME
servicePrincipalName.servicePrincipalName()SERVICE_PRINCIPAL_NAME
servicePrincipalName.tags[].nameTAGS
servicePrincipalName.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
AD Trusted Domain

Table 6: AD Trusted Domain attribute mappings

Source Field NameSDM Attribute
trustedDomain.adDomain()AD_DOMAIN
trustedDomain.adObjectSid()AD_OBJECT_SID
trustedDomain.adTrustDirection()AD_TRUST_DIRECTION
trustedDomain.clientName()CLIENT_NAME
trustedDomain.createdAt()SOURCE_CREATED_DATE
trustedDomain.description()DESCRIPTION
trustedDomain.details()DETAILS
trustedDomain.distinguishedName()DISTINGUISHED_NAME
trustedDomain.id()NAME
trustedDomain.id()UID
trustedDomain.projectId()PROJECT_ID
trustedDomain.projectName()PROJECT_NAME
trustedDomain.riskScore()RISK_SCORE
trustedDomain.tags[].nameTAGS
trustedDomain.trustTransitive()TRUST_TRANSITIVE
trustedDomain.trustedDomainName()TRUSTED_DOMAIN_NAME
trustedDomain.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Domain")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
Application Instance

Table 7: Application Instance attribute mappings

Source Field NameSDM Attribute
applicationInstance.applicationCompanyName()APPLICATION_COMPANY_NAME
applicationInstance.applicationCpeName()APPLICATION_CPE_NAME
applicationInstance.applicationDescription()APPLICATION_DESCRIPTION
applicationInstance.applicationEolDate()TERMINATION_DATE
applicationInstance.applicationId()APP_ID
applicationInstance.applicationMajorVersion()APPLICATION_MAJOR_VERSION
applicationInstance.applicationMinorVersion()APPLICATION_MINOR_VERSION
applicationInstance.applicationName()APP_NAME
applicationInstance.applicationProductName()APPLICATION_PRODUCT_NAME
applicationInstance.applicationReleaseDate()PUBLISHED_DATE
applicationInstance.applicationServicePack()APPLICATION_SERVICE_PACK
applicationInstance.applicationUrl()APPLICATION_URL
applicationInstance.applicationVersion()APPLICATION_VERSION
applicationInstance.authenticationMode()AUTHENTICATION_MODE
applicationInstance.clientName()CLIENT_NAME
applicationInstance.createdAt()SOURCE_CREATED_DATE
applicationInstance.description()DESCRIPTION
applicationInstance.forcedEncryption()FORCED_ENCRYPTION
applicationInstance.hostNames()HOSTNAMES
applicationInstance.id()UID
applicationInstance.installDate()INSTALL_DATE
applicationInstance.installPath()INSTALL_PATH
applicationInstance.isClustered()IS_CLUSTERED
applicationInstance.name()NAME
applicationInstance.namedPipe()NAMED_PIPE
applicationInstance.ownerIdentityId()OWNER_IDENTITY_ID
applicationInstance.parentApplicationInstanceId()PARENT_APPLICATION_INSTANCE_ID
applicationInstance.processName()PROCESS_NAME
applicationInstance.projectId()PROJECT_ID
applicationInstance.projectName()PROJECT_NAME
applicationInstance.riskScore()RISK_SCORE
applicationInstance.serviceAccount()SERVICE_ACCOUNT
applicationInstance.serviceName()SERVICE_NAME
applicationInstance.tags[].nameTAGS
applicationInstance.targetHardware()TARGET_HARDWARE
applicationInstance.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Application")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
Cloud Resource

Table 8: Cloud Resource attribute mappings

Source Field NameSDM Attribute
cloudResource.accountId()CLOUD_ACCOUNT_ID
cloudResource.accountName()CLOUD_ACCOUNT_NAME
cloudResource.assetPhysicalLocation()ASSET_PHYSICAL_LOCATION
cloudResource.clientName()CLIENT_NAME
cloudResource.cloudProvider()CLOUD_PROVIDER
cloudResource.createdAt()SOURCE_CREATED_DATE
cloudResource.id()NAME
cloudResource.id()UID
cloudResource.macAddress()MAC_ADDRESSES
cloudResource.projectId()PROJECT_ID
cloudResource.projectName()PROJECT_NAME
cloudResource.resourceIdentifier()RESOURCE_IDENTIFIER
cloudResource.riskScore()RISK_SCORE
cloudResource.tags[].nameTAGS
cloudResource.updatedAt()SOURCE_LAST_MODIFIED
cloudResource.vpcId()VPC_ID
Generated (set to "Cloud Resource")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
Company

Table 9: Company attribute mappings

Source Field NameSDM Attribute
company.clientName()CLIENT_NAME
company.createdAt()SOURCE_CREATED_DATE
company.id()UID
company.name()NAME
company.projectId()PROJECT_ID
company.projectName()PROJECT_NAME
company.riskScore()RISK_SCORE
company.tags[].nameTAGS
company.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
DNS Domain

Table 10: DNS Domain attribute mappings

Source Field NameSDM Attribute
domain.assetOwner()ASSET_OWNER
domain.clientName()CLIENT_NAME
domain.createdAt()SOURCE_CREATED_DATE
domain.description()DESCRIPTION
domain.id()UID
domain.name()NAME
domain.portNumber()PORT
domain.portProtocol()PROTOCOL
domain.projectId()PROJECT_ID
domain.projectName()PROJECT_NAME
domain.riskScore()RISK_SCORE
domain.subdomainName()SUB_DOMAIN_NAME
domain.tags[].nameTAGS
domain.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Domain")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
DNS Record

Table 11: DNS Record attribute mappings

Source Field NameSDM Attribute
record.active()ACTIVE
record.clientName()CLIENT_NAME
record.createdAt()SOURCE_CREATED_DATE
record.domain()DOMAIN
record.id()UID
record.ipAddress()IP_ADDRESSES
record.name()DNS_NAMES
record.name()NAME
record.projectId()PROJECT_ID
record.projectName()PROJECT_NAME
record.recordTypeId()RECORD_TYPE_ID
record.riskScore()RISK_SCORE
record.subDomain()SUB_DOMAIN
record.tags[].nameTAGS
record.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
File Share

Table 12: File Share attribute mappings

Source Field NameSDM Attribute
fileShare.clientName()CLIENT_NAME
fileShare.createdAt()SOURCE_CREATED_DATE
fileShare.fileCount()FILE_COUNT
fileShare.fileListHash()FILE_LIST_HASH
fileShare.fileListTotalFileSize()FILE_LIST_TOTAL_FILE_SIZE
fileShare.fileShareType()FILE_SHARE_TYPE
fileShare.id()UID
fileShare.identity()IDENTITY
fileShare.lastAccessed()LAST_ACCESSED
fileShare.path()PATH
fileShare.projectId()PROJECT_ID
fileShare.projectName()PROJECT_NAME
fileShare.riskScore()RISK_SCORE
fileShare.tags[].nameTAGS
fileShare.uncPath()UNC_PATH
fileShare.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
File

Table 13: File attribute mappings

Source Field NameSDM Attribute
file.clientName()CLIENT_NAME
file.createdAt()SOURCE_CREATED_DATE
file.fileShare()FILE_SHARE
file.hash()HASH
file.hasNonPublicData()HAS_NON_PUBLIC_DATA
file.hasPasswords()HAS_PASSWORDS
file.hasSensitiveData()HAS_SENSITIVE_DATA
file.hashPasswordsVerified()HASH_PASSWORDS_VERIFIED
file.highRisk()HIGH_RISK
file.host()HOST
file.id()UID
file.identity()IDENTITY
file.lastAccessed()LAST_ACCESSED
file.path()PATH
file.projectId()PROJECT_ID
file.projectName()PROJECT_NAME
file.riskScore()RISK_SCORE
file.tags[].nameTAGS
file.uncPath()UNC_PATH
file.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Finding

Table 14: Finding attribute mappings

Source Field NameSDM Attribute
finding.affectedSource(), finding.affectedSourceLine(), finding.affectedUrl()PATH
finding.assetId(), finding.projectId(), finding.targets()TARGETS
finding.assetLabel()ASSET_NAME
finding.attackParameter()ATTACK_PARAM
finding.authenticationState()USER_AUTH_STATE
finding.confidenceLevel()CONFIDENCE_LEVEL
finding.createdAt()SOURCE_CREATED_DATE
finding.dctAlertLevel()DETECTION_CONTROL_ALERT_LEVEL
finding.dctBlockLevel()DETECTION_CONTROL_BLOCK_LEVEL
finding.dctDetectionLevel()DETECTION_CONTROL_DETECTION_LEVEL
finding.dctLogLevel()DETECTION_CONTROL_LOG_LEVEL
finding.dctResponseLevel()DETECTION_CONTROL_RESPONSE_LEVEL
finding.detectionLevel()DETECTION_LEVEL
finding.externalIdentifier()EXTERNAL_IDENTIFIER
finding.findingTemplateUid()TYPE
finding.firstSeenAt()FIRST_SEEN
finding.id()UID
finding.isEntryPoint()ENTRY_POINT
finding.lastSeenAt()LAST_SEEN
finding.name()NAME
finding.port()PORT
finding.portProtocol()PROTOCOL
finding.projectId()PROJECT_ID
finding.remediationActualDate()REMEDIATED_ON
finding.remediationDueDate()REMEDIATION_DUE_DATE
finding.state()PROVIDER_STATUS
finding.state() (normalized)SOURCE_STATUS
finding.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Finding Definition

Table 15: Finding Definition attribute mappings

Source Field NameSDM Attribute
finding.businessImpact()BUSINESS_IMPACT
finding.cvssV2Score()CVSS_V2_BASE_SCORE
finding.cvssV2Vector() (calculated)CVSS_V2_VECTOR
finding.cvssV3Score()CVSS_V3_BASE_SCORE
finding.cvssV3Vector() (calculated)CVSS_V3_VECTOR
finding.cvssV4Score()CVSS_V4_BASE_SCORE
finding.cvssV4Vector() (calculated)CVSS_V4_VECTOR
finding.cwe()CWE_IDS
finding.cwe() (prefixed with "CWE-")WEAKNESSES
finding.description()DESCRIPTION
finding.name()NAME
finding.remediationInstructions()RECOMMENDATION
finding.severityId() (calculated)SEVERITY_SCORE
finding.severityId() (normalized)SEVERITY
finding.severityId()SOURCE_SEVERITY
findingTemplateUidUID
Generated (sync capture timestamp)LAST_CAPTURED
Generic Asset

Table 16: Generic Asset attribute mappings

Source Field NameSDM Attribute
genericAsset.assetPhysicalLocation()PHYSICAL_LOCATION
genericAsset.clientName()CLIENT_NAME
genericAsset.createdAt()SOURCE_CREATED_DATE
genericAsset.id()UID
genericAsset.projectId()PROJECT_ID
genericAsset.projectName()PROJECT_NAME
genericAsset.riskScore()RISK_SCORE
genericAsset.tags[].nameTAGS
genericAsset.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Group

Table 17: Group attribute mappings

Source Field NameSDM Attribute
group.adDistinguishedName()AD_DISTINGUISHED_NAME
group.adObjectSid()AD_OBJECT_SID
group.clientName()CLIENT_NAME
group.createdAt()SOURCE_CREATED_DATE
group.externalIdentifier()EXTERNAL_IDENTIFIER
group.groupTypeId()GROUP_TYPE_ID
group.id()NAME
group.id()UID
group.isDisabled()IS_DISABLED
group.isFixedRole()IS_FIXED_ROLE
group.owner()OWNER
group.projectId()PROJECT_ID
group.projectName()PROJECT_NAME
group.riskScore()RISK_SCORE
group.samAccountName()SAM_ACCOUNT_NAME
group.tags[].nameTAGS
group.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Host

Table 18: Host attribute mappings

Source Field NameSDM Attribute
host.clientName()CLIENT_NAME
host.createdAt()SOURCE_CREATED_DATE
host.domain()DOMAIN
host.hostType()HOST_TYPE
host.id()UID
host.ipAddresses[].addressIP_ADDRESSES
host.ipAddresses[].address (private)PRIVATE_IP_ADDRESSES
host.ipAddresses[].address (public)PUBLIC_IP_ADDRESSES
host.names()HOSTNAMES
host.projectId()PROJECT_ID
host.projectName()PROJECT_NAME
host.riskScore()RISK_SCORE
host.tags[].nameTAGS
host.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Host")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
IP Address

Table 19: IP Address attribute mappings

Source Field NameSDM Attribute
ipAddress.address()IP_ADDRESSES
ipAddress.address() (private)PRIVATE_IP_ADDRESSES
ipAddress.address() (public)PUBLIC_IP_ADDRESSES
ipAddress.clientName()CLIENT_NAME
ipAddress.createdAt()SOURCE_CREATED_DATE
ipAddress.id()UID
ipAddress.isDiscoveredByNetspi()DISCOVERED_BY_NETSPI
ipAddress.projectId()PROJECT_ID
ipAddress.projectName()PROJECT_NAME
ipAddress.riskScore()RISK_SCORE
ipAddress.tags[].nameTAGS
ipAddress.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Host")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
Identity

Table 20: Identity attribute mappings

Source Field NameSDM Attribute
identity.adDistinguishedName()AD_DISTINGUISHED_NAME
identity.adDomain()AD_DOMAIN
identity.adObjectSid()AD_OBJECT_SID
identity.authenticationRealm()AUTHENTICATION_REALM
identity.clientName()CLIENT_NAME
identity.createdAt()SOURCE_CREATED_DATE
identity.email()EMAILS
identity.firstName()FIRST_NAME
identity.id()UID
identity.identityType()IDENTITY_TYPE
identity.isMfaEnabled()IS_MFA_ENABLED
identity.isPrivileged()IS_PRIVILEGED
identity.isRole()IS_ROLE
identity.isUnAuthenticated()IS_UNAUTHENTICATED
identity.lastName()LAST_NAME
identity.projectId()PROJECT_ID
identity.projectName()PROJECT_NAME
identity.riskScore()RISK_SCORE
identity.samAccountName()SAM_ACCOUNT_NAME
identity.tags[].nameTAGS
identity.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Person", "Identity")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
Location

Table 21: Location attribute mappings

Source Field NameSDM Attribute
location.address()ADDRESS
location.city()CITY
location.clientName()CLIENT_NAME
location.country()COUNTRY
location.createdAt()SOURCE_CREATED_DATE
location.id()UID
location.locationZone()LOCATION_ZONE
location.projectId()PROJECT_ID
location.projectName()PROJECT_NAME
location.riskScore()RISK_SCORE
location.state()STATE
location.tags[].nameTAGS
location.updatedAt()SOURCE_LAST_MODIFIED
location.zip()POSTAL_CODE
Generated (sync capture timestamp)LAST_CAPTURED
Network Device

Table 22: Network Device attribute mappings

Source Field NameSDM Attribute
device.clientName()CLIENT_NAME
device.createdAt()SOURCE_CREATED_DATE
device.id()NAME
device.id()UID
device.projectId()PROJECT_ID
device.projectName()PROJECT_NAME
device.riskScore()RISK_SCORE
device.tags[].nameTAGS
device.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Operating System

Table 23: Operating System attribute mappings

Source Field NameSDM Attribute
operatingSystem.build()BUILD
operatingSystem.clientName()CLIENT_NAME
operatingSystem.createdAt()SOURCE_CREATED_DATE
operatingSystem.endOfLifeDate()END_OF_LIFE_DATE
operatingSystem.extendedSupportEndDate()EXTENDED_SUPPORT_END_DATE
operatingSystem.id()UID
operatingSystem.majorVersion()MAJOR_VERSION
operatingSystem.minorVersion()MINOR_VERSION
operatingSystem.osType()OS_TYPE
operatingSystem.parentCompany()PARENT_COMPANY
operatingSystem.platform()PLATFORM
operatingSystem.projectId()PROJECT_ID
operatingSystem.projectName()PROJECT_NAME
operatingSystem.releaseDate()RELEASE_DATE
operatingSystem.riskScore()RISK_SCORE
operatingSystem.tags[].nameTAGS
operatingSystem.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Person

Table 24: Person attribute mappings

Source Field NameSDM Attribute
person.clientName()CLIENT_NAME
person.companyId()COMPANY_ID
person.createdAt()SOURCE_CREATED_DATE
person.emails()EMAILS
person.employeeId()EMPLOYEE_ID
person.firstName()FIRST_NAME
person.id()UID
person.jobTitle()JOB_TITLE
person.lastName()LAST_NAME
person.parentLocation()PARENT_LOCATION
person.projectId()PROJECT_ID
person.projectName()PROJECT_NAME
person.riskScore()RISK_SCORE
person.tags[].nameTAGS
person.updatedAt()SOURCE_LAST_MODIFIED
Generated (set to "Person", "Identity")CATEGORIES
Generated (sync capture timestamp)LAST_CAPTURED
Physical Component

Table 25: Physical Component attribute mappings

Source Field NameSDM Attribute
physicalComponent.clientName()CLIENT_NAME
physicalComponent.createdAt()SOURCE_CREATED_DATE
physicalComponent.id()UID
physicalComponent.parentCompany()PARENT_COMPANY
physicalComponent.parentLocation()PARENT_LOCATION
physicalComponent.parentPhysicalComponent()PARENT_PHYSICAL_COMPONENT
physicalComponent.physicalComponentTypeId()PHYSICAL_COMPONENT_TYPE_ID
physicalComponent.projectId()PROJECT_ID
physicalComponent.projectName()PROJECT_NAME
physicalComponent.riskScore()RISK_SCORE
physicalComponent.tags[].nameTAGS
physicalComponent.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Policy

Table 26: Policy attribute mappings

Source Field NameSDM Attribute
policy.clientName()CLIENT_NAME
policy.createdAt()SOURCE_CREATED_DATE
policy.department()DEPARTMENT
policy.id()UID
policy.owner()OWNER
policy.parentCompany()PARENT_COMPANY
policy.policyCategoryId()POLICY_CATEGORY_ID
policy.policySubTypeId()POLICY_SUB_TYPE_ID
policy.policyTypeId()POLICY_TYPE_ID
policy.projectId()PROJECT_ID
policy.projectName()PROJECT_NAME
policy.riskScore()RISK_SCORE
policy.tags[].nameTAGS
policy.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Project

Table 27: Project attribute mappings

Source Field NameSDM Attribute
project.assetCategoryName() + ApplicationCATEGORIES
project.assets()ASSETS
project.clientName()CLIENT_NAME
project.description()DESCRIPTION
project.endDate()END_DATE
project.id()UID
project.industryRiskScore()INDUSTRY_RISK_SCORE
project.name()NAME
project.openFindings()OPEN_FINDINGS
project.projectType()PROJECT_TYPE
project.remediationRiskScore()REMEDIATION_RISK_SCORE
project.riskScore()RISK_SCORE
project.scope()SCOPE
project.shortName()SHORT_NAME
project.startDate()START_DATE
project.tags[].nameTAGS
project.vulnerabilityRiskScore()VULNERABILITY_RISK_SCORE
Generated (sync capture timestamp)LAST_CAPTURED
Source Code

Table 28: Source Code attribute mappings

Source Field NameSDM Attribute
sourceCode.clientName()CLIENT_NAME
sourceCode.createdAt()SOURCE_CREATED_DATE
sourceCode.id()NAME
sourceCode.id()UID
sourceCode.projectId()PROJECT_ID
sourceCode.projectName()PROJECT_NAME
sourceCode.riskScore()RISK_SCORE
sourceCode.tags[].nameTAGS
sourceCode.updatedAt()SOURCE_LAST_MODIFIED
Generated (sync capture timestamp)LAST_CAPTURED
Subnet

Table 29: Subnet attribute mappings

Source Field NameSDM Attribute
subnet.cidr()CIDR
subnet.clientName()CLIENT_NAME
subnet.createdAt()SOURCE_CREATED_DATE
subnet.description()DESCRIPTION
subnet.dhcpRange()DHCP_RANGE
subnet.endIp()END_IP
subnet.id()UID
subnet.interfaceName()INTERFACE_NAME
subnet.isDHCP()IS_DHCP
subnet.isIPV4()IS_IPV4
subnet.isWireless()IS_WIRELESS
subnet.netMask()NET_MASK
subnet.ownerId()OWNER_ID
subnet.projectId()PROJECT_ID
subnet.projectName()PROJECT_NAME
subnet.riskScore()RISK_SCORE
subnet.sid()SID
subnet.startIp()START_IP
subnet.subnetExternalIdentifier()SUBNET_EXTERNAL_IDENTIFIER
subnet.tags[].nameTAGS
subnet.updatedAt()SOURCE_LAST_MODIFIED
subnet.vlanId()VLAN_ID
Generated (sync capture timestamp)LAST_CAPTURED

APIs

The NetSPI connector uses the NetSPI Query API. Specifically, it uses the following endpoint for all connector objects:

Table 30: NetSPI API endpoints

Connector ObjectAPI Endpoint
AD DomainPOST {baseUrl}/api/query — query model: ad_domain
AD ForestPOST {baseUrl}/api/query — query model: ad_forest
AD Organizational UnitPOST {baseUrl}/api/query — query model: ad_organizational_unit
AD Service Principal NamePOST {baseUrl}/api/query — query model: ad_service_principal_name
AD Trusted DomainPOST {baseUrl}/api/query — query model: ad_trusted_domain
Application InstancePOST {baseUrl}/api/query — query model: application_instance
Cloud ResourcePOST {baseUrl}/api/query — query model: cloud_resource
CompanyPOST {baseUrl}/api/query — query model: company
DNS DomainPOST {baseUrl}/api/query — query model: domain
DNS RecordPOST {baseUrl}/api/query — query model: dns_record
FilePOST {baseUrl}/api/query — query model: file
File SharePOST {baseUrl}/api/query — query model: file_share
Finding, Finding DefinitionPOST {baseUrl}/api/query — query model: finding
Generic AssetPOST {baseUrl}/api/query — query model: generic_asset
GroupPOST {baseUrl}/api/query — query model: group
HostPOST {baseUrl}/api/query — query model: host
IdentityPOST {baseUrl}/api/query — query model: identity
IP AddressPOST {baseUrl}/api/query — query model: ip_address
LocationPOST {baseUrl}/api/query — query model: location
Network DevicePOST {baseUrl}/api/query — query model: network_device
Operating SystemPOST {baseUrl}/api/query — query model: operating_system
PersonPOST {baseUrl}/api/query — query model: person
Physical ComponentPOST {baseUrl}/api/query — query model: physical_component
PolicyPOST {baseUrl}/api/query — query model: policy
ProjectPOST {baseUrl}/api/query — query model: project
Source CodePOST {baseUrl}/api/query — query model: source_code
SubnetPOST {baseUrl}/api/query — query model: subnet

Changelog

The NetSPI connector has undergone the following changes:

Table 31: NetSPI connector changelog

VersionDescriptionDate Published
3.0.2Fixed Host sync failure caused by null elements in names arrays. Fixed IPAddress sync failure caused by tags data type mismatch. Refactored tag handling across all asset and project models. Improved handling of missing data in API responses.April 30th, 2026
3.0.0Initial Integration+ release.April 30th, 2026