Reference · Tools

TheHive 5

Manage security incidents in TheHive 5: alerts, cases, observables, tasks, task logs, comments, pages, and queries. Supports binary file attachments.

Action (binary) Productivity v1 Binary data

TheHive 5 node manages security incidents on the version 5 API — alerts, cases, observables, tasks, task logs, comments, pages and queries — with binary attachments. A typical build is opening a case from a detection and building it out with observables, tasks and evidence as the investigation proceeds.

Node type
Action (binary)
Parameters
63
Outputs
Output, Error
Credentials
TheHive 5 API

TheHive 5

Manage security incidents in TheHive 5 with binary attachment support

Overview

TheHive 5 is an open-source Security Incident Response Platform. This tool provides full CRUD for alerts, cases, tasks, task logs, observables, comments, and pages. It supports binary data operations: downloading case attachments (Pattern A), uploading case/log attachments and file-type observables (Pattern B), and executing arbitrary TheHive Query DSL queries. Integrates with Cortex for automated analysis and response via analyzers and responders.

Category: Productivity
Tool Name: thehive_project
Version: 1

Appearance: Icon: lucide-Shield | Color: #F8A51C

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires TheHive 5 API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Alertalert
Casecase
Commentcomment
Observableobservable
Pagepage
Queryquery
Tasktask
Task Loglog

Operations

Alert (alert)

OperationValueDescription
CreatecreateCreate an alert.
DeletedeleteAlertDelete an alert.
Execute ResponderexecuteResponderRun a Cortex responder against an alert.
GetgetRetrieve a single alert.
Merge Into CasemergeMerge an alert into an existing case.
Promote to CasepromoteTurn an alert into a new case.
SearchsearchSearch alerts.
UpdateupdateUpdate an alert.
Update StatusstatusSet an alert’s status.

Case (case)

OperationValueDescription
Add AttachmentaddAttachmentUpload one or more files to a case.
CreatecreateCreate a case.
Delete AttachmentdeleteAttachmentRemove an attachment from a case.
Delete CasedeleteCaseDelete a case.
Execute ResponderexecuteResponderRun a Cortex responder against a case.
GetgetRetrieve a single case.
Get AttachmentgetAttachmentDownload a case attachment as binary data.
Get TimelinegetTimelineRetrieve a case’s timeline.
SearchsearchSearch cases.
UpdateupdateUpdate a case.

Comment (comment)

OperationValueDescription
CreateaddAdd a comment to an alert or a case.
DeletedeleteCommentDelete a comment.
SearchsearchSearch comments.
UpdateupdateChange a comment’s message.

Observable (observable)

OperationValueDescription
CreatecreateCreate an observable in a case or an alert.
DeletedeleteObservableDelete an observable.
Execute AnalyzerexecuteAnalyzerRun one or more Cortex analyzers against an observable.
Execute ResponderexecuteResponderRun a Cortex responder against an observable.
GetgetRetrieve a single observable.
SearchsearchSearch observables.
UpdateupdateUpdate an observable.

Page (page)

OperationValueDescription
CreatecreateCreate a page in a case or in the knowledge base.
DeletedeletePageDelete a page.
SearchsearchSearch pages.
UpdateupdateUpdate a page.

Query (query)

OperationValueDescription
Execute QueryexecuteQueryRun a TheHive Query DSL query.

Task (task)

OperationValueDescription
CreatecreateCreate a task under a case.
DeletedeleteTaskDelete a task.
Execute ResponderexecuteResponderRun a Cortex responder against a task.
GetgetRetrieve a single task.
SearchsearchSearch tasks.
UpdateupdateUpdate a task.

Task Log (log)

OperationValueDescription
Add AttachmentaddAttachmentUpload one or more files to an existing log entry.
CreatecreateCreate a log entry under a task, optionally with attachments.
DeletedeleteLogDelete a log entry.
Delete AttachmentdeleteAttachmentRemove an attachment from a log entry.
Execute ResponderexecuteResponderRun a Cortex responder against a log entry.
GetgetRetrieve a single log entry.
SearchsearchSearch log entries.

Parameters

String, number and JSON fields are resolved per input item, so they accept {{ $json.field }} expressions.

Alert: Create

ParameterTypeRequiredDefaultDescription
Alert Fields (JSON)jsonYes{}JSON object with alert fields: title, description, type, source, sourceRef, severity (1-4), tlp (0-3), pap (0-3), tags (comma-separated), date, summary, status, follow, flag, externalLink, caseTemplate, lastSyncDate.
Observables (JSON Array)jsonNo[]JSON array of observables to attach to the alert. Each: { dataType, data, message, tags }. For file-type, set dataType=“file” and provide binaryProperty name in “binaryProperty” field.

Alert: Delete

ParameterTypeRequiredDefaultDescription
Alert IDstringYesID of the alert (e.g. ~123456).

Alert: Execute Responder

ParameterTypeRequiredDefaultDescription
Alert IDstringYesID of the alert (e.g. ~123456).
Responder IDstringYesID of the Cortex responder to execute.

Alert: Get

ParameterTypeRequiredDefaultDescription
Alert IDstringYesID of the alert (e.g. ~123456).

Alert: Merge Into Case

ParameterTypeRequiredDefaultDescription
Alert IDstringYesID of the alert (e.g. ~123456).
Case ID (Merge Target)stringYesID of the case to merge the alert into.

Alert: Promote to Case

ParameterTypeRequiredDefaultDescription
Alert IDstringYesID of the alert (e.g. ~123456).
Case TemplatestringNoOptional case template name to use when promoting alert to case.
ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (JSON Array)jsonNo[]JSON array of filter objects: [{ field, operator, value }]. Operators: _eq, _ne, _gt, _gte, _lt, _lte, _like, _startsWith, _endsWith, _match, _between (use from/to), _in (use values).
Sort (JSON Array)jsonNo[]JSON array of sort objects: [{ field, direction }]. Direction: “asc” or “desc”.
Return CountbooleanNofalseWhether to return only the count of matching results.
Extra DatastringNoComma-separated list of extra data fields to include (e.g., isOwner, links, permissions, shares, shareCount, taskStats, observableStats).

Alert: Update

ParameterTypeRequiredDefaultDescription
Alert IDstringYesID of the alert (e.g. ~123456).
Update Fields (JSON) (updateFields)jsonNo{}JSON object with fields to update. Supports addTags, removeTags for incremental tag management.

Alert: Update Status

ParameterTypeRequiredDefaultDescription
Alert IDstringYesID of the alert (e.g. ~123456).
StatusoptionsNoNewNew status for the alert.
Options: New, Updated, Ignored, Imported

Case: Add Attachment

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).
Binary PropertystringNodataName of the binary property to read from (upload) or write to (download) on the item. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use.
Attachment Binary Properties (Comma-Separated) (attachmentFields)stringNodataComma-separated list of binary property names on the input item to upload as attachments.
Rename FilesbooleanNofalseWhether to rename the file if one with the same name already exists.

Case: Create

ParameterTypeRequiredDefaultDescription
Case Fields (JSON)jsonYes{}JSON object with case fields: title, description, severity (1-4), startDate, tags, tlp (0-3), pap (0-3), endDate, flag, summary, status, assignee, caseTemplate, tasks, sharingParameters, impactStatus, taskRule, observableRule.

Case: Delete Attachment

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).
Attachment ID (attachmentId)stringYesID of the attachment to download or delete.

Case: Delete Case

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).

Case: Execute Responder

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).
Responder IDstringYesID of the Cortex responder to execute.

Case: Get

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).

Case: Get Attachment

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).
Attachment ID (attachmentId)stringYesID of the attachment to download or delete.
Binary PropertystringNodataName of the binary property to read from (upload) or write to (download) on the item. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use.
File NamestringNoRename the file when downloading. Leave empty to use the original name.

Case: Get Timeline

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).
ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (JSON Array)jsonNo[]JSON array of filter objects: [{ field, operator, value }]. Operators: _eq, _ne, _gt, _gte, _lt, _lte, _like, _startsWith, _endsWith, _match, _between (use from/to), _in (use values).
Sort (JSON Array)jsonNo[]JSON array of sort objects: [{ field, direction }]. Direction: “asc” or “desc”.
Return CountbooleanNofalseWhether to return only the count of matching results.
Extra DatastringNoComma-separated list of extra data fields to include (e.g., isOwner, links, permissions, shares, shareCount, taskStats, observableStats).

Case: Update

ParameterTypeRequiredDefaultDescription
Case IDstringYesID of the case (e.g. ~123456).
Update Fields (JSON) (updateFields)jsonNo{}JSON object with fields to update on the case.

Comment: Create

ParameterTypeRequiredDefaultDescription
Add TooptionsNocaseWhether to add the comment to an alert or a case.
Options: alert, case
Parent ID (parentId)stringYesID of the alert or case to add the comment to.
MessagestringYesThe comment message text.

Comment: Delete

ParameterTypeRequiredDefaultDescription
Comment IDstringYesID of the comment.
ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (JSON Array)jsonNo[]JSON array of filter objects: [{ field, operator, value }]. Operators: _eq, _ne, _gt, _gte, _lt, _lte, _like, _startsWith, _endsWith, _match, _between (use from/to), _in (use values).
Sort (JSON Array)jsonNo[]JSON array of sort objects: [{ field, direction }]. Direction: “asc” or “desc”.
Return CountbooleanNofalseWhether to return only the count of matching results.
Extra DatastringNoComma-separated list of extra data fields to include (e.g., isOwner, links, permissions, shares, shareCount, taskStats, observableStats).

Comment: Update

ParameterTypeRequiredDefaultDescription
Comment IDstringYesID of the comment.
MessagestringYesThe comment message text.

Observable: Create

ParameterTypeRequiredDefaultDescription
Create In (createIn)optionsNocaseWhether to create the observable in a case or an alert.
Options: case, alert
Parent ID (parentId)stringYesID of the parent case or alert.
Data Type (dataType)stringYesfileObservable data type: file, ip, domain, url, hash, filename, mail, registry, etc. Use “file” for binary upload.
DatastringNoObservable value (e.g., IP address, domain, hash). Not used when dataType is “file”.
Observable Fields (JSON)jsonNo{}JSON object with additional observable fields: message, tags, tlp (0-3), pap (0-3), ioc, sighted, sightedAt, ignoreSimilarity, isZip, zipPassword.
Attachment Binary Properties (Comma-Separated) (attachmentFields)stringNodataComma-separated list of binary property names on the input item to upload as file-type observable attachments.

Observable: Delete

ParameterTypeRequiredDefaultDescription
Observable IDstringYesID of the observable.

Observable: Execute Analyzer

ParameterTypeRequiredDefaultDescription
Observable IDstringYesID of the observable.
Analyzer IDs (Comma-Separated)stringYesComma-separated list of analyzer IDs in format “analyzerId::cortexId”.
Data Type (dataType)stringNoObservable data type (required for analyzer execution).

Observable: Execute Responder

ParameterTypeRequiredDefaultDescription
Observable IDstringYesID of the observable.
Responder IDstringYesID of the Cortex responder to execute.

Observable: Get

ParameterTypeRequiredDefaultDescription
Observable IDstringYesID of the observable.
ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (JSON Array)jsonNo[]JSON array of filter objects: [{ field, operator, value }]. Operators: _eq, _ne, _gt, _gte, _lt, _lte, _like, _startsWith, _endsWith, _match, _between (use from/to), _in (use values).
Sort (JSON Array)jsonNo[]JSON array of sort objects: [{ field, direction }]. Direction: “asc” or “desc”.
Return CountbooleanNofalseWhether to return only the count of matching results.
Extra DatastringNoComma-separated list of extra data fields to include (e.g., isOwner, links, permissions, shares, shareCount, taskStats, observableStats).

Observable: Update

ParameterTypeRequiredDefaultDescription
Observable IDstringYesID of the observable.
Update Fields (JSON) (updateFields)jsonNo{}JSON object with fields to update on the observable.

Page: Create

ParameterTypeRequiredDefaultDescription
Create In (pageLocation)optionsNocaseWhether to create the page inside a case or in the knowledge base.
Options: case, knowledgeBase
Case ID (For Page)stringNoID of the case to create the page under. Required when creating in a case. (shown when Create In (pageLocation) is case)
TitlestringYesPage title.
CategorystringYesPage category.
ContentstringYesPage content (supports markdown).

Page: Delete

ParameterTypeRequiredDefaultDescription
Page IDstringYesID of the page.
ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (JSON Array)jsonNo[]JSON array of filter objects: [{ field, operator, value }]. Operators: _eq, _ne, _gt, _gte, _lt, _lte, _like, _startsWith, _endsWith, _match, _between (use from/to), _in (use values).
Sort (JSON Array)jsonNo[]JSON array of sort objects: [{ field, direction }]. Direction: “asc” or “desc”.
Return CountbooleanNofalseWhether to return only the count of matching results.
Extra DatastringNoComma-separated list of extra data fields to include (e.g., isOwner, links, permissions, shares, shareCount, taskStats, observableStats).

Page: Update

ParameterTypeRequiredDefaultDescription
Page IDstringYesID of the page.
Update Fields (JSON) (updateFields)jsonNo{}JSON object with fields to update: title, category, content.

Query: Execute Query

ParameterTypeRequiredDefaultDescription
Query (JSON)jsonYes[{"_name": "listOrganisation"}]TheHive Query DSL as a JSON array. See TheHive API docs for query syntax.

Task: Create

ParameterTypeRequiredDefaultDescription
Case ID (For Task)stringYesID of the case to create the task under.
Task Fields (JSON)jsonYes{}JSON object with task fields: title (required), description, group, flag, status, startDate, dueDate, endDate, assignee, mandatory, order.

Task: Delete

ParameterTypeRequiredDefaultDescription
Task IDstringYesID of the task.

Task: Execute Responder

ParameterTypeRequiredDefaultDescription
Task IDstringYesID of the task.
Responder IDstringYesID of the Cortex responder to execute.

Task: Get

ParameterTypeRequiredDefaultDescription
Task IDstringYesID of the task.
ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (JSON Array)jsonNo[]JSON array of filter objects: [{ field, operator, value }]. Operators: _eq, _ne, _gt, _gte, _lt, _lte, _like, _startsWith, _endsWith, _match, _between (use from/to), _in (use values).
Sort (JSON Array)jsonNo[]JSON array of sort objects: [{ field, direction }]. Direction: “asc” or “desc”.
Return CountbooleanNofalseWhether to return only the count of matching results.
Extra DatastringNoComma-separated list of extra data fields to include (e.g., isOwner, links, permissions, shares, shareCount, taskStats, observableStats).

Task: Update

ParameterTypeRequiredDefaultDescription
Task IDstringYesID of the task.
Update Fields (JSON) (updateFields)jsonNo{}JSON object with fields to update on the task.

Task Log: Add Attachment

ParameterTypeRequiredDefaultDescription
Log IDstringYesID of the task log entry.
Binary PropertystringNodataName of the binary property to read from (upload) or write to (download) on the item. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use.
Attachment Binary Properties (Comma-Separated) (attachmentFields)stringNodataComma-separated list of binary property names on the input item to upload as attachments.

Task Log: Create

ParameterTypeRequiredDefaultDescription
Task ID (For Log)stringYesID of the task to create the log entry under.
Log Fields (JSON)jsonYes{}JSON object with log fields: message (required), startDate.
Attachment Binary Properties (Comma-Separated) (attachmentFields)stringNoComma-separated list of binary property names to upload as attachments when creating a log entry. Leave empty for no attachments.

Task Log: Delete

ParameterTypeRequiredDefaultDescription
Log IDstringYesID of the task log entry.

Task Log: Delete Attachment

ParameterTypeRequiredDefaultDescription
Log IDstringYesID of the task log entry.
Attachment ID (attachmentId)stringYesID of the log attachment to delete.

Task Log: Execute Responder

ParameterTypeRequiredDefaultDescription
Log IDstringYesID of the task log entry.
Responder IDstringYesID of the Cortex responder to execute.

Task Log: Get

ParameterTypeRequiredDefaultDescription
Log IDstringYesID of the task log entry.
ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Filters (JSON Array)jsonNo[]JSON array of filter objects: [{ field, operator, value }]. Operators: _eq, _ne, _gt, _gte, _lt, _lte, _like, _startsWith, _endsWith, _match, _between (use from/to), _in (use values).
Sort (JSON Array)jsonNo[]JSON array of sort objects: [{ field, direction }]. Direction: “asc” or “desc”.
Return CountbooleanNofalseWhether to return only the count of matching results.
Extra DatastringNoComma-separated list of extra data fields to include (e.g., isOwner, links, permissions, shares, shareCount, taskStats, observableStats).

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

Most operations produce one output item per input item, but the shape of that item is not uniform across operations — this node has three distinct behaviours, so check the table below before writing downstream expressions.

  • Merged — the response is spread over the incoming item JSON, so your own fields survive alongside it.
  • Replaced — the response object becomes the item JSON, and the incoming fields are gone.
  • Marked — nothing useful comes back from TheHive, so the node adds a small marker (deleted, success) to the incoming item JSON.

Binary data on the input item is forwarded on every branch. Case: Get Attachment is the only operation that produces new binary: the downloaded file is added under the name in Binary Property (default data), next to any binary already on the item. Uploads read their files from Attachment Binary Properties, and file-type observables sent with Alert: Create read theirs from the binaryProperty name inside each observable entry.

Which operations fan out. Every search operation — Alert: Search, Case: Search, Comment: Search, Observable: Search, Page: Search, Task: Search and Task Log: Search — emits one output item per matching record, with the record replacing the item JSON. Query: Execute Query fans out the same way whenever the query returns an array. Special cases: a search that matches nothing emits a single item carrying the input JSON plus results: []; an empty query result emits one item with queryResult: []; and with Return Count on, a search emits a single item carrying count instead of records.

OperationShapeWhat lands on the output item
Alert: Create, Case: Create, Observable: Create, Task: Create, Task Log: CreateMergedThe created record, spread over the incoming item JSON
Alert: Get, Alert: Update, Alert: Update Status, Alert: Merge Into Case, Alert: Promote to CaseReplacedThe alert (or resulting case) returned by TheHive
Case: Get, Case: Update, Case: Get TimelineReplacedThe case record, or the timeline for getTimeline
Comment: Create, Comment: UpdateReplacedThe comment record
Observable: Get, Observable: UpdateReplacedThe observable record
Page: Create, Page: UpdateReplacedThe page record
Task: Get, Task: Update, Task Log: GetReplacedThe task or log record
Alert: DeleteMarkeddeleted: true and alertId
Case: Delete CaseMarkeddeleted: true and caseId
Case: Delete Attachment, Task Log: Delete AttachmentMarkeddeleted: true and attachmentId
Comment: DeleteMarkeddeleted: true and commentId
Observable: DeleteMarkeddeleted: true and observableId
Page: DeleteMarkeddeleted: true and pageId
Task: DeleteMarkeddeleted: true and taskId
Task Log: DeleteMarkeddeleted: true and logId
Task Log: Add AttachmentMarkedsuccess: true
Case: Add AttachmentReplacedThe upload response; when TheHive returns a list, the uploaded files land on attachments
Case: Get AttachmentReplaced_id, caseId, fileName and mimeType, plus the downloaded file in binary
Alert / Case / Observable / Task / Task Log: Execute ResponderReplacedThe finished Cortex action, polled until it is no longer waiting or in progress; a list of actions lands on results
Observable: Execute AnalyzerReplacedThe last analyzer job’s result, polled to completion
Any searchReplaced, fanned outOne record per output item
Query: Execute QueryReplaced, fanned out for arraysOne query result per output item; a single object replaces the item JSON

When TheHive answers with something that is not an object, the node falls back to a marker on the incoming item JSON instead: updated: true for the update operations, merged: true for Alert: Merge Into Case, promoted: true for Alert: Promote to Case, the chosen status value for Alert: Update Status, success: true for Comment: Create and Case: Add Attachment, and the raw body on result, timeline or queryResult.

Reference the result downstream by expression, e.g. {{ $json.deleted }} after a delete, {{ $json.fileName }} after Case: Get Attachment, or {{ $json.count }} after a search with Return Count on.

Usage Examples

  • Create a new security case in TheHive
  • Search alerts by severity
  • Upload a file as a case attachment
  • Download a case attachment
  • Create an observable with a file upload
  • Execute a Cortex analyzer on an observable
  • Run a TheHive Query DSL query

Example Configuration

Create an alert with observables:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "alert",
    "operation": "create",
    "alertFields": {
      "title": "Suspicious Activity Detected",
      "description": "Malicious IP detected in network traffic",
      "type": "network-intrusion",
      "source": "SIEM",
      "sourceRef": "ALERT-2024-001",
      "severity": 3,
      "tlp": 2,
      "pap": 1,
      "tags": "malware,network,suspicious",
      "status": "New"
    },
    "observables": [
      {
        "dataType": "ip",
        "data": "192.168.1.100",
        "message": "Suspicious source IP",
        "tags": ["suspicious", "network"]
      },
      {
        "dataType": "domain",
        "data": "malicious-domain.com",
        "message": "C2 domain"
      }
    ]
  }
}

Search cases with filters:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "case",
    "operation": "search",
    "returnAll": false,
    "limit": 50,
    "filters": [
      {
        "field": "severity",
        "operator": "_gte",
        "value": 3
      },
      {
        "field": "status",
        "operator": "_in",
        "values": ["Open", "InProgress"]
      }
    ],
    "sortFields": [
      {
        "field": "createdAt",
        "direction": "desc"
      }
    ],
    "extraData": "taskStats,observableStats"
  }
}

Create a task in a case:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "task",
    "operation": "create",
    "caseId": "~123456",
    "taskFields": {
      "title": "Analyze network logs",
      "description": "Review network logs for the timeframe of the incident",
      "group": "Investigation",
      "status": "Waiting",
      "assignee": "analyst@company.com",
      "mandatory": true
    }
  }
}

Create an observable in a case with a file attachment:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "observable",
    "operation": "create",
    "createIn": "case",
    "parentId": "~123456",
    "dataType": "file",
    "observableFields": {
      "message": "Malware sample",
      "tags": ["malware", "sample"],
      "ioc": true,
      "tlp": 3
    },
    "attachmentFields": "malware_sample"
  }
}

Execute a responder on an alert:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "alert",
    "operation": "executeResponder",
    "alertId": "~789012",
    "responderId": "EmailNotification_1_0"
  }
}

Add a comment to a case:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "comment",
    "operation": "add",
    "addTo": "case",
    "parentId": "~123456",
    "message": "Investigation completed. No evidence of data exfiltration found."
  }
}

Update a case:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "case",
    "operation": "update",
    "caseId": "~123456",
    "updateFields": {
      "status": "Resolved",
      "summary": "False positive - benign network activity",
      "endDate": "2024-01-15T10:30:00Z",
      "addTags": "false-positive,resolved"
    }
  }
}

Download a case attachment:

{
  "type": "thehive_project",
  "parameters": {
    "resource": "case",
    "operation": "getAttachment",
    "caseId": "~123456",
    "attachmentId": "~attachment789",
    "binaryPropertyName": "downloaded_file",
    "fileName": "evidence.zip"
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manage security incidents in TheHive 5 — alerts, cases, observables, tasks, logs, comments, pages, with binary attachment support.

Frequently asked questions

What does it add over TheHive v3/v4 node?

Comments, pages and queries alongside the familiar alerts, cases, observables and tasks — reflecting what version 5's API exposes.

What is the queries resource for?

Running TheHive's own query language against the data, which is how you find cases or observables matching criteria rather than fetching by ID.

Can it attach evidence?

Yes — binary file attachments are supported on the relevant resources.

How do I react to events in TheHive 5?

Use TheHive 5 Trigger, which receives webhook notifications with optional field-level filtering.

Build with the TheHive 5 node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need TheHive 5 API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.