Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
179 changes: 176 additions & 3 deletions docs/api-reference/spec/firework-v4-openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,9 @@
{
"$ref": "#/components/schemas/BlogPostEvent"
},
{
"$ref": "#/components/schemas/BotEvent"
},
{
"$ref": "#/components/schemas/BucketEvent"
},
Expand All @@ -418,13 +421,13 @@
"$ref": "#/components/schemas/FinancialEvent"
},
{
"$ref": "#/components/schemas/DockerRepositoryEvent"
"$ref": "#/components/schemas/DockerImageEvent"
},
{
"$ref": "#/components/schemas/ForumPostEvent"
"$ref": "#/components/schemas/DockerRepositoryEvent"
},
{
"$ref": "#/components/schemas/DockerImageEvent"
"$ref": "#/components/schemas/ForumPostEvent"
},
{
"$ref": "#/components/schemas/InvalidCredentialEvent"
Expand Down Expand Up @@ -467,6 +470,7 @@
"propertyName": "event_type",
"mapping": {
"blog_post": "#/components/schemas/BlogPostEvent",
"bot": "#/components/schemas/BotEvent",
"bucket": "#/components/schemas/BucketEvent",
"bucket_object": "#/components/schemas/BucketObjectEvent",
"chat_message": "#/components/schemas/ChatMessageEvent",
Expand Down Expand Up @@ -3660,6 +3664,175 @@
],
"title": "Blog Post"
},
"BotEvent": {
"properties": {
"event_type": {
"type": "string",
"const": "bot",
"title": "Event Type",
"default": "bot"
},
"data": {
"$ref": "#/components/schemas/BotEventData"
},
"metadata": {
"$ref": "#/components/schemas/EventMetadata"
}
},
"type": "object",
"required": [
"data",
"metadata"
],
"title": "Bot"
},
"BotEventActor": {
"properties": {
"id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Id",
"description": "The ID of the seller that put the bot up for sale."
}
},
"type": "object",
"title": "BotEventActor"
},
"BotEventData": {
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"description": "The name of the bot listing."
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Url",
"description": "The URL of the bot listing on the marketplace."
},
"actor": {
"$ref": "#/components/schemas/BotEventActor",
"description": "Data about the seller of the bot listing."
},
"victim_information": {
"$ref": "#/components/schemas/BotVictimInformation",
"description": "Collection of data about the victim's infected device."
},
"price": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Price",
"description": "The price of the bot listing."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Currency",
"description": "The currency for the bot listing price."
}
},
"type": "object",
"title": "BotEventData"
},
"BotVictimInformation": {
"properties": {
"country_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country Code",
"description": "The country code tied to the infected device."
},
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Location",
"description": "The location of the infected device."
},
"isp": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Isp",
"description": "The ISP of the infected device."
},
"installed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Installed At",
"description": "The date and time the malware was installed on the infected device."
},
"os": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Os",
"description": "The operating system of the infected device."
}
},
"type": "object",
"title": "BotVictimInformation"
},
"BrandData": {
"properties": {
"type": {
Expand Down
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,7 @@
"pages": [
"event-types-v2/overview",
"event-types-v2/blog-post",
"event-types-v2/bot",
"event-types-v2/bucket",
"event-types-v2/bucket-object",
"event-types-v2/chat-message",
Expand Down
10 changes: 10 additions & 0 deletions docs/event-types-v2/bot.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: "Bot"
---

import BotExample from '/snippets/event_model_examples/bot.mdx'

The `bot` event represents a compromised device (a “bot”) listed for sale on a dark-web marketplace (for example, “Russian Market”), where attackers sell access to machines infected by information stealer malware.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure we want to name a country in the doc

@mataai mataai Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I took the description from Stealer_Logs but I could change both

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, let's merge as is then

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's not referencing russia specifically, there is a ransomware group called russian market.

Each document corresponds to a single infected device, with the victim's environment (OS, ISP, location) and the listing details describing where the bot is offered and its price.

<BotExample />
45 changes: 23 additions & 22 deletions docs/event-types-v2/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,26 @@ description: "Overview of all Flare API event types"
Currently these event type models are supported on the
[Retrieve Event V2 Endpoint <Icon icon="code" size={16}/>](/api-reference/v4/endpoints/get-event)

| Event Type | Documentation |
| -------------- | ----------------------------------------------------------------------------------- |
| `blog_post` | [Blog Post <Icon icon="book" size={16} />](/event-types-v2/blog-post) |
| `bucket` | [Bucket <Icon icon="book" size={16} />](/event-types-v2/bucket) |
| `bucket_object` | [Bucket Object <Icon icon="book" size={16} />](/event-types-v2/bucket-object) |
| `chat_message` | [Chat Message <Icon icon="book" size={16} />](/event-types-v2/chat-message) |
| `credit_card` | [Chat Message <Icon icon="book" size={16} />](/event-types-v2/chat-message) |
| `docker_repository`| [Docker Repository <Icon icon="book" size={16} />](/event-types-v2/docker-repository) |
| `document` | [Ransomleak (document) <Icon icon="book" size={16} />](/event-types-v2/ransom-leak) |
| `docker Image` | [Docker Image <Icon icon="book" size={16} />](/event-types-v2/docker-image) |
| `domain` | [Lookalike Domain (domain) <Icon icon="book" size={16} />](/event-types-v2/domain) |
| `forum_post` | [Forum Post & Topic <Icon icon="book" size={16} />](/event-types-v2/forum-post) |
| `invalid_credential` | [Invalid Credential <Icon icon="book" size={16} />](/event-types-v2/invalid-credential) |
| `leak` | [Leak <Icon icon="book" size={16} />](/event-types-v2/leak) |
| `leaked_credential` | [Leaked Credential <Icon icon="book" size={16} />](/event-types-v2/leaked-credential) |
| `listing` | [Listing <Icon icon="book" size={16} />](/event-types-v2/listing) |
| `mitigated_credential` | [Mitigated Credential <Icon icon="book" size={16} />](/event-types-v2/mitigated-credential) |
| `paste` | [Paste <Icon icon="book" size={16} />](/event-types-v2/paste) |
| `stealer_log` | [Stealer Log <Icon icon="book" size={16} />](/event-types-v2/stealer-log) |
| `social_media` | [Social media <Icon icon="book" size={16} />](/event-types-v2/social-media-account) |
| `service` | [Service <Icon icon="book" size={16} />](/event-types-v2/service) |
| `valid_credential` | [Valid Credential <Icon icon="book" size={16} />](/event-types-v2/valid-credential) |
| Event Type | Documentation |
| --------------------- | --------------------------------------------------------------------------------------------- |
| `blog_post` | [Blog Post <Icon icon="book" size={16} />](/event-types-v2/blog-post) |
| `bot` | [Bot <Icon icon="book" size={16} />](/event-types-v2/bot) |
| `bucket` | [Bucket <Icon icon="book" size={16} />](/event-types-v2/bucket) |
| `bucket_object` | [Bucket Object <Icon icon="book" size={16} />](/event-types-v2/bucket-object) |
| `chat_message` | [Chat Message <Icon icon="book" size={16} />](/event-types-v2/chat-message) |
| `credit_card` | [Chat Message <Icon icon="book" size={16} />](/event-types-v2/chat-message) |
| `docker_repository` | [Docker Repository <Icon icon="book" size={16} />](/event-types-v2/docker-repository) |
| `document` | [Ransomleak (document) <Icon icon="book" size={16} />](/event-types-v2/ransom-leak) |
| `docker Image` | [Docker Image <Icon icon="book" size={16} />](/event-types-v2/docker-image) |
| `domain` | [Lookalike Domain (domain) <Icon icon="book" size={16} />](/event-types-v2/domain) |
| `forum_post` | [Forum Post & Topic <Icon icon="book" size={16} />](/event-types-v2/forum-post) |
| `invalid_credential` | [Invalid Credential <Icon icon="book" size={16} />](/event-types-v2/invalid-credential) |
| `leak` | [Leak <Icon icon="book" size={16} />](/event-types-v2/leak) |
| `leaked_credential` | [Leaked Credential <Icon icon="book" size={16} />](/event-types-v2/leaked-credential) |
| `listing` | [Listing <Icon icon="book" size={16} />](/event-types-v2/listing) |
| `mitigated_credential` | [Mitigated Credential <Icon icon="book" size={16} />](/event-types-v2/mitigated-credential) |
| `paste` | [Paste <Icon icon="book" size={16} />](/event-types-v2/paste) |
| `stealer_log` | [Stealer Log <Icon icon="book" size={16} />](/event-types-v2/stealer-log) |
| `social_media` | [Social media <Icon icon="book" size={16} />](/event-types-v2/social-media-account) |
| `service` | [Service <Icon icon="book" size={16} />](/event-types-v2/service) |
| `valid_credential` | [Valid Credential <Icon icon="book" size={16} />](/event-types-v2/valid-credential) |
38 changes: 38 additions & 0 deletions docs/snippets/event_model_examples/bot.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{/*
If you are in pyro:
- If this file changes, you should also modify the API docs.
- https://github.com/flared/docs-api/

If you are in mintlify:
- Don't edit this directly, edit the generator in pyro.
- pyro/pyro/mintlify/test_firework_event_models.py
*/}

```json Bot
{
"event_type": "bot",
"data": {
"name": "Hacker Market - Bots",
"url": "https://bot.market.com/market/bot/1234",
"actor": {
"id": "A1B2C3"
},
"victim_information": {
"country_code": "CA",
"location": "City, Country",
"isp": "Internet Service Provider",
"installed_at": "2026-07-22T00:00:00",
"os": "Windows 7"
},
"price": "19.99",
"currency": "usd"
},
"metadata": {
"estimated_created_at": "2025-01-01T00:00:00",
"flare_url": "https://app.flare.io/#/uid",
"matched_at": null,
"severity": "info",
"uid": "index/source/id"
}
}
```
24 changes: 24 additions & 0 deletions docs/snippets/event_model_examples/events_overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@

import BlogPost from '/snippets/event_model_examples/blog_post.mdx'

import Bot from '/snippets/event_model_examples/bot.mdx'

import Bucket from '/snippets/event_model_examples/bucket.mdx'

import BucketObject from '/snippets/event_model_examples/bucket_object.mdx'

import ChatMessage from '/snippets/event_model_examples/chat_message.mdx'

import CreditCard from '/snippets/event_model_examples/credit_card.mdx'
Expand All @@ -22,30 +26,50 @@ import DockerRepository from '/snippets/event_model_examples/docker_repository.m

import ForumPost from '/snippets/event_model_examples/forum_post.mdx'

import InvalidCredential from '/snippets/event_model_examples/invalid_credential.mdx'

import Leak from '/snippets/event_model_examples/leak.mdx'

import LeakedCredential from '/snippets/event_model_examples/leaked_credential.mdx'

import Listing from '/snippets/event_model_examples/listing.mdx'

import LookalikeDomain from '/snippets/event_model_examples/lookalike_domain.mdx'

import MitigatedCredential from '/snippets/event_model_examples/mitigated_credential.mdx'

import Paste from '/snippets/event_model_examples/paste.mdx'

import RansomLeak from '/snippets/event_model_examples/ransom_leak.mdx'

import Service from '/snippets/event_model_examples/service.mdx'

import SocialMediaAccount from '/snippets/event_model_examples/social_media_account.mdx'

import StealerLog from '/snippets/event_model_examples/stealer_log.mdx'

import ValidCredential from '/snippets/event_model_examples/valid_credential.mdx'

<ResponseExample>
<BlogPost />
<Bot />
<Bucket />
<BucketObject />
<ChatMessage />
<CreditCard />
<DockerImage />
<DockerRepository />
<ForumPost />
<InvalidCredential />
<Leak />
<LeakedCredential />
<Listing />
<LookalikeDomain />
<MitigatedCredential />
<Paste />
<RansomLeak />
<Service />
<SocialMediaAccount />
<StealerLog />
<ValidCredential />
</ResponseExample>
Loading