openapi: 3.2.0 info: version: 1.0.0 title: References Alerts API description: 'API for CybelAngel''s Alerts. 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 tags: - name: alerts description: Alerts paths: /v1/alerts: get: tags: - alerts summary: Search alerts description: 'Search alerts according to user filters.

Note: Historical data is only available starting from January 1, 2024, and is retained for a maximum of 12 months.
Requests for data outside of this range will not return any results.' operationId: alerts_search_alerts_alerts_get parameters: - name: cursor in: query description: 'Set it to the the ''cursor'' value received from previous search request to iterate on the following alerts, beyond the limit set per request. Searching from a cursor does not impact the total number of results. Behavior is undefined if the filters and sort are changed between successive requests. Note: with big datasets, iterating on cursor can be much slower than iterating on ''start_date'' filter.' required: false schema: title: Cursor description: 'Set it to the the ''cursor'' value received from previous search request to iterate on the following alerts, beyond the limit set per request. Searching from a cursor does not impact the total number of results. Behavior is undefined if the filters and sort are changed between successive requests. Note: with big datasets, iterating on cursor can be much slower than iterating on ''start_date'' filter.' anyOf: - type: string - name: order_by in: query description: 'Can be multiple fields with +/- for ascending/descending sort. Fields can be ingestion_date, detection_date, ml_score.' required: false schema: type: array title: Order By description: 'Can be multiple fields with +/- for ascending/descending sort. Fields can be ingestion_date, detection_date, ml_score.' default: - +ingestion_date - +detection_date items: type: string pattern: '[+-]?(ingestion_date|detection_date|ml_score)' minLength: 1 - name: stream_id in: query description: 'Stream id used to filter alerts belonging to some organization. A client can only query alerts for its allowed streams.' required: true schema: type: string title: Stream Id description: 'Stream id used to filter alerts belonging to some organization. A client can only query alerts for its allowed streams.' minLength: 1 examples: - 90b18fad-b9ca-41db-bae1-b4964c1a4e84 examples: default: value: 90b18fad-b9ca-41db-bae1-b4964c1a4e84 - name: start_date in: query description: 'Minimal ingestion date. Expects a date with timezone information. Note: Historical data is only available starting from January 1, 2024, and is retained for a maximum of 12 months. Requests for data outside of this range will not return any results.' required: true schema: type: string title: Start Date description: 'Minimal ingestion date. Expects a date with timezone information. Note: Historical data is only available starting from January 1, 2024, and is retained for a maximum of 12 months. Requests for data outside of this range will not return any results.' format: date-time examples: - '2024-09-01T10:00:00.000Z' examples: default: value: '2024-09-01T10:00:00.000Z' - name: end_date in: query description: 'Maximal ingestion date. Expects a date with timezone information. Note: Historical data is only available starting from January 1, 2024, and is retained for a maximum of 12 months. Requests for data outside of this range will not return any results.' required: false schema: title: End Date description: 'Maximal ingestion date. Expects a date with timezone information. Note: Historical data is only available starting from January 1, 2024, and is retained for a maximum of 12 months. Requests for data outside of this range will not return any results.' anyOf: - type: string format: date-time - name: status in: query description: 'Select only alerts having one of the requested statuses. By default selects only ''new'' alerts to exclude alerts automatically discarded by our ML tools or already processed by analysts.' required: false schema: type: array title: Status description: 'Select only alerts having one of the requested statuses. By default selects only ''new'' alerts to exclude alerts automatically discarded by our ML tools or already processed by analysts.' default: - new items: $ref: '#/components/schemas/AlertStatus' - name: category in: query description: If set, select alerts with specified categories. required: false schema: type: array title: Category description: If set, select alerts with specified categories. default: [] items: $ref: '#/components/schemas/AlertCategory' - name: customer_assessment in: query description: 'If set, select only alerts having one of the requested customer assessments. This is the **customer.assessment** field that may be set by clients using the API.' required: false schema: type: array title: Customer Assessment description: 'If set, select only alerts having one of the requested customer assessments. This is the **customer.assessment** field that may be set by clients using the API.' default: [] items: $ref: '#/components/schemas/CustomerAssessment' - name: keyword in: query description: If set, select alerts matching specified keywords aliases. required: false schema: type: array title: Keyword description: If set, select alerts matching specified keywords aliases. default: [] items: type: string minLength: 1 - name: keyword_id in: query description: If set, select alerts matching specified keyword identifiers. required: false schema: type: array title: Keyword Id description: If set, select alerts matching specified keyword identifiers. default: [] items: type: string minLength: 1 - name: min_ml_score in: query description: If set, select alerts with equal or higher 'ml.score'. required: false schema: type: integer title: Min Ml Score description: If set, select alerts with equal or higher 'ml.score'. minimum: 0 maximum: 100 default: 0 - name: hostname in: query description: If set, select alerts with any specified hostname value. required: false schema: type: array title: Hostname description: If set, select alerts with any specified hostname value. default: [] items: type: string minLength: 1 - name: ip in: query description: If set, select alerts with specified IP address among 'ip', 'server_ip' or 'victim_ip' fields. required: false schema: type: array title: Ip description: If set, select alerts with specified IP address among 'ip', 'server_ip' or 'victim_ip' fields. default: [] items: type: string minLength: 1 - name: search_query in: query description: Words to search in alerts text fields. required: false schema: title: Search Query description: Words to search in alerts text fields. anyOf: - type: string minLength: 1 - name: limit in: query description: Max number of returned alerts. Increasing it will also increase the payload. required: false schema: type: integer title: Limit description: Max number of returned alerts. Increasing it will also increase the payload. minimum: 0 maximum: 1000 default: 10 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AlertList' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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/alerts/{alert_id}: get: tags: - alerts summary: Get an alert description: 'Get an alert by its unique id.

Note: Historical data is only available starting from January 1, 2024, and is retained for a maximum of 12 months.
Requests for data outside of this range will not return any results.' operationId: alerts_search_an_alert_alerts__alert_id__get parameters: - name: alert_id in: path description: ID of an alert. required: true schema: type: string title: Alert Id description: ID of an alert. minLength: 1 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PublicAlert' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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/alerts/{alert_id}/customer: patch: tags: - alerts summary: Set customer fields description: Allow to edit customer-maintained fields in an alert published by the API.

The only use now is to assess the alerts.
These assessments may then be used by CybelAngel to improve the alerts automated filtering. operationId: alerts_patch_an_alert_alerts__alert_id__customer_patch parameters: - name: alert_id in: path description: ID of an alert. required: true schema: type: string title: Alert Id description: ID of an alert. minLength: 1 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AlertRequestCustomerFieldsPatch' responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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/alerts/{alert_id}/credentials: get: tags: - alerts summary: Get leak alert credentials (deprecated) description: This endpoint is deprecated and will be removed in a future release.
Use /v1/alerts//leak-credentials instead. operationId: alerts_get_alert_credentials_deprecated_alerts__alert_id__credentials_get parameters: - name: alert_id in: path description: ID of an alert. required: true schema: type: string title: Alert Id description: ID of an alert. minLength: 1 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CredentialsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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_' '410': description: Gone content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_GoneError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' deprecated: true security: - jwt: [] servers: - url: https://api.cybelangel.com /v1/alerts/{alert_id}/leak-credentials: get: tags: - alerts summary: Get leak alert credentials description: Get credentials associated with an alert. operationId: alerts_get_alert_credentials_alerts__alert_id__leak_credentials_get parameters: - name: alert_id in: path description: ID of an alert. required: true schema: type: string title: Alert Id description: ID of an alert. minLength: 1 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CredentialsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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/alerts/{alert_id}/codeshare-findings: get: tags: - alerts summary: Get codeshare alert findings description: 'Get sensitive code snippets for a codeshare alert.

Note: downloading hundreds of thousands of findings may take a few dozen seconds.' operationId: alerts_get_codeshare_findings_alerts__alert_id__codeshare_findings_get parameters: - name: alert_id in: path description: ID of an alert. required: true schema: type: string title: Alert Id description: ID of an alert. minLength: 1 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FindingsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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/alerts/{alert_id}/dns-screenshot: get: tags: - alerts summary: Get DNS alert screenshot. description: Get the website screenshot associated with a DNS alert.

If a screenshot is present, it is returned as a PNG file.
If no screenshot was taken for the alert, a 204 NO_CONTENT is returned.
If the alert is older than 180 days a GONE response is returned. operationId: alerts_get_alert_dns_screenshot_alerts__alert_id__dns_screenshot_get parameters: - name: alert_id in: path description: ID of an alert. required: true schema: type: string title: Alert Id description: ID of an alert. minLength: 1 responses: '200': description: OK content: image/png: schema: type: string contentMediaType: application/octet-stream '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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_' '410': description: Gone content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_GoneError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' security: - jwt: [] servers: - url: https://api.cybelangel.com /v1/leak-credentials: get: tags: - alerts summary: Get leak credentials description: Get leak credentials we collected. operationId: alerts_get_leak_credentials_leak_credentials_get parameters: - name: stream_id in: query description: 'Stream id used to filter alerts belonging to some organization. A client can only query alerts for its allowed streams.' required: true schema: type: string title: Stream Id description: 'Stream id used to filter alerts belonging to some organization. A client can only query alerts for its allowed streams.' minLength: 1 examples: - 90b18fad-b9ca-41db-bae1-b4964c1a4e84 examples: default: value: 90b18fad-b9ca-41db-bae1-b4964c1a4e84 - name: start_date in: query description: Minimal ingestion date. Expects a date with timezone information. required: true schema: type: string title: Start Date description: Minimal ingestion date. Expects a date with timezone information. format: date-time examples: - '2024-09-01T10:00:00.000Z' examples: default: value: '2024-09-01T10:00:00.000Z' - name: end_date in: query description: Maximal ingestion date. Expects a date with timezone information. required: false schema: title: End Date description: Maximal ingestion date. Expects a date with timezone information. anyOf: - type: string format: date-time - name: match in: query description: Words to search in credentials logins and targets. required: false schema: title: Match description: Words to search in credentials logins and targets. anyOf: - type: string minLength: 1 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CredentialsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_ValidationError_' '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_' '410': description: Gone content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_GoneError_' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/APIErrorResponse_UnknownError_' security: - jwt: [] servers: - url: https://api.cybelangel.com components: schemas: Source: type: string enum: - onedrive - googledrive - dropbox title: Source description: Cloud drive source type. Docshare: type: object title: Docshare description: Potential document leak on a public document sharing platform like Scribd, Trello, Prezi, Slideshare... properties: author: title: Author description: Some identifier of the document author on the source platform. Could be a login, an email or not provided at all. examples: - ydningrm78 anyOf: - type: string title: title: Title description: Title of the shared document, if present in the source. examples: - Company Security deep dive anyOf: - type: string context: type: string title: Context description: 'First few lines of the shared document. It is also limited to a few thousand characters from the start of the document.' examples: - "\n FOR INTERNAL USE ONLY!\n Our company security policy\n 1/ Passwords\n 2/ BYOD\n 3/ Office rules\n " document_date: type: string title: Document Date description: Date on which the document was shared on the source platform. format: date-time examples: - '2024-09-16T00:00:00Z' source: type: string title: Source description: 'Name of the platform on which the document was shared. It can be a well-known website name like ''scribd'' or ''prezi'', or any domain name.' examples: - scribd url: type: string title: Url description: URL of the shared document at the time it was detected. It may no longer be valid. examples: - https://www.scribd.com/document/4976346763/Company-Policy required: - context - document_date - source - url NotFoundError: type: object title: NotFoundError description: Nothing matches the given URI properties: message: type: string title: Message required: - message DBProtocol: type: string enum: - elasticsearch - mongo - sql - pgsql title: DBProtocol description: Different kind of databases. APIErrorResponse_NotFoundError_: type: object title: APIErrorResponse[NotFoundError] properties: error: $ref: '#/components/schemas/NotFoundError' required: - error Board: type: object title: Board description: Message board (or internet forum) post that was matched by a keyword. properties: source: type: string title: Source description: Message board platform where we found the post. examples: - administrator.example.co.uk board: type: string title: Board description: Name of the message board on the platform. examples: - forum title: type: string title: Title description: Tile of the post or its thread on the platform. examples: - AD - Give ownership of computer object url: type: string title: Url description: URL to the message board post. examples: - https://administrator.example.co.uk/forum/ad-give-ownership-of-computer-object-465997.html context: type: string title: Context description: 'First few lines of the message board post. It is also limited to a few thousand characters from the start of the document.' examples: - 'AD - give ownership of computer object Hi, do any of you have the time or desire to recreate the following? (It''s NOT about taking ownership, it''s about relinquishing ownership.) An AD user UserA is not a member of the Organization Admins, Domain Admins, or BuiltIn Admins. This user is the owner of a computer object. UserA also has full access to this object. UserA is trying to change the owner of this computer object. No matter which user or group he specifies: the error occurs: The new owner of COMPUTER1 cannot be set up. This security identifier cannot be assigned as the owner of the object. An admin change the owner of this object to UserB. UserA can then successfully change the owner of this computer object and enter other third parties there. And it repeats. But as soon as UserA registers himself as the owner again, he can no longer change the owner. The above error occurs again. Now I''m on the fence. An owner of the ACL cannot enter another owner? Huh, did I miss something? That would be new to me... If someone could recreate that, that would be really great. E' required: - source - board - title - url - context Database: type: object title: Database description: Potential confidential data matching the keywords was found on a publicly exposed database server. properties: city: title: City description: English name of the city where the database server is located. examples: - Paris anyOf: - type: string country: title: Country description: English name of the country where the database is located. examples: - France anyOf: - type: string country_code: title: Country Code description: ISO 3166-1 alpha-2 code of the country where the database server is located. examples: - FR anyOf: - type: string database: type: string title: Database description: Name of the main database with matching data on the server. examples: - admin_cluster databases_count: type: integer title: Databases Count description: Number of database with matching data found on the server. default: 1 ip: title: Ip description: 'IP address of the publicly accessible database. Not set when the server is a cloud provider (AWS, Azure...) and thus has no consistent ip.' examples: - 203.0.113.73 anyOf: - type: string format: ipvanyaddress port: type: integer title: Port description: Public database server port, used to check its content. examples: - 27017 protocol: $ref: '#/components/schemas/DBProtocol' description: Public database server protocol. reverse_hostname: type: string title: Reverse Hostname description: Publicly accessible database server reverse hostname. examples: - vm123465.example.fr required: - database - port - protocol - reverse_hostname AccountType: type: string enum: - User - Organization title: AccountType description: Type of account on a code sharing platform. AlertStatus: type: string enum: - new - autodiscarded - discarded - interesting - forwarded - report_sent title: AlertStatus description: Status of alerts, set by cybelangel automated systems and analysts. Match: type: object title: Match description: Match of a keyword linking this alert to the user stream. properties: source: type: string title: Source description: Indicates the technical source of the data. examples: - path keyword: type: string title: Keyword description: Label of the keyword that was detected in the extract. examples: - security keyword_id: type: string title: Keyword Id description: ID of the keyword that was detected in the extract. examples: - 590a6363-9df9-4d75-8f2a-41247357a9cc extracts: type: array title: Extracts description: 'Snippets of the content where the keyword matched. The whole content is HTML-encoded. The matched content is marked by `...` markup. Note: it is empty for ''database'' alerts.' examples: - /some_folder/Secret_Library_2025_9v2/Antivirus_Security_9-x_V1R1/U_Antivirus_SECURITY_Overview.pdf items: type: string required: - source - keyword - keyword_id - extracts AlertCategory: type: string enum: - adm - fileserver - codeshare - dns - database - board - clouddrive - docshare - paste - leak - rss - social title: AlertCategory description: 'ADM stands for Asset Discovery and Monitoring. DNS stands for Domain Name System.' Report: type: object title: Report description: Fields set when publishing an incident report from this alert. properties: id: type: string title: Id description: Id of the incident report sent for this alert. required: - id MLFields: type: object title: MLFields description: Fields set by our Machine Learning tool when evaluating the alert. properties: score: title: Score description: 'Score between 0 and 100 set by our ML-based tools when evaluating the alert. 0 is certainly a false positive and will certainly be automatically discarded, 100 is most certain a true positive and should be checked carefully.' examples: - 84 anyOf: - type: integer minimum: 0 maximum: 100 ValidationError: type: object title: ValidationError description: Error on incorrect input fields properties: message: type: string title: Message fields: type: array title: Fields items: $ref: '#/components/schemas/Field' required: - message - fields CredsOnDB: type: object title: CredsOnDB description: Public database with leaked credentials. properties: server_ip: title: Server Ip description: 'IP address of the server of the leak. Not set when the server is a cloud provider (AWS, Azure...) and thus has no consistent ip.' examples: - 203.0.113.203 anyOf: - type: string format: ipvanyaddress city: title: City description: English name of the city where the database is located. examples: - Moscow anyOf: - type: string country: title: Country description: English name of the country where the database is located. examples: - Russian Federation anyOf: - type: string country_code: title: Country Code description: ISO 3166-1 alpha-2 code of the country where the database is located. examples: - RU anyOf: - type: string CustomerFields: type: object title: CustomerFields description: Fields set by customer in the alert. properties: assessment: $ref: '#/components/schemas/CustomerAssessment' ADM: type: object title: ADM description: 'Asset Discovery Monitoring (ADM): Asset with an open port exposing information that matches keywords.' properties: city: title: City description: City where the asset is located. examples: - Zurich anyOf: - type: string country: title: Country description: Country where the asset is located. examples: - Switzerland anyOf: - type: string country_code: title: Country Code description: Country code where the asset is located. examples: - CH anyOf: - type: string organization: title: Organization description: Name of the organisation where the asset is located, a cloud provider for example. examples: - Zweiss Inc. anyOf: - type: string ip: title: Ip description: 'IP address of the publicly accessible asset. Not set when the server is a cloud provider (AWS, Azure...) and thus has no consistent ip.' examples: - 203.0.113.73 anyOf: - type: string format: ipvanyaddress hostname: title: Hostname description: Host name of the publicly accessible asset. examples: - bba.zweiss.example.ae anyOf: - type: string hostnames: type: array title: Hostnames description: Hostnames associated with the ip of the asset. examples: - - bba.zweiss.example.ae - ssl.zweiss.example.ae - maintenance.example.ae items: type: string open_ports: type: array title: Open Ports description: 'List of the open ports detected on the same IP address. They may be identical for alerts on the same IP but with a different port.' examples: - - 80 - 5000 - 8000 - 8035 - 8080 items: type: integer open_services: type: array title: Open Services description: 'List of the services running on the open ports. Examples: mysql, telnet, ftp' default: [] examples: - - netbios-ssn - vnc-http items: type: string port: type: integer title: Port description: Number of the port considered in this alert. examples: - 80 protocol: type: string title: Protocol description: Name of the protocol running on this port. examples: - http product: title: Product description: Name of the product running on this port. examples: - nginx anyOf: - type: string max_cve_severity: type: number title: Max Cve Severity description: Severity max for a detected CVE. minimum: 0 maximum: 10 examples: - 9.7 cves: type: array title: Cves description: CVEs detected on this port. items: $ref: '#/components/schemas/CVE' ssl_cert: description: SSL certificate associated to the port. anyOf: - $ref: '#/components/schemas/SSLCert' title: title: Title description: Title of the HTML page if the protocol is HTTP. examples: - Our Partnership Portal anyOf: - type: string required: - hostnames - open_ports - port - protocol - max_cve_severity - cves APIErrorResponse_ForbiddenAccessError_: type: object title: APIErrorResponse[ForbiddenAccessError] properties: error: $ref: '#/components/schemas/ForbiddenAccessError' required: - error UnknownError: type: object title: UnknownError description: Unknown error on server-side, please contact support. properties: message: type: string title: Message required: - message Paste: type: object title: Paste description: 'Text matching the keywords published on a paste website like pastebin.com. It can also come from data not associated with a paste website.' properties: context: type: string title: Context description: 'First few lines of the paste. It is also limited to a few thousand characters from the start.' examples: - ' Chapter 09:CI at a Major Telecommunications Company ' date: type: string title: Date description: Date of the paste. format: date-time examples: - '2024-08-22T13:54:22Z' source: type: string title: Source description: Paste website where the paste was published. examples: - vpaste.net title: title: Title description: Title of the paste if available. examples: - Chapter 09:CI at a Major Telecommunications Company anyOf: - type: string url: type: string title: Url description: URL of the paste. Can also be internal-cba- when not coming from a paste website examples: - http://vpaste.net/GFgreFP74?raw uniq_bins: type: array title: Uniq Bins description: BINs (Bank Identification Number) detected in the paste. default: [] examples: - - '26856477135481' items: type: string required: - context - date - source - url CredentialsResponse: type: object title: CredentialsResponse description: List of credentials associated with an alert. properties: credentials: type: array title: Credentials description: 'For each credentials: the login, the password (obfuscated) and infostealer data. The password and infostealer data may not exist.' examples: - - infostealer: leak_date: '2024-01-12T08:44:55.622173+00:00' machine_name: workstation-2 malware_name: 1nf0st34l3r target: https://example.com/login victim_ip: 1.2.3.4 login: user@example.com password: G**************s items: $ref: '#/components/schemas/Cred' message: title: Message description: Information about the credentials fetched. examples: - Not all credentials could be fetched. anyOf: - type: string required: - credentials RepositoryInfo: type: object title: RepositoryInfo description: Metadata from the repository on the code sharing platform. properties: contributor_count: type: integer title: Contributor Count description: Number of contributors to this public repository. default: 0 examples: - 3 contributor_emails: type: array title: Contributor Emails description: 'Email addresses of the repository most important contributors. They will be provided only if the contributors made their email public.' default: [] examples: - - gatto4976@hotmail.com - ci-gatto@esfhg.edu.net items: type: string created_at: type: string title: Created At description: Date of creation of the repository. format: date-time examples: - '2023-11-01T07:26:15Z' updated_at: type: string title: Updated At description: Last update date of the repository. format: date-time examples: - '2024-09-16T08:29:36Z' description: title: Description description: Description of the repository. examples: - Next generation blog anyOf: - type: string language: title: Language description: Main programming language of the repository. examples: - JavaScript anyOf: - type: string license: title: License description: Name of the license of the repository. examples: - BSD Zero Clause License anyOf: - type: string files_count: title: Files Count description: Estimated number of files in the repository. examples: - 99 anyOf: - type: integer size: type: integer title: Size description: Estimated size of the repository, in kilobytes. examples: - 5381 required: - created_at - updated_at - size Leak: type: object title: Leak description: Potential leak (credentials...) discovered on internet properties: source: type: string title: Source description: 'Indicates the technical source id of the leak. Can be used to regroup leak alerts that come from the same source.' examples: - new1 count_leaks: type: integer title: Count Leaks description: Number of leaks that matched with keywords. examples: - 1 count_leaks_with_password: type: integer title: Count Leaks With Password description: Number of leaks containing passwords and matching keywords. examples: - 1 infostealer: description: Only available for leaks caused by an infostealer. anyOf: - $ref: '#/components/schemas/Infostealer' creds_on_db: description: Only available for leaks detected on a public database. anyOf: - $ref: '#/components/schemas/CredsOnDB' required: - source - count_leaks - count_leaks_with_password UserAccount: type: object title: UserAccount description: Public account on a code sharing platform. properties: created_at: type: string title: Created At description: Date of creation of the user account. format: date-time examples: - '2023-11-01T07:26:15Z' bio: title: Bio description: Biography of the user account, filled by the account creator. examples: - 充满热情的技术黑客 anyOf: - type: string company: title: Company description: Company name of the account, filled by the account creator. examples: - ESFG Inc. anyOf: - type: string email: title: Email description: Email address of the account, if made public. examples: - gatto4976@hotmail.com anyOf: - type: string location: title: Location description: Location of the account, filled by the account creator. examples: - The World anyOf: - type: string name: title: Name description: Public name of the account, filled by the account creator. examples: - My name anyOf: - type: string type: $ref: '#/components/schemas/AccountType' description: 'Type of account: a single User or a whole Organization.' required: - created_at - type CustomerAssessment: type: string enum: - unknown - true_positive - false_positive title: CustomerAssessment description: 'Assessment of the alert quality: is it a real security threat? Set by the API user to provide feedback to Cybelangel. The default ''unknown'' value is present before user assessed the alert, or when removing that assessment.' Social: type: object title: Social description: Alerts published from social media feeds, mostly from Vetric. properties: source: type: string title: Source description: Source social media. examples: - facebook.com url: type: string title: Url description: Link to the social media webpage. examples: - https://www.facebook.com/posts/1234567890 required: - source - url CVE: type: object title: CVE description: Common Vulnerabilities and Exposures. properties: summary: type: string title: Summary description: Description of the CVE. examples: - A crafted request uri-path can cause mod_proxy to forward the request to an origin server choosen by the remote user. This issue affects Apache HTTP Server 2.4.48 and earlier. cvss: type: number title: Cvss description: CVSS (Common Vulnerability Scoring System) rating of the CVE. minimum: 0 maximum: 10 examples: - 9 references: type: array title: References description: Sources of the description and rating. examples: - - https://nvd.nist.gov/vuln/detail/CVE-2021-40438 items: type: string name: type: string title: Name description: Name of the CVE. examples: - CVE-2021-40438 required: - summary - cvss - references - name Infostealer: type: object title: Infostealer description: When Cred comes from an infostealer, it contains this field. properties: victim_ip: title: Victim Ip description: IP address of the machine where the credentials were stolen. anyOf: - type: string machine_name: title: Machine Name description: Name of the machine where the credentials were stolen. anyOf: - type: string target: title: Target description: Website or system on which the credentials apply. anyOf: - type: string leak_date: title: Leak Date description: Date when the credentials were stolen. anyOf: - type: string format: date-time malware_name: title: Malware Name description: Name of the malware that stole the credentials. anyOf: - type: string FindingsResponse: type: object title: FindingsResponse description: List of findings associated with a codeshare alert. properties: findings: type: array title: Findings description: Findings associated with the codeshare alert. items: $ref: '#/components/schemas/Finding' message: title: Message description: Additional information in case of non-blocking issue with the query. examples: - Not all findings could be fetched. anyOf: - type: string required: - findings APIErrorResponse_ValidationError_: type: object title: APIErrorResponse[ValidationError] properties: error: $ref: '#/components/schemas/ValidationError' required: - error APIErrorResponse_UnknownError_: type: object title: APIErrorResponse[UnknownError] properties: error: $ref: '#/components/schemas/UnknownError' required: - error ForbiddenAccessError: type: object title: ForbiddenAccessError description: User cannot access some resource. properties: message: type: string title: Message required: - message FindingsStats: type: object title: FindingsStats description: Statistics about findings across the repository. properties: count: type: integer title: Count description: Number of findings in the repository for this rule. examples: - 28 rules: type: array title: Rules default: [] items: $ref: '#/components/schemas/RuleStats' required: - count Cred: type: object title: Cred description: Credentials returned by the API properties: login: type: string title: Login password: title: Password anyOf: - type: string infostealer: anyOf: - $ref: '#/components/schemas/Infostealer' required: - login PublicAlert: type: object title: PublicAlert description: Represents an Alert in our raw data properties: id: type: string title: Id description: Id of the incident report sent for this alert. examples: - 08c846af-fe9f-4bb3-9061-a3ddbebd1f11:7d14caa9-63ac-4c984-b8a3-98b9dc75f975 stream_id: type: string title: Stream Id description: 'Technical stream for the keyword that generated the alert. It restricts alert access to users of that stream''s organization.' examples: - 90b18fad-b9ca-41db-bae1-b4964c1a4e84 status: $ref: '#/components/schemas/AlertStatus' ingestion_date: type: string title: Ingestion Date description: 'Time at which this alert was ingested and made available to our users. It can be used to get new alerts when periodically polling the API. Note: due to the asynchronous nature of the ingestion process and various caches, the alerts ingested in the last few minutes may not yet be returned by the API.' format: date-time examples: - '2024-09-01T12:36:15.456Z' detection_date: type: string title: Detection Date description: Time of the original detection of this alert when crawling the Internet. format: date-time examples: - '2024-08-31T06:15:54Z' customer: $ref: '#/components/schemas/CustomerFields' report: description: Fields set when publishing a report from this alert. anyOf: - $ref: '#/components/schemas/Report' ml: $ref: '#/components/schemas/MLFields' matches: type: array title: Matches description: 'List of keyword matches that triggered this alert. This is not an exhaustive list of matches from the data causing the alert as we limit the number of extracts we compute.' items: $ref: '#/components/schemas/Match' category: $ref: '#/components/schemas/AlertCategory' description: Category of alerts, depending on its technical source. It dictates the category-specific field that may be set. database: description: Set only for Database alerts. anyOf: - $ref: '#/components/schemas/Database' adm: description: Set only for ADM alerts. anyOf: - $ref: '#/components/schemas/ADM' dns: description: Set only for DNS alerts. anyOf: - $ref: '#/components/schemas/DNS' fileserver: description: Set only for Fileserver alerts. anyOf: - $ref: '#/components/schemas/Fileserver' clouddrive: description: Set only for Clouddrive alerts. anyOf: - $ref: '#/components/schemas/Clouddrive' docshare: description: Set only for Docshare alerts. anyOf: - $ref: '#/components/schemas/Docshare' codeshare: description: Set only for Codeshare alerts. anyOf: - $ref: '#/components/schemas/Codeshare' board: description: Set only for Board alerts. anyOf: - $ref: '#/components/schemas/Board' leak: description: Set only for Leak alerts anyOf: - $ref: '#/components/schemas/Leak' rss: description: Set only for RSS alerts anyOf: - $ref: '#/components/schemas/RSS' paste: description: Set only for Paste alerts anyOf: - $ref: '#/components/schemas/Paste' social: description: Set only for Social alerts anyOf: - $ref: '#/components/schemas/Social' required: - id - stream_id - status - ingestion_date - detection_date - customer - ml - matches - category RuleStats: type: object title: RuleStats description: Rule that matched some extracts of code from files committed into the repository. properties: id: type: string title: Id description: Identifies the applied rule. examples: - SPECIFIC_GOOGLE_API_KEY count: type: integer title: Count description: Number of findings in the repository for this rule. examples: - 5 files_count: title: Files Count description: Number of file/commit pairs in the repository containing findings from this rule. examples: - 2 anyOf: - type: integer required: - id - count Codeshare: type: object title: Codeshare description: Alert triggered by code shared on a public repository, usually on a code sharing platform like GitHub. properties: source: type: string title: Source description: Platform on which the code was publicly shared. It is usually 'github.com'. examples: - github.com title: type: string title: Title description: Code repository title on the code sharing platform, usually following the author/repository pattern. examples: - memtsuo5/gatto-blog owner: type: string title: Owner description: Username of the person or organization who owns the repository. examples: - memtsuo5 repository_name: type: string title: Repository Name description: Identifier of the repository where files matching the keywords were edited. examples: - gatto-blog context: title: Context description: 'First few lines of the repository readme file. It is also limited to a few thousand characters from the start of the document.' examples: - "\n