mirror of
https://github.com/SpecterOps/Nemesis
synced 2026-06-08 12:36:42 +00:00
3382 lines
90 KiB
JSON
3382 lines
90 KiB
JSON
{
|
|
"openapi": "3.1.0",
|
|
"info": {
|
|
"title": "Enrichment API",
|
|
"description": "API for file enrichment services",
|
|
"version": "0.1.0"
|
|
},
|
|
"paths": {
|
|
"/files": {
|
|
"post": {
|
|
"tags": [
|
|
"files"
|
|
],
|
|
"summary": "Upload file with metadata",
|
|
"description": "Upload a file using multipart/form-data with metadata.\n Returns an object_id for the uploaded file and submission_id for the metadata submission.\n\n Example:\n ```\n 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\n ```\n\n Example:\n ```\n 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\n ```",
|
|
"operationId": "upload_file_files_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"multipart/form-data": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Body_upload_file_files_post"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FileWithMetadataResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/files/{object_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"files"
|
|
],
|
|
"summary": "Download a file",
|
|
"description": "Download a file by its object ID with optional raw format and custom filename",
|
|
"operationId": "download_file_files__object_id__get",
|
|
"parameters": [
|
|
{
|
|
"name": "object_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Unique identifier of the file to download",
|
|
"title": "Object Id"
|
|
},
|
|
"description": "Unique identifier of the file to download"
|
|
},
|
|
{
|
|
"name": "raw",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"description": "Whether to return the file in raw format",
|
|
"default": false,
|
|
"title": "Raw"
|
|
},
|
|
"description": "Whether to return the file in raw format"
|
|
},
|
|
{
|
|
"name": "name",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Custom filename for the downloaded file",
|
|
"default": "",
|
|
"title": "Name"
|
|
},
|
|
"description": "Custom filename for the downloaded file"
|
|
},
|
|
{
|
|
"name": "offset",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Byte offset to start reading from",
|
|
"default": 0,
|
|
"title": "Offset"
|
|
},
|
|
"description": "Byte offset to start reading from"
|
|
},
|
|
{
|
|
"name": "length",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Number of bytes to read (0 = entire file)",
|
|
"default": 0,
|
|
"title": "Length"
|
|
},
|
|
"description": "Number of bytes to read (0 = entire file)"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Not Found"
|
|
},
|
|
"400": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Bad Request"
|
|
},
|
|
"500": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Internal Server Error"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/containers": {
|
|
"post": {
|
|
"tags": [
|
|
"files"
|
|
],
|
|
"summary": "Submit large container file for processing with optional filtering",
|
|
"description": "...",
|
|
"operationId": "submit_container_containers_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"multipart/form-data": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Body_submit_container_containers_post"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ContainerSubmissionResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/containers/{container_id}/status": {
|
|
"get": {
|
|
"tags": [
|
|
"files"
|
|
],
|
|
"summary": "Get container processing status",
|
|
"description": "Get the current processing status and progress of a submitted container",
|
|
"operationId": "get_container_status_containers__container_id__status_get",
|
|
"parameters": [
|
|
{
|
|
"name": "container_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Unique identifier of the container",
|
|
"title": "Container Id"
|
|
},
|
|
"description": "Unique identifier of the container"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ContainerStatusResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Not Found"
|
|
},
|
|
"500": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Internal Server Error"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workflows/status": {
|
|
"get": {
|
|
"tags": [
|
|
"workflows"
|
|
],
|
|
"summary": "Get workflow enrichment workflow status",
|
|
"description": "Get the current status of the enrichment workflow system",
|
|
"operationId": "get_status_workflows_status_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/WorkflowStatusResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/workflows/failed": {
|
|
"get": {
|
|
"tags": [
|
|
"workflows"
|
|
],
|
|
"summary": "Get failed workflows",
|
|
"description": "Get the set of failed enrichment workflows",
|
|
"operationId": "get_failed_workflows_failed_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FailedWorkflowsResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/enrichments": {
|
|
"get": {
|
|
"tags": [
|
|
"enrichments"
|
|
],
|
|
"summary": "List enrichment modules",
|
|
"description": "Get a list of all available enrichment modules",
|
|
"operationId": "list_enrichments_enrichments_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EnrichmentsListResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/enrichments/{enrichment_name}": {
|
|
"post": {
|
|
"tags": [
|
|
"enrichments"
|
|
],
|
|
"summary": "Run enrichment module",
|
|
"description": "Run a specific enrichment module on a file",
|
|
"operationId": "run_enrichment_enrichments__enrichment_name__post",
|
|
"parameters": [
|
|
{
|
|
"name": "enrichment_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Name of the enrichment module to run",
|
|
"title": "Enrichment Name"
|
|
},
|
|
"description": "Name of the enrichment module to run"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EnrichmentRequest",
|
|
"description": "The enrichment request containing the object ID"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EnrichmentResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Not Found"
|
|
},
|
|
"500": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Internal Server Error"
|
|
},
|
|
"503": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Service Unavailable"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/enrichments/{enrichment_name}/bulk": {
|
|
"post": {
|
|
"tags": [
|
|
"enrichments"
|
|
],
|
|
"summary": "Start bulk enrichment",
|
|
"description": "Start bulk enrichment for a specific module against all files in the system using distributed processing",
|
|
"operationId": "run_bulk_enrichment_enrichments__enrichment_name__bulk_post",
|
|
"parameters": [
|
|
{
|
|
"name": "enrichment_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Name of the enrichment module to run",
|
|
"title": "Enrichment Name"
|
|
},
|
|
"description": "Name of the enrichment module to run"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Not Found"
|
|
},
|
|
"500": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Internal Server Error"
|
|
},
|
|
"503": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Service Unavailable"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/enrichments/{enrichment_name}/bulk/status": {
|
|
"get": {
|
|
"tags": [
|
|
"enrichments"
|
|
],
|
|
"summary": "Get bulk enrichment status",
|
|
"description": "Bulk enrichment status tracking has been simplified",
|
|
"operationId": "get_bulk_enrichment_status_enrichments__enrichment_name__bulk_status_get",
|
|
"parameters": [
|
|
{
|
|
"name": "enrichment_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Name of the enrichment module to check status for",
|
|
"title": "Enrichment Name"
|
|
},
|
|
"description": "Name of the enrichment module to check status for"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/enrichments/{enrichment_name}/bulk/stop": {
|
|
"post": {
|
|
"tags": [
|
|
"enrichments"
|
|
],
|
|
"summary": "Stop bulk enrichment",
|
|
"description": "Bulk enrichment cannot be stopped once tasks are published",
|
|
"operationId": "stop_bulk_enrichment_enrichments__enrichment_name__bulk_stop_post",
|
|
"parameters": [
|
|
{
|
|
"name": "enrichment_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Name of the enrichment module to stop",
|
|
"title": "Enrichment Name"
|
|
},
|
|
"description": "Name of the enrichment module to stop"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/dpapi/credentials": {
|
|
"post": {
|
|
"tags": [
|
|
"dpapi"
|
|
],
|
|
"summary": "Submit DPAPI credential for masterkey decryption",
|
|
"description": "Submit credential material to decrypt DPAPI master keys. Supports passwords, NTLM hashes, cred keys, domain backup keys, decrypted master keys, and Chromium app-bound-encryption keys.",
|
|
"operationId": "submit_dpapi_credential_dpapi_credentials_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DpapiCredentialRequest",
|
|
"description": "The DPAPI credential data"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/queues": {
|
|
"get": {
|
|
"tags": [
|
|
"queues"
|
|
],
|
|
"summary": "Get queue statistics",
|
|
"description": "Get comprehensive queue metrics for all workflow topics",
|
|
"operationId": "get_queue_metrics_queues_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QueuesResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/queues/{queue_name}": {
|
|
"get": {
|
|
"tags": [
|
|
"queues"
|
|
],
|
|
"summary": "Get single queue statistics",
|
|
"description": "Get metrics for a specific queue topic",
|
|
"operationId": "get_single_queue_metrics_queues__queue_name__get",
|
|
"parameters": [
|
|
{
|
|
"name": "queue_name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Name of the queue to get metrics for",
|
|
"title": "Queue Name"
|
|
},
|
|
"description": "Name of the queue to get metrics for"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SingleQueueResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
},
|
|
"description": "Internal Server Error"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system/yara/reload": {
|
|
"post": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Reload Yara rules",
|
|
"description": "Trigger a reload of all Yara rules in the backend across all workers/replicas",
|
|
"operationId": "reload_yara_rules_system_yara_reload_post",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/YaraReloadResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system/cleanup": {
|
|
"post": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Trigger database and datalake cleanup",
|
|
"description": "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.",
|
|
"operationId": "trigger_cleanup_system_cleanup_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CleanupRequest",
|
|
"description": "Optional cleanup parameters"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system/health": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Health check",
|
|
"description": "Health check endpoint for Docker healthcheck",
|
|
"operationId": "healthcheck_system_health_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HealthResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system/info": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "API information",
|
|
"description": "Root endpoint that shows API information",
|
|
"operationId": "root_system_info_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/APIInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system/apprise-info": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Get Apprise alert information",
|
|
"description": "Get information about configured alert channels (currently Slack only)",
|
|
"operationId": "get_apprise_info_system_apprise_info_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agents": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Get available agents",
|
|
"description": "Get a list of available AI agents with their metadata and capabilities",
|
|
"operationId": "get_available_agents_agents_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agents/spend-data": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Get LLM spend and usage data",
|
|
"description": "Get total spend and token usage statistics from LiteLLM logs",
|
|
"operationId": "get_agents_spend_data_agents_spend_data_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agents/text_summarizer": {
|
|
"post": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Run text summarization",
|
|
"description": "Trigger text summarization in background (non-blocking)",
|
|
"operationId": "run_text_summarizer_agents_text_summarizer_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Request",
|
|
"description": "Request containing object_id"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agents/llm_credential_analysis": {
|
|
"post": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Run credential analysis",
|
|
"description": "Trigger credential analysis in background (non-blocking)",
|
|
"operationId": "run_llm_credential_analysis_agents_llm_credential_analysis_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Request",
|
|
"description": "Request containing object_id"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agents/dotnet_analysis": {
|
|
"post": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Run .NET assembly analysis",
|
|
"description": "Trigger .NET assembly analysis in background (non-blocking)",
|
|
"operationId": "run_dotnet_analysis_agents_dotnet_analysis_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Request",
|
|
"description": "Request containing object_id"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agents/translate": {
|
|
"post": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Run text translation",
|
|
"description": "Trigger text translation in background (non-blocking)",
|
|
"operationId": "run_translation_agents_translate_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Request",
|
|
"description": "Request containing object_id and optional target_language"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/chatbot/stream": {
|
|
"post": {
|
|
"tags": [
|
|
"chatbot"
|
|
],
|
|
"summary": "Stream chatbot responses",
|
|
"description": "Stream interactive chatbot responses for querying Nemesis data",
|
|
"operationId": "chatbot_stream_chatbot_stream_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChatbotRequest",
|
|
"description": "Chatbot request with message and conversation history"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system/available-services": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Get available services",
|
|
"description": "Query Traefik to determine which optional services are currently available",
|
|
"operationId": "get_available_services_system_available_services_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system/container-monitor/status": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Container monitor status",
|
|
"description": "Get the status of the container file monitor",
|
|
"operationId": "get_container_monitor_status_system_container_monitor_status_get",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/sources": {
|
|
"get": {
|
|
"tags": [
|
|
"reports"
|
|
],
|
|
"summary": "List all sources",
|
|
"description": "Get a list of all sources with summary statistics",
|
|
"operationId": "list_sources_reports_sources_get",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by project name",
|
|
"title": "Project"
|
|
},
|
|
"description": "Filter by project name"
|
|
},
|
|
{
|
|
"name": "start_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by start date",
|
|
"title": "Start Date"
|
|
},
|
|
"description": "Filter by start date"
|
|
},
|
|
{
|
|
"name": "end_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by end date",
|
|
"title": "End Date"
|
|
},
|
|
"description": "Filter by end date"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SourceSummary"
|
|
},
|
|
"title": "Response List Sources Reports Sources Get"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/source": {
|
|
"get": {
|
|
"tags": [
|
|
"reports"
|
|
],
|
|
"summary": "Get source report",
|
|
"description": "Get detailed report for a specific source. Use query parameter to support sources with special characters (e.g., URLs)",
|
|
"operationId": "get_source_report_reports_source_get",
|
|
"parameters": [
|
|
{
|
|
"name": "source",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Source name (supports URLs and special characters, case-insensitive)",
|
|
"title": "Source"
|
|
},
|
|
"description": "Source name (supports URLs and special characters, case-insensitive)"
|
|
},
|
|
{
|
|
"name": "start_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by start date",
|
|
"title": "Start Date"
|
|
},
|
|
"description": "Filter by start date"
|
|
},
|
|
{
|
|
"name": "end_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by end date",
|
|
"title": "End Date"
|
|
},
|
|
"description": "Filter by end date"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SourceReport"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/system": {
|
|
"get": {
|
|
"tags": [
|
|
"reports"
|
|
],
|
|
"summary": "Get system-wide report",
|
|
"description": "Get system-wide statistics and findings across all sources",
|
|
"operationId": "get_system_report_reports_system_get",
|
|
"parameters": [
|
|
{
|
|
"name": "start_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by start date",
|
|
"title": "Start Date"
|
|
},
|
|
"description": "Filter by start date"
|
|
},
|
|
{
|
|
"name": "end_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by end date",
|
|
"title": "End Date"
|
|
},
|
|
"description": "Filter by end date"
|
|
},
|
|
{
|
|
"name": "project",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by project name",
|
|
"title": "Project"
|
|
},
|
|
"description": "Filter by project name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SystemReport"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/source/synthesize": {
|
|
"post": {
|
|
"tags": [
|
|
"reports"
|
|
],
|
|
"summary": "Generate LLM synthesis for source report",
|
|
"description": "Generate AI-based risk assessment synthesis for a specific source. NOT CACHED - regenerated each time.",
|
|
"operationId": "synthesize_source_report_reports_source_synthesize_post",
|
|
"parameters": [
|
|
{
|
|
"name": "source",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Source name (supports URLs and special characters, case-insensitive)",
|
|
"title": "Source"
|
|
},
|
|
"description": "Source name (supports URLs and special characters, case-insensitive)"
|
|
},
|
|
{
|
|
"name": "include_findings_details",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "boolean",
|
|
"description": "Include detailed findings in the analysis",
|
|
"default": true,
|
|
"title": "Include Findings Details"
|
|
},
|
|
"description": "Include detailed findings in the analysis"
|
|
},
|
|
{
|
|
"name": "max_tokens",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"description": "Maximum tokens for LLM analysis",
|
|
"default": 150000,
|
|
"title": "Max Tokens"
|
|
},
|
|
"description": "Maximum tokens for LLM analysis"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LLMSynthesisResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/system/synthesize": {
|
|
"post": {
|
|
"tags": [
|
|
"reports"
|
|
],
|
|
"summary": "Generate LLM synthesis for system report",
|
|
"description": "Generate AI-based risk assessment synthesis for the entire system. NOT CACHED - regenerated each time.",
|
|
"operationId": "synthesize_system_report_reports_system_synthesize_post",
|
|
"parameters": [
|
|
{
|
|
"name": "max_tokens",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"description": "Maximum tokens for LLM analysis",
|
|
"default": 150000,
|
|
"title": "Max Tokens"
|
|
},
|
|
"description": "Maximum tokens for LLM analysis"
|
|
},
|
|
{
|
|
"name": "start_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by start date",
|
|
"title": "Start Date"
|
|
},
|
|
"description": "Filter by start date"
|
|
},
|
|
{
|
|
"name": "end_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by end date",
|
|
"title": "End Date"
|
|
},
|
|
"description": "Filter by end date"
|
|
},
|
|
{
|
|
"name": "project",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by project name",
|
|
"title": "Project"
|
|
},
|
|
"description": "Filter by project name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LLMSynthesisResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/source/pdf": {
|
|
"post": {
|
|
"tags": [
|
|
"reports"
|
|
],
|
|
"summary": "Download source report as PDF",
|
|
"description": "Generate and download a PDF report for a specific source. POST allows including pre-generated AI synthesis.",
|
|
"operationId": "download_source_report_pdf_reports_source_pdf_post",
|
|
"parameters": [
|
|
{
|
|
"name": "source",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"description": "Source name (supports URLs and special characters, case-insensitive)",
|
|
"title": "Source"
|
|
},
|
|
"description": "Source name (supports URLs and special characters, case-insensitive)"
|
|
},
|
|
{
|
|
"name": "start_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by start date",
|
|
"title": "Start Date"
|
|
},
|
|
"description": "Filter by start date"
|
|
},
|
|
{
|
|
"name": "end_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by end date",
|
|
"title": "End Date"
|
|
},
|
|
"description": "Filter by end date"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Optional pre-generated AI synthesis to include in PDF",
|
|
"title": "Ai Synthesis"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reports/system/pdf": {
|
|
"get": {
|
|
"tags": [
|
|
"reports"
|
|
],
|
|
"summary": "Download system-wide report as PDF",
|
|
"description": "Generate and download a PDF report for the entire system",
|
|
"operationId": "download_system_report_pdf_reports_system_pdf_get",
|
|
"parameters": [
|
|
{
|
|
"name": "start_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by start date",
|
|
"title": "Start Date"
|
|
},
|
|
"description": "Filter by start date"
|
|
},
|
|
{
|
|
"name": "end_date",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by end date",
|
|
"title": "End Date"
|
|
},
|
|
"description": "Filter by end date"
|
|
},
|
|
{
|
|
"name": "project",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Filter by project name",
|
|
"title": "Project"
|
|
},
|
|
"description": "Filter by project name"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"description": "Validation Error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"APIInfo": {
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"title": "Name",
|
|
"description": "API name"
|
|
},
|
|
"version": {
|
|
"type": "string",
|
|
"title": "Version",
|
|
"description": "API version"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"version"
|
|
],
|
|
"title": "APIInfo",
|
|
"description": "Model representing API information"
|
|
},
|
|
"ActiveWorkflowDetail": {
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"title": "Id"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"title": "Status"
|
|
},
|
|
"filename": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Filename"
|
|
},
|
|
"object_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Object Id"
|
|
},
|
|
"timestamp": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Timestamp"
|
|
},
|
|
"runtime_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Runtime Seconds"
|
|
},
|
|
"error": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Error"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"status"
|
|
],
|
|
"title": "ActiveWorkflowDetail"
|
|
},
|
|
"Body_submit_container_containers_post": {
|
|
"properties": {
|
|
"file": {
|
|
"type": "string",
|
|
"format": "binary",
|
|
"title": "File",
|
|
"description": "The container file to process"
|
|
},
|
|
"metadata": {
|
|
"type": "string",
|
|
"title": "Metadata",
|
|
"description": "JSON string containing file metadata with optional file_filters"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"metadata"
|
|
],
|
|
"title": "Body_submit_container_containers_post"
|
|
},
|
|
"Body_upload_file_files_post": {
|
|
"properties": {
|
|
"file": {
|
|
"type": "string",
|
|
"format": "binary",
|
|
"title": "File",
|
|
"description": "The file to upload"
|
|
},
|
|
"metadata": {
|
|
"type": "string",
|
|
"title": "Metadata",
|
|
"description": "JSON string containing file metadata"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"file",
|
|
"metadata"
|
|
],
|
|
"title": "Body_upload_file_files_post"
|
|
},
|
|
"ChatbotMessage": {
|
|
"properties": {
|
|
"role": {
|
|
"type": "string",
|
|
"title": "Role"
|
|
},
|
|
"content": {
|
|
"type": "string",
|
|
"title": "Content"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"role",
|
|
"content"
|
|
],
|
|
"title": "ChatbotMessage",
|
|
"description": "A single chat message."
|
|
},
|
|
"ChatbotRequest": {
|
|
"properties": {
|
|
"message": {
|
|
"type": "string",
|
|
"title": "Message"
|
|
},
|
|
"history": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/ChatbotMessage"
|
|
},
|
|
"type": "array",
|
|
"title": "History",
|
|
"default": []
|
|
},
|
|
"use_history": {
|
|
"type": "boolean",
|
|
"title": "Use History",
|
|
"default": true
|
|
},
|
|
"temperature": {
|
|
"type": "number",
|
|
"title": "Temperature",
|
|
"default": 0.7
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"message"
|
|
],
|
|
"title": "ChatbotRequest",
|
|
"description": "Request model for chatbot queries."
|
|
},
|
|
"ChromiumAppBoundKeyCredential": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "chromium_app_bound_key",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"title": "Value"
|
|
},
|
|
"source": {
|
|
"type": "string",
|
|
"title": "Source"
|
|
},
|
|
"browser": {
|
|
"type": "string",
|
|
"enum": [
|
|
"chrome",
|
|
"edge",
|
|
"brave",
|
|
"opera"
|
|
],
|
|
"title": "Browser",
|
|
"default": "chrome"
|
|
},
|
|
"username": {
|
|
"type": "string",
|
|
"title": "Username",
|
|
"default": "UNKNOWN"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value",
|
|
"source"
|
|
],
|
|
"title": "ChromiumAppBoundKeyCredential",
|
|
"description": "Chromium App-Bound-Encryption key credential."
|
|
},
|
|
"CleanupRequest": {
|
|
"properties": {
|
|
"expiration": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Expiration"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"title": "CleanupRequest"
|
|
},
|
|
"ContainerStatusResponse": {
|
|
"properties": {
|
|
"container_id": {
|
|
"type": "string",
|
|
"title": "Container Id"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"title": "Status"
|
|
},
|
|
"progress_percent_files": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Progress Percent Files"
|
|
},
|
|
"progress_percent_bytes": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Progress Percent Bytes"
|
|
},
|
|
"processed_files": {
|
|
"type": "integer",
|
|
"title": "Processed Files"
|
|
},
|
|
"total_files": {
|
|
"type": "integer",
|
|
"title": "Total Files"
|
|
},
|
|
"processed_bytes": {
|
|
"type": "integer",
|
|
"title": "Processed Bytes"
|
|
},
|
|
"total_bytes": {
|
|
"type": "integer",
|
|
"title": "Total Bytes"
|
|
},
|
|
"current_file": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Current File"
|
|
},
|
|
"started_at": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Started At"
|
|
},
|
|
"error": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Error"
|
|
},
|
|
"filter_stats": {
|
|
"anyOf": [
|
|
{
|
|
"additionalProperties": true,
|
|
"type": "object"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Filter Stats"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"container_id",
|
|
"status",
|
|
"processed_files",
|
|
"total_files",
|
|
"processed_bytes",
|
|
"total_bytes"
|
|
],
|
|
"title": "ContainerStatusResponse"
|
|
},
|
|
"ContainerSubmissionResponse": {
|
|
"properties": {
|
|
"container_id": {
|
|
"type": "string",
|
|
"title": "Container Id"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"title": "Message"
|
|
},
|
|
"estimated_files": {
|
|
"type": "integer",
|
|
"title": "Estimated Files"
|
|
},
|
|
"estimated_size": {
|
|
"type": "integer",
|
|
"title": "Estimated Size"
|
|
},
|
|
"filter_config": {
|
|
"anyOf": [
|
|
{
|
|
"additionalProperties": true,
|
|
"type": "object"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Filter Config"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"container_id",
|
|
"message",
|
|
"estimated_files",
|
|
"estimated_size"
|
|
],
|
|
"title": "ContainerSubmissionResponse"
|
|
},
|
|
"DomainBackupKeyCredential": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "domain_backup_key",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"title": "Value"
|
|
},
|
|
"guid": {
|
|
"type": "string",
|
|
"title": "Guid"
|
|
},
|
|
"domain_controller": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Domain Controller"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value",
|
|
"guid"
|
|
],
|
|
"title": "DomainBackupKeyCredential",
|
|
"description": "Domain backup key credential (PVK format)."
|
|
},
|
|
"DpapiCredentialRequest": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/components/schemas/PasswordCredentialKey"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/NtlmHashCredentialKey"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/Sha1CredentialKey"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/Pbkdf2StrongCredentialKey"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/DomainBackupKeyCredential"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/MasterKeyGuidPairList"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/DpapiSystemCredentialRequest"
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/ChromiumAppBoundKeyCredential"
|
|
}
|
|
]
|
|
},
|
|
"DpapiSystemCredentialRequest": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "dpapi_system",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"pattern": "^[0-9a-fA-F]{80}$",
|
|
"title": "Value",
|
|
"description": "Hex-encoded DPAPI_SYSTEM LSA secret (40 bytes)"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
],
|
|
"title": "DpapiSystemCredentialRequest",
|
|
"description": "DPAPI_SYSTEM LSA Secret credential sent in an API request."
|
|
},
|
|
"EnrichmentRequest": {
|
|
"properties": {
|
|
"object_id": {
|
|
"type": "string",
|
|
"title": "Object Id"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"object_id"
|
|
],
|
|
"title": "EnrichmentRequest"
|
|
},
|
|
"EnrichmentResponse": {
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"title": "Status"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"title": "Message"
|
|
},
|
|
"instance_id": {
|
|
"type": "string",
|
|
"title": "Instance Id"
|
|
},
|
|
"object_id": {
|
|
"type": "string",
|
|
"title": "Object Id"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"status",
|
|
"message",
|
|
"instance_id",
|
|
"object_id"
|
|
],
|
|
"title": "EnrichmentResponse"
|
|
},
|
|
"EnrichmentsListResponse": {
|
|
"properties": {
|
|
"modules": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array",
|
|
"title": "Modules"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"modules"
|
|
],
|
|
"title": "EnrichmentsListResponse"
|
|
},
|
|
"ErrorResponse": {
|
|
"properties": {
|
|
"detail": {
|
|
"type": "string",
|
|
"title": "Detail",
|
|
"description": "Error message details"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"detail"
|
|
],
|
|
"title": "ErrorResponse"
|
|
},
|
|
"FailedWorkflowsResponse": {
|
|
"properties": {
|
|
"failed_count": {
|
|
"type": "integer",
|
|
"title": "Failed Count"
|
|
},
|
|
"workflows": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/ActiveWorkflowDetail"
|
|
},
|
|
"type": "array",
|
|
"title": "Workflows",
|
|
"default": []
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"title": "Timestamp"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"failed_count",
|
|
"timestamp"
|
|
],
|
|
"title": "FailedWorkflowsResponse"
|
|
},
|
|
"FileWithMetadataResponse": {
|
|
"properties": {
|
|
"object_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Object Id",
|
|
"description": "Unique identifier for the uploaded file"
|
|
},
|
|
"submission_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Submission Id",
|
|
"description": "Unique identifier for the metadata submission"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"object_id",
|
|
"submission_id"
|
|
],
|
|
"title": "FileWithMetadataResponse",
|
|
"description": "Response for combined file and metadata uploads"
|
|
},
|
|
"HTTPValidationError": {
|
|
"properties": {
|
|
"detail": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/ValidationError"
|
|
},
|
|
"type": "array",
|
|
"title": "Detail"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"title": "HTTPValidationError"
|
|
},
|
|
"HealthResponse": {
|
|
"properties": {
|
|
"status": {
|
|
"type": "string",
|
|
"title": "Status",
|
|
"description": "Health status of the service"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"status"
|
|
],
|
|
"title": "HealthResponse",
|
|
"description": "Model representing health check response"
|
|
},
|
|
"LLMSynthesisResponse": {
|
|
"properties": {
|
|
"success": {
|
|
"type": "boolean",
|
|
"title": "Success"
|
|
},
|
|
"report_markdown": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Report Markdown"
|
|
},
|
|
"risk_level": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Risk Level"
|
|
},
|
|
"key_findings": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array",
|
|
"title": "Key Findings",
|
|
"default": []
|
|
},
|
|
"recommendations": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array",
|
|
"title": "Recommendations",
|
|
"default": []
|
|
},
|
|
"token_usage": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Token Usage"
|
|
},
|
|
"error": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Error"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"success"
|
|
],
|
|
"title": "LLMSynthesisResponse"
|
|
},
|
|
"MasterKeyGuidPair": {
|
|
"properties": {
|
|
"guid": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"title": "Guid",
|
|
"description": "Master key GUID"
|
|
},
|
|
"key_hex": {
|
|
"type": "string",
|
|
"pattern": "^[0-9a-fA-F]+$",
|
|
"title": "Key Hex",
|
|
"description": "Hex-encoded master key bytes"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"guid",
|
|
"key_hex"
|
|
],
|
|
"title": "MasterKeyGuidPair",
|
|
"description": "Strongly typed master key data."
|
|
},
|
|
"MasterKeyGuidPairList": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "master_key_guid_pair",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/MasterKeyGuidPair"
|
|
},
|
|
"type": "array",
|
|
"title": "Value"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value"
|
|
],
|
|
"title": "MasterKeyGuidPairList",
|
|
"description": "Decrypted master key/GUID pairs."
|
|
},
|
|
"NtlmHashCredentialKey": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "cred_key_ntlm",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"title": "Value"
|
|
},
|
|
"user_sid": {
|
|
"type": "string",
|
|
"title": "User Sid"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value",
|
|
"user_sid"
|
|
],
|
|
"title": "NtlmHashCredentialKey",
|
|
"description": "Use an NTLM hash to derive a DPAPI credential key."
|
|
},
|
|
"PasswordCredentialKey": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "password",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"title": "Value"
|
|
},
|
|
"user_sid": {
|
|
"type": "string",
|
|
"title": "User Sid"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value",
|
|
"user_sid"
|
|
],
|
|
"title": "PasswordCredentialKey",
|
|
"description": "Use a plaintext password to derive a DPAPI credential key."
|
|
},
|
|
"Pbkdf2StrongCredentialKey": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "cred_key_pbkdf2",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"title": "Value"
|
|
},
|
|
"user_sid": {
|
|
"type": "string",
|
|
"title": "User Sid"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value",
|
|
"user_sid"
|
|
],
|
|
"title": "Pbkdf2StrongCredentialKey",
|
|
"description": "Credential key object."
|
|
},
|
|
"QueueMetrics": {
|
|
"properties": {
|
|
"total_messages": {
|
|
"type": "integer",
|
|
"title": "Total Messages"
|
|
},
|
|
"ready_messages": {
|
|
"type": "integer",
|
|
"title": "Ready Messages"
|
|
},
|
|
"processing_messages": {
|
|
"type": "integer",
|
|
"title": "Processing Messages"
|
|
},
|
|
"consumers": {
|
|
"type": "integer",
|
|
"title": "Consumers"
|
|
},
|
|
"queue_exists": {
|
|
"type": "boolean",
|
|
"title": "Queue Exists"
|
|
},
|
|
"memory_bytes": {
|
|
"type": "integer",
|
|
"title": "Memory Bytes"
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"title": "State"
|
|
},
|
|
"message_stats": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Message Stats"
|
|
},
|
|
"error": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Error"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"total_messages",
|
|
"ready_messages",
|
|
"processing_messages",
|
|
"consumers",
|
|
"queue_exists",
|
|
"memory_bytes",
|
|
"state",
|
|
"message_stats"
|
|
],
|
|
"title": "QueueMetrics"
|
|
},
|
|
"QueueSummary": {
|
|
"properties": {
|
|
"total_queued_messages": {
|
|
"type": "integer",
|
|
"title": "Total Queued Messages"
|
|
},
|
|
"total_processing_messages": {
|
|
"type": "integer",
|
|
"title": "Total Processing Messages"
|
|
},
|
|
"total_consumers": {
|
|
"type": "integer",
|
|
"title": "Total Consumers"
|
|
},
|
|
"healthy_queues": {
|
|
"type": "integer",
|
|
"title": "Healthy Queues"
|
|
},
|
|
"total_queues_checked": {
|
|
"type": "integer",
|
|
"title": "Total Queues Checked"
|
|
},
|
|
"bottleneck_queues": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array",
|
|
"title": "Bottleneck Queues"
|
|
},
|
|
"queues_without_consumers": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array",
|
|
"title": "Queues Without Consumers"
|
|
},
|
|
"total_memory_bytes": {
|
|
"type": "integer",
|
|
"title": "Total Memory Bytes"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"total_queued_messages",
|
|
"total_processing_messages",
|
|
"total_consumers",
|
|
"healthy_queues",
|
|
"total_queues_checked",
|
|
"bottleneck_queues",
|
|
"queues_without_consumers",
|
|
"total_memory_bytes"
|
|
],
|
|
"title": "QueueSummary"
|
|
},
|
|
"QueuesResponse": {
|
|
"properties": {
|
|
"queue_details": {
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/QueueMetrics"
|
|
},
|
|
"type": "object",
|
|
"title": "Queue Details"
|
|
},
|
|
"summary": {
|
|
"$ref": "#/components/schemas/QueueSummary"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"title": "Timestamp"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"queue_details",
|
|
"summary",
|
|
"timestamp"
|
|
],
|
|
"title": "QueuesResponse"
|
|
},
|
|
"RiskIndicators": {
|
|
"properties": {
|
|
"credentials": {
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"type": "object",
|
|
"title": "Credentials"
|
|
},
|
|
"sensitive_data": {
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"type": "object",
|
|
"title": "Sensitive Data"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"credentials",
|
|
"sensitive_data"
|
|
],
|
|
"title": "RiskIndicators"
|
|
},
|
|
"Sha1CredentialKey": {
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "cred_key_sha1",
|
|
"title": "Type"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"title": "Value"
|
|
},
|
|
"user_sid": {
|
|
"type": "string",
|
|
"title": "User Sid"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"value",
|
|
"user_sid"
|
|
],
|
|
"title": "Sha1CredentialKey",
|
|
"description": "Use a SHA1 hash to derive a DPAPI credential key."
|
|
},
|
|
"SingleQueueResponse": {
|
|
"properties": {
|
|
"topic": {
|
|
"type": "string",
|
|
"title": "Topic"
|
|
},
|
|
"metrics": {
|
|
"$ref": "#/components/schemas/QueueMetrics"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"title": "Timestamp"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"topic",
|
|
"metrics",
|
|
"timestamp"
|
|
],
|
|
"title": "SingleQueueResponse"
|
|
},
|
|
"SourceReport": {
|
|
"properties": {
|
|
"report_type": {
|
|
"type": "string",
|
|
"title": "Report Type"
|
|
},
|
|
"source": {
|
|
"type": "string",
|
|
"title": "Source"
|
|
},
|
|
"generated_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Generated At"
|
|
},
|
|
"summary": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Summary"
|
|
},
|
|
"risk_indicators": {
|
|
"$ref": "#/components/schemas/RiskIndicators"
|
|
},
|
|
"findings_detail": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Findings Detail"
|
|
},
|
|
"timeline": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Timeline"
|
|
},
|
|
"enrichment_performance": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Enrichment Performance"
|
|
},
|
|
"top_findings": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/TopFinding"
|
|
},
|
|
"type": "array",
|
|
"title": "Top Findings"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"report_type",
|
|
"source",
|
|
"generated_at",
|
|
"summary",
|
|
"risk_indicators",
|
|
"findings_detail",
|
|
"timeline",
|
|
"enrichment_performance",
|
|
"top_findings"
|
|
],
|
|
"title": "SourceReport"
|
|
},
|
|
"SourceSummary": {
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"title": "Source"
|
|
},
|
|
"file_count": {
|
|
"type": "integer",
|
|
"title": "File Count"
|
|
},
|
|
"finding_count": {
|
|
"type": "integer",
|
|
"title": "Finding Count"
|
|
},
|
|
"verified_findings": {
|
|
"type": "integer",
|
|
"title": "Verified Findings"
|
|
},
|
|
"last_activity": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Last Activity"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"source",
|
|
"file_count",
|
|
"finding_count",
|
|
"verified_findings"
|
|
],
|
|
"title": "SourceSummary"
|
|
},
|
|
"SystemReport": {
|
|
"properties": {
|
|
"report_type": {
|
|
"type": "string",
|
|
"title": "Report Type"
|
|
},
|
|
"generated_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Generated At"
|
|
},
|
|
"time_range": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Time Range"
|
|
},
|
|
"summary": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Summary"
|
|
},
|
|
"sources": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/SourceSummary"
|
|
},
|
|
"type": "array",
|
|
"title": "Sources"
|
|
},
|
|
"findings_by_category": {
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"type": "object",
|
|
"title": "Findings By Category"
|
|
},
|
|
"findings_by_severity": {
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"type": "object",
|
|
"title": "Findings By Severity"
|
|
},
|
|
"timeline": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Timeline"
|
|
},
|
|
"enrichment_stats": {
|
|
"additionalProperties": true,
|
|
"type": "object",
|
|
"title": "Enrichment Stats"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"report_type",
|
|
"generated_at",
|
|
"time_range",
|
|
"summary",
|
|
"sources",
|
|
"findings_by_category",
|
|
"findings_by_severity",
|
|
"timeline",
|
|
"enrichment_stats"
|
|
],
|
|
"title": "SystemReport"
|
|
},
|
|
"TopFinding": {
|
|
"properties": {
|
|
"finding_id": {
|
|
"type": "integer",
|
|
"title": "Finding Id"
|
|
},
|
|
"finding_name": {
|
|
"type": "string",
|
|
"title": "Finding Name"
|
|
},
|
|
"category": {
|
|
"type": "string",
|
|
"title": "Category"
|
|
},
|
|
"severity": {
|
|
"type": "integer",
|
|
"title": "Severity"
|
|
},
|
|
"triage_state": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Triage State"
|
|
},
|
|
"file_path": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "File Path"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"title": "Created At"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"finding_id",
|
|
"finding_name",
|
|
"category",
|
|
"severity",
|
|
"created_at"
|
|
],
|
|
"title": "TopFinding"
|
|
},
|
|
"ValidationError": {
|
|
"properties": {
|
|
"loc": {
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "integer"
|
|
}
|
|
]
|
|
},
|
|
"type": "array",
|
|
"title": "Location"
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"title": "Message"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"title": "Error Type"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"loc",
|
|
"msg",
|
|
"type"
|
|
],
|
|
"title": "ValidationError"
|
|
},
|
|
"WorkflowMetrics": {
|
|
"properties": {
|
|
"completed_count": {
|
|
"type": "integer",
|
|
"title": "Completed Count"
|
|
},
|
|
"failed_count": {
|
|
"type": "integer",
|
|
"title": "Failed Count"
|
|
},
|
|
"total_processed": {
|
|
"type": "integer",
|
|
"title": "Total Processed"
|
|
},
|
|
"success_rate": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Success Rate"
|
|
},
|
|
"processing_times": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/WorkflowProcessingStats"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"completed_count",
|
|
"failed_count",
|
|
"total_processed"
|
|
],
|
|
"title": "WorkflowMetrics"
|
|
},
|
|
"WorkflowProcessingStats": {
|
|
"properties": {
|
|
"avg_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Avg Seconds"
|
|
},
|
|
"min_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Min Seconds"
|
|
},
|
|
"max_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Max Seconds"
|
|
},
|
|
"p50_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "P50 Seconds"
|
|
},
|
|
"p90_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "P90 Seconds"
|
|
},
|
|
"p95_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "P95 Seconds"
|
|
},
|
|
"p99_seconds": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "P99 Seconds"
|
|
},
|
|
"samples_count": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Samples Count"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"title": "WorkflowProcessingStats"
|
|
},
|
|
"WorkflowStatusResponse": {
|
|
"properties": {
|
|
"active_workflows": {
|
|
"type": "integer",
|
|
"title": "Active Workflows"
|
|
},
|
|
"status_counts": {
|
|
"anyOf": [
|
|
{
|
|
"additionalProperties": {
|
|
"type": "integer"
|
|
},
|
|
"type": "object"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Status Counts"
|
|
},
|
|
"active_details": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/ActiveWorkflowDetail"
|
|
},
|
|
"type": "array",
|
|
"title": "Active Details",
|
|
"default": []
|
|
},
|
|
"metrics": {
|
|
"$ref": "#/components/schemas/WorkflowMetrics"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"title": "Timestamp"
|
|
},
|
|
"error": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Error"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"active_workflows",
|
|
"metrics",
|
|
"timestamp"
|
|
],
|
|
"title": "WorkflowStatusResponse"
|
|
},
|
|
"YaraReloadResponse": {
|
|
"properties": {
|
|
"message": {
|
|
"type": "string",
|
|
"title": "Message",
|
|
"description": "Status message for Yara rules reload"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"required": [
|
|
"message"
|
|
],
|
|
"title": "YaraReloadResponse",
|
|
"description": "Model representing Yara rules reload response"
|
|
}
|
|
}
|
|
},
|
|
"tags": [
|
|
{
|
|
"name": "files",
|
|
"description": "File management operations"
|
|
},
|
|
{
|
|
"name": "workflows",
|
|
"description": "Workflow management operations"
|
|
},
|
|
{
|
|
"name": "enrichments",
|
|
"description": "Enrichment management operations"
|
|
},
|
|
{
|
|
"name": "dpapi",
|
|
"description": "DPAPI credential and masterkey operations"
|
|
},
|
|
{
|
|
"name": "queues",
|
|
"description": "Internal pub/sub queue operations"
|
|
},
|
|
{
|
|
"name": "reports",
|
|
"description": "Reporting and analytics operations"
|
|
},
|
|
{
|
|
"name": "system",
|
|
"description": "System and health check endpoints"
|
|
}
|
|
]
|
|
} |