Skip to content

Exposure Management

The Exposure Management service collection provides operations for managing external assets and ecosystem subsidiaries. Aggregate external asset data, retrieve and update assets, manage ecosystem subsidiaries, download asset blobs, and query assets using FQL filters.

LanguageLast Update
Pythonv1.5.4
PowerShellv2.2.9
Gov0.20.0
TypeScriptv0.6.0
Rustv0.7.0
Rubyv1.2.0
OperationDescription
aggregate_external_assets
aggregate_assets
Returns external assets aggregates.
combined_ecosystem_subsidiaries
query_combined_ecosystem_subsidiaries
Retrieves a list of ecosystem subsidiaries with their detailed information.
blob_download_external_assets
download_assets
Download the entire contents of the blob. The relative link to this endpoint is returned in the GET /entities/external-assets/v1 request.
blob_preview_external_assets
preview_assets
Download a preview of the blob. The relative link to this endpoint is returned in the GET /entities/external-assets/v1 request.
get_ecosystem_subsidiaries
get_ecosystem_subsidiaries
Retrieves detailed information about ecosystem subsidiaries by ID.
post_external_assets_inventory_v1
add_assets
Add external assets for external asset scanning.
get_external_assets
get_assets
Get details on external assets by providing one or more IDs.
delete_external_assets
delete_assets
Delete multiple external assets.
patch_external_assets
update_assets
Update the details of external assets.
query_ecosystem_subsidiaries
query_ecosystem_subsidiaries
Retrieves a list of IDs for ecosystem subsidiaries.
query_external_assets
query_assets_v1
Get a list of external asset IDs that match the provided filter conditions. Use these IDs with the /entities/external-assets/v1 endpoints
query_external_assets_v2
query_assets
Query external assets (v2).

Returns external assets aggregates.

POST /fem/aggregates/external-assets/v1
Scope Assets: READ Consumes · Produces application/json
PEP 8 aggregate_assets
NameTypeData typeDescription
bodybodydictionaryFull body payload in JSON format
date_rangesbodylist of dictionariesApplies to date_range aggregations. Example: [{“from”: “2016-05-28T09:00:31Z”,“to”: “2016-05-30T09:00:31Z”},{“from”: “2016-06-01T09:00:31Z”,“to”: “2016-06-10T09:00:31Z”}]
excludebodystringElements to exclude.
fieldbodystringThe field on which to compute the aggregation.
filterbodystringFQL syntax formatted string to use to filter the results.
frombodyintegerStarting position.
includebodystringElements to include.
intervalbodystringTime interval for date histogram aggregations. Valid values include: year, month, week, day, hour, minute
max_doc_countbodyintegerOnly return buckets if values are less than or equal to the value here.
min_doc_countbodyintegerOnly return buckets if values are greater than or equal to the value here.
missingbodystringMissing is the value to be used when the aggregation field is missing from the object. In other words, the missing parameter defines how documents that are missing a value should be treated. By default they will be ignored, but it is also possible to treat them as if they had a value.
namebodystringName of the aggregate query, as chosen by the user. Used to identify the results returned to you.
qbodystringFull text search across all metadata fields.
rangesbodylist of dictionariesApplies to range aggregations. Ranges values will depend on field. For example, if max_severity is used, ranges might look like: [{“From”: 0,“To”: 70},{“From”: 70,“To”: 100}]
sizebodyintegerThe max number of term buckets to be returned.
sub_aggregatesbodylist of dictionariesA nested aggregation, such as: [{“name”: “max_first_behavior”,“type”: “max”,“field”: “first_behavior”}]. There is a maximum of 3 nested aggregations per request.
sortbodystringFQL syntax string to sort bucket results. _count - sort by document count, _term - sort by the string value alphabetically. Supports asc and desc using | format. Example: _count|desc
time_zonebodystringTime zone for bucket results.
typebodystringType of aggregation. Valid values include: date_histogram, date_range, terms, range, cardinality, max, min, avg, sum, percentiles
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
ranges = [
{
"From": 0,
"To": 0
}
]
response = falcon.aggregate_assets(date_ranges="string",
exclude="string",
field="string",
filter="string",
from=integer,
include="string",
interval="string",
max_doc_count=integer,
min_doc_count=integer,
missing="string",
name="string",
q="string",
ranges=ranges,
size=integer,
sort="string",
sub_aggregates=["string"],
time_zone="string",
type="string")
print(response)

Retrieves a list of ecosystem subsidiaries with their detailed information.

GET /fem/combined/ecosystem-subsidiaries/v1
Scope Assets: READ Produces application/json
PEP 8 query_combined_ecosystem_subsidiaries
NameTypeData typeDescription
offsetqueryintegerStarting index of result set from which to return subsidiaries
limitqueryintegerThe maximum number of subsidiaries to return in the response.
filterquerystringFilter ecosystem subsidiaries
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
sortquerystringThe field by which to sort the list of subsidiaries. Possible values: name, primary_domain. Sort order can be specified by appending “asc” or “desc” to the field name (e.g. “name|asc” or “primary_domain|desc”).
version_idquerystringThe version ID of the ecosystem subsidiaries data, represented as a hash string. This parameter is required to ensure data consistency and prevent stale data. If a new version of the ecosystem subsidiaries data is written, the version ID will be updated. By including this parameter in the request, the client can ensure that the response will be invalidated if a new version is written.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
response = falcon.query_combined_ecosystem_subsidiaries(offset=integer,
limit=integer,
sort="string",
filter="string",
version_id="string")
print(response)

Download the entire contents of the blob. The relative link to this endpoint is returned in the get_external_assets request.

GET /fem/entities/blobs-download/v1
Scope Assets: READ Produces application/octet-stream
PEP 8 download_assets
NameTypeData typeDescription
assetIdquerystringThe Asset ID
hashquerystringThe File Hash
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
with open("output_file", "wb") as save_file:
response = falcon.download_assets(assetId="string",
hash="string",
stream=boolean)
save_file.write(response)

Download a preview of the blob. The relative link to this endpoint is returned in the get_external_assets request.

GET /fem/entities/blobs-preview/v1
Scope Assets: READ Produces application/json
PEP 8 preview_assets
NameTypeData typeDescription
assetIdquerystringThe Asset ID
hashquerystringThe File Hash
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
response = falcon.preview_assets(assetId="string", hash="string")
print(response)

Retrieves detailed information about ecosystem subsidiaries by ID.

GET /fem/entities/ecosystem-subsidiaries/v1
Scope Assets: READ Produces application/json
PEP 8 get_ecosystem_subsidiaries
NameTypeData typeDescription
idsqueryarray (string)One or more asset IDs (max: 100). Find ecosystem subsidiary IDs with GET /fem/entities/ecosystem-subsidiaries/v1
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
version_idquerystringThe version ID of the ecosystem subsidiaries data, represented as a hash string. This parameter is required to ensure data consistency and prevent stale data. If a new version of the ecosystem subsidiaries data is written, the version ID will be updated. By including this parameter in the request, the client can ensure that the response will be invalidated if a new version is written.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
id_list = 'ID1,ID2,ID3' # Can also pass a list here: ['ID1', 'ID2', 'ID3']
response = falcon.get_ecosystem_subsidiaries(ids=id_list, version_id="string")
print(response)

Add external assets for external asset scanning.

POST /fem/entities/external-asset-inventory/v1
Scope Assets: WRITE Consumes · Produces application/json
PEP 8 add_assets
NameTypeData typeDescription
assetsbodylist of dictionariesList of assets to be added.
bodybodydictionaryFull body payload as a dictionary. Not required when using other keywords.
idbodystringAsset ID to be added.
valuebodystringAsset value.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
response = falcon.add_assets(assets=[{"key": "value"}],
id="string",
subsidiary_id="string",
value="string")
print(response)

Get details on external assets by providing one or more IDs.

GET /fem/entities/external-assets/v1
Scope Assets: READ Produces application/json
PEP 8 get_assets
NameTypeData typeDescription
idsquerystring or list of stringsOne or more asset IDs (max: 100). Find asset IDs with query_external_assets.
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
id_list = 'ID1,ID2,ID3' # Can also pass a list here: ['ID1', 'ID2', 'ID3']
response = falcon.get_assets(ids=id_list)
print(response)

Delete multiple external assets.

DELETE /fem/entities/external-assets/v1
Scope Assets: WRITE Produces application/json
PEP 8 delete_assets
NameTypeData typeDescription
bodybodydictionariesFull body payload in JSON format.
descriptionbodystringDelete description.
idsquerystring or list of stringsOne or more asset IDs (max: 100). Find asset IDs with query_external_assets.
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
id_list = 'ID1,ID2,ID3' # Can also pass a list here: ['ID1', 'ID2', 'ID3']
response = falcon.delete_assets(description="string", ids=id_list)
print(response)

Update the details of external assets.

PATCH /fem/entities/external-assets/v1
Scope Assets: WRITE Consumes · Produces application/json
PEP 8 update_assets
NameTypeData typeDescription
actionbodystringThe asset triage action.
assigned_tobodystringThe user assigned to triage the asset.
bodybodydictionaryFull body payload in JSON format
cidbodystringAsset customer ID.
criticalitybodystringThe criticality level manually assigned to this asset.
criticality_descriptionbodystringThe criticality description manually assigned to this asset.
descriptionbodystringThe asset triage description
idbodystringThe unique ID of the asset.
statusbodystringThe asset triage status.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
response = falcon.update_assets(action="string",
assigned_to="string",
cid="string",
criticality="string",
criticality_description="string",
description="string",
id="string",
status="string")
print(response)

Retrieves a list of IDs for ecosystem subsidiaries.

GET /fem/queries/ecosystem-subsidiaries/v1
Scope Assets: READ Produces application/json
PEP 8 query_ecosystem_subsidiaries
NameTypeData typeDescription
offsetqueryintegerStarting index of result set from which to return subsidiaries
limitqueryintegerThe maximum number of IDs to return in the response.
filterquerystringFilter ecosystem subsidiaries
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
sortquerystringThe field by which to sort the list of IDs. Possible values: name, primary_domain. Sort order can be specified by appending “asc” or “desc” to the field name (e.g. “name|asc” or “primary_domain|desc”).
version_idquerystringThe version ID of the ecosystem subsidiaries data, represented as a hash string. This parameter is required to ensure data consistency and prevent stale data. If a new version of the ecosystem subsidiaries data is written, the version ID will be updated. By including this parameter in the request, the client can ensure that the response will be invalidated if a new version is written.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
response = falcon.query_ecosystem_subsidiaries(offset=integer,
limit=integer,
sort="string",
filter="string",
version_id="string")
print(response)

Get a list of external asset IDs that match the provided filter conditions. Use these IDs with the GET and PATCH endpoints.

GET /fem/queries/external-assets/v1
Scope Assets: READ Produces application/json
PEP 8 query_assets_v1
NameTypeData typeDescription
filterquerystringFilter assets using an FQL query. Common filter options include: asset_type:‘ip’, last_seen_timestamp:>‘now-7d’. All filter fields and operations supports negation (!).
limitqueryintegerNumber of IDs to return.
offsetquerystringStarting index of result set from which to return IDs.
sortquerystringOrder by fields.
parametersquerydictionaryFull query string parameters payload as a dictionary. Not required when using other keywords.
asset_idasset_type
confidenceconnectivity_status
criticalitycriticality_description
criticality_timestampcriticality_username
data_providersdiscovered_by
dns_domain.fqdndns_domain.isps
dns_domain.parent_domaindns_domain.resolved_ips
dns_domain.services.applications.categorydns_domain.services.applications.cpe
dns_domain.services.applications.namedns_domain.services.applications.vendor
dns_domain.services.applications.versiondns_domain.services.cloud_provider
dns_domain.services.cpesdns_domain.services.hosting_provider
dns_domain.services.last_seendns_domain.services.platform_name
dns_domain.services.portdns_domain.services.protocol
dns_domain.services.protocol_portdns_domain.services.status
dns_domain.services.status_codedns_domain.services.transport
dns_domain.typefirst_seen
idinternet_exposure
ip.asnip.cloud_vm.description
ip.cloud_vm.instance_idip.cloud_vm.lifecycle
ip.cloud_vm.mac_addressip.cloud_vm.owner_id
ip.cloud_vm.platformip.cloud_vm.private_ip
ip.cloud_vm.public_ipip.cloud_vm.region
ip.cloud_vm.security_groupsip.cloud_vm.source
ip.cloud_vm.statusip.fqdns
ip.ip_addressip.isp
ip.location.area_codeip.location.city
ip.location.country_codeip.location.country_name
ip.location.postal_codeip.location.region_code
ip.location.region_nameip.location.timezone
ip.ptrip.aid
ip.services.applications.categoryip.services.applications.cpe
ip.services.applications.nameip.services.applications.vendor
ip.services.applications.versionip.services.cloud_provider
ip.services.cpesip.services.first_seen
ip.services.last_seenip.services.platform_name
ip.services.portip.services.protocol
ip.services.protocol_portip.services.status
ip.services.status_codeip.services.transport
last_seenmanual
perimetersubsidiaries.id
subsidiaries.nametriage.action
triage.assigned_totriage.status
triage.updated_bytriage.updated_timestamp
Available filter fields that support wildcard (*)
Section titled “Available filter fields that support wildcard (*)”
asset_idasset_type
confidenceconnectivity_status
criticalitycriticality_username
data_providersdiscovered_by
dns_domain.fqdndns_domain.isps
dns_domain.parent_domaindns_domain.resolved_ips
dns_domain.services.applications.categorydns_domain.services.applications.cpe
dns_domain.services.applications.namedns_domain.services.applications.vendor
dns_domain.services.applications.versiondns_domain.services.cloud_provider
dns_domain.services.cpesdns_domain.services.hosting_provider
dns_domain.services.iddns_domain.services.platform_name
dns_domain.services.portdns_domain.services.protocol
dns_domain.services.protocol_portdns_domain.services.status
dns_domain.services.status_codedns_domain.services.transport
dns_domain.typeid
internet_exposureip.asn
ip.cloud_vm.instance_idip.cloud_vm.lifecycle
ip.cloud_vm.mac_addressip.cloud_vm.owner_id
ip.cloud_vm.platformip.cloud_vm.private_ip
ip.cloud_vm.public_ipip.cloud_vm.region
ip.cloud_vm.security_groupsip.cloud_vm.source
ip.cloud_vm.statusip.fqdns
ip.ip_addressip.isp
ip.location.area_codeip.location.city
ip.location.country_codeip.location.country_name
ip.location.postal_codeip.location.region_code
ip.location.region_nameip.location.timezone
ip.ptrip.aid
ip.services.applications.categoryip.services.applications.cpe
ip.services.applications.nameip.services.applications.vendor
ip.services.applications.versionip.services.cloud_provider
ip.services.cpesip.services.platform_name
ip.services.portip.services.protocol
ip.services.protocol_portip.services.status
ip.services.status_codeip.services.transport
manualperimeter
subsidiaries.idsubsidiaries.name
triage.actiontriage.assigned_to
triage.statustriage.updated_by
Available filter fields that support lists ([v1, v2])
Section titled “Available filter fields that support lists ([v1, v2])”
asset_idasset_type
confidenceconnectivity_status
criticalitycriticality_username
data_providersdiscovered_by
dns_domain.fqdndns_domain.isps
dns_domain.parent_domaindns_domain.services.applications.category
dns_domain.services.applications.cpedns_domain.services.applications.name
dns_domain.services.applications.vendordns_domain.services.applications.version
dns_domain.services.cloud_providerdns_domain.services.cpes
dns_domain.services.iddns_domain.services.platform_name
dns_domain.services.portdns_domain.services.protocol
dns_domain.services.protocol_portdns_domain.services.status
dns_domain.services.status_codedns_domain.services.transport
dns_domain.typeid
internet_exposureip.asn
ip.cloud_vm.instance_idip.cloud_vm.lifecycle
ip.cloud_vm.mac_addressip.cloud_vm.owner_id
ip.cloud_vm.platformip.cloud_vm.region
ip.cloud_vm.security_groupsip.cloud_vm.source
ip.cloud_vm.statusip.fqdns
ip.ispip.location.area_code
ip.location.cityip.location.country_code
ip.location.country_nameip.location.postal_code
ip.location.region_codeip.location.region_name
ip.location.timezoneip.ptr
ip.aidip.services.applications.category
ip.services.applications.cpeip.services.applications.name
ip.services.applications.vendorip.services.applications.version
ip.services.cloud_providerip.services.cpes
ip.services.platform_nameip.services.port
ip.services.protocolip.services.protocol_port
ip.services.statusip.services.status_code
ip.services.transportmanual
perimetersubsidiaries.id
subsidiaries.nametriage.action
triage.assigned_totriage.status
triage.updated_by 
Available filter fields that support range comparisons (>, <, >=, <=)
Section titled “Available filter fields that support range comparisons (>, <, >=, <=)”
criticality_timestampdns_domain.resolved_ips
dns_domain.services.first_seendns_domain.services.last_seen
dns_domain.services.portdns_domain.services.status_code
first_seenip.cloud_vm.private_ip
ip.cloud_vm.public_ipip.ip_address
ip.services.first_seenip.services.last_seen
ip.services.portip.services.status_code
last_seentriage.updated_timestamp
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
response = falcon.query_assets(offset=integer,
limit=integer,
sort="string",
filter="string")
print(response)

Get a list of external asset IDs that match the provided filter conditions.

GET /fem/queries/external-assets/v2
Scope Assets: READ Produces application/json
PEP 8 query_assets
NameTypeData typeDescription
offsetqueryintegerStarting index of result set from which to return IDs.
limitqueryintegerNumber of IDs to return.
sortquerystringOrder by fields.
filterquerystringFilter assets using an FQL query.
parametersquerydictionaryFull parameters payload dictionary. Not required if using other keywords.
from falconpy import ExposureManagement
falcon = ExposureManagement(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
response = falcon.query_assets(offset=integer,
limit=integer,
sort="string",
filter="string")
print(response)