openapi: 3.1.0
info:
version: 1.0.0
title: References
description: |-
API for CybelAngel's Partners.
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/{organization_id}/inventory/assets':
get:
tags:
- ADM Inventory
summary: Get Organization Inventory Assets
description: 'Get all inventory assets for one of your client organizations. 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 on the client organization.**'
operationId: get-organization-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
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
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/{organization_id}/inventory/assets/hostnames':
get:
tags:
- ADM Inventory
summary: Get Organization Inventory Assets Hostnames
description: 'Get hostnames associated with IP assets for one of your client organizations.
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 on the client organization.**'
operationId: get-organization-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
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
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/{organization_id}/inventory/assets/threats':
get:
tags:
- ADM Inventory
summary: Get Organization Inventory Threats with Asset info
description: 'Get threats associated with assets for one of your client organizations. 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 on the client organization.**'
operationId: get-organization-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'
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
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/{organization_id}/inventory/assets/status':
put:
tags:
- ADM Inventory
summary: Update Organization Inventory Assets Status
description: 'Update the status of multiple assets for one of your client organizations.
You must provide either ''asset_values'' or ''asset_ids'', but not both.
⚠️ **Asset Discovery and Monitoring module is required on the client organization.**'
operationId: put-organization-inventory-assets-status
parameters:
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
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/{organization_id}/inventory/assets/threats/status':
put:
tags:
- ADM Inventory
summary: Update Organization Inventory Assets Threats Status
description: 'Update the status of multiple asset threats for one of your client organizations.
Each threat must identify its asset by either ''asset_value'' or ''asset_id'', but not both.
⚠️ **Asset Discovery and Monitoring module is required on the client organization.**'
operationId: put-organization-inventory-assets-threats-status
parameters:
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
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'
'/v1/{organization_id}/keywords':
get:
tags:
- Keywords
summary: Get Organization Keywords
description: Get all keywords for one of your client organizations. Results are sorted alphabetically by the keyword name.
operationId: get-organization-keywords
parameters:
- name: ids
in: query
description: Filter keywords by ID. Accepts multiple values (`?ids=&ids=`).
required: false
schema:
type: array
title: Ids
description: Filter keywords by ID. Accepts multiple values (`?ids=&ids=`).
default: []
items:
type: string
format: uuid
- name: name
in: query
description: Filter keywords by name.
required: false
schema:
type: string
title: Name
description: Filter keywords by name.
- name: status
in: query
description: Filter keywords by status. Accepts multiple values (`?status=pending&status=active`).
required: false
schema:
type: array
title: Status
description: Filter keywords by status. Accepts multiple values (`?status=pending&status=active`).
default: []
items:
$ref: '#/components/schemas/KeywordStatus'
- name: creation_start_date
in: query
description: Filter keywords created on or after this date.
required: false
schema:
type: string
title: Creation Start Date
description: Filter keywords created on or after this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- name: creation_end_date
in: query
description: Filter keywords created on or before this date.
required: false
schema:
type: string
title: Creation End Date
description: Filter keywords created on or before this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- name: last_modification_start_date
in: query
description: Filter keywords last modified on or after this date.
required: false
schema:
type: string
title: Last Modification Start Date
description: Filter keywords last modified on or after this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- name: last_modification_end_date
in: query
description: Filter keywords last modified on or before this date.
required: false
schema:
type: string
title: Last Modification End Date
description: Filter keywords last modified on or before this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- 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.'
- name: workspaces
in: query
description: Filter keywords by workspace. Accepts multiple values (`?workspaces=&workspaces=`).
required: false
schema:
type: array
title: Workspaces
description: Filter keywords by workspace. Accepts multiple values (`?workspaces=&workspaces=`).
default: []
items:
type: string
format: uuid
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerKeywordListDTO'
'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_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
post:
tags:
- Keywords
summary: Create Organization Keywords
description: Create a batch of keywords for one of your client organizations. Maximum 10 keywords per request.
Keywords are created in "pending" status.
operationId: create-organization-keywords
parameters:
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerCreateKeywordsBodyDTO'
responses:
'201':
description: All the keywords were created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerCreateKeywords201ResponseDTO'
'207':
description: One of more keywords failed to be created
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerCreateKeywords207ResponseDTO'
'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_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
delete:
tags:
- Keywords
summary: Delete Organization Keywords
description: Delete a batch of keywords for one of your client organizations. Maximum 50 keywords per request.
operationId: delete-organization-keywords
parameters:
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteKeywordBodyDTO'
responses:
'200':
description: All the keywords were deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteKeywords200ResponseDTO'
'207':
description: One or more keywords failed to be deleted
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteKeywords207ResponseDTO'
'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_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
'/v1/{organization_id}/keywords/status':
put:
tags:
- Keywords
summary: Update Organization Keywords Status
description: Update the status of a batch of keywords for one of your client organizations.
Only deactivation ("inactive") is supported. Maximum 10 keywords per request.
operationId: update-organization-keywords-status
parameters:
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateKeywordsStatusBodyDTO'
responses:
'200':
description: All the keywords were updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerUpdateKeywords200ResponseDTO'
'207':
description: One or more keywords failed to be updated
content:
application/json:
schema:
$ref: '#/components/schemas/PartnerUpdateKeywords207ResponseDTO'
'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_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
'/v1/{organization_id}/workspaces':
get:
tags:
- Workspaces
summary: Get Organization Workspaces
description: Get all workspaces for one of your client organizations.
operationId: get-organization-workspaces
parameters:
- name: organization_id
in: path
description: ID of the organization to manage resources for
required: true
schema:
type: string
title: Organization Id
description: ID of the organization to manage resources for
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceListDTO'
'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_'
'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 for a given organization.
- name: Keywords
description: Manipulate keywords for a given organization.
- name: Workspaces
description: List workspaces for a given organization.
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
KeywordStatus:
type: string
enum:
- pending
- active
- inactive
title: KeywordStatus
PartnerKeywordListDTO:
type: object
title: PartnerKeywordListDTO
additionalProperties: false
properties:
items:
type: array
title: Items
description: List of keywords matching the request
items:
$ref: '#/components/schemas/PartnerKeywordDTO'
total:
type: integer
title: Total
description: Total number of keywords through all pages
minimum: 0
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
required:
- items
- total
PartnerKeywordDTO:
type: object
title: PartnerKeywordDTO
additionalProperties: false
properties:
id:
type: string
title: Id
description: Unique identifier of the keyword.
format: uuid
name:
type: string
title: Name
description: Name of the keyword.
type:
$ref: '#/components/schemas/KeywordType'
description: Type of the keyword.
status:
$ref: '#/components/schemas/KeywordStatus'
description: Current status of the keyword.
description:
type: string
title: Description
description: Description of the keyword.
workspaces:
type: array
title: Workspaces
description: Workspaces the keyword belongs to.
default: []
items:
$ref: '#/components/schemas/WorkspaceDTO'
creation_date:
type: string
title: Creation Date
description: Date of creation.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
last_modification_date:
type: string
title: Last Modification Date
description: Date of the last modification.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
rule:
title: Rule
description: Rule associated with the keyword.
anyOf:
- type: string
sources:
title: Sources
description: List of sources associated with the keyword.
anyOf:
- type: array
items:
$ref: '#/components/schemas/KeywordSource'
active_search:
title: Active Search
description: Whether active search is enabled for this keyword.
anyOf:
- type: boolean
infostealer_search:
title: Infostealer Search
description: Whether infostealer search is enabled for this keyword.
anyOf:
- type: boolean
required:
- id
- name
- type
- status
- description
- creation_date
- last_modification_date
KeywordType:
type: string
enum:
- subsidiaries
- projects
- domain
- ip
- bin
- vip
- product
- misc
title: KeywordType
WorkspaceDTO:
type: object
title: WorkspaceDTO
additionalProperties: false
properties:
id:
type: string
title: Id
description: Unique identifier of the workspace.
format: uuid
name:
type: string
title: Name
description: Name of the workspace.
description:
title: Description
description: Description of the workspace.
anyOf:
- type: string
required:
- id
- name
KeywordSource:
type: string
enum:
- board
- codeshare
- database
- dns
- docshare
- fileserver
- iot
- leak
- paste
- rss
- social
- clouddrive
title: KeywordSource
PartnerCreateKeywordsBodyDTO:
type: object
title: PartnerCreateKeywordsBodyDTO
additionalProperties: false
properties:
keywords:
type: array
title: Keywords
description: List of keywords to create. Maximum 10 items.
minItems: 1
maxItems: 10
items:
$ref: '#/components/schemas/PartnerCreateKeywordInputDTO'
required:
- keywords
PartnerCreateKeywordInputDTO:
type: object
title: PartnerCreateKeywordInputDTO
additionalProperties: false
properties:
name:
type: string
title: Name
description: Name of the keyword.
minLength: 1
maxLength: 500
description:
type: string
title: Description
description: Description of the keyword.
type:
$ref: '#/components/schemas/KeywordType'
description: Type of the keyword.
sources:
type: array
title: Sources
description: List of sources associated with the keyword.
items:
$ref: '#/components/schemas/KeywordSource'
rule:
type: string
title: Rule
description: Rule associated with the keyword.
minLength: 1
maxLength: 10000
infostealer_search:
type: boolean
title: Infostealer Search
description: Whether infostealer search is enabled for this keyword.
active_search:
type: boolean
title: Active Search
description: Whether active search is enabled for this keyword.
workspaces:
type: array
title: Workspaces
description: Workspaces the keyword belongs to. Required if the organization has workspaces enabled; otherwise defaults to the organization's workspace.
default: []
items:
type: string
format: uuid
required:
- name
- description
- type
- sources
- rule
- infostealer_search
- active_search
PartnerCreateKeywords201ResponseDTO:
type: object
title: PartnerCreateKeywords201ResponseDTO
additionalProperties: false
properties:
created_keywords:
type: array
title: Created Keywords
description: List of successfully created keywords
items:
$ref: '#/components/schemas/PartnerKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be created
items:
$ref: '#/components/schemas/FailedToCreateKeywordDTO'
required:
- created_keywords
- failed_keywords
FailedToCreateKeywordDTO:
type: object
title: FailedToCreateKeywordDTO
properties:
name:
type: string
title: Name
error_code:
$ref: '#/components/schemas/CreateKeywordErrorCode'
error_details:
title: Error Details
anyOf:
- type: string
required:
- name
- error_code
CreateKeywordErrorCode:
type: string
enum:
- NAME_ALREADY_EXISTS
- INVALID_NAME
- INVALID_RULE
- INFOSTEALER_NOT_AVAILABLE_FOR_TYPE
- INFOSTEALER_NOT_ACTIVATED
- INTERNAL_ERROR
title: CreateKeywordErrorCode
PartnerCreateKeywords207ResponseDTO:
type: object
title: PartnerCreateKeywords207ResponseDTO
additionalProperties: false
properties:
created_keywords:
type: array
title: Created Keywords
description: List of successfully created keywords
items:
$ref: '#/components/schemas/PartnerKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be created
items:
$ref: '#/components/schemas/FailedToCreateKeywordDTO'
required:
- created_keywords
- failed_keywords
DeleteKeywordBodyDTO:
type: object
title: DeleteKeywordBodyDTO
additionalProperties: false
properties:
keyword_ids:
type: array
title: Keyword Ids
description: List of keyword IDs to delete. Maximum 50 items.
minItems: 1
maxItems: 50
items:
type: string
format: uuid
required:
- keyword_ids
DeleteKeywords200ResponseDTO:
type: object
title: DeleteKeywords200ResponseDTO
additionalProperties: false
properties:
deleted_keywords:
type: array
title: Deleted Keywords
description: List of successfully deleted keywords
items:
$ref: '#/components/schemas/DeletedKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be deleted
items:
$ref: '#/components/schemas/FailedKeywordDTO'
required:
- deleted_keywords
- failed_keywords
DeletedKeywordDTO:
type: object
title: DeletedKeywordDTO
properties:
id:
type: string
title: Id
format: uuid
name:
type: string
title: Name
required:
- id
- name
FailedKeywordDTO:
type: object
title: FailedKeywordDTO
properties:
id:
type: string
title: Id
format: uuid
error_code:
$ref: '#/components/schemas/DeleteKeywordErrorCode'
required:
- id
- error_code
DeleteKeywordErrorCode:
type: string
enum:
- NOT_FOUND
- INTERNAL_ERROR
title: DeleteKeywordErrorCode
DeleteKeywords207ResponseDTO:
type: object
title: DeleteKeywords207ResponseDTO
additionalProperties: false
properties:
deleted_keywords:
type: array
title: Deleted Keywords
description: List of successfully deleted keywords
items:
$ref: '#/components/schemas/DeletedKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be deleted
items:
$ref: '#/components/schemas/FailedKeywordDTO'
required:
- deleted_keywords
- failed_keywords
UpdateKeywordsStatusBodyDTO:
type: object
title: UpdateKeywordsStatusBodyDTO
additionalProperties: false
properties:
keywords:
type: array
title: Keywords
description: List of keywords whose status to update. Maximum 10 items.
minItems: 1
maxItems: 10
items:
$ref: '#/components/schemas/UpdateKeywordStatusInputDTO'
required:
- keywords
UpdateKeywordStatusInputDTO:
type: object
title: UpdateKeywordStatusInputDTO
additionalProperties: false
properties:
id:
type: string
title: Id
description: Unique identifier of the keyword to update.
format: uuid
status:
const: inactive
title: Status
description: New status of the keyword. Only "inactive" (deactivation) is accepted.
required:
- id
- status
PartnerUpdateKeywords200ResponseDTO:
type: object
title: PartnerUpdateKeywords200ResponseDTO
additionalProperties: false
properties:
updated_keywords:
type: array
title: Updated Keywords
description: List of successfully updated keywords
items:
$ref: '#/components/schemas/PartnerKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be updated
items:
$ref: '#/components/schemas/FailedToUpdateKeywordDTO'
required:
- updated_keywords
- failed_keywords
FailedToUpdateKeywordDTO:
type: object
title: FailedToUpdateKeywordDTO
properties:
id:
type: string
title: Id
format: uuid
error_code:
$ref: '#/components/schemas/UpdateKeywordErrorCode'
error_details:
title: Error Details
anyOf:
- type: string
required:
- id
- error_code
UpdateKeywordErrorCode:
type: string
enum:
- NOT_FOUND
- NAME_ALREADY_EXISTS
- INVALID_NAME
- INVALID_RULE
- INFOSTEALER_NOT_AVAILABLE_FOR_TYPE
- INFOSTEALER_NOT_ACTIVATED
- INTERNAL_ERROR
title: UpdateKeywordErrorCode
PartnerUpdateKeywords207ResponseDTO:
type: object
title: PartnerUpdateKeywords207ResponseDTO
additionalProperties: false
properties:
updated_keywords:
type: array
title: Updated Keywords
description: List of successfully updated keywords
items:
$ref: '#/components/schemas/PartnerKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be updated
items:
$ref: '#/components/schemas/FailedToUpdateKeywordDTO'
required:
- updated_keywords
- failed_keywords
WorkspaceListDTO:
type: object
title: WorkspaceListDTO
additionalProperties: false
properties:
items:
type: array
title: Items
description: List of workspaces matching the request
items:
$ref: '#/components/schemas/WorkspaceDTO'
total:
type: integer
title: Total
description: Total number of workspaces
minimum: 0
required:
- items
- total