openapi: 3.1.0 info: version: 1.0.0 title: References description: |- API for CybelAngel's ADM Inventory. Authentication uses standard [OAuth2 Bearer Tokens](https://tools.ietf.org/html/rfc6750). Here is a simple example of how to fetch such a token with curl: ```shell curl -X POST https://auth.cybelangel.com/oauth/token -H 'content-type: application/json -d '{"client_id": "client_id", "client_secret": "client_secret", "audience": "https://platform.cybelangel.com/", "grant_type": "client_credentials"} ``` The received access token can then be used as a Bearer token to request our API. contact: email: support@cybelangel.com license: url: 'https://cybelangel.com/' name: Proprietary servers: - url: 'https://api.cybelangel.com' paths: /v1/inventory/assets: get: tags: - ADM Inventory summary: Get inventory assets description: 'Get all inventory assets. Results are sorted by `created_at` (descending) and alphabetical order of `value`.
You can filter assets by either `values` or `ids` parameters, but not both at the same time.

**Recommendation**: Inventory data is refreshed every 8 hours.
We recommend aligning the frequency of your queries with this update interval for optimal results and performance.
⚠️ **Asset Discovery and Monitoring module is required.**' operationId: get-inventory-assets parameters: - name: cursor in: query description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.' required: false schema: type: string title: Cursor description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.' minLength: 1 - name: values in: query description: To get details for specific asset(s). Cannot be used together with 'ids' parameter. required: false schema: type: array title: Values description: To get details for specific asset(s). Cannot be used together with 'ids' parameter. items: type: string minLength: 1 - name: ids in: query description: List of asset IDs (UUIDs). Cannot be used together with 'values' parameter. required: false schema: type: array title: Ids description: List of asset IDs (UUIDs). Cannot be used together with 'values' parameter. items: type: string format: uuid - name: status in: query description: '[Deprecated] Filter on the status on an asset (This query param will be removed on September 4 2026, use `asset_status` instead)' required: false deprecated: true schema: type: array title: Status description: '[Deprecated] Filter on the status on an asset (This query param will be removed on September 4 2026, use `asset_status` instead)' items: $ref: '#/components/schemas/PreviousAssetStatus' x-deprecated: true - name: asset_status in: query description: Filter on the status on an asset required: false schema: type: array title: Asset Status description: Filter on the status on an asset items: $ref: '#/components/schemas/AssetStatus' - name: first_seen_at_start_date in: query description: Filter assets based on when we detected the asset for the first time in our system (greater than this date) required: false schema: type: string title: First Seen At Start Date description: Filter assets based on when we detected the asset for the first time in our system (greater than this date) format: date-time examples: - '2023-10-05T14:48:00.000Z' examples: default: value: '2023-10-05T14:48:00.000Z' - name: first_seen_at_end_date in: query description: Filter assets based on when we detected the asset for the first time in our system (less than this date) required: false schema: type: string title: First Seen At End Date description: Filter assets based on when we detected the asset for the first time in our system (less than this date) format: date-time examples: - '2023-10-05T14:48:00.000Z' examples: default: value: '2023-10-05T14:48:00.000Z' - name: last_seen_at_start_date in: query description: Filter assets based on when we detected the asset for the last time in our system (greater than this date) required: false schema: type: string title: Last Seen At Start Date description: Filter assets based on when we detected the asset for the last time in our system (greater than this date) format: date-time examples: - '2023-10-05T14:48:00.000Z' examples: default: value: '2023-10-05T14:48:00.000Z' - name: last_seen_at_end_date in: query description: Filter assets based on when we detected the asset for the last time in our system (less than this date) required: false schema: type: string title: Last Seen At End Date description: Filter assets based on when we detected the asset for the last time in our system (less than this date) format: date-time examples: - '2023-10-05T14:48:00.000Z' examples: default: value: '2023-10-05T14:48:00.000Z' - name: type in: query description: Filter on the type of an asset required: false schema: $ref: '#/components/schemas/AssetType' title: Type description: Filter on the type of an asset responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAssetsResponseDTO' __errors__: '#/%24defs/TranslationElementDTO': Keys TranslationElementDTO_2 through TranslationElementDTO_20 already taken. '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_BadRequestError_' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_NotFoundError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' security: - jwt: [] servers: - url: 'https://api.cybelangel.com' /v1/inventory/assets/hostnames: get: tags: - ADM Inventory summary: Get inventory assets hostnames description: 'Get hostnames associated with assets of type IP.

You can filter assets by either ''asset_values'' or ''asset_ids'' parameters, but not both at the same time.

**Recommendation**: Inventory data is refreshed every 8 hours.
We recommend aligning the frequency of your queries with this update interval for optimal results and performance.

⚠️ **Asset Discovery and Monitoring module is required.**' operationId: get-inventory-assets-hostnames parameters: - name: cursor in: query description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.' required: false schema: type: string title: Cursor description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.' minLength: 1 - name: asset_values in: query description: To get hostnames for specific asset(s). Cannot be used together with 'asset_ids' parameter. required: false schema: type: array title: Asset Values description: To get hostnames for specific asset(s). Cannot be used together with 'asset_ids' parameter. examples: - - 74.125.20.138 - 17.253.144.10 items: type: string minLength: 1 examples: default: value: - 74.125.20.138 - 17.253.144.10 - name: asset_ids in: query description: List of asset IDs (UUIDs) to filter the results. Cannot be used together with 'asset_values' parameter. required: false schema: type: array title: Asset Ids description: List of asset IDs (UUIDs) to filter the results. Cannot be used together with 'asset_values' parameter. items: type: string format: uuid responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetAssetsHostnamesResponseDTO' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_BadRequestError_' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_NotFoundError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' security: - jwt: [] servers: - url: 'https://api.cybelangel.com' /v1/inventory/assets/threats: get: tags: - ADM Inventory summary: Get inventory threats with asset info description: 'Get threats associated with assets. Threats are sorted by their `first_seen` field (descending), and returned by page of 50 items. If there are more elements, you can use the provided cursor to retrieve the next page as explained in [the how-to page](https://developers.cybelangel.com/docs/adm-inventory-api/7e88d945427a4-fetch-assets-details-from-adm-inventory#pagination).

**Recommendation**: Inventory data is refreshed every 8 hours.
We recommend aligning the frequency of your queries with this update interval for optimal results and performance.

⚠️ **Asset Discovery and Monitoring module is required.**' operationId: get-inventory-threats-with-asset-info parameters: - name: cursor in: query description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.' required: false schema: type: string title: Cursor description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.' minLength: 1 - name: asset_values in: query description: To get threats for specific asset(s). Cannot be used together with 'asset_ids' parameter. required: false schema: type: array title: Asset Values description: To get threats for specific asset(s). Cannot be used together with 'asset_ids' parameter. examples: - - 127.0.0.1 - 192.168.0.1 items: type: string minLength: 1 examples: default: value: - 127.0.0.1 - 192.168.0.1 - name: asset_ids in: query description: List of asset IDs (UUIDs). Cannot be used together with 'asset_values' parameter. required: false schema: type: array title: Asset Ids description: List of asset IDs (UUIDs). Cannot be used together with 'asset_values' parameter. items: type: string format: uuid - name: severity in: query description: To get threats with specific severity required: false schema: type: array title: Severity description: To get threats with specific severity examples: - - 1 - 2 items: $ref: '#/components/schemas/ThreatSeverity' examples: default: value: - 1 - 2 - name: status in: query description: To get threats with specific status required: false schema: type: array title: Status description: To get threats with specific status examples: - - open items: $ref: '#/components/schemas/ThreatStatus' examples: default: value: - open - name: first_seen_start_date in: query description: 'Full datetime format with timezone (e.g., 2025-07-17T11:00:51Z)' required: false schema: type: string title: First Seen Start Date description: 'Full datetime format with timezone (e.g., 2025-07-17T11:00:51Z)' format: date-time examples: - '2025-07-17T11:00:51Z' examples: default: value: '2025-07-17T11:00:51Z' - name: first_seen_end_date in: query description: 'Full datetime format with timezone (e.g., 2025-07-18T11:00:51Z)' required: false schema: type: string title: First Seen End Date description: 'Full datetime format with timezone (e.g., 2025-07-18T11:00:51Z)' format: date-time examples: - '2025-07-18T11:00:51Z' examples: default: value: '2025-07-18T11:00:51Z' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetThreatsWithAssetInfoResponseDTO' __errors__: '#/%24defs/TranslationElementDTO': Keys TranslationElementDTO_2 through TranslationElementDTO_20 already taken. '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_BadRequestError_' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_NotFoundError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' security: - jwt: [] servers: - url: 'https://api.cybelangel.com' /v1/inventory/assets/status: put: tags: - ADM Inventory summary: Update inventory assets status description: 'Update the status of multiple assets.

You must provide either ''asset_values'' or ''asset_ids'', but not both.

⚠️ **Asset Discovery and Monitoring module is required.**' operationId: put-inventory-assets-status requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssetsStatusRequestBodyDTO' responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_BadRequestError_' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_NotFoundError_' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ConflictError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' security: - jwt: [] servers: - url: 'https://api.cybelangel.com' /v1/inventory/assets/threats/status: put: tags: - ADM Inventory summary: Update inventory assets threats status description: 'Update the status of multiple asset threats.

Each threat must identify its asset by either ''asset_value'' or ''asset_id'', but not both.

⚠️ **Asset Discovery and Monitoring module is required.**' operationId: put-inventory-assets-threats-status requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAssetThreatStatusRequestBodyDTO' responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_BadRequestError_' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_NotFoundError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' security: - jwt: [] servers: - url: 'https://api.cybelangel.com' tags: - name: ADM Inventory description: Manipulate ADM inventory assets and threats. components: securitySchemes: jwt: type: http scheme: bearer bearerFormat: JWT schemas: PreviousAssetStatus: type: string enum: - input - discovered - confirmed - discarded title: PreviousAssetStatus AssetStatus: type: string enum: - owned - discovered - external - discarded title: AssetStatus AssetType: type: string enum: - domain - ip - iprange title: AssetType GetAssetsResponseDTO: type: object title: GetAssetsResponseDTO additionalProperties: false properties: items: type: array title: Items description: List of assets matching the request items: $ref: '#/components/schemas/InventoryAssetDTO' next_cursor: title: Next Cursor description: Cursor to the next page. You should use this cursor in the "cursor" query parameter to retrieve the next page. anyOf: - type: string total: type: integer title: Total description: Total number of assets through all pages (or in all your inventory) minimum: 0 required: - items - total InventoryAssetDTO: type: object title: InventoryAssetDTO properties: id: type: string title: Id description: The id of the asset. format: uuid value: type: string title: Value description: 'The value describing the asset. The format depends on the asset type. It will be the IP for an asset of type IP, the domain or subdomain name for an asset of type DOMAIN for instance.' examples: - shop.acme.com type: $ref: '#/components/schemas/AssetType' description: Type of the assets status: description: '[Deprecated] Status of the asset (This field will be removed on September 4 2026, use `asset_status` instead)' anyOf: - $ref: '#/components/schemas/PreviousAssetStatus' x-deprecated: true asset_status: $ref: '#/components/schemas/AssetStatus' description: Status of the asset first_seen_at: type: string title: First Seen At description: When we detected the asset for the first time in our system format: date-time examples: - '2023-10-05T14:48:00.000Z' last_seen_at: type: string title: Last Seen At description: When we detected the asset for the last time in our system format: date-time examples: - '2023-10-05T14:48:00.000Z' created_at: type: string title: Created At description: When the asset ends in your inventory for the first time. It could be different from the first time we saw it format: date-time examples: - '2023-10-05T14:48:00.000Z' platform_link: type: string title: Platform Link description: Direct link to the asset in the platform format: url examples: - 'https://platform.cybelangel.com/asset-discovery-watchlist/6cfe8b81-f66c-47c9-9434-56e20738e179' registrar: title: Registrar description: The registrar responsible for the asset registration. examples: - GoDaddy anyOf: - type: string organization: title: Organization description: The organization or entity that manages the respective asset. examples: - Acme Corp anyOf: - type: string localization: title: Localization examples: - United States anyOf: - type: string tags: type: array title: Tags description: List of tags for this asset examples: - - Pod US - Third Party items: type: string fingerprints: $ref: '#/components/schemas/FingerprintsDTO' description: Metadata tied to your asset threats: $ref: '#/components/schemas/ThreatsInformationDTO' graph: anyOf: - $ref: '#/components/schemas/InventoryAssetGraphDTO' workspaces: type: array title: Workspaces description: List of workspaces this asset belongs to items: $ref: '#/components/schemas/InventoryAssetWorkspaceDTO' required: - id - value - type - asset_status - first_seen_at - last_seen_at - created_at - platform_link - tags - fingerprints - threats FingerprintsDTO: type: object title: FingerprintsDTO properties: open_ports: type: array title: Open Ports description: List of ports with related fingerprints items: $ref: '#/components/schemas/OpenPortDTO' required: - open_ports OpenPortDTO: type: object title: OpenPortDTO properties: port: type: integer title: Port examples: - 3306 transport: $ref: '#/components/schemas/OpenPortTransport' example: tcp service: $ref: '#/components/schemas/ServiceDTO' required: - port - transport - service OpenPortTransport: type: string enum: - tcp - udp title: OpenPortTransport ServiceDTO: type: object title: ServiceDTO properties: protocol: type: string title: Protocol minLength: 1 examples: - mysql cpes: type: array title: Cpes description: List of CPEs associated with the service items: $ref: '#/components/schemas/OpenServiceCpeDTO' required: - protocol - cpes OpenServiceCpeDTO: type: object title: OpenServiceCpeDTO properties: name: type: string title: Name description: The CPE 2.3 standard identifier minLength: 1 examples: - 'cpe:2.3:a:apache:http_server:2.4.46' first_seen_at: type: string title: First Seen At format: date-time examples: - '2023-10-05T14:48:00.000Z' last_seen_at: type: string title: Last Seen At format: date-time examples: - '2023-10-05T14:48:00.000Z' required: - name - first_seen_at - last_seen_at ThreatsInformationDTO: type: object title: ThreatsInformationDTO properties: count: type: integer title: Count examples: - 1 level: title: Level examples: - 3 anyOf: - type: integer minimum: 0 items: type: array title: Items description: Threats tied to the asset items: $ref: '#/components/schemas/InventoryThreatWithReportIds' required: - count - items InventoryThreatWithReportIds: type: object title: InventoryThreatWithReportIds description: Threat enriched with the list of reports ids created from it. properties: hash: type: string title: Hash description: Hash of some attributes of a threat examples: - f34e5a49b1a1b1033e1c48e3f78863b3cc5be5dc1e0263cf2a13386241d0d16e severity: type: integer title: Severity description: The severity of this specific threat minimum: 0 maximum: 4 examples: - 3 port: title: Port description: The port where the threat is located examples: - 443 anyOf: - type: integer minimum: 0 first_seen: type: string title: First Seen description: When we detected the threat for the first time format: date-time examples: - '2023-10-05T14:48:00.000Z' last_seen: type: string title: Last Seen description: When we detected the threat for the last time (always less than 48 hours ago) format: date-time examples: - '2023-10-05T14:48:00.000Z' type: $ref: '#/components/schemas/ThreatType' description: |- What type of threat we detected. Every type is mapped to a data object: - DomainThreatDataDTO --> accessible_sensitive_website, inaccessible_sensitive_website, accessible_website, forbidden_website, broken_website. - ExposedSensitiveFileThreatDataDTO --> exposed_sensitive_file. - SubDomainTakeoverThreatDataDTO --> subdomain_takeover. - TLSCertificateThreatDataDTO --> tls_certificate_expired, tls_certificate_soon_expired, accessible_website_with_tls_certificate_expired. - SpfThreatDataDTO --> permissive_spf_misconfiguration, too_many_spf_records. - VulnerableTechnologyThreatDataDTO --> vulnerable_technology, vulnerable_technology_to_kev. - OtherThreatDataDTO --> exposed_service, exposed_data_storage. status: $ref: '#/components/schemas/ThreatStatus' description: The current status of the threat. data: title: Data description: Additional metadata about a specific threat. anyOf: - $ref: '#/components/schemas/DomainThreatDataDTO' - $ref: '#/components/schemas/SubDomainTakeoverThreatDataDTO' - $ref: '#/components/schemas/ExposedSensitiveFileThreatDataDTO' - $ref: '#/components/schemas/TLSCertificateThreatDataDTO' - $ref: '#/components/schemas/SpfThreatDataDTO' - $ref: '#/components/schemas/VulnerableTechnologyThreatDataDTO' - $ref: '#/components/schemas/OtherThreatDataDTO' report_ids: type: array title: Report Ids description: List of report IDs associated created from the threat items: type: string required: - hash - severity - first_seen - last_seen - type - status - data - report_ids ThreatType: type: string enum: - exposed_service - exposed_data_storage - accessible_website - forbidden_website - broken_website - accessible_sensitive_website - inaccessible_sensitive_website - subdomain_takeover - belonging_dangling_subdomain - dangling_subdomain - tls_certificate_expired - tls_certificate_soon_expired - accessible_website_with_tls_certificate_expired - permissive_spf_misconfiguration - too_many_spf_records - vulnerable_technology - vulnerable_technology_to_kev - exposed_sensitive_file - None title: ThreatType description: The type of the threat ThreatStatus: type: string enum: - open - under_review - remediated - risk_accepted - not_applicable title: ThreatStatus description: The status of the threat DomainThreatDataDTO: type: object title: DomainThreatDataDTO properties: summary: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' how_we_found_it: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' risks: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' details: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' protocol: type: string title: Protocol protocol_display_name: title: Protocol Display Name anyOf: - type: string status_code: type: integer title: Status Code required: - protocol - status_code TranslationElementDTO: type: object title: TranslationElementDTO properties: en: title: En anyOf: - type: string fr: title: Fr anyOf: - type: string SubDomainTakeoverThreatDataDTO: type: object title: SubDomainTakeoverThreatDataDTO description: Metadata related to dangling subdomains (CNAME misconfiguration) properties: summary: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' how_we_found_it: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' risks: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' details: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' target_domain: type: string title: Target Domain required: - target_domain ExposedSensitiveFileThreatDataDTO: type: object title: ExposedSensitiveFileThreatDataDTO properties: path: type: string title: Path examples: - /.env url: type: string title: Url examples: - 'https://www.example.com/.env' status_code: type: integer title: Status Code examples: - 200 details: $ref: '#/components/schemas/TranslationElementDTO' risks: $ref: '#/components/schemas/TranslationElementDTO' required: - path - url - status_code - details - risks TLSCertificateThreatDataDTO: type: object title: TLSCertificateThreatDataDTO description: Metadata related to certificates issues properties: summary: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' how_we_found_it: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' risks: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' details: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' not_before_date: type: string title: Not Before Date format: date-time examples: - '2023-10-05T14:48:00.000Z' not_after_date: type: string title: Not After Date format: date-time examples: - '2023-10-05T14:48:00.000Z' required: - not_before_date - not_after_date SpfThreatDataDTO: type: object title: SpfThreatDataDTO description: Metadata related to SPF configuration issues properties: summary: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' how_we_found_it: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' risks: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' details: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' records: type: array title: Records description: The SPF records that we found for this asset. examples: - - v=spf1 a mx +all items: type: string required: - records VulnerableTechnologyThreatDataDTO: type: object title: VulnerableTechnologyThreatDataDTO properties: cpe_id: type: string title: Cpe Id examples: - 'cpe:2.3:a:apache:zookeeper:3.9.0:*:*:*:*:*:*:*' cpe_vendor: title: Cpe Vendor examples: - apache anyOf: - type: string cpe_product: type: string title: Cpe Product examples: - zookeeper cpe_product_version: type: string title: Cpe Product Version examples: - 3.9.0 cve_count: type: integer title: Cve Count examples: - 11 cve_in_kev_count: title: Cve In Kev Count examples: - 2 anyOf: - type: integer highest_cvss_score: type: number title: Highest Cvss Score examples: - 7.7 highest_epss_score: type: number title: Highest Epss Score examples: - 0.2 cves: type: array title: Cves items: $ref: '#/components/schemas/VulnerableTechnologyCveDTO' details: $ref: '#/components/schemas/TranslationElementDTO' risks: $ref: '#/components/schemas/TranslationElementDTO' required: - cpe_id - cpe_product - cpe_product_version - cve_count - highest_cvss_score - highest_epss_score - cves - details - risks VulnerableTechnologyCveDTO: type: object title: VulnerableTechnologyCveDTO properties: cve_id: type: string title: Cve Id examples: - CVE-2023-44981 description: type: string title: Description cvss_score: type: number title: Cvss Score examples: - 7.7 cvss_version: type: number title: Cvss Version examples: - 3.1 epss_score: type: number title: Epss Score examples: - 0.2 have_known_exploit: title: Have Known Exploit anyOf: - type: boolean required_action: title: Required Action anyOf: - type: string required: - cve_id - description - cvss_score - cvss_version - epss_score OtherThreatDataDTO: type: object title: OtherThreatDataDTO description: Metadata for all other threats properties: summary: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' how_we_found_it: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' risks: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' details: anyOf: - $ref: '#/components/schemas/TranslationElementDTO' protocol: title: Protocol anyOf: - type: string protocol_display_name: title: Protocol Display Name anyOf: - type: string InventoryAssetGraphDTO: type: object title: InventoryAssetGraphDTO properties: edges: type: array title: Edges items: $ref: '#/components/schemas/InventoryGraphEdgeDTO' nodes: type: array title: Nodes items: $ref: '#/components/schemas/InventoryGraphNodeDTO' required: - edges - nodes InventoryGraphEdgeDTO: type: object title: InventoryGraphEdgeDTO properties: from_node: type: string title: From Node to_node: type: string title: To Node method: $ref: '#/components/schemas/PivotMethod' updated_at: type: string title: Updated At format: date-time examples: - '2023-10-05T14:48:00.000Z' required: - from_node - to_node - method - updated_at PivotMethod: type: string enum: - A - CNAME - WHOIS - CIDR_ENUMERATION - REVERSE_WHOIS - REVERSE_DNS - PASSIVE_MATCHING - EXTRACT title: PivotMethod InventoryGraphNodeDTO: type: object title: InventoryGraphNodeDTO properties: value: type: string title: Value type: $ref: '#/components/schemas/InventoryNodeType' description: Type of the assets in graph node required: - value - type InventoryNodeType: type: string enum: - unknown - domain - ip - iprange - email title: InventoryNodeType InventoryAssetWorkspaceDTO: type: object title: InventoryAssetWorkspaceDTO properties: id: type: string title: Id description: Unique identifier of the workspace format: uuid name: type: string title: Name description: Name of the workspace examples: - My Workspace required: - id - name APIErrorResponse_BadRequestError_: type: object title: 'APIErrorResponse[BadRequestError]' properties: error: $ref: '#/components/schemas/BadRequestError' required: - error BadRequestError: type: object title: BadRequestError description: User sent a bad request. properties: message: type: string title: Message required: - message APIErrorResponse_UnauthorizedError_: type: object title: 'APIErrorResponse[UnauthorizedError]' properties: error: $ref: '#/components/schemas/UnauthorizedError' required: - error UnauthorizedError: type: object title: UnauthorizedError description: User cannot access some resource. properties: message: type: string title: Message required: - message APIErrorResponse_ForbiddenAccessError_: type: object title: 'APIErrorResponse[ForbiddenAccessError]' properties: error: $ref: '#/components/schemas/ForbiddenAccessError' required: - error ForbiddenAccessError: type: object title: ForbiddenAccessError description: User cannot access some resource. properties: message: type: string title: Message required: - message APIErrorResponse_NotFoundError_: type: object title: 'APIErrorResponse[NotFoundError]' properties: error: $ref: '#/components/schemas/NotFoundError' required: - error NotFoundError: type: object title: NotFoundError description: Nothing matches the given URI properties: message: type: string title: Message required: - message APIErrorResponse_UnknownError_: type: object title: 'APIErrorResponse[UnknownError]' properties: error: $ref: '#/components/schemas/UnknownError' required: - error UnknownError: type: object title: UnknownError description: 'Unknown error on server-side, please contact support.' properties: message: type: string title: Message required: - message GetAssetsHostnamesResponseDTO: type: object title: GetAssetsHostnamesResponseDTO additionalProperties: false properties: items: type: object title: Items description: 'Map of assets with their corresponding hostnames. By default, the key is the asset value. But if the ''asset_ids'' filter is used, the key is the asset ID.' additionalProperties: type: array items: type: string examples: - 17.253.144.10: - apple.com 74.125.20.138: - google.com - images.google.com next_cursor: title: Next Cursor description: Cursor to the next page. You should use this cursor in the "cursor" query parameter to retrieve the next page. anyOf: - type: string total: type: integer title: Total description: Total number of assets with available hostnames through all pages minimum: 0 required: - items - total ThreatSeverity: type: integer enum: - 0 - 1 - 2 - 3 - 4 title: ThreatSeverity GetThreatsWithAssetInfoResponseDTO: type: object title: GetThreatsWithAssetInfoResponseDTO additionalProperties: false properties: items: type: array title: Items description: List of threats with asset value matching the request items: $ref: '#/components/schemas/InventoryThreatWithAssetInfoDTO' next_cursor: title: Next Cursor description: Cursor to the next page. You should use this cursor in the "cursor" query parameter to retrieve the next page. anyOf: - type: string total: type: integer title: Total description: Total number of threats through all pages minimum: 0 required: - items - total InventoryThreatWithAssetInfoDTO: type: object title: InventoryThreatWithAssetInfoDTO description: Threat enriched with its parent asset info. properties: hash: type: string title: Hash description: Hash of some attributes of a threat examples: - f34e5a49b1a1b1033e1c48e3f78863b3cc5be5dc1e0263cf2a13386241d0d16e severity: type: integer title: Severity description: The severity of this specific threat minimum: 0 maximum: 4 examples: - 3 port: title: Port description: The port where the threat is located examples: - 443 anyOf: - type: integer minimum: 0 first_seen: type: string title: First Seen description: When we detected the threat for the first time format: date-time examples: - '2023-10-05T14:48:00.000Z' last_seen: type: string title: Last Seen description: When we detected the threat for the last time (always less than 48 hours ago) format: date-time examples: - '2023-10-05T14:48:00.000Z' type: $ref: '#/components/schemas/ThreatType' description: |- What type of threat we detected. Every type is mapped to a data object: - DomainThreatDataDTO --> accessible_sensitive_website, inaccessible_sensitive_website, accessible_website, forbidden_website, broken_website. - ExposedSensitiveFileThreatDataDTO --> exposed_sensitive_file. - SubDomainTakeoverThreatDataDTO --> subdomain_takeover. - TLSCertificateThreatDataDTO --> tls_certificate_expired, tls_certificate_soon_expired, accessible_website_with_tls_certificate_expired. - SpfThreatDataDTO --> permissive_spf_misconfiguration, too_many_spf_records. - VulnerableTechnologyThreatDataDTO --> vulnerable_technology, vulnerable_technology_to_kev. - OtherThreatDataDTO --> exposed_service, exposed_data_storage. status: $ref: '#/components/schemas/ThreatStatus' description: The current status of the threat. data: title: Data description: Additional metadata about a specific threat. anyOf: - $ref: '#/components/schemas/DomainThreatDataDTO' - $ref: '#/components/schemas/SubDomainTakeoverThreatDataDTO' - $ref: '#/components/schemas/ExposedSensitiveFileThreatDataDTO' - $ref: '#/components/schemas/TLSCertificateThreatDataDTO' - $ref: '#/components/schemas/SpfThreatDataDTO' - $ref: '#/components/schemas/VulnerableTechnologyThreatDataDTO' - $ref: '#/components/schemas/OtherThreatDataDTO' asset_value: type: string title: Asset Value description: Value of the parent asset. asset_id: title: Asset Id description: ID of the parent asset. anyOf: - type: string required: - hash - severity - first_seen - last_seen - type - status - data - asset_value UpdateAssetsStatusRequestBodyDTO: type: object title: UpdateAssetsStatusRequestBodyDTO additionalProperties: false properties: asset_values: type: array title: Asset Values description: List of asset values to update. Cannot be used together with 'asset_ids'. minItems: 1 maxItems: 50 examples: - - example.com - 192.168.1.1 - subdomain.example.com items: type: string minLength: 1 asset_ids: type: array title: Asset Ids description: List of asset IDs (UUIDs) to update. Cannot be used together with 'asset_values'. minItems: 1 maxItems: 50 examples: - - c683aa1a-a029-4bcf-9333-a029f2964444 - d794bb2b-b130-5cdf-a444-b130a3075555 items: type: string format: uuid status: description: '[Deprecated] The new status to apply to the assets (This field will be removed on September 4 2026, use `asset_status` instead)' anyOf: - $ref: '#/components/schemas/PreviousAssetStatus' x-deprecated: true asset_status: $ref: '#/components/schemas/AssetStatus' description: The new status to apply to the assets required: - asset_status APIErrorResponse_ConflictError_: type: object title: 'APIErrorResponse[ConflictError]' properties: error: $ref: '#/components/schemas/ConflictError' required: - error ConflictError: type: object title: ConflictError description: Conflict with the current state of the resource properties: message: type: string title: Message required: - message UpdateAssetThreatStatusRequestBodyDTO: type: object title: UpdateAssetThreatStatusRequestBodyDTO additionalProperties: false properties: threats: type: array title: Threats description: List of threats on which to update their status minItems: 1 maxItems: 50 items: $ref: '#/components/schemas/UpdateAssetThreatStatusItemDTO' status: $ref: '#/components/schemas/ThreatStatus' description: The new status to apply to the given threats example: open required: - threats - status UpdateAssetThreatStatusItemDTO: type: object title: UpdateAssetThreatStatusItemDTO additionalProperties: false properties: threat_hash: type: string title: Threat Hash description: Hash of the threat to update pattern: '^[0-9a-f]{64}$' examples: - 630a19f1608943fe069e2f56d178860a35277519c241cdb1ac777b7964bd424f asset_value: title: Asset Value description: Value of the asset. Cannot be used together with 'asset_id'. examples: - 127.0.0.1 anyOf: - type: string minLength: 1 asset_id: title: Asset Id description: ID of the asset (UUID). Cannot be used together with 'asset_value'. examples: - c683aa1a-a029-4bcf-9333-a029f2964444 anyOf: - type: string format: uuid required: - threat_hash