> For the complete documentation index, see [llms.txt](https://ai-security-docs.akto.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ai-security-docs.akto.io/api-reference/scan-results/modify-data.md).

# Modify Data

<table data-full-width="true"><thead><tr><th width="335.3671875">API</th><th>Description</th></tr></thead><tbody><tr><td><strong>POST /api/updateIssueStatus</strong></td><td>Update the status of an issue or vulnerability found in scan results.</td></tr><tr><td><strong>POST /api/bulkUpdateIssueStatus</strong></td><td>Bulk updates the status of multiple issues at once.</td></tr><tr><td><strong>POST /api/bulkUpdateIssueSeverity</strong></td><td>Bulk updates the severity level of multiple issues.</td></tr><tr><td><strong>POST /api/setFalsePositives</strong></td><td>Marks one or more issues as false positives.</td></tr><tr><td><strong>POST /api/updateIssueDescription</strong></td><td>Updates the description or notes for a specific issue.</td></tr><tr><td><strong>POST /api/generateThreatReport</strong></td><td>Generates a threat report based on current scan data and filters.</td></tr></tbody></table>

## POST /api/updateIssueStatus

> POST request for endpoint /api/updateIssueStatus

```json
{"openapi":"3.0.1","info":{"title":"AktoSwagger","version":"1.0.0"},"paths":{"/api/updateIssueStatus":{"post":{"summary":"POST request for endpoint /api/updateIssueStatus","operationId":"/api/updateIssueStatus-POST","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"issueId":{"type":"object","properties":{"testSubCategory":{"type":"string"},"testErrorSource":{"type":"string"},"testCategoryFromSourceConfig":{"type":"string"},"apiInfoKey":{"type":"object","properties":{"method":{"type":"string"},"apiCollectionId":{"type":"integer","format":"int32"},"url":{"type":"string"}}},"testSourceConfig":{"type":"string"}}},"ignoreReason":{"type":"string"},"statusToBeUpdated":{"type":"string"}},"description":"Sample description"}}}},"responses":{"200":{"description":"description","content":{"application/json":{"schema":{"type":"object","properties":{"filterSubCategory":{"type":"string"},"vulnerableRequests":{"type":"string"},"issueId":{"type":"object","properties":{"testSubCategory":{"type":"string"},"testErrorSource":{"type":"string"},"testCategoryFromSourceConfig":{"type":"string"},"apiInfoKey":{"type":"object","properties":{"method":{"type":"string"},"apiCollectionId":{"type":"integer","format":"int32"},"url":{"type":"string"}}},"testSourceConfig":{"type":"string"}}},"filterCollectionsId":{"type":"string"},"similarlyAffectedIssues":{"type":"string"},"filterStatus":{"type":"string"},"skip":{"type":"integer","format":"int32"},"filterSeverity":{"type":"string"},"startEpoch":{"type":"integer","format":"int32"},"issueIdArray":{"type":"string"},"testSourceConfigs":{"type":"string"},"issues":{"type":"string"},"subCategories":{"type":"string"},"totalIssuesCount":{"type":"integer","format":"int32"},"testingRunResult":{"type":"string"},"ignoreReason":{"type":"string"},"limit":{"type":"integer","format":"int32"},"categories":{"type":"string"},"statusToBeUpdated":{"type":"string"}},"description":"Sample description"}}}}}}}}}
```

## Bulk update issue status

> Updates the status (OPEN, FIXED, IGNORED) of one or more issues identified by their \`TestingIssuesId\` objects. Optionally sets an \`ignoreReason\` (required when \`statusToBeUpdated\` is \`IGNORED\`), a custom \`description\`, and a map of result hex IDs used for asynchronous summary-count recalculation.\
> \
> Source: \`IssuesAction.bulkUpdateIssueStatus()\`

```json
{"openapi":"3.0.1","info":{"title":"AktoSwagger","version":"1.0.0"},"paths":{"/api/bulkUpdateIssueStatus":{"post":{"summary":"Bulk update issue status","description":"Updates the status (OPEN, FIXED, IGNORED) of one or more issues identified by their `TestingIssuesId` objects. Optionally sets an `ignoreReason` (required when `statusToBeUpdated` is `IGNORED`), a custom `description`, and a map of result hex IDs used for asynchronous summary-count recalculation.\n\nSource: `IssuesAction.bulkUpdateIssueStatus()`","operationId":"bulkUpdateIssueStatus","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["issueIdArray","statusToBeUpdated","ignoreReason"],"properties":{"issueIdArray":{"type":"array","description":"List of TestingIssuesId objects identifying the issues to update.","items":{"$ref":"#/components/schemas/TestingIssuesId"}},"statusToBeUpdated":{"type":"string","enum":["OPEN","FIXED","IGNORED"],"description":"New status to set on all specified issues."},"ignoreReason":{"type":"string","description":"Reason for ignoring the issues. Required even when `statusToBeUpdated` is not IGNORED (pass an empty string). Stored only when status is IGNORED."},"description":{"type":"string","description":"Optional free-text description to attach to the issues."},"testingRunResultHexIdsMap":{"type":"object","description":"Map of testing-run-result hex IDs to severity strings. Used asynchronously to decrement the corresponding summary counts.","additionalProperties":{"type":"string","enum":["CRITICAL","HIGH","MEDIUM","LOW"]}}}}}}},"responses":{"200":{"description":"Status updated successfully. Response body contains no additional fields beyond the standard Struts2 action result."},"400":{"description":"Missing required fields (`issueIdArray`, `statusToBeUpdated`, or `ignoreReason` is null)."}},"tags":["Issues"]}}},"components":{"schemas":{"TestingIssuesId":{"type":"object","description":"Composite identifier for a testing issue. Corresponds to `com.akto.dto.test_run_findings.TestingIssuesId`.","required":["apiInfoKey","testErrorSource","testSubCategory"],"properties":{"apiInfoKey":{"$ref":"#/components/schemas/ApiInfoKey"},"testErrorSource":{"type":"string","description":"Source of the test that generated this issue.","enum":["AUTOMATED_TESTING","TEST_EDITOR","CICD"]},"testSubCategory":{"type":"string","description":"YAML template ID of the test (e.g. `OPEN_REDIRECT`, `SQL_INJECTION`) or an HTTP URL for custom fuzzing tests."},"testCategoryFromSourceConfig":{"type":"string","description":"For custom (HTTP-source) tests only: the source config category identifier."}}},"ApiInfoKey":{"type":"object","description":"Uniquely identifies an API endpoint within Akto. Corresponds to `com.akto.dto.ApiInfo.ApiInfoKey`.","required":["apiCollectionId","method","url"],"properties":{"apiCollectionId":{"type":"integer","description":"ID of the API collection this endpoint belongs to."},"method":{"type":"string","description":"HTTP method of the endpoint.","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"]},"url":{"type":"string","description":"Full URL (or URL template) of the endpoint."}}}}}}
```

## Bulk update issue severity

> Updates the severity of one or more issues across all related collections (\`testing\_run\_issues\`, \`testing\_run\_result\`, \`vulnerable\_testing\_run\_results\`, and \`testing\_run\_result\_summaries\`). Processed in chunks of 1 000 records to handle large datasets safely.\
> \
> Source: \`IssuesAction.bulkUpdateIssueSeverity()\`

```json
{"openapi":"3.0.1","info":{"title":"AktoSwagger","version":"1.0.0"},"paths":{"/api/bulkUpdateIssueSeverity":{"post":{"summary":"Bulk update issue severity","description":"Updates the severity of one or more issues across all related collections (`testing_run_issues`, `testing_run_result`, `vulnerable_testing_run_results`, and `testing_run_result_summaries`). Processed in chunks of 1 000 records to handle large datasets safely.\n\nSource: `IssuesAction.bulkUpdateIssueSeverity()`","operationId":"bulkUpdateIssueSeverity","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["issueIdArray","severityToBeUpdated"],"properties":{"issueIdArray":{"type":"array","description":"List of TestingIssuesId objects identifying the issues to update.","items":{"$ref":"#/components/schemas/TestingIssuesId"}},"severityToBeUpdated":{"type":"string","enum":["CRITICAL","HIGH","MEDIUM","LOW"],"description":"New severity to assign to all specified issues."}}}}}},"responses":{"200":{"description":"Severity updated successfully across all related collections."},"400":{"description":"`severityToBeUpdated` or `issueIdArray` is null / empty."}},"tags":["Issues"]}}},"components":{"schemas":{"TestingIssuesId":{"type":"object","description":"Composite identifier for a testing issue. Corresponds to `com.akto.dto.test_run_findings.TestingIssuesId`.","required":["apiInfoKey","testErrorSource","testSubCategory"],"properties":{"apiInfoKey":{"$ref":"#/components/schemas/ApiInfoKey"},"testErrorSource":{"type":"string","description":"Source of the test that generated this issue.","enum":["AUTOMATED_TESTING","TEST_EDITOR","CICD"]},"testSubCategory":{"type":"string","description":"YAML template ID of the test (e.g. `OPEN_REDIRECT`, `SQL_INJECTION`) or an HTTP URL for custom fuzzing tests."},"testCategoryFromSourceConfig":{"type":"string","description":"For custom (HTTP-source) tests only: the source config category identifier."}}},"ApiInfoKey":{"type":"object","description":"Uniquely identifies an API endpoint within Akto. Corresponds to `com.akto.dto.ApiInfo.ApiInfoKey`.","required":["apiCollectionId","method","url"],"properties":{"apiCollectionId":{"type":"integer","description":"ID of the API collection this endpoint belongs to."},"method":{"type":"string","description":"HTTP method of the endpoint.","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"]},"url":{"type":"string","description":"Full URL (or URL template) of the endpoint."}}}}}}
```

## Set false positives for sensitive data

> Marks specific parameter keys or API-specific keys as false positives for a given sensitive data type (custom or built-in). The system removes existing \`SingleTypeInfo\` records for those keys and re-classifies them to a generic/non-sensitive sub-type asynchronously.\
> \
> Source: \`IgnoreFalsePositivesAction.setFalsePositivesInSensitiveData()\`

```json
{"openapi":"3.0.1","info":{"title":"AktoSwagger","version":"1.0.0"},"paths":{"/api/setFalsePositives":{"post":{"summary":"Set false positives for sensitive data","description":"Marks specific parameter keys or API-specific keys as false positives for a given sensitive data type (custom or built-in). The system removes existing `SingleTypeInfo` records for those keys and re-classifies them to a generic/non-sensitive sub-type asynchronously.\n\nSource: `IgnoreFalsePositivesAction.setFalsePositivesInSensitiveData()`","operationId":"setFalsePositives","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["falsePositives"],"properties":{"falsePositives":{"type":"object","description":"Map from sensitive data type name to an `IgnoreData` object that specifies which parameter keys to mark as false positives.","additionalProperties":{"$ref":"#/components/schemas/IgnoreData"}}}}}}},"responses":{"200":{"description":"False positives applied. The `SingleTypeInfo` records are updated asynchronously."},"400":{"description":"`falsePositives` is null."}},"tags":["Issues"]}}},"components":{"schemas":{"IgnoreData":{"type":"object","description":"Specifies which parameter keys should be treated as false positives for a given sensitive data type. Corresponds to `com.akto.dto.IgnoreData`.","properties":{"ignoredKeysInAllAPIs":{"type":"array","description":"Parameter key names that should be ignored as false positives across all API endpoints.","items":{"type":"string"}},"ignoredKeysInSelectedAPIs":{"type":"object","description":"Map from parameter key name to a list of `ParamId` objects specifying the exact endpoints where the key should be ignored.","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/ParamId"}}}}},"ParamId":{"type":"object","description":"Identifies a specific parameter occurrence in an API endpoint. Corresponds to `com.akto.dto.type.SingleTypeInfo.ParamId`.","properties":{"url":{"type":"string","description":"URL of the endpoint."},"method":{"type":"string","description":"HTTP method of the endpoint."},"apiCollectionId":{"type":"integer","description":"API collection ID of the endpoint."},"param":{"type":"string","description":"Parameter key name."},"isHeader":{"type":"boolean","description":"Whether this parameter is an HTTP header."},"responseCode":{"type":"integer","description":"HTTP response code context. Use `-1` for request-scope parameters."}}}}}}
```

## Update issue description

> Sets a free-text description on a single issue identified by its \`TestingIssuesId\`. Both \`issueId\` and \`description\` are required.\
> \
> Source: \`IssuesAction.updateIssueDescription()\`

```json
{"openapi":"3.0.1","info":{"title":"AktoSwagger","version":"1.0.0"},"paths":{"/api/updateIssueDescription":{"post":{"summary":"Update issue description","description":"Sets a free-text description on a single issue identified by its `TestingIssuesId`. Both `issueId` and `description` are required.\n\nSource: `IssuesAction.updateIssueDescription()`","operationId":"updateIssueDescription","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["issueId","description"],"properties":{"issueId":{"$ref":"#/components/schemas/TestingIssuesId","description":"Identifies the issue to update."},"description":{"type":"string","description":"New description text to set on the issue."}}}}}},"responses":{"200":{"description":"Description updated successfully."},"400":{"description":"`issueId` or `description` is null."}},"tags":["Issues"]}}},"components":{"schemas":{"TestingIssuesId":{"type":"object","description":"Composite identifier for a testing issue. Corresponds to `com.akto.dto.test_run_findings.TestingIssuesId`.","required":["apiInfoKey","testErrorSource","testSubCategory"],"properties":{"apiInfoKey":{"$ref":"#/components/schemas/ApiInfoKey"},"testErrorSource":{"type":"string","description":"Source of the test that generated this issue.","enum":["AUTOMATED_TESTING","TEST_EDITOR","CICD"]},"testSubCategory":{"type":"string","description":"YAML template ID of the test (e.g. `OPEN_REDIRECT`, `SQL_INJECTION`) or an HTTP URL for custom fuzzing tests."},"testCategoryFromSourceConfig":{"type":"string","description":"For custom (HTTP-source) tests only: the source config category identifier."}}},"ApiInfoKey":{"type":"object","description":"Uniquely identifies an API endpoint within Akto. Corresponds to `com.akto.dto.ApiInfo.ApiInfoKey`.","required":["apiCollectionId","method","url"],"properties":{"apiCollectionId":{"type":"integer","description":"ID of the API collection this endpoint belongs to."},"method":{"type":"string","description":"HTTP method of the endpoint.","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"]},"url":{"type":"string","description":"Full URL (or URL template) of the endpoint."}}}}}}
```

## Generate a threat report

> Creates a new threat report document in \`test\_reports\` with the provided filter criteria and threat IDs. Automatically adds \`{label: \[THREAT]}\` to \`filtersForReport\`. Returns the \`generatedReportId\` (ObjectId hex) needed by \`getThreatReportFilters\` and \`downloadThreatReportPDF\`.\
> \
> Source: \`ThreatReportAction.generateThreatReport()\`

```json
{"openapi":"3.0.1","info":{"title":"AktoSwagger","version":"1.0.0"},"paths":{"/api/generateThreatReport":{"post":{"summary":"Generate a threat report","description":"Creates a new threat report document in `test_reports` with the provided filter criteria and threat IDs. Automatically adds `{label: [THREAT]}` to `filtersForReport`. Returns the `generatedReportId` (ObjectId hex) needed by `getThreatReportFilters` and `downloadThreatReportPDF`.\n\nSource: `ThreatReportAction.generateThreatReport()`","operationId":"generateThreatReport","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filtersForReport":{"type":"object","description":"Map of filter keys to value lists. The `label` key will be overwritten with `[THREAT]` by the server.","additionalProperties":{"type":"array","items":{"type":"string"}}},"threatIdsForReport":{"type":"array","description":"Optional list of specific threat event IDs (hex strings) to include in the report. Pass null or omit to include all threats matching the filters.","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Report created. Returns the ObjectId of the new report document.","content":{"application/json":{"schema":{"type":"object","properties":{"generatedReportId":{"type":"string","description":"ObjectId hex string of the newly created threat report document."},"actionErrors":{"type":"array","items":{"type":"string"}}}}}}}},"tags":["Reports"]}}}}
```
