@binalyze/air-sdk 5.23.0 → 5.24.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,7 +25,7 @@ export declare const capabilitiesV2ApiControllerGet: <ThrowOnError extends boole
25
25
  export declare const openApiAliasV2ApiControllerGet: <ThrowOnError extends boolean = false>(options?: Options<OpenApiAliasV2ApiControllerGetData, ThrowOnError>) => import("./client").RequestResult<OpenApiAliasV2ApiControllerGetResponses, OpenApiAliasV2ApiControllerGetErrors, ThrowOnError>;
26
26
  /**
27
27
  * Get task by id
28
- * Fetch one Binalyze AIR task by UUID using GET /api/v2/tasks/{taskId}. Type-independent: works for triage, acquisition, interactShell and other task types. The response wraps the single task in result.entities[0] and is polymorphic: it carries a type/subtype discriminator plus only the matching domain block (triage{} / acquisition{} / interactShell{}); other blocks are absent, not null. It also returns counts{assigned,completed,failed,cancelled}, organization{id,name}, cases[], schedule (null when not scheduled) and taskAssignments{taskAssignmentCount,taskAssignmentsUrl}. Use air-tasks-assignments for the full per-endpoint assignment list and air-tasks-assets for the targeted assets. Only a task UUID is accepted; names and hostnames are rejected. A 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe), so do not infer the task does not exist.
28
+ * Fetch one Binalyze AIR task by UUID using GET /api/v2/tasks/{taskId}. Type-independent: works for triage, acquisition, interactShell and other task types. The response wraps the single task in result.entities[0] and is polymorphic: it carries a type/subtype discriminator plus only the matching domain block (triage{} / acquisition{} / interactShell{}); other blocks are absent, not null. It also returns counts{assigned,completed,failed,cancelled}, organizations[{id,name}], cases[], schedule (null when not scheduled) and taskAssignments{taskAssignmentCount,taskAssignmentsUrl}. Use air-tasks-assignments for the full per-endpoint assignment list and air-tasks-assets for the targeted assets. Only a task UUID is accepted; names and hostnames are rejected. A 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe), so do not infer the task does not exist.
29
29
  */
30
30
  export declare const tasksV2ApiControllerGetTaskById: <ThrowOnError extends boolean = false>(options: Options<TasksV2ApiControllerGetTaskByIdData, ThrowOnError>) => import("./client").RequestResult<TasksV2ApiControllerGetTaskByIdResponses, TasksV2ApiControllerGetTaskByIdErrors, ThrowOnError>;
31
31
  /**
@@ -40,7 +40,7 @@ export declare const tasksV2ApiControllerUpdateTask: <ThrowOnError extends boole
40
40
  export declare const tasksV2ApiControllerListTaskAssets: <ThrowOnError extends boolean = false>(options: Options<TasksV2ApiControllerListTaskAssetsData, ThrowOnError>) => import("./client").RequestResult<TasksV2ApiControllerListTaskAssetsResponses, TasksV2ApiControllerListTaskAssetsErrors, ThrowOnError>;
41
41
  /**
42
42
  * List a task assignments
43
- * List the per-endpoint task assignments of one Binalyze AIR task using GET /api/v2/tasks/{taskId}/task-assignments. Paginated; this is the resolver for the taskAssignmentsUrl field in task detail responses. Each entity carries id, taskId, name, type, endpointId, endpointName, status, progress, hasDroneData, durations, metadata, organization{id,name}, response and cases[]. Use this when the user wants per-host progress, per-host status, or which endpoints completed/failed for a task; use air-tasks-assets for asset details instead. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe). Placeholder defaults such as pageNumber=1 are ignored.
43
+ * List the per-endpoint task assignments of one Binalyze AIR task using GET /api/v2/tasks/{taskId}/task-assignments. Paginated; this is the resolver for the taskAssignmentsUrl field in task detail responses. Each entity carries id, taskId, name, type, endpointId, endpointName, status, progress, hasDroneData, durations, metadata, organizations[{id,name}], response and cases[]. Use this when the user wants per-host progress, per-host status, or which endpoints completed/failed for a task; use air-tasks-assets for asset details instead. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe). Placeholder defaults such as pageNumber=1 are ignored.
44
44
  */
45
45
  export declare const tasksV2ApiControllerListTaskAssignments: <ThrowOnError extends boolean = false>(options: Options<TasksV2ApiControllerListTaskAssignmentsData, ThrowOnError>) => import("./client").RequestResult<TasksV2ApiControllerListTaskAssignmentsResponses, TasksV2ApiControllerListTaskAssignmentsErrors, ThrowOnError>;
46
46
  /**
@@ -50,12 +50,12 @@ export declare const tasksV2ApiControllerListTaskAssignments: <ThrowOnError exte
50
50
  export declare const tasksTriageV2ApiControllerListHuntTasks: <ThrowOnError extends boolean = false>(options?: Options<TasksTriageV2ApiControllerListHuntTasksData, ThrowOnError>) => import("./client").RequestResult<TasksTriageV2ApiControllerListHuntTasksResponses, TasksTriageV2ApiControllerListHuntTasksErrors, ThrowOnError>;
51
51
  /**
52
52
  * Bulk cancel hunt (triage) tasks (body dryRun preview)
53
- * Cancel one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/cancel. MUTATING: cancels ALL active assignments of each task across all its assets; cancellation is queued asynchronously and an abort signal is sent to the agents. Task records and downloaded data are kept (use air-hunt-bulk-delete to remove them). taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and cancels EVERY active (scheduled/assigned/processing) hunt task in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists; confirm with the user before using it. dryRun defaults to true: the preview (200) returns result.entities[] = {taskId, taskName, willCancelAssignmentCount, status} without cancelling anything. ALWAYS run the preview first and show the user what would be cancelled; pass dryRun=false only after the user explicitly confirms the exact task list. The real cancel returns cancelledAssignmentCount and status 'cancelling' instead. Both forms include warnings[] for skipped tasks (e.g. already in a terminal state). 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-cancel, which returns a leak-safe 404 for unknown ids.
53
+ * Cancel one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/cancel. MUTATING: cancels ALL active assignments of each task across all its assets; cancellation is queued asynchronously and an abort signal is sent to the agents. Task records and downloaded data are kept (use air-hunt-bulk-delete to remove them). taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and cancels EVERY active (scheduled/assigned/processing) hunt task in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists; confirm with the user before using it. dryRun is opt-in at the API level (defaults to false); the OpenCode tools send dryRun=true by default. The preview (200) returns result.entities[] = {taskId, taskName, willCancelAssignmentCount, status} without cancelling anything. ALWAYS run the preview first and show the user what would be cancelled; pass dryRun=false only after the user explicitly confirms the exact task list. The real cancel returns cancelledAssignmentCount and status 'cancelling' instead. Both forms include warnings[] for skipped tasks (e.g. already in a terminal state). 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-cancel, which returns a leak-safe 404 for unknown ids.
54
54
  */
55
55
  export declare const tasksTriageV2ApiControllerCancel: <ThrowOnError extends boolean = false>(options: Options<TasksTriageV2ApiControllerCancelData, ThrowOnError>) => import("./client").RequestResult<TasksTriageV2ApiControllerCancelResponses, TasksTriageV2ApiControllerCancelErrors, ThrowOnError>;
56
56
  /**
57
57
  * Bulk delete hunt (triage) tasks (body dryRun preview)
58
- * Delete one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/delete. DESTRUCTIVE and irreversible: removes the task records, ALL assignments, and downloaded files/artifacts; nothing remains in history. Active tasks additionally get an agent cancel signal. Use air-hunt-bulk-cancel to merely stop tasks while keeping records. taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and deletes EVERY hunt task (active and finished) in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists. dryRun defaults to true: the preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS run the preview first and show the user what would be deleted; pass dryRun=false only after the user explicitly confirms the exact task list. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-delete (leak-safe 404).
58
+ * Delete one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/delete. DESTRUCTIVE and irreversible: removes the task records, ALL assignments, and downloaded files/artifacts; nothing remains in history. Active tasks additionally get an agent cancel signal. Use air-hunt-bulk-cancel to merely stop tasks while keeping records. taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and deletes EVERY hunt task (active and finished) in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists. dryRun is opt-in at the API level (defaults to false); the OpenCode tools send dryRun=true by default. The preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS run the preview first and show the user what would be deleted; pass dryRun=false only after the user explicitly confirms the exact task list. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-delete (leak-safe 404).
59
59
  */
60
60
  export declare const tasksTriageV2ApiControllerDelete: <ThrowOnError extends boolean = false>(options: Options<TasksTriageV2ApiControllerDeleteData, ThrowOnError>) => import("./client").RequestResult<TasksTriageV2ApiControllerDeleteResponses, TasksTriageV2ApiControllerDeleteErrors, ThrowOnError>;
61
61
  /**
@@ -65,17 +65,17 @@ export declare const tasksTriageV2ApiControllerDelete: <ThrowOnError extends boo
65
65
  export declare const tasksTriageV2ApiControllerCancelOne: <ThrowOnError extends boolean = false>(options: Options<TasksTriageV2ApiControllerCancelOneData, ThrowOnError>) => import("./client").RequestResult<TasksTriageV2ApiControllerCancelOneResponses, TasksTriageV2ApiControllerCancelOneErrors, ThrowOnError>;
66
66
  /**
67
67
  * Delete a single hunt (triage) task (dryRun query preview)
68
- * Delete a single Binalyze AIR hunt (triage) task via POST /api/v2/hunt/{taskId}/delete. DESTRUCTIVE and irreversible: removes the task record, ALL its assignments, and downloaded files/artifacts; nothing remains in history. An active task additionally gets an agent cancel signal. Use air-hunt-cancel to merely stop the task while keeping records. Use this for exactly one task; use air-hunt-bulk-delete for several tasks at once. The taskId comes from air-hunt-list or air-tasks-get. dryRun defaults to true and is sent as the ?dryRun=true query parameter: the preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS preview first and show the user; pass dryRun=false only after the user explicitly confirms this exact task. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe).
68
+ * Delete a single Binalyze AIR hunt (triage) task via POST /api/v2/hunt/{taskId}/delete. DESTRUCTIVE and irreversible: removes the task record, ALL its assignments, and downloaded files/artifacts; nothing remains in history. An active task additionally gets an agent cancel signal. Use air-hunt-cancel to merely stop the task while keeping records. Use this for exactly one task; use air-hunt-bulk-delete for several tasks at once. The taskId comes from air-hunt-list or air-tasks-get. dryRun is opt-in at the API level (defaults to false) and is sent as the ?dryRun=true query parameter; the OpenCode tools send it by default. The preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS preview first and show the user; pass dryRun=false only after the user explicitly confirms this exact task. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe).
69
69
  */
70
70
  export declare const tasksTriageV2ApiControllerDeleteOne: <ThrowOnError extends boolean = false>(options: Options<TasksTriageV2ApiControllerDeleteOneData, ThrowOnError>) => import("./client").RequestResult<TasksTriageV2ApiControllerDeleteOneResponses, TasksTriageV2ApiControllerDeleteOneErrors, ThrowOnError>;
71
71
  /**
72
72
  * List device acquisition profiles
73
- * List Binalyze AIR device (evidence) acquisition profiles via GET /api/v2/libraries/acquisition/device. Read-only and paginated. Each entity is a profile summary: id, name, organizationIds, averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. Per-OS configs (windows/linux/macos/aix/eDiscovery) are NOT included; use air-acquisition-device-get for one profile's full config. Use this when the user asks to list or search evidence acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with empty organizationIds are global.
73
+ * List Binalyze AIR device (evidence) acquisition profiles via GET /api/v2/libraries/acquisition/device. Read-only and paginated. Each entity is a profile summary: id, name, organizations[{id,name}], averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. Per-OS configs (windows/linux/macos/aix/eDiscovery) are NOT included; use air-acquisition-device-get for one profile's full config. Use this when the user asks to list or search evidence acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with an empty organizations array are global.
74
74
  */
75
75
  export declare const acquisitionLibraryDeviceV2ApiControllerList: <ThrowOnError extends boolean = false>(options?: Options<AcquisitionLibraryDeviceV2ApiControllerListData, ThrowOnError>) => import("./client").RequestResult<AcquisitionLibraryDeviceV2ApiControllerListResponses, AcquisitionLibraryDeviceV2ApiControllerListErrors, ThrowOnError>;
76
76
  /**
77
77
  * Create device acquisition profile
78
- * Create a Binalyze AIR device (evidence) acquisition profile via POST /api/v2/libraries/acquisition/device. MUTATING: persists a new profile in the acquisition library. Returns 200 with entities[0] = the created profile detail. `name` is required (alphanumeric) plus at least one config block: windows, linux, macos, aix (each with evidenceList/artifactList/customContentProfiles/networkCapture) or eDiscovery ({patterns:[{pattern,category}]}). Any subset of OS blocks is accepted. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Get the exact evidence/artifact keys from an existing profile (air-acquisition-device-get) when cloning or when unsure of valid values.
78
+ * Create a Binalyze AIR device (evidence) acquisition profile via POST /api/v2/libraries/acquisition/device. MUTATING: persists a new profile in the acquisition library. Returns 200 with entities[0] = the created profile detail. `name` is required (alphanumeric) plus at least one config block: windows, linux, macos, aix (each with evidenceList/artifactList/customContentProfiles/networkCapture) or eDiscovery ({patterns:[{pattern,category}]}). Any subset of OS blocks is accepted. Body `organizationIds` controls which organizations own the profile; common query `organizations`, `orgs`, and `org` parameters are rejected. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Get the exact evidence/artifact keys from an existing profile (air-acquisition-device-get) when cloning or when unsure of valid values.
79
79
  */
80
80
  export declare const acquisitionLibraryDeviceV2ApiControllerCreate: <ThrowOnError extends boolean = false>(options: Options<AcquisitionLibraryDeviceV2ApiControllerCreateData, ThrowOnError>) => import("./client").RequestResult<AcquisitionLibraryDeviceV2ApiControllerCreateResponses, AcquisitionLibraryDeviceV2ApiControllerCreateErrors, ThrowOnError>;
81
81
  /**
@@ -90,7 +90,7 @@ export declare const acquisitionLibraryDeviceV2ApiControllerBulkDelete: <ThrowOn
90
90
  export declare const acquisitionLibraryDeviceV2ApiControllerDelete: <ThrowOnError extends boolean = false>(options: Options<AcquisitionLibraryDeviceV2ApiControllerDeleteData, ThrowOnError>) => import("./client").RequestResult<AcquisitionLibraryDeviceV2ApiControllerDeleteResponses, AcquisitionLibraryDeviceV2ApiControllerDeleteErrors, ThrowOnError>;
91
91
  /**
92
92
  * Get device acquisition profile by id or name
93
- * Get ONE Binalyze AIR device (evidence) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/device/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizationIds, the per-OS configs (windows/linux/macos/aix with evidence and artifact lists), eDiscovery patterns, deletable, and timestamps. Use this when the user asks to show or inspect an evidence acquisition profile's contents, or to clone one. Ids and exact names come from air-acquisition-device-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
93
+ * Get ONE Binalyze AIR device (evidence) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/device/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizations[{id,name}], the per-OS configs (windows/linux/macos/aix with evidence and artifact lists), eDiscovery patterns, deletable, and timestamps. Use this when the user asks to show or inspect an evidence acquisition profile's contents, or to clone one. Ids and exact names come from air-acquisition-device-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
94
94
  */
95
95
  export declare const acquisitionLibraryDeviceV2ApiControllerGet: <ThrowOnError extends boolean = false>(options: Options<AcquisitionLibraryDeviceV2ApiControllerGetData, ThrowOnError>) => import("./client").RequestResult<AcquisitionLibraryDeviceV2ApiControllerGetResponses, AcquisitionLibraryDeviceV2ApiControllerGetErrors, ThrowOnError>;
96
96
  /**
@@ -170,7 +170,7 @@ export declare const caseBulkActionV2ApiControllerClose: <ThrowOnError extends b
170
170
  export declare const caseBulkActionV2ApiControllerArchive: <ThrowOnError extends boolean = false>(options: Options<CaseBulkActionV2ApiControllerArchiveData, ThrowOnError>) => import("./client").RequestResult<CaseBulkActionV2ApiControllerArchiveResponses, CaseBulkActionV2ApiControllerArchiveErrors, ThrowOnError>;
171
171
  /**
172
172
  * List assets linked to case
173
- * List the assets linked to a Binalyze AIR case using GET /api/v2/cases/{idOrName}/assets. Read-only, paginated; returns full canonical v2 asset entities (nested endpoint{} block) for every asset attached to the case. Use this to see which endpoints belong to a case, to pick asset ids for air-cases-remove-assets, or before acting on the case's machines with the asset tools. The path accepts a case UUID or exact case name. JSON only (the API's format=csv variant is not exposed here; use air-cases-export for file exports).
173
+ * List the assets linked to a Binalyze AIR case using GET /api/v2/cases/{idOrName}/assets. Read-only, paginated; returns full canonical v2 asset entities (nested endpoint{} block) for every asset attached to the case. Use this to see which endpoints belong to a case, to pick asset ids for air-cases-remove-assets, or before acting on the case's machines with the asset tools. The path accepts a case UUID or exact case name. Use format=json (default) for a paginated response or format=csv to stream the linked assets as text/csv.
174
174
  */
175
175
  export declare const caseAssetV2ApiControllerFilterAssets: <ThrowOnError extends boolean = false>(options: Options<CaseAssetV2ApiControllerFilterAssetsData, ThrowOnError>) => import("./client").RequestResult<CaseAssetV2ApiControllerFilterAssetsResponses, CaseAssetV2ApiControllerFilterAssetsErrors, ThrowOnError>;
176
176
  /**
@@ -240,7 +240,7 @@ export declare const caseActionV2ApiControllerArchive: <ThrowOnError extends boo
240
240
  export declare const caseActionV2ApiControllerRemoveAssets: <ThrowOnError extends boolean = false>(options: Options<CaseActionV2ApiControllerRemoveAssetsData, ThrowOnError>) => import("./client").RequestResult<CaseActionV2ApiControllerRemoveAssetsResponses, CaseActionV2ApiControllerRemoveAssetsErrors, ThrowOnError>;
241
241
  /**
242
242
  * List cases
243
- * List Binalyze AIR cases using GET /api/v2/cases. Read-only, paginated. Each entity uses object refs: owner{id,name}, organization{id,name}, category{id,name}, tags[], assignedUsers[], plus taskCounts{} and assets/taskAssignments {count,url} summaries. Lifecycle is open -> closed -> archived (no unarchive). Reference filters (owner, assignedUser, category, tags) accept a UUID or an exact name/username; name is a case-insensitive substring match. Use this to find a case id or name before calling air-cases-get, air-cases-update, air-cases-close or the case sub-resource tools. organizations defaults to all accessible organizations.
243
+ * List Binalyze AIR cases using GET /api/v2/cases. Read-only, paginated. Each entity uses object refs: owner{id,name}, organizations[{id,name}], category{id,name}, tags[], assignedUsers[], plus taskCounts{} and assets/taskAssignments {count,url} summaries. Lifecycle is open -> closed -> archived (no unarchive). Reference filters (owner, assignedUser, category, tags) accept a UUID or an exact name/username; name is a case-insensitive substring match. Use this to find a case id or name before calling air-cases-get, air-cases-update, air-cases-close or the case sub-resource tools. organizations defaults to all accessible organizations.
244
244
  */
245
245
  export declare const caseV2ApiControllerFilterCases: <ThrowOnError extends boolean = false>(options?: Options<CaseV2ApiControllerFilterCasesData, ThrowOnError>) => import("./client").RequestResult<CaseV2ApiControllerFilterCasesResponses, CaseV2ApiControllerFilterCasesErrors, ThrowOnError>;
246
246
  /**
@@ -250,7 +250,7 @@ export declare const caseV2ApiControllerFilterCases: <ThrowOnError extends boole
250
250
  export declare const caseV2ApiControllerCreateCase: <ThrowOnError extends boolean = false>(options: Options<CaseV2ApiControllerCreateCaseData, ThrowOnError>) => import("./client").RequestResult<CaseV2ApiControllerCreateCaseResponses, CaseV2ApiControllerCreateCaseErrors, ThrowOnError>;
251
251
  /**
252
252
  * Get case by id or name
253
- * Fetch one Binalyze AIR case by UUID or case name using GET /api/v2/cases/{idOrName}. Read-only; the case is wrapped in result.entities[0]. The entity uses object refs (owner{}, organization{}, category{}, tags[], assignedUsers[]), taskCounts{}, and assets/taskAssignments {count,url} summaries. Lifecycle status is open, closed or archived. A 404 also covers cases outside the caller's organizations (leak-safe), so do not infer the case does not exist. Use air-cases-list to discover ids and names first.
253
+ * Fetch one Binalyze AIR case by UUID or case name using GET /api/v2/cases/{idOrName}. Read-only; the case is wrapped in result.entities[0]. The entity uses object refs (owner{}, organizations[{id,name}], category{}, tags[], assignedUsers[]), taskCounts{}, and assets/taskAssignments {count,url} summaries. Lifecycle status is open, closed or archived. A 404 also covers cases outside the caller's organizations (leak-safe), so do not infer the case does not exist. Use air-cases-list to discover ids and names first.
254
254
  */
255
255
  export declare const caseV2ApiControllerGetCaseByIdOrName: <ThrowOnError extends boolean = false>(options: Options<CaseV2ApiControllerGetCaseByIdOrNameData, ThrowOnError>) => import("./client").RequestResult<CaseV2ApiControllerGetCaseByIdOrNameResponses, CaseV2ApiControllerGetCaseByIdOrNameErrors, ThrowOnError>;
256
256
  /**
@@ -355,7 +355,7 @@ export declare const interactCommandV2ApiControllerList: <ThrowOnError extends b
355
355
  export declare const flagsLibraryV2ApiControllerList: <ThrowOnError extends boolean = false>(options?: Options<FlagsLibraryV2ApiControllerListData, ThrowOnError>) => import("./client").RequestResult<FlagsLibraryV2ApiControllerListResponses, FlagsLibraryV2ApiControllerListErrors, ThrowOnError>;
356
356
  /**
357
357
  * Create investigation flag
358
- * Create a Binalyze AIR investigation flag via POST /api/v2/libraries/flags. MUTATING: persists a new flag. Required: name (max 50 chars, not purely numeric). Optional: color (CSS color, defaults to #4A4D55), description, and organization (id or exact name; defaults to the caller organization when the caller has exactly one, otherwise the default organization). A name collision within the organization is resolved by auto-suffixing with a NAME_ADJUSTED warning; if a unique name cannot be allocated, returns 409 NAME_CONFLICT. dryRun DEFAULTS TO TRUE in the tool layer: the first call previews the would-create entity (action='would-create', final name) without persisting; pass dryRun=false only after the user confirms. Success returns entities[0] with the created flag.
358
+ * Create a Binalyze AIR investigation flag via POST /api/v2/libraries/flags. MUTATING: persists a new flag. Required: name (max 50 chars, not purely numeric). Optional: color (CSS color, defaults to #4A4D55), description, and organization (id or exact name; defaults to the caller organization when the caller has exactly one; multi-organization and all-organization callers must pass it explicitly or receive 400 ORGANIZATION_REQUIRED). A name collision within the organization is resolved by auto-suffixing with a NAME_ADJUSTED warning; if a unique name cannot be allocated, returns 409 NAME_CONFLICT. dryRun DEFAULTS TO TRUE in the tool layer: the first call previews the would-create entity (action='would-create', final name) without persisting; pass dryRun=false only after the user confirms. Success returns entities[0] with the created flag.
359
359
  */
360
360
  export declare const flagsLibraryV2ApiControllerCreate: <ThrowOnError extends boolean = false>(options: Options<FlagsLibraryV2ApiControllerCreateData, ThrowOnError>) => import("./client").RequestResult<FlagsLibraryV2ApiControllerCreateResponses, FlagsLibraryV2ApiControllerCreateErrors, ThrowOnError>;
361
361
  /**
@@ -510,7 +510,7 @@ export declare const assetBulkMetadataV2ApiControllerSetMitreDatabaseVersion: <T
510
510
  export declare const assetBulkMetadataV2ApiControllerDeleteAssets: <ThrowOnError extends boolean = false>(options: Options<AssetBulkMetadataV2ApiControllerDeleteAssetsData, ThrowOnError>) => import("./client").RequestResult<AssetBulkMetadataV2ApiControllerDeleteAssetsResponses, AssetBulkMetadataV2ApiControllerDeleteAssetsErrors, ThrowOnError>;
511
511
  /**
512
512
  * Import an off-network PPC (find-or-create asset + offline task)
513
- * Import an OFF-NETWORK Task.dat via POST /api/v2/assets/import (multipart upload) and create an OFFLINE TASK (offline-triage or offline-acquisition). IMPORTANT semantics: this endpoint does NOT create or find an asset -- it only creates a task from the uploaded Task.dat (the asset is resolved later, when the evidence collection zip is imported into the task). The file must be a valid RC4-encrypted Task.dat; anything else (e.g. a regular case .ppc) is rejected 400 'Missing or invalid Task.dat format!'. Requires the Off-Network Responder feature. Success response (200): result.entities[0] = { taskId, taskName, organizationId, taskDetailsViewUrl, ppcFileName, importedAt } -- a task summary, no asset id/name. organizations must resolve to EXACTLY ONE organization id (the task is single-org). Optionally attach to a case via caseIdOrName (unknown case -> 400 'Case not found'). ALWAYS send dryRun=true first (generic preview; does not validate the file); pass dryRun=false only to perform the real import after the user confirms. To import a case PPC into an asset that already exists in AIR, use air-assets-import instead.
513
+ * Import an OFF-NETWORK Task.dat via POST /api/v2/assets/import (multipart upload) and create an OFFLINE TASK (offline-triage or offline-acquisition). IMPORTANT semantics: this endpoint does NOT create or find an asset -- it only creates a task from the uploaded Task.dat (the asset is resolved later, when the evidence collection zip is imported into the task). The file must be a valid RC4-encrypted Task.dat; anything else (e.g. a regular case .ppc) is rejected 400 'Missing or invalid Task.dat format!'. Requires the Off-Network Responder feature. Success response (200): result.entities[0] = { taskId, taskName, organizations: [{ id, name }], taskDetailsViewUrl, ppcFileName, importedAt } -- a task summary, no asset id/name. organizations must resolve to EXACTLY ONE organization id (the task is single-org). Optionally attach to a case via caseIdOrName (unknown case -> 400 'Case not found'). ALWAYS send dryRun=true first (generic preview; does not validate the file); pass dryRun=false only to perform the real import after the user confirms. To import a case PPC into an asset that already exists in AIR, use air-assets-import instead.
514
514
  */
515
515
  export declare const assetBulkMetadataV2ApiControllerImportOffNetworkPpc: <ThrowOnError extends boolean = false>(options: Options<AssetBulkMetadataV2ApiControllerImportOffNetworkPpcData, ThrowOnError>) => import("./client").RequestResult<AssetBulkMetadataV2ApiControllerImportOffNetworkPpcResponses, AssetBulkMetadataV2ApiControllerImportOffNetworkPpcErrors, ThrowOnError>;
516
516
  /**
@@ -520,7 +520,7 @@ export declare const assetBulkMetadataV2ApiControllerImportOffNetworkPpc: <Throw
520
520
  export declare const assetBulkTriageV2ApiControllerRunTriage: <ThrowOnError extends boolean = false>(options: Options<AssetBulkTriageV2ApiControllerRunTriageData, ThrowOnError>) => import("./client").RequestResult<AssetBulkTriageV2ApiControllerRunTriageResponses, AssetBulkTriageV2ApiControllerRunTriageErrors, ThrowOnError>;
521
521
  /**
522
522
  * List InterAct messages for an asset
523
- * List the InterAct shell messages of EXACTLY ONE Binalyze AIR asset across all its sessions via GET /api/v2/assets/{idOrName}/interact. Read-only; returns a paginated envelope of messages (command + latest response, status, detectedType, output/outputUrl). Supports filtering by session, status, detected type, snippet, and created/completed date ranges. Use this when the user asks for an asset's shell command history, or to poll an async command's status by sessionId/status. Prefer UUID; names can be ambiguous across organizations. Omit any filter the user did not ask for. On HTTP 404 with errors[0].details.suggestions, the asset name was not found -- show those suggestions to the user and confirm before retrying, never guess; on HTTP 400 AMBIGUOUS_NAME with errors[0].details.matches, ask which asset by id.
523
+ * List the InterAct shell messages of EXACTLY ONE Binalyze AIR asset across all its sessions via GET /api/v2/assets/{idOrName}/interact. Read-only; returns a paginated envelope of messages (command + latest response, status, detectedType, output/outputUrl). Supports filtering by session and creation date range. Use this when the user asks for an asset's shell command history. Prefer UUID; names can be ambiguous across organizations. Omit any filter the user did not ask for. On HTTP 404 with errors[0].details.suggestions, the asset name was not found -- show those suggestions to the user and confirm before retrying, never guess; on HTTP 400 AMBIGUOUS_NAME with errors[0].details.matches, ask which asset by id.
524
524
  */
525
525
  export declare const assetInteractMessageV2ApiControllerListForAsset: <ThrowOnError extends boolean = false>(options: Options<AssetInteractMessageV2ApiControllerListForAssetData, ThrowOnError>) => import("./client").RequestResult<AssetInteractMessageV2ApiControllerListForAssetResponses, AssetInteractMessageV2ApiControllerListForAssetErrors, ThrowOnError>;
526
526
  /**
@@ -635,12 +635,12 @@ export declare const assetInteractMessageV2ApiControllerDownloadMessageOutput: <
635
635
  export declare const assetInteractMessageV2ApiControllerGetSessionReport: <ThrowOnError extends boolean = false>(options: Options<AssetInteractMessageV2ApiControllerGetSessionReportData, ThrowOnError>) => import("./client").RequestResult<AssetInteractMessageV2ApiControllerGetSessionReportResponses, AssetInteractMessageV2ApiControllerGetSessionReportErrors, ThrowOnError>;
636
636
  /**
637
637
  * List cloud acquisition profiles
638
- * List Binalyze AIR cloud (M365) acquisition profiles via GET /api/v2/libraries/acquisition/cloud. Read-only and paginated. Each entity is a profile summary: id, name, organizationIds, averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. The m365UserBased/m365TenantWide evidence lists are NOT included; use air-acquisition-cloud-get for one profile's full config. Use this when the user asks to list or search cloud acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with empty organizationIds are global.
638
+ * List Binalyze AIR cloud (M365) acquisition profiles via GET /api/v2/libraries/acquisition/cloud. Read-only and paginated. Each entity is a profile summary: id, name, organizations[{id,name}], averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. The m365UserBased/m365TenantWide evidence lists are NOT included; use air-acquisition-cloud-get for one profile's full config. Use this when the user asks to list or search cloud acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with an empty organizations array are global.
639
639
  */
640
640
  export declare const cloudAcquisitionLibraryApiControllerList: <ThrowOnError extends boolean = false>(options?: Options<CloudAcquisitionLibraryApiControllerListData, ThrowOnError>) => import("./client").RequestResult<CloudAcquisitionLibraryApiControllerListResponses, CloudAcquisitionLibraryApiControllerListErrors, ThrowOnError>;
641
641
  /**
642
642
  * Create cloud acquisition profile
643
- * Create a Binalyze AIR cloud (M365) acquisition profile via POST /api/v2/libraries/acquisition/cloud. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. `name` (alphanumeric) plus BOTH m365UserBased and m365TenantWide blocks are required; each block is {evidenceList: string[]} and at least one evidence must be selected across the two blocks. Evidence keys are lowercase M365 collector names, e.g. user-based: outlookmails, onedrive, teams, teamschat, calendar, mfa, user; tenant-wide: ual, adminauditlog, azureadaccountlogon, sharepoint, exchangeadmin, riskyusers. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-cloud-get for the full list of valid evidence keys.
643
+ * Create a Binalyze AIR cloud (M365) acquisition profile via POST /api/v2/libraries/acquisition/cloud. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. `name` (alphanumeric) plus BOTH m365UserBased and m365TenantWide blocks are required; each block is {evidenceList: string[]} and at least one evidence must be selected across the two blocks. Body `organizationIds` controls which organizations own the profile; common query `organizations`, `orgs`, and `org` parameters are rejected. Evidence keys are lowercase M365 collector names, e.g. user-based: outlookmails, onedrive, teams, teamschat, calendar, mfa, user; tenant-wide: ual, adminauditlog, azureadaccountlogon, sharepoint, exchangeadmin, riskyusers. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-cloud-get for the full list of valid evidence keys.
644
644
  */
645
645
  export declare const cloudAcquisitionLibraryApiControllerCreate: <ThrowOnError extends boolean = false>(options: Options<CloudAcquisitionLibraryApiControllerCreateData, ThrowOnError>) => import("./client").RequestResult<CloudAcquisitionLibraryApiControllerCreateResponses, CloudAcquisitionLibraryApiControllerCreateErrors, ThrowOnError>;
646
646
  /**
@@ -655,7 +655,7 @@ export declare const cloudAcquisitionLibraryApiControllerBulkDelete: <ThrowOnErr
655
655
  export declare const cloudAcquisitionLibraryApiControllerDelete: <ThrowOnError extends boolean = false>(options: Options<CloudAcquisitionLibraryApiControllerDeleteData, ThrowOnError>) => import("./client").RequestResult<CloudAcquisitionLibraryApiControllerDeleteResponses, CloudAcquisitionLibraryApiControllerDeleteErrors, ThrowOnError>;
656
656
  /**
657
657
  * Get cloud acquisition profile by id or name
658
- * Get ONE Binalyze AIR cloud (M365) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/cloud/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizationIds, m365UserBased.evidenceList, m365TenantWide.evidenceList, deletable, and timestamps. Use this when the user asks to show or inspect a cloud acquisition profile's evidence selection, to clone one, or to discover valid M365 evidence keys. Ids and exact names come from air-acquisition-cloud-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
658
+ * Get ONE Binalyze AIR cloud (M365) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/cloud/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizations[{id,name}], m365UserBased.evidenceList, m365TenantWide.evidenceList, deletable, and timestamps. Use this when the user asks to show or inspect a cloud acquisition profile's evidence selection, to clone one, or to discover valid M365 evidence keys. Ids and exact names come from air-acquisition-cloud-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
659
659
  */
660
660
  export declare const cloudAcquisitionLibraryApiControllerGet: <ThrowOnError extends boolean = false>(options: Options<CloudAcquisitionLibraryApiControllerGetData, ThrowOnError>) => import("./client").RequestResult<CloudAcquisitionLibraryApiControllerGetResponses, CloudAcquisitionLibraryApiControllerGetErrors, ThrowOnError>;
661
661
  /**
@@ -665,12 +665,12 @@ export declare const cloudAcquisitionLibraryApiControllerGet: <ThrowOnError exte
665
665
  export declare const cloudAcquisitionLibraryApiControllerUpdate: <ThrowOnError extends boolean = false>(options: Options<CloudAcquisitionLibraryApiControllerUpdateData, ThrowOnError>) => import("./client").RequestResult<CloudAcquisitionLibraryApiControllerUpdateResponses, CloudAcquisitionLibraryApiControllerUpdateErrors, ThrowOnError>;
666
666
  /**
667
667
  * List disk image acquisition profiles
668
- * List Binalyze AIR disk-image acquisition profiles via GET /api/v2/libraries/acquisition/disk-image. Read-only and paginated. Requires the image-evidence-acquisition feature to be enabled on the Console. Each entity is a profile summary: id, name, organizationIds, averageTime, createdAt/updatedAt, createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. allFiles/paths/evidence config is NOT included; use air-acquisition-disk-image-get for one profile's full config. Use this when the user asks to list or search disk-image (forensic imaging) profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdAt, updatedAt, lastUsedAt, createdBy, lastUsedBy (default createdAt). Profiles with empty organizationIds are global.
668
+ * List Binalyze AIR disk-image acquisition profiles via GET /api/v2/libraries/acquisition/disk-image. Read-only and paginated. Requires the image-evidence-acquisition feature to be enabled on the Console. Each entity is a profile summary: id, name, organizations[{id,name}], averageTime, createdAt/updatedAt, createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. allFiles/paths/evidence config is NOT included; use air-acquisition-disk-image-get for one profile's full config. Use this when the user asks to list or search disk-image (forensic imaging) profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdAt, updatedAt, lastUsedAt, createdBy, lastUsedBy (default createdAt). Profiles with an empty organizations array are global.
669
669
  */
670
670
  export declare const diskImageAcquisitionLibraryApiControllerList: <ThrowOnError extends boolean = false>(options?: Options<DiskImageAcquisitionLibraryApiControllerListData, ThrowOnError>) => import("./client").RequestResult<DiskImageAcquisitionLibraryApiControllerListResponses, DiskImageAcquisitionLibraryApiControllerListErrors, ThrowOnError>;
671
671
  /**
672
672
  * Create disk image acquisition profile
673
- * Create a Binalyze AIR disk-image acquisition profile via POST /api/v2/libraries/acquisition/disk-image. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. Requires the image-evidence-acquisition feature to be enabled on the Console. `name` is required (alphanumeric). Scope is either allFiles=true (full image) OR a `paths` list of directories/files to image; the allFiles/paths combination must be consistent (a profile cannot have both allFiles=true and paths). `imageAcquisitionEvidences` optionally selects extra evidence to collect alongside the image. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-disk-image-get when cloning or when unsure of valid evidence keys.
673
+ * Create a Binalyze AIR disk-image acquisition profile via POST /api/v2/libraries/acquisition/disk-image. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. Requires the image-evidence-acquisition feature to be enabled on the Console. `name` is required (alphanumeric). Scope is either allFiles=true (full image) OR a `paths` list of directories/files to image; the allFiles/paths combination must be consistent (a profile cannot have both allFiles=true and paths). `imageAcquisitionEvidences` optionally selects extra evidence to collect alongside the image. Body `organizationIds` controls which organizations own the profile; common query `organizations`, `orgs`, and `org` parameters are rejected. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-disk-image-get when cloning or when unsure of valid evidence keys.
674
674
  */
675
675
  export declare const diskImageAcquisitionLibraryApiControllerCreate: <ThrowOnError extends boolean = false>(options: Options<DiskImageAcquisitionLibraryApiControllerCreateData, ThrowOnError>) => import("./client").RequestResult<DiskImageAcquisitionLibraryApiControllerCreateResponses, DiskImageAcquisitionLibraryApiControllerCreateErrors, ThrowOnError>;
676
676
  /**
@@ -685,7 +685,7 @@ export declare const diskImageAcquisitionLibraryApiControllerBulkDelete: <ThrowO
685
685
  export declare const diskImageAcquisitionLibraryApiControllerDelete: <ThrowOnError extends boolean = false>(options: Options<DiskImageAcquisitionLibraryApiControllerDeleteData, ThrowOnError>) => import("./client").RequestResult<DiskImageAcquisitionLibraryApiControllerDeleteResponses, DiskImageAcquisitionLibraryApiControllerDeleteErrors, ThrowOnError>;
686
686
  /**
687
687
  * Get disk image acquisition profile by id or name
688
- * Get ONE Binalyze AIR disk-image acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/disk-image/{idOrName}. Read-only. Requires the image-evidence-acquisition feature to be enabled on the Console. Returns the full profile detail in entities[0]: id, name, organizationIds, allFiles, paths[] ({path, description}), imageAcquisitionEvidences, deletable, and timestamps. Use this when the user asks to show or inspect a disk-image profile's scope, or to clone one. Ids and exact names come from air-acquisition-disk-image-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
688
+ * Get ONE Binalyze AIR disk-image acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/disk-image/{idOrName}. Read-only. Requires the image-evidence-acquisition feature to be enabled on the Console. Returns the full profile detail in entities[0]: id, name, organizations[{id,name}], allFiles, paths[] ({path, description}), imageAcquisitionEvidences, deletable, and timestamps. Use this when the user asks to show or inspect a disk-image profile's scope, or to clone one. Ids and exact names come from air-acquisition-disk-image-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
689
689
  */
690
690
  export declare const diskImageAcquisitionLibraryApiControllerGet: <ThrowOnError extends boolean = false>(options: Options<DiskImageAcquisitionLibraryApiControllerGetData, ThrowOnError>) => import("./client").RequestResult<DiskImageAcquisitionLibraryApiControllerGetResponses, DiskImageAcquisitionLibraryApiControllerGetErrors, ThrowOnError>;
691
691
  /**
@@ -54,7 +54,7 @@ const openApiAliasV2ApiControllerGet = (options) => {
54
54
  exports.openApiAliasV2ApiControllerGet = openApiAliasV2ApiControllerGet;
55
55
  /**
56
56
  * Get task by id
57
- * Fetch one Binalyze AIR task by UUID using GET /api/v2/tasks/{taskId}. Type-independent: works for triage, acquisition, interactShell and other task types. The response wraps the single task in result.entities[0] and is polymorphic: it carries a type/subtype discriminator plus only the matching domain block (triage{} / acquisition{} / interactShell{}); other blocks are absent, not null. It also returns counts{assigned,completed,failed,cancelled}, organization{id,name}, cases[], schedule (null when not scheduled) and taskAssignments{taskAssignmentCount,taskAssignmentsUrl}. Use air-tasks-assignments for the full per-endpoint assignment list and air-tasks-assets for the targeted assets. Only a task UUID is accepted; names and hostnames are rejected. A 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe), so do not infer the task does not exist.
57
+ * Fetch one Binalyze AIR task by UUID using GET /api/v2/tasks/{taskId}. Type-independent: works for triage, acquisition, interactShell and other task types. The response wraps the single task in result.entities[0] and is polymorphic: it carries a type/subtype discriminator plus only the matching domain block (triage{} / acquisition{} / interactShell{}); other blocks are absent, not null. It also returns counts{assigned,completed,failed,cancelled}, organizations[{id,name}], cases[], schedule (null when not scheduled) and taskAssignments{taskAssignmentCount,taskAssignmentsUrl}. Use air-tasks-assignments for the full per-endpoint assignment list and air-tasks-assets for the targeted assets. Only a task UUID is accepted; names and hostnames are rejected. A 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe), so do not infer the task does not exist.
58
58
  */
59
59
  const tasksV2ApiControllerGetTaskById = (options) => {
60
60
  return (options.client ?? client_gen_1.client).get({
@@ -127,7 +127,7 @@ const tasksV2ApiControllerListTaskAssets = (options) => {
127
127
  exports.tasksV2ApiControllerListTaskAssets = tasksV2ApiControllerListTaskAssets;
128
128
  /**
129
129
  * List a task assignments
130
- * List the per-endpoint task assignments of one Binalyze AIR task using GET /api/v2/tasks/{taskId}/task-assignments. Paginated; this is the resolver for the taskAssignmentsUrl field in task detail responses. Each entity carries id, taskId, name, type, endpointId, endpointName, status, progress, hasDroneData, durations, metadata, organization{id,name}, response and cases[]. Use this when the user wants per-host progress, per-host status, or which endpoints completed/failed for a task; use air-tasks-assets for asset details instead. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe). Placeholder defaults such as pageNumber=1 are ignored.
130
+ * List the per-endpoint task assignments of one Binalyze AIR task using GET /api/v2/tasks/{taskId}/task-assignments. Paginated; this is the resolver for the taskAssignmentsUrl field in task detail responses. Each entity carries id, taskId, name, type, endpointId, endpointName, status, progress, hasDroneData, durations, metadata, organizations[{id,name}], response and cases[]. Use this when the user wants per-host progress, per-host status, or which endpoints completed/failed for a task; use air-tasks-assets for asset details instead. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe). Placeholder defaults such as pageNumber=1 are ignored.
131
131
  */
132
132
  const tasksV2ApiControllerListTaskAssignments = (options) => {
133
133
  return (options.client ?? client_gen_1.client).get({
@@ -173,7 +173,7 @@ const tasksTriageV2ApiControllerListHuntTasks = (options) => {
173
173
  exports.tasksTriageV2ApiControllerListHuntTasks = tasksTriageV2ApiControllerListHuntTasks;
174
174
  /**
175
175
  * Bulk cancel hunt (triage) tasks (body dryRun preview)
176
- * Cancel one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/cancel. MUTATING: cancels ALL active assignments of each task across all its assets; cancellation is queued asynchronously and an abort signal is sent to the agents. Task records and downloaded data are kept (use air-hunt-bulk-delete to remove them). taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and cancels EVERY active (scheduled/assigned/processing) hunt task in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists; confirm with the user before using it. dryRun defaults to true: the preview (200) returns result.entities[] = {taskId, taskName, willCancelAssignmentCount, status} without cancelling anything. ALWAYS run the preview first and show the user what would be cancelled; pass dryRun=false only after the user explicitly confirms the exact task list. The real cancel returns cancelledAssignmentCount and status 'cancelling' instead. Both forms include warnings[] for skipped tasks (e.g. already in a terminal state). 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-cancel, which returns a leak-safe 404 for unknown ids.
176
+ * Cancel one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/cancel. MUTATING: cancels ALL active assignments of each task across all its assets; cancellation is queued asynchronously and an abort signal is sent to the agents. Task records and downloaded data are kept (use air-hunt-bulk-delete to remove them). taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and cancels EVERY active (scheduled/assigned/processing) hunt task in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists; confirm with the user before using it. dryRun is opt-in at the API level (defaults to false); the OpenCode tools send dryRun=true by default. The preview (200) returns result.entities[] = {taskId, taskName, willCancelAssignmentCount, status} without cancelling anything. ALWAYS run the preview first and show the user what would be cancelled; pass dryRun=false only after the user explicitly confirms the exact task list. The real cancel returns cancelledAssignmentCount and status 'cancelling' instead. Both forms include warnings[] for skipped tasks (e.g. already in a terminal state). 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-cancel, which returns a leak-safe 404 for unknown ids.
177
177
  */
178
178
  const tasksTriageV2ApiControllerCancel = (options) => {
179
179
  return (options.client ?? client_gen_1.client).post({
@@ -200,7 +200,7 @@ const tasksTriageV2ApiControllerCancel = (options) => {
200
200
  exports.tasksTriageV2ApiControllerCancel = tasksTriageV2ApiControllerCancel;
201
201
  /**
202
202
  * Bulk delete hunt (triage) tasks (body dryRun preview)
203
- * Delete one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/delete. DESTRUCTIVE and irreversible: removes the task records, ALL assignments, and downloaded files/artifacts; nothing remains in history. Active tasks additionally get an agent cancel signal. Use air-hunt-bulk-cancel to merely stop tasks while keeping records. taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and deletes EVERY hunt task (active and finished) in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists. dryRun defaults to true: the preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS run the preview first and show the user what would be deleted; pass dryRun=false only after the user explicitly confirms the exact task list. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-delete (leak-safe 404).
203
+ * Delete one or more Binalyze AIR hunt (triage) tasks via POST /api/v2/hunt/delete. DESTRUCTIVE and irreversible: removes the task records, ALL assignments, and downloaded files/artifacts; nothing remains in history. Active tasks additionally get an agent cancel signal. Use air-hunt-bulk-cancel to merely stop tasks while keeping records. taskIds takes task UUIDs from air-hunt-list. Setting all=true sends taskIds='all' and deletes EVERY hunt task (active and finished) in the required organizations scope -- body organizations (ids/names or "all") is REQUIRED for taskIds='all' and optional for explicit id lists. dryRun is opt-in at the API level (defaults to false); the OpenCode tools send dryRun=true by default. The preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS run the preview first and show the user what would be deleted; pass dryRun=false only after the user explicitly confirms the exact task list. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 400 'No matching tasks found' means no given id resolved to an accessible hunt task. For a single task prefer air-hunt-delete (leak-safe 404).
204
204
  */
205
205
  const tasksTriageV2ApiControllerDelete = (options) => {
206
206
  return (options.client ?? client_gen_1.client).post({
@@ -250,7 +250,7 @@ const tasksTriageV2ApiControllerCancelOne = (options) => {
250
250
  exports.tasksTriageV2ApiControllerCancelOne = tasksTriageV2ApiControllerCancelOne;
251
251
  /**
252
252
  * Delete a single hunt (triage) task (dryRun query preview)
253
- * Delete a single Binalyze AIR hunt (triage) task via POST /api/v2/hunt/{taskId}/delete. DESTRUCTIVE and irreversible: removes the task record, ALL its assignments, and downloaded files/artifacts; nothing remains in history. An active task additionally gets an agent cancel signal. Use air-hunt-cancel to merely stop the task while keeping records. Use this for exactly one task; use air-hunt-bulk-delete for several tasks at once. The taskId comes from air-hunt-list or air-tasks-get. dryRun defaults to true and is sent as the ?dryRun=true query parameter: the preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS preview first and show the user; pass dryRun=false only after the user explicitly confirms this exact task. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe).
253
+ * Delete a single Binalyze AIR hunt (triage) task via POST /api/v2/hunt/{taskId}/delete. DESTRUCTIVE and irreversible: removes the task record, ALL its assignments, and downloaded files/artifacts; nothing remains in history. An active task additionally gets an agent cancel signal. Use air-hunt-cancel to merely stop the task while keeping records. Use this for exactly one task; use air-hunt-bulk-delete for several tasks at once. The taskId comes from air-hunt-list or air-tasks-get. dryRun is opt-in at the API level (defaults to false) and is sent as the ?dryRun=true query parameter; the OpenCode tools send it by default. The preview (200) returns result.entities[] = {taskId, taskName, willDeleteAssignmentCount, affectedAssets[], status, createdAt} without deleting anything. ALWAYS preview first and show the user; pass dryRun=false only after the user explicitly confirms this exact task. The real delete returns deletedAssignmentCount instead of willDeleteAssignmentCount. 404 'Task not found' also covers tasks outside the caller's organizations (leak-safe).
254
254
  */
255
255
  const tasksTriageV2ApiControllerDeleteOne = (options) => {
256
256
  return (options.client ?? client_gen_1.client).post({
@@ -273,7 +273,7 @@ const tasksTriageV2ApiControllerDeleteOne = (options) => {
273
273
  exports.tasksTriageV2ApiControllerDeleteOne = tasksTriageV2ApiControllerDeleteOne;
274
274
  /**
275
275
  * List device acquisition profiles
276
- * List Binalyze AIR device (evidence) acquisition profiles via GET /api/v2/libraries/acquisition/device. Read-only and paginated. Each entity is a profile summary: id, name, organizationIds, averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. Per-OS configs (windows/linux/macos/aix/eDiscovery) are NOT included; use air-acquisition-device-get for one profile's full config. Use this when the user asks to list or search evidence acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with empty organizationIds are global.
276
+ * List Binalyze AIR device (evidence) acquisition profiles via GET /api/v2/libraries/acquisition/device. Read-only and paginated. Each entity is a profile summary: id, name, organizations[{id,name}], averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. Per-OS configs (windows/linux/macos/aix/eDiscovery) are NOT included; use air-acquisition-device-get for one profile's full config. Use this when the user asks to list or search evidence acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with an empty organizations array are global.
277
277
  */
278
278
  const acquisitionLibraryDeviceV2ApiControllerList = (options) => {
279
279
  return (options?.client ?? client_gen_1.client).get({
@@ -296,7 +296,7 @@ const acquisitionLibraryDeviceV2ApiControllerList = (options) => {
296
296
  exports.acquisitionLibraryDeviceV2ApiControllerList = acquisitionLibraryDeviceV2ApiControllerList;
297
297
  /**
298
298
  * Create device acquisition profile
299
- * Create a Binalyze AIR device (evidence) acquisition profile via POST /api/v2/libraries/acquisition/device. MUTATING: persists a new profile in the acquisition library. Returns 200 with entities[0] = the created profile detail. `name` is required (alphanumeric) plus at least one config block: windows, linux, macos, aix (each with evidenceList/artifactList/customContentProfiles/networkCapture) or eDiscovery ({patterns:[{pattern,category}]}). Any subset of OS blocks is accepted. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Get the exact evidence/artifact keys from an existing profile (air-acquisition-device-get) when cloning or when unsure of valid values.
299
+ * Create a Binalyze AIR device (evidence) acquisition profile via POST /api/v2/libraries/acquisition/device. MUTATING: persists a new profile in the acquisition library. Returns 200 with entities[0] = the created profile detail. `name` is required (alphanumeric) plus at least one config block: windows, linux, macos, aix (each with evidenceList/artifactList/customContentProfiles/networkCapture) or eDiscovery ({patterns:[{pattern,category}]}). Any subset of OS blocks is accepted. Body `organizationIds` controls which organizations own the profile; common query `organizations`, `orgs`, and `org` parameters are rejected. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Get the exact evidence/artifact keys from an existing profile (air-acquisition-device-get) when cloning or when unsure of valid values.
300
300
  */
301
301
  const acquisitionLibraryDeviceV2ApiControllerCreate = (options) => {
302
302
  return (options.client ?? client_gen_1.client).post({
@@ -373,7 +373,7 @@ const acquisitionLibraryDeviceV2ApiControllerDelete = (options) => {
373
373
  exports.acquisitionLibraryDeviceV2ApiControllerDelete = acquisitionLibraryDeviceV2ApiControllerDelete;
374
374
  /**
375
375
  * Get device acquisition profile by id or name
376
- * Get ONE Binalyze AIR device (evidence) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/device/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizationIds, the per-OS configs (windows/linux/macos/aix with evidence and artifact lists), eDiscovery patterns, deletable, and timestamps. Use this when the user asks to show or inspect an evidence acquisition profile's contents, or to clone one. Ids and exact names come from air-acquisition-device-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
376
+ * Get ONE Binalyze AIR device (evidence) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/device/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizations[{id,name}], the per-OS configs (windows/linux/macos/aix with evidence and artifact lists), eDiscovery patterns, deletable, and timestamps. Use this when the user asks to show or inspect an evidence acquisition profile's contents, or to clone one. Ids and exact names come from air-acquisition-device-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
377
377
  */
378
378
  const acquisitionLibraryDeviceV2ApiControllerGet = (options) => {
379
379
  return (options.client ?? client_gen_1.client).get({
@@ -772,7 +772,7 @@ const caseBulkActionV2ApiControllerArchive = (options) => {
772
772
  exports.caseBulkActionV2ApiControllerArchive = caseBulkActionV2ApiControllerArchive;
773
773
  /**
774
774
  * List assets linked to case
775
- * List the assets linked to a Binalyze AIR case using GET /api/v2/cases/{idOrName}/assets. Read-only, paginated; returns full canonical v2 asset entities (nested endpoint{} block) for every asset attached to the case. Use this to see which endpoints belong to a case, to pick asset ids for air-cases-remove-assets, or before acting on the case's machines with the asset tools. The path accepts a case UUID or exact case name. JSON only (the API's format=csv variant is not exposed here; use air-cases-export for file exports).
775
+ * List the assets linked to a Binalyze AIR case using GET /api/v2/cases/{idOrName}/assets. Read-only, paginated; returns full canonical v2 asset entities (nested endpoint{} block) for every asset attached to the case. Use this to see which endpoints belong to a case, to pick asset ids for air-cases-remove-assets, or before acting on the case's machines with the asset tools. The path accepts a case UUID or exact case name. Use format=json (default) for a paginated response or format=csv to stream the linked assets as text/csv.
776
776
  */
777
777
  const caseAssetV2ApiControllerFilterAssets = (options) => {
778
778
  return (options.client ?? client_gen_1.client).get({
@@ -1114,7 +1114,7 @@ const caseActionV2ApiControllerRemoveAssets = (options) => {
1114
1114
  exports.caseActionV2ApiControllerRemoveAssets = caseActionV2ApiControllerRemoveAssets;
1115
1115
  /**
1116
1116
  * List cases
1117
- * List Binalyze AIR cases using GET /api/v2/cases. Read-only, paginated. Each entity uses object refs: owner{id,name}, organization{id,name}, category{id,name}, tags[], assignedUsers[], plus taskCounts{} and assets/taskAssignments {count,url} summaries. Lifecycle is open -> closed -> archived (no unarchive). Reference filters (owner, assignedUser, category, tags) accept a UUID or an exact name/username; name is a case-insensitive substring match. Use this to find a case id or name before calling air-cases-get, air-cases-update, air-cases-close or the case sub-resource tools. organizations defaults to all accessible organizations.
1117
+ * List Binalyze AIR cases using GET /api/v2/cases. Read-only, paginated. Each entity uses object refs: owner{id,name}, organizations[{id,name}], category{id,name}, tags[], assignedUsers[], plus taskCounts{} and assets/taskAssignments {count,url} summaries. Lifecycle is open -> closed -> archived (no unarchive). Reference filters (owner, assignedUser, category, tags) accept a UUID or an exact name/username; name is a case-insensitive substring match. Use this to find a case id or name before calling air-cases-get, air-cases-update, air-cases-close or the case sub-resource tools. organizations defaults to all accessible organizations.
1118
1118
  */
1119
1119
  const caseV2ApiControllerFilterCases = (options) => {
1120
1120
  return (options?.client ?? client_gen_1.client).get({
@@ -1164,7 +1164,7 @@ const caseV2ApiControllerCreateCase = (options) => {
1164
1164
  exports.caseV2ApiControllerCreateCase = caseV2ApiControllerCreateCase;
1165
1165
  /**
1166
1166
  * Get case by id or name
1167
- * Fetch one Binalyze AIR case by UUID or case name using GET /api/v2/cases/{idOrName}. Read-only; the case is wrapped in result.entities[0]. The entity uses object refs (owner{}, organization{}, category{}, tags[], assignedUsers[]), taskCounts{}, and assets/taskAssignments {count,url} summaries. Lifecycle status is open, closed or archived. A 404 also covers cases outside the caller's organizations (leak-safe), so do not infer the case does not exist. Use air-cases-list to discover ids and names first.
1167
+ * Fetch one Binalyze AIR case by UUID or case name using GET /api/v2/cases/{idOrName}. Read-only; the case is wrapped in result.entities[0]. The entity uses object refs (owner{}, organizations[{id,name}], category{}, tags[], assignedUsers[]), taskCounts{}, and assets/taskAssignments {count,url} summaries. Lifecycle status is open, closed or archived. A 404 also covers cases outside the caller's organizations (leak-safe), so do not infer the case does not exist. Use air-cases-list to discover ids and names first.
1168
1168
  */
1169
1169
  const caseV2ApiControllerGetCaseByIdOrName = (options) => {
1170
1170
  return (options.client ?? client_gen_1.client).get({
@@ -1684,7 +1684,7 @@ const flagsLibraryV2ApiControllerList = (options) => {
1684
1684
  exports.flagsLibraryV2ApiControllerList = flagsLibraryV2ApiControllerList;
1685
1685
  /**
1686
1686
  * Create investigation flag
1687
- * Create a Binalyze AIR investigation flag via POST /api/v2/libraries/flags. MUTATING: persists a new flag. Required: name (max 50 chars, not purely numeric). Optional: color (CSS color, defaults to #4A4D55), description, and organization (id or exact name; defaults to the caller organization when the caller has exactly one, otherwise the default organization). A name collision within the organization is resolved by auto-suffixing with a NAME_ADJUSTED warning; if a unique name cannot be allocated, returns 409 NAME_CONFLICT. dryRun DEFAULTS TO TRUE in the tool layer: the first call previews the would-create entity (action='would-create', final name) without persisting; pass dryRun=false only after the user confirms. Success returns entities[0] with the created flag.
1687
+ * Create a Binalyze AIR investigation flag via POST /api/v2/libraries/flags. MUTATING: persists a new flag. Required: name (max 50 chars, not purely numeric). Optional: color (CSS color, defaults to #4A4D55), description, and organization (id or exact name; defaults to the caller organization when the caller has exactly one; multi-organization and all-organization callers must pass it explicitly or receive 400 ORGANIZATION_REQUIRED). A name collision within the organization is resolved by auto-suffixing with a NAME_ADJUSTED warning; if a unique name cannot be allocated, returns 409 NAME_CONFLICT. dryRun DEFAULTS TO TRUE in the tool layer: the first call previews the would-create entity (action='would-create', final name) without persisting; pass dryRun=false only after the user confirms. Success returns entities[0] with the created flag.
1688
1688
  */
1689
1689
  const flagsLibraryV2ApiControllerCreate = (options) => {
1690
1690
  return (options.client ?? client_gen_1.client).post({
@@ -2514,7 +2514,7 @@ const assetBulkMetadataV2ApiControllerDeleteAssets = (options) => {
2514
2514
  exports.assetBulkMetadataV2ApiControllerDeleteAssets = assetBulkMetadataV2ApiControllerDeleteAssets;
2515
2515
  /**
2516
2516
  * Import an off-network PPC (find-or-create asset + offline task)
2517
- * Import an OFF-NETWORK Task.dat via POST /api/v2/assets/import (multipart upload) and create an OFFLINE TASK (offline-triage or offline-acquisition). IMPORTANT semantics: this endpoint does NOT create or find an asset -- it only creates a task from the uploaded Task.dat (the asset is resolved later, when the evidence collection zip is imported into the task). The file must be a valid RC4-encrypted Task.dat; anything else (e.g. a regular case .ppc) is rejected 400 'Missing or invalid Task.dat format!'. Requires the Off-Network Responder feature. Success response (200): result.entities[0] = { taskId, taskName, organizationId, taskDetailsViewUrl, ppcFileName, importedAt } -- a task summary, no asset id/name. organizations must resolve to EXACTLY ONE organization id (the task is single-org). Optionally attach to a case via caseIdOrName (unknown case -> 400 'Case not found'). ALWAYS send dryRun=true first (generic preview; does not validate the file); pass dryRun=false only to perform the real import after the user confirms. To import a case PPC into an asset that already exists in AIR, use air-assets-import instead.
2517
+ * Import an OFF-NETWORK Task.dat via POST /api/v2/assets/import (multipart upload) and create an OFFLINE TASK (offline-triage or offline-acquisition). IMPORTANT semantics: this endpoint does NOT create or find an asset -- it only creates a task from the uploaded Task.dat (the asset is resolved later, when the evidence collection zip is imported into the task). The file must be a valid RC4-encrypted Task.dat; anything else (e.g. a regular case .ppc) is rejected 400 'Missing or invalid Task.dat format!'. Requires the Off-Network Responder feature. Success response (200): result.entities[0] = { taskId, taskName, organizations: [{ id, name }], taskDetailsViewUrl, ppcFileName, importedAt } -- a task summary, no asset id/name. organizations must resolve to EXACTLY ONE organization id (the task is single-org). Optionally attach to a case via caseIdOrName (unknown case -> 400 'Case not found'). ALWAYS send dryRun=true first (generic preview; does not validate the file); pass dryRun=false only to perform the real import after the user confirms. To import a case PPC into an asset that already exists in AIR, use air-assets-import instead.
2518
2518
  */
2519
2519
  const assetBulkMetadataV2ApiControllerImportOffNetworkPpc = (options) => {
2520
2520
  return (options.client ?? client_gen_1.client).post({
@@ -2569,7 +2569,7 @@ const assetBulkTriageV2ApiControllerRunTriage = (options) => {
2569
2569
  exports.assetBulkTriageV2ApiControllerRunTriage = assetBulkTriageV2ApiControllerRunTriage;
2570
2570
  /**
2571
2571
  * List InterAct messages for an asset
2572
- * List the InterAct shell messages of EXACTLY ONE Binalyze AIR asset across all its sessions via GET /api/v2/assets/{idOrName}/interact. Read-only; returns a paginated envelope of messages (command + latest response, status, detectedType, output/outputUrl). Supports filtering by session, status, detected type, snippet, and created/completed date ranges. Use this when the user asks for an asset's shell command history, or to poll an async command's status by sessionId/status. Prefer UUID; names can be ambiguous across organizations. Omit any filter the user did not ask for. On HTTP 404 with errors[0].details.suggestions, the asset name was not found -- show those suggestions to the user and confirm before retrying, never guess; on HTTP 400 AMBIGUOUS_NAME with errors[0].details.matches, ask which asset by id.
2572
+ * List the InterAct shell messages of EXACTLY ONE Binalyze AIR asset across all its sessions via GET /api/v2/assets/{idOrName}/interact. Read-only; returns a paginated envelope of messages (command + latest response, status, detectedType, output/outputUrl). Supports filtering by session and creation date range. Use this when the user asks for an asset's shell command history. Prefer UUID; names can be ambiguous across organizations. Omit any filter the user did not ask for. On HTTP 404 with errors[0].details.suggestions, the asset name was not found -- show those suggestions to the user and confirm before retrying, never guess; on HTTP 400 AMBIGUOUS_NAME with errors[0].details.matches, ask which asset by id.
2573
2573
  */
2574
2574
  const assetInteractMessageV2ApiControllerListForAsset = (options) => {
2575
2575
  return (options.client ?? client_gen_1.client).get({
@@ -3134,7 +3134,7 @@ const assetInteractMessageV2ApiControllerGetSessionReport = (options) => {
3134
3134
  exports.assetInteractMessageV2ApiControllerGetSessionReport = assetInteractMessageV2ApiControllerGetSessionReport;
3135
3135
  /**
3136
3136
  * List cloud acquisition profiles
3137
- * List Binalyze AIR cloud (M365) acquisition profiles via GET /api/v2/libraries/acquisition/cloud. Read-only and paginated. Each entity is a profile summary: id, name, organizationIds, averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. The m365UserBased/m365TenantWide evidence lists are NOT included; use air-acquisition-cloud-get for one profile's full config. Use this when the user asks to list or search cloud acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with empty organizationIds are global.
3137
+ * List Binalyze AIR cloud (M365) acquisition profiles via GET /api/v2/libraries/acquisition/cloud. Read-only and paginated. Each entity is a profile summary: id, name, organizations[{id,name}], averageTime, createdAt/createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. The m365UserBased/m365TenantWide evidence lists are NOT included; use air-acquisition-cloud-get for one profile's full config. Use this when the user asks to list or search cloud acquisition profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdBy, createdAt, lastUsedAt, lastUsedBy (default createdAt). Profiles with an empty organizations array are global.
3138
3138
  */
3139
3139
  const cloudAcquisitionLibraryApiControllerList = (options) => {
3140
3140
  return (options?.client ?? client_gen_1.client).get({
@@ -3157,7 +3157,7 @@ const cloudAcquisitionLibraryApiControllerList = (options) => {
3157
3157
  exports.cloudAcquisitionLibraryApiControllerList = cloudAcquisitionLibraryApiControllerList;
3158
3158
  /**
3159
3159
  * Create cloud acquisition profile
3160
- * Create a Binalyze AIR cloud (M365) acquisition profile via POST /api/v2/libraries/acquisition/cloud. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. `name` (alphanumeric) plus BOTH m365UserBased and m365TenantWide blocks are required; each block is {evidenceList: string[]} and at least one evidence must be selected across the two blocks. Evidence keys are lowercase M365 collector names, e.g. user-based: outlookmails, onedrive, teams, teamschat, calendar, mfa, user; tenant-wide: ual, adminauditlog, azureadaccountlogon, sharepoint, exchangeadmin, riskyusers. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-cloud-get for the full list of valid evidence keys.
3160
+ * Create a Binalyze AIR cloud (M365) acquisition profile via POST /api/v2/libraries/acquisition/cloud. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. `name` (alphanumeric) plus BOTH m365UserBased and m365TenantWide blocks are required; each block is {evidenceList: string[]} and at least one evidence must be selected across the two blocks. Body `organizationIds` controls which organizations own the profile; common query `organizations`, `orgs`, and `org` parameters are rejected. Evidence keys are lowercase M365 collector names, e.g. user-based: outlookmails, onedrive, teams, teamschat, calendar, mfa, user; tenant-wide: ual, adminauditlog, azureadaccountlogon, sharepoint, exchangeadmin, riskyusers. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-cloud-get for the full list of valid evidence keys.
3161
3161
  */
3162
3162
  const cloudAcquisitionLibraryApiControllerCreate = (options) => {
3163
3163
  return (options.client ?? client_gen_1.client).post({
@@ -3234,7 +3234,7 @@ const cloudAcquisitionLibraryApiControllerDelete = (options) => {
3234
3234
  exports.cloudAcquisitionLibraryApiControllerDelete = cloudAcquisitionLibraryApiControllerDelete;
3235
3235
  /**
3236
3236
  * Get cloud acquisition profile by id or name
3237
- * Get ONE Binalyze AIR cloud (M365) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/cloud/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizationIds, m365UserBased.evidenceList, m365TenantWide.evidenceList, deletable, and timestamps. Use this when the user asks to show or inspect a cloud acquisition profile's evidence selection, to clone one, or to discover valid M365 evidence keys. Ids and exact names come from air-acquisition-cloud-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
3237
+ * Get ONE Binalyze AIR cloud (M365) acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/cloud/{idOrName}. Read-only. Returns the full profile detail in entities[0]: id, name, organizations[{id,name}], m365UserBased.evidenceList, m365TenantWide.evidenceList, deletable, and timestamps. Use this when the user asks to show or inspect a cloud acquisition profile's evidence selection, to clone one, or to discover valid M365 evidence keys. Ids and exact names come from air-acquisition-cloud-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
3238
3238
  */
3239
3239
  const cloudAcquisitionLibraryApiControllerGet = (options) => {
3240
3240
  return (options.client ?? client_gen_1.client).get({
@@ -3284,7 +3284,7 @@ const cloudAcquisitionLibraryApiControllerUpdate = (options) => {
3284
3284
  exports.cloudAcquisitionLibraryApiControllerUpdate = cloudAcquisitionLibraryApiControllerUpdate;
3285
3285
  /**
3286
3286
  * List disk image acquisition profiles
3287
- * List Binalyze AIR disk-image acquisition profiles via GET /api/v2/libraries/acquisition/disk-image. Read-only and paginated. Requires the image-evidence-acquisition feature to be enabled on the Console. Each entity is a profile summary: id, name, organizationIds, averageTime, createdAt/updatedAt, createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. allFiles/paths/evidence config is NOT included; use air-acquisition-disk-image-get for one profile's full config. Use this when the user asks to list or search disk-image (forensic imaging) profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdAt, updatedAt, lastUsedAt, createdBy, lastUsedBy (default createdAt). Profiles with empty organizationIds are global.
3287
+ * List Binalyze AIR disk-image acquisition profiles via GET /api/v2/libraries/acquisition/disk-image. Read-only and paginated. Requires the image-evidence-acquisition feature to be enabled on the Console. Each entity is a profile summary: id, name, organizations[{id,name}], averageTime, createdAt/updatedAt, createdBy, lastUsedAt/lastUsedBy, deletable, and a detailsUrl. allFiles/paths/evidence config is NOT included; use air-acquisition-disk-image-get for one profile's full config. Use this when the user asks to list or search disk-image (forensic imaging) profiles, or needs a profile id or exact name before get, update, delete, or bulk delete. sortBy accepts only name, createdAt, updatedAt, lastUsedAt, createdBy, lastUsedBy (default createdAt). Profiles with an empty organizations array are global.
3288
3288
  */
3289
3289
  const diskImageAcquisitionLibraryApiControllerList = (options) => {
3290
3290
  return (options?.client ?? client_gen_1.client).get({
@@ -3307,7 +3307,7 @@ const diskImageAcquisitionLibraryApiControllerList = (options) => {
3307
3307
  exports.diskImageAcquisitionLibraryApiControllerList = diskImageAcquisitionLibraryApiControllerList;
3308
3308
  /**
3309
3309
  * Create disk image acquisition profile
3310
- * Create a Binalyze AIR disk-image acquisition profile via POST /api/v2/libraries/acquisition/disk-image. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. Requires the image-evidence-acquisition feature to be enabled on the Console. `name` is required (alphanumeric). Scope is either allFiles=true (full image) OR a `paths` list of directories/files to image; the allFiles/paths combination must be consistent (a profile cannot have both allFiles=true and paths). `imageAcquisitionEvidences` optionally selects extra evidence to collect alongside the image. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-disk-image-get when cloning or when unsure of valid evidence keys.
3310
+ * Create a Binalyze AIR disk-image acquisition profile via POST /api/v2/libraries/acquisition/disk-image. MUTATING: persists a new profile. Returns 200 with entities[0] = the created profile detail. Requires the image-evidence-acquisition feature to be enabled on the Console. `name` is required (alphanumeric). Scope is either allFiles=true (full image) OR a `paths` list of directories/files to image; the allFiles/paths combination must be consistent (a profile cannot have both allFiles=true and paths). `imageAcquisitionEvidences` optionally selects extra evidence to collect alongside the image. Body `organizationIds` controls which organizations own the profile; common query `organizations`, `orgs`, and `org` parameters are rejected. dryRun DEFAULTS TO TRUE: the first call validates and returns the would-be entity without persisting anything; pass dryRun=false only to actually create after the user confirms. Inspect an existing profile with air-acquisition-disk-image-get when cloning or when unsure of valid evidence keys.
3311
3311
  */
3312
3312
  const diskImageAcquisitionLibraryApiControllerCreate = (options) => {
3313
3313
  return (options.client ?? client_gen_1.client).post({
@@ -3384,7 +3384,7 @@ const diskImageAcquisitionLibraryApiControllerDelete = (options) => {
3384
3384
  exports.diskImageAcquisitionLibraryApiControllerDelete = diskImageAcquisitionLibraryApiControllerDelete;
3385
3385
  /**
3386
3386
  * Get disk image acquisition profile by id or name
3387
- * Get ONE Binalyze AIR disk-image acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/disk-image/{idOrName}. Read-only. Requires the image-evidence-acquisition feature to be enabled on the Console. Returns the full profile detail in entities[0]: id, name, organizationIds, allFiles, paths[] ({path, description}), imageAcquisitionEvidences, deletable, and timestamps. Use this when the user asks to show or inspect a disk-image profile's scope, or to clone one. Ids and exact names come from air-acquisition-disk-image-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
3387
+ * Get ONE Binalyze AIR disk-image acquisition profile by UUID or exact name via GET /api/v2/libraries/acquisition/disk-image/{idOrName}. Read-only. Requires the image-evidence-acquisition feature to be enabled on the Console. Returns the full profile detail in entities[0]: id, name, organizations[{id,name}], allFiles, paths[] ({path, description}), imageAcquisitionEvidences, deletable, and timestamps. Use this when the user asks to show or inspect a disk-image profile's scope, or to clone one. Ids and exact names come from air-acquisition-disk-image-list. An unknown idOrName returns 404 NOT_FOUND with did-you-mean suggestions in errors[0].details.suggestions[]; an ambiguous name returns 400 AMBIGUOUS_NAME with candidates in errors[0].details.matches[].
3388
3388
  */
3389
3389
  const diskImageAcquisitionLibraryApiControllerGet = (options) => {
3390
3390
  return (options.client ?? client_gen_1.client).get({