Files
SpecterOps-Nemesis/docs/api.md
T
2025-09-02 18:14:53 -07:00

330 lines
5.7 KiB
Markdown

# Enrichment API
**Version:** 0.1.0
API for file enrichment services
This documentation is automatically generated from the OpenAPI specification.
---
## Enrichments
### `GET /enrichments`
List enrichment modules
Get a list of all available enrichment modules
**Returns:** 200 on success
---
### `POST /enrichments/{enrichment_name}`
Run enrichment module
Run a specific enrichment module on a file
**Parameters:**
- `enrichment_name` (string, **required**): Name of the enrichment module to run
**Request Body:** `EnrichmentRequest` (JSON)
**Returns:** 200 on success
---
### `POST /enrichments/{enrichment_name}/bulk`
Start bulk enrichment
Start bulk enrichment for a specific module against all files in the system using distributed processing
**Parameters:**
- `enrichment_name` (string, **required**): Name of the enrichment module to run
**Returns:** 200 on success
---
### `GET /enrichments/{enrichment_name}/bulk/status`
Get bulk enrichment status
Bulk enrichment status tracking has been simplified
**Parameters:**
- `enrichment_name` (string, **required**): Name of the enrichment module to check status for
**Returns:** 200 on success
---
### `POST /enrichments/{enrichment_name}/bulk/stop`
Stop bulk enrichment
Bulk enrichment cannot be stopped once tasks are published
**Parameters:**
- `enrichment_name` (string, **required**): Name of the enrichment module to stop
**Returns:** 200 on success
---
## Files
### `POST /containers`
Submit large container file for processing with optional filtering
...
**Request Body:** See OpenAPI spec for details
**Returns:** 200 on success
---
### `GET /containers/{container_id}/status`
Get container processing status
Get the current processing status and progress of a submitted container
**Parameters:**
- `container_id` (string, **required**): Unique identifier of the container
**Returns:** 200 on success
---
### `POST /files`
Upload file with metadata
Upload a file using multipart/form-data with metadata.
Returns an object_id for the uploaded file and submission_id for the metadata submission.
Example:
```
curl -k -u n:n -F "file=@example.txt" -F 'metadata={"agent_id":"agent123","project":"proj1","timestamp":"2024-01-29T12:00:00Z","expiration":"2024-02-29T12:00:00Z","path":"/tmp/example.txt"}' https://nemesis:7443/api/files
```
Example:
```
curl -k -u n:n -F "file=@example.txt" -F 'metadata={"agent_id":"agent123","project":"proj1","path":"/tmp/example.txt"}' https://nemesis:7443/api/files
```
**Request Body:** See OpenAPI spec for details
**Returns:** 200 on success
---
### `GET /files/{object_id}`
Download a file
Download a file by its object ID with optional raw format and custom filename
**Parameters:**
- `object_id` (string, **required**): Unique identifier of the file to download
- `raw` (boolean, optional): Whether to return the file in raw format
- `name` (string, optional): Custom filename for the downloaded file
**Returns:** 200 on success
---
## Queues
### `GET /queues`
Get queue statistics
Get comprehensive queue metrics for all workflow topics
**Returns:** 200 on success
---
### `GET /queues/{queue_name}`
Get single queue statistics
Get metrics for a specific queue topic
**Parameters:**
- `queue_name` (string, **required**): Name of the queue to get metrics for
**Returns:** 200 on success
---
## System
### `GET /agents`
Get available agents
Get a list of available AI agents with their metadata and capabilities
**Returns:** 200 on success
---
### `POST /agents/dotnet_analysis`
Run .NET assembly analysis
Forward .NET assembly analysis request to agents service
**Request Body:** JSON object
**Returns:** 200 on success
---
### `POST /agents/llm_credential_analysis`
Run credential analysis
Forward credential analysis request to agents service
**Request Body:** JSON object
**Returns:** 200 on success
---
### `GET /agents/spend-data`
Get LLM spend and usage data
Get total spend and token usage statistics from LiteLLM logs
**Returns:** 200 on success
---
### `POST /agents/text_summarizer`
Run text summarization
Forward text summarization request to agents service
**Request Body:** JSON object
**Returns:** 200 on success
---
### `GET /system/apprise-info`
Get Apprise alert information
Get information about configured alert channels (currently Slack only)
**Returns:** 200 on success
---
### `GET /system/available-services`
Get available services
Query Traefik to determine which optional services are currently available
**Returns:** 200 on success
---
### `POST /system/cleanup`
Trigger database and datalake cleanup
Trigger the housekeeping service to clean up expired files and database entries, and reset the workflow manager state. Optionally specify an expiration date or 'all' to remove all files.
**Request Body:** `CleanupRequest` (JSON)
**Returns:** 200 on success
---
### `GET /system/container-monitor/status`
Container monitor status
Get the status of the container file monitor
**Returns:** 200 on success
---
### `GET /system/health`
Health check
Health check endpoint for Docker healthcheck
**Returns:** 200 on success
---
### `GET /system/info`
API information
Root endpoint that shows API information
**Returns:** 200 on success
---
### `POST /system/yara/reload`
Reload Yara rules
Trigger a reload of all Yara rules in the backend across all workers/replicas
**Returns:** 200 on success
---
## Workflows
### `GET /workflows/failed`
Get failed workflows
Get the set of failed enrichment workflows
**Returns:** 200 on success
---
### `GET /workflows/status`
Get workflow enrichment workflow status
Get the current status of the enrichment workflow system
**Returns:** 200 on success
---