{"openapi":"3.1.0","info":{"title":"Security for Confluence Cloud API","description":"REST API for the Soteri Security for Confluence Cloud app.\n\nTimestamps are numbers rather than ISO-8601 strings: seconds since the Unix epoch, carrying a fractional part for sub-second precision, except where a field is documented as whole milliseconds.","version":"6.28.0"},"externalDocs":{"description":"Documentation","url":"https://docs.soteri.io/security-for-confluence"},"servers":[{"url":"https://security-for-confluence.soteri.io","description":"Generated server url"}],"security":[{"apiKeyBearerAuth":[]}],"tags":[{"name":"Audit Log","description":"Read and export the audit log of app activity."},{"name":"Export Jobs","description":"Track the progress of exports that run in the background and download the files they produce."},{"name":"Scan Management","description":"Scheduling scans and reading scan status and findings."},{"name":"AI Scanning Rules","description":"Read and update the AI scanning rules applied to scanned content."},{"name":"Email Rule Settings","description":"Read and change the settings of the built-in email address scanning rule."},{"name":"Generic Password Rule Settings","description":"Read and change the settings of the built-in generic password scanning rule."},{"name":"Global Reviewed Findings","description":"Findings reviewed across every space, and their imports and exports."},{"name":"Exports","description":"CSV exports of scan findings, reviewed findings, and space overviews."},{"name":"Reviewed Findings","description":"Marking findings as reviewed and removing existing reviews."},{"name":"Scanning Rules","description":"REST API for dealing with scanning rules."},{"name":"Instance Settings","description":"Read and change the settings that apply to the whole Atlassian site."},{"name":"Permissions","description":"Permission information for the currently authenticated user."}],"paths":{"/rest/settings/update":{"put":{"tags":["Instance Settings"],"summary":"Change the settings that apply to the whole site","description":"Updates the site-wide settings supplied in the request. A setting that is omitted is left unchanged, so a request that omits every setting is rejected.","operationId":"setSettings","parameters":[{"name":"autoScan","in":"query","description":"The desired auto-scan status.","required":false,"schema":{"type":["boolean","null"]}},{"name":"deduplicateExports","in":"query","description":"Whether to deduplicate exports, showing only one finding per content item rather than\n     one finding per version.","required":false,"schema":{"type":["boolean","null"]}},{"name":"includePlaintextInExports","in":"query","description":"Whether to include plaintext matches in exports.","required":false,"schema":{"type":["boolean","null"]}},{"name":"requireReviewReason","in":"query","description":"Whether to require a reason when marking a finding as reviewed.","required":false,"schema":{"type":["boolean","null"]}},{"name":"mlScanning","in":"query","description":"Whether to enable ML scanning.","required":false,"schema":{"type":["boolean","null"]}},{"name":"scanAttachments","in":"query","description":"Whether to enable attachment scanning.","required":false,"schema":{"type":["boolean","null"]}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"402":{"description":"Relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"OK"}}}},"/rest/settings/entity-permissions":{"get":{"tags":["Instance Settings"],"summary":"Get the administrative access granted on this site","description":"Lists the users and groups that have been granted administrative access to the app.","operationId":"getEntityPermissions","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The users and groups that have been granted administrative access to the app.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityAccessDto"}}}}}}},"put":{"tags":["Instance Settings"],"summary":"Replace the administrative access granted on this site","description":"Replaces the set of users and groups that have administrative access to the app.","operationId":"setEntityPermissions","requestBody":{"description":"The users and groups to grant access to the app.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityAccessDto"}}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"OK"}}}},"/rest/rules":{"get":{"tags":["Scanning Rules"],"summary":"Get the list of rules","description":"Get the list of rules.","operationId":"getRules","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"A collection of rules.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ValidationRuleDto"}}}}}}},"put":{"tags":["Scanning Rules"],"summary":"Update a custom rule","description":"Updates a custom scanning rule. This is also how a custom rule is enabled or disabled.","operationId":"updateCustomRule","requestBody":{"description":"The rule to update.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomRuleInputDto"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The updated rule.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationRuleDto"}}}}}},"post":{"tags":["Scanning Rules"],"summary":"Create a new custom rule","description":"Creates a custom scanning rule from a name and a regular expression. The regular expression must satisfy the custom regex pattern validation rules.","operationId":"createCustomRule","requestBody":{"description":"The rule to create.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomRuleDto"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created rule.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationRuleDto"}}}}}}},"/rest/rules/{id}/clear-message":{"put":{"tags":["Scanning Rules"],"summary":"Clear the error message associated with a custom rule","description":"Clear the error message associated with a custom rule.","operationId":"clearMessage","parameters":[{"name":"id","in":"path","description":"The ID of the rule.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The updated rule.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationRuleDto"}}}}}}},"/rest/rules/generic-password-settings":{"get":{"tags":["Generic Password Rule Settings"],"summary":"Get the generic password rule settings","description":"Returns the settings that control which values the built-in generic password rule reports as findings.","operationId":"getGenericPasswordRuleSettings","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The current generic password rule settings.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GenericPasswordRuleSettingsDto"}}}}}},"put":{"tags":["Generic Password Rule Settings"],"summary":"Update the generic password rule settings","description":"Replaces the settings that control which values the built-in generic password rule reports as findings.","operationId":"updateGenericPasswordRuleSettings","requestBody":{"description":"The new settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericPasswordRuleSettingsDto"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The updated settings.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GenericPasswordRuleSettingsDto"}}}}}}},"/rest/rules/email-settings":{"get":{"tags":["Email Rule Settings"],"summary":"Get the email address rule settings","description":"Returns the settings that control which email addresses the built-in email address rule reports as findings.","operationId":"getEmailRuleSettings","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The current email rule settings.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailRuleSettingsDto"}}}}}},"put":{"tags":["Email Rule Settings"],"summary":"Update the email address rule settings","description":"Replaces the settings that control which email addresses the built-in email address rule reports as findings.","operationId":"updateEmailRuleSettings","requestBody":{"description":"The new settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailRuleSettingsDto"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The updated settings.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/EmailRuleSettingsDto"}}}}}}},"/rest/rules/ai":{"get":{"tags":["AI Scanning Rules"],"summary":"Get the AI scanning rules","description":"Get the AI scanning rules.","operationId":"getModelRules","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The request could not be completed because of a temporary problem. Retry the request.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"Collection of AI scanning rules.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModelRuleDto"}}}}}}},"put":{"tags":["AI Scanning Rules"],"summary":"Update an AI scanning rule","description":"Update an AI scanning rule.","operationId":"updateModelRule","requestBody":{"description":"Rule.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelRuleDto"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"402":{"description":"Relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"Updated rule.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ModelRuleDto"}}}}}}},"/rest/space/space-scan-stats/batch":{"post":{"tags":["Scan Management"],"summary":"Get the number of vulnerabilities and the scan status for multiple spaces at once","description":"Spaces that the user does not have permission to access or that are not found are silently omitted from the response.","operationId":"getSpaceScanStatsBatch","requestBody":{"description":"The list of space IDs to look up.","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"Scan statistics for each requested space that the current user can access, keyed by space ID.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SpaceStatusDto"}}}}}}}},"/rest/space/scan-space":{"post":{"tags":["Scan Management"],"summary":"Schedule scans for an entire space","description":"Schedule scans for an entire space.","operationId":"scanSpace","parameters":[{"name":"spaceId","in":"query","description":"The space ID.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The status of the newly scheduled space scan.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScanDto"}}}}}}},"/rest/space/scan-page":{"post":{"tags":["Scan Management"],"summary":"Schedule a scan for a single piece of content","description":"Schedule a scan for a single piece of content.","operationId":"scanPage","parameters":[{"name":"contentType","in":"query","description":"The type of content to scan, as a case-insensitive string. The request fails if this is not one of the accepted values.","required":true,"schema":{"type":"string","enum":["page","blogpost"]}},{"name":"contentId","in":"query","description":"The content ID.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"versionNumber","in":"query","description":"The version number, or null to scan all versions.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"versionDate","in":"query","description":"The version's creation date, or null to scan all versions.","required":false,"schema":{"type":"number","format":"double"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The status of the newly scheduled scan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanDto"}}}}}}},"/rest/space/review-finding":{"post":{"tags":["Reviewed Findings"],"summary":"Create a reviewed finding","description":"Create a reviewed finding.","operationId":"create","parameters":[{"name":"spaceId","in":"query","description":"The space ID.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"The matched text and rule that identify the finding to review, the scope the review applies to, and the reason it was reviewed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewFindingRequestBodyLong"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"OK"}}}},"/rest/space/review-finding/delete":{"post":{"tags":["Reviewed Findings"],"summary":"Delete reviewed findings for the given match","description":"Delete reviewed findings for the given match.","operationId":"delete","parameters":[{"name":"spaceId","in":"query","description":"The space ID.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"The matched text and rule that identify the finding whose reviews should be removed, and the scope to remove them from.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewFindingRequestBodyLong"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"OK"}}}},"/rest/space/permissions/batch":{"post":{"tags":["Scan Management"],"summary":"Filter a list of space IDs to those the current user can access","description":"Returns the subset of the supplied space IDs whose security information the current user is permitted to view.","operationId":"filterPermittedSpaces","requestBody":{"description":"The space IDs to check.","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The permitted subset of the requested space IDs.","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/rest/space/findings":{"post":{"tags":["Exports"],"summary":"Start an export of a space's findings","description":"Starts an export of the findings in a single space and returns the created job. The export is produced in the background, so the job is returned before its file exists.","operationId":"exportSpaceFindings","parameters":[{"name":"spaceId","in":"query","description":"The space ID.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"ruleNames","in":"query","description":"An optional comma-separated list of rule names to restrict the exported findings to.","required":false,"schema":{"type":"string"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/space/attachments/coverage":{"post":{"tags":["Exports"],"summary":"Start an export of a space's attachment coverage","description":"Starts an export listing every attachment in a single space, together with whether it was scanned, and returns the created job. The export is produced in the background, so the job is returned before its file exists. Requires an Advanced license.","operationId":"exportSpaceAttachmentCoverage","parameters":[{"name":"spaceId","in":"query","description":"The ID of the space.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"402":{"description":"Relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/security/latest/global-reviewed/import":{"post":{"tags":["Global Reviewed Findings"],"summary":"Import globally reviewed findings from a CSV file","description":"Import globally reviewed findings from a CSV file.","operationId":"create_1","requestBody":{"description":"The uploaded CSV payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadCsvRequest"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The number of rows read from the uploaded file, and the number of globally reviewed findings that were newly created from them.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalReviewedFindingUpdateDto"}}}}}}},"/rest/security/latest/global-reviewed/export":{"post":{"tags":["Global Reviewed Findings"],"summary":"Start an export of globally reviewed findings","description":"Starts an export of the findings that are marked as reviewed everywhere they occur, and returns the created job. The export is produced in the background, so the job is returned before its file exists.","operationId":"export","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/security/latest/global-reviewed/delete":{"post":{"tags":["Global Reviewed Findings"],"summary":"Delete globally reviewed findings from a CSV file","description":"Delete globally reviewed findings from a CSV file.","operationId":"delete_1","requestBody":{"description":"The uploaded CSV payload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadCsvRequest"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The number of rows read from the uploaded file, and the number of globally reviewed findings that were actually deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalReviewedFindingUpdateDto"}}}}}}},"/rest/security/latest/global-reviewed/delete-all":{"post":{"tags":["Global Reviewed Findings"],"summary":"Delete all globally reviewed findings","description":"Delete all globally reviewed findings.","operationId":"deleteAll","parameters":[{"name":"confirm","in":"query","description":"If true, delete all globally reviewed findings.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The number of globally reviewed findings that were deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalReviewedFindingUpdateDto"}}}}}}},"/rest/rules/toggle":{"post":{"tags":["Scanning Rules"],"summary":"Set if a built-in rule is enabled","description":"Enables or disables one of the built-in scanning rules. Disabled rules are not applied to subsequent scans.","operationId":"toggleBuiltInRule","parameters":[{"name":"name","in":"query","description":"The name of the built-in rule.","required":true,"schema":{"type":"string","minLength":1}},{"name":"enabled","in":"query","description":"If the rule should be enabled or not.","required":true,"schema":{"type":"boolean"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"OK"}}}},"/rest/rules/delete":{"post":{"tags":["Scanning Rules"],"summary":"Delete a custom rule","description":"Deletes a custom scanning rule. The rule to delete is identified by the request body, so this operation uses POST rather than DELETE.","operationId":"deleteCustomRule","requestBody":{"description":"The rule to delete.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomRuleInputDto"}}},"required":true},"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"OK"}}}},"/rest/instance/scan":{"post":{"tags":["Scan Management"],"summary":"Schedule scans for the entire site","description":"Schedules a scan of every space on the site.","operationId":"scanInstance","parameters":[{"name":"force","in":"query","description":"Whether to force re-scan already up-to-date spaces and content histories.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"OK"}}}},"/rest/findings":{"post":{"tags":["Exports"],"summary":"Start an export of findings across every space you administer","description":"Starts an export of the findings of every space the current user has administrator permission for, and returns the created job. The export is produced in the background, so the job is returned before its file exists.","operationId":"exportAllUserFindings","parameters":[{"name":"ruleNames","in":"query","description":"An optional comma-separated list of rule names to restrict the exported findings to.","required":false,"schema":{"type":"string"}},{"name":"includeArchived","in":"query","description":"Whether to include archived spaces in the export.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/export/reviewed/space/findings":{"post":{"tags":["Exports"],"summary":"Start an export of a space's reviewed findings","description":"Starts an export of the reviewed findings in a single space and returns the created job. The export is produced in the background, so the job is returned before its file exists.","operationId":"exportAllReviewedFindingsForSpace","parameters":[{"name":"spaceId","in":"query","description":"The space ID.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/export/reviewed/findings":{"post":{"tags":["Exports"],"summary":"Start an export of reviewed findings across every space you administer","description":"Starts an export of the reviewed findings of every space the current user has administrator permission for, and returns the created job. The export is produced in the background, so the job is returned before its file exists.","operationId":"exportAllReviewedFindingsForUser","parameters":[{"name":"includeArchived","in":"query","description":"Whether to include archived spaces in the export.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/dashboard/export":{"post":{"tags":["Exports"],"summary":"Start an export of space data","description":"Starts an export of per-space security data and returns the created job. Only spaces for which the current user has administrator permission are included.","operationId":"exportDashboard","parameters":[{"name":"includeArchived","in":"query","description":"Whether to include archived spaces in the export.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/audit-log/export":{"post":{"tags":["Audit Log"],"summary":"Start an export of audit log entries","description":"Starts an export of the audit log entries matching the supplied filters and returns the created job. The export is produced in the background, so the job is returned before its file exists. Each filter matches on a substring rather than on the whole value.","operationId":"exportAuditLog","parameters":[{"name":"author","in":"query","description":"If present and nonempty, filters events by author.","required":false,"schema":{"type":"string"}},{"name":"eventType","in":"query","description":"If present and nonempty, filters events by type.","required":false,"schema":{"type":"string"}},{"name":"eventDetails","in":"query","description":"If present and nonempty, filters events by details (as JSON text).","required":false,"schema":{"type":"string"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/attachments/coverage":{"post":{"tags":["Exports"],"summary":"Start an export of attachment coverage across every space you administer","description":"Starts an export listing every attachment in every space the current user has administrator permission for, together with whether it was scanned, and returns the created job. The export is produced in the background, so the job is returned before its file exists. Requires an Advanced license.","operationId":"exportAllUserAttachmentCoverage","parameters":[{"name":"includeArchived","in":"query","description":"Whether to include archived spaces in the export.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"402":{"description":"Relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The created export job.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/space/scan-status":{"get":{"tags":["Scan Management"],"summary":"Get the security status for either a single page or an entire space","description":"Returns the scan status and matching findings for a single page or blog post when a content ID is supplied, or for an entire space when it is not.","operationId":"getScanStatus","parameters":[{"name":"spaceId","in":"query","description":"The ID of the space. This is required on every request, but is only used when no content ID is supplied, in which case the status of the whole space is returned.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"contentType","in":"query","description":"The type of content to get the status for, as a case-insensitive string. Required when a content ID is supplied, and the request fails if it is not one of the accepted values.","required":false,"schema":{"type":"string","enum":["page","blogpost"]}},{"name":"contentId","in":"query","description":"If present, the content ID.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"versionNumber","in":"query","description":"If present, the version number of the page version.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"versionDate","in":"query","description":"If present, the version date linked to the page version.","required":false,"schema":{"type":"number","format":"double"}},{"name":"reviewed","in":"query","description":"Restricts the findings to those that have been reviewed, or to those that have not. Omit to return both.","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","description":"The page number of results to get.","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"The number of results per page.","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"ruleNames","in":"query","description":"An optional comma-separated list of rule names to restrict the returned findings to. Every name must match a rule that is configured on this site.","required":false,"schema":{"type":"string"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The scan status, along with the page of findings that match the request.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScanDto"}}}}}}},"/rest/settings":{"get":{"tags":["Instance Settings"],"summary":"Get the settings that apply to the whole site","description":"Returns the settings that apply across every space on this site.","operationId":"getSettings","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The instance settings.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InstanceSettingsDto"}}}}}}},"/rest/settings/review-reason-categories":{"get":{"tags":["Instance Settings"],"summary":"Get the review reason categories this site accepts","description":"Lists the review reason categories this site accepts. A reasonCategory sent when marking a finding as reviewed must be one of these values.","operationId":"getReviewReasonCategories","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The review reason categories this site accepts, in the order they should be offered.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ReviewReasonCategoriesResponse"}}}}}}},"/rest/rules/validation-rules":{"get":{"tags":["Scanning Rules"],"summary":"Get the list of validation rules for custom regex patterns","description":"Lists the constraints a custom rule's regular expression must satisfy. Each entry gives a regular expression that must not match the submitted pattern, along with the message reported when it does.","operationId":"getValidationRules","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"List of validation rule definitions.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ValidationRuleDefinitionDto"}}}}}}}},"/rest/rules/filter-pattern-validation-rules":{"get":{"tags":["Scanning Rules"],"summary":"Get the list of validation rules for custom filter patterns","description":"Like the custom regex pattern validation rules but without the minimum-length check. Filter patterns are matched against an already-detected password literal, so short patterns are legitimate.","operationId":"getFilterPatternValidationRules","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"List of filter pattern validation rule definitions.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ValidationRuleDefinitionDto"}}}}}}}},"/rest/permissions":{"get":{"tags":["Permissions"],"summary":"Get the authenticated user's permissions","description":"Returns whether the authenticated user is a product admin and/or an app admin.","operationId":"getPermissions","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"Whether the authenticated user is a product admin and whether they are an app admin.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PermissionsDto"}}}}}}},"/rest/instance/scan/force-status":{"get":{"tags":["Scan Management"],"summary":"Get the current availability of the forced site rescan action","description":"Reports whether a forced rescan of the whole site can be requested now, and when the next one becomes available if it is currently cooling down.","operationId":"getForceInstanceRescanStatus","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The forced instance rescan status.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ForceInstanceRescanStatusDto"}}}}}}},"/rest/export/jobs/{jobId}":{"get":{"tags":["Export Jobs"],"summary":"Get the status of a single export job","description":"Get the status of a single export job.","operationId":"getExportJobStatus","parameters":[{"name":"jobId","in":"path","description":"The job ID.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"Export job status.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}},"/rest/export/jobs/{jobId}/download":{"get":{"tags":["Export Jobs"],"summary":"Download the file produced by a completed export","description":"Streams the file produced by an export that has finished. The export may be downloaded once: a successful request reports the job as DOWNLOADED, and downloading it again is refused.","operationId":"downloadExportFile","parameters":[{"name":"jobId","in":"path","description":"The job ID.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"The exported file."},"409":{"description":"The export has not finished yet, or has already been downloaded."}}}},"/rest/export/jobs/tracked":{"get":{"tags":["Export Jobs"],"summary":"Get export jobs that are tracked (not yet downloaded) for the current user","description":"Get export jobs that are tracked (not yet downloaded) for the current user.","operationId":"getTrackedExportJobs","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"Tracked export job statuses.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExportJobStatusDto"}}}}}}}},"/rest/audit-log/get":{"get":{"tags":["Audit Log"],"summary":"Get a page of audit log entries","description":"Note that filters are applied by substring.","operationId":"getEvents","parameters":[{"name":"page","in":"query","description":"The page to get.","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"The page size.","required":false,"schema":{"type":"integer","format":"int32","default":100}},{"name":"author","in":"query","description":"If present and nonempty, filters events by author.","required":false,"schema":{"type":"string"}},{"name":"eventType","in":"query","description":"If present and nonempty, filters events by type.","required":false,"schema":{"type":"string"}},{"name":"eventDetails","in":"query","description":"If present and nonempty, filters events by details (as JSON text).","required":false,"schema":{"type":"string"}}],"responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"A page of audit log entries.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AuditLogDto"}}}}}}},"/rest/audit-log/event_types":{"get":{"tags":["Audit Log"],"summary":"Get audit log event types grouped by category","description":"Lists the event types that audit log entries can have, grouped by category. Each entry pairs a stable event code with a human-readable description.","operationId":"events","responses":{"403":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"400":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"503":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"429":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"502":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"200":{"description":"Grouped event types.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventTypeGroupDto"}}}}}}}}},"components":{"schemas":{"RestErrorDto":{"type":"object","description":"The body returned when a request cannot be completed.","properties":{"restErrorTitle":{"type":"string","description":"A short title describing the error."},"restErrorDescription":{"type":["string","null"],"description":"Further details about the error, when any are available."},"violations":{"type":"array","description":"A list of specific violations.","items":{"$ref":"#/components/schemas/Violation"}}}},"Violation":{"type":"object","description":"A single field of the request that did not meet a constraint.","properties":{"fieldName":{"type":"string"},"message":{"type":["string","null"]}}},"EntityAccessDto":{"type":"object","description":"A user or group permitted to access the app without being an app administrator.","properties":{"type":{"type":"string","description":"Whether this entry grants access to a user or to a group.","enum":["GROUP","USER"]},"idOrKey":{"type":"string","description":"The user key for a user entry, or the group ID or name for a group entry."},"name":{"type":["string","null"],"description":"The username or group name. Not required when sending this to the API, but always returned by it."},"displayName":{"type":["string","null"],"description":"The user's display name. Only set for user entries."}}},"CustomRuleInputDto":{"type":"object","description":"The fields of a custom scanning rule that a caller may set when updating or deleting it. Unknown fields are ignored, so a previously fetched rule may be sent back unchanged.","properties":{"id":{"type":["string","null"],"description":"The ID of the rule to update or delete, as a UUID string."},"name":{"type":"string","description":"The name of the rule.","maxLength":255,"minLength":0},"regexp":{"type":"string","description":"The regular expression for the rule."},"enabled":{"type":"boolean","description":"True if this rule is enabled."}},"required":["name"]},"ValidationRuleDto":{"type":"object","description":"A scanning rule, either one of the app's built-in rules or a custom rule.","properties":{"id":{"type":["string","null"],"description":"Uniquely identifies the rule. For a built-in rule this is the rule's name; for a custom rule it is an opaque identifier."},"name":{"type":"string","description":"The name of the rule.","maxLength":255,"minLength":0},"regexp":{"type":"string","description":"The regular expression for the rule."},"builtIn":{"type":"boolean","description":"Whether this is one of the app's built-in rules rather than a custom rule."},"enabled":{"type":"boolean","description":"True if this rule is enabled."},"type":{"type":["string","null"],"description":"The type of rule this is."},"message":{"type":["string","null"],"description":"A message associated with this rule, e.g. if it generated an exception."},"blocking":{"type":["boolean","null"],"description":"Whether this rule blocks the operation being scanned, on products that support blocking and are configured to do so. Null where blocking does not apply."}},"required":["name"]},"GenericPasswordRuleSettingsDto":{"type":"object","description":"Settings that control which values the built-in generic password rule reports.","properties":{"filterEnvironmentVariables":{"type":"boolean","description":"If true, filter out findings where the value is an environment variable reference or config accessor (e.g. ${VAR}, %(var)s, config.get(\"x\"), process.env.X). These are references to where a secret lives, not hardcoded credentials."},"filterPlaceholders":{"type":"boolean","description":"If true, filter out findings where the value is a placeholder (e.g. CHANGE_ME, your_password_here). These are template values that don't represent real credentials."},"filterNullAndRedacted":{"type":"boolean","description":"If true, filter out findings where the value is null, empty, or a redaction marker (e.g. [REDACTED], ****)."},"filterTooShort":{"type":"boolean","description":"If true, filter out findings where the extracted password value is shorter than the minimum secret length. Short values are rarely real secrets."},"customPlaceholderPatterns":{"type":"array","description":"User-defined regex patterns matched against the extracted password literal. Findings matching any pattern are\n treated as placeholder false positives and suppressed. Patterns must pass filter-pattern validation rules.","items":{"type":"string"}},"customRedactedPatterns":{"type":"array","description":"User-defined regex patterns matched against the extracted password literal. Findings matching any pattern are\n treated as redacted false positives and suppressed. Patterns must pass filter-pattern validation rules.","items":{"type":"string"}},"aiPasswordConfirmation":{"type":"boolean","description":"If true, run the AI classifier to confirm each generic password finding before reporting it. Findings that score below the classifier's confidence threshold are suppressed as false positives. Requires an advanced license and enabling AI Model Scanning."},"aiPasswordConfirmationThreshold":{"type":"number","format":"double","description":"The minimum true-positive confidence score the AI classifier must assign a finding for it to be kept. Findings\n scoring below this threshold are suppressed.","maximum":1.0,"minimum":0.0}}},"EmailRuleSettingsDto":{"type":"object","description":"Settings that control which email addresses the built-in email address rule reports.","properties":{"domainFilterMode":{"type":"string","description":"How to interpret the domain list.","enum":["NONE","IGNORE_DOMAINS","FLAG_ONLY_DOMAINS"]},"domains":{"type":"array","description":"Set of domains to filter. Interpretation depends on domainFilterMode: NONE ignores domains and flags all emails; IGNORE_DOMAINS means emails from these domains won't be flagged; FLAG_ONLY_DOMAINS means only emails from these domains will be flagged.","items":{"type":"string"},"uniqueItems":true},"filterRoleBasedEmails":{"type":"boolean","description":"If true, filter out role-based email addresses (support@, info@, noreply@, etc.). These are typically functional\n mailboxes rather than individual persons and don't represent personal PII."},"filterExampleEmails":{"type":"boolean","description":"If true, filter out example/test email addresses (test@, demo@, @example.com, etc.). These are placeholder\n addresses that don't represent real PII."}}},"ModelRuleDto":{"type":"object","description":"An AI scanning rule and the confidence threshold at which it reports a finding.","properties":{"id":{"type":"string","format":"uuid","description":"Rule ID."},"name":{"type":"string","description":"Rule name."},"confidence":{"type":"number","format":"double","description":"Confidence threshold. Above this threshold, a finding is created.","maximum":1.0,"minimum":0.0},"enabled":{"type":"boolean","description":"Whether the rule is enabled."},"labels":{"type":"array","description":"The labels that this rule applies to.","items":{"type":"string"},"uniqueItems":true}}},"SpaceStatusDto":{"type":"object","description":"The scan status of a single Confluence space.","properties":{"spaceKey":{"type":"string","description":"The key of the space."},"spaceName":{"type":"string","description":"The space name."},"state":{"type":"string","description":"The overall state of the space.","enum":["SCHEDULED","SCANNING","SCANNED","FAILED","UNSCANNED"]},"upToDateContent":{"type":"boolean","description":"Whether all content in the space has been scanned."},"upToDateSettings":{"type":"boolean","description":"Whether the latest scan was performed with up-to-date settings."},"errorMessage":{"type":["string","null"],"description":"The error from the most recent scan of the space, or null if it did not fail."},"findingCount":{"type":"integer","format":"int64","description":"The number of findings in the space."},"finished":{"type":"boolean","description":"Whether the space's most recent scan has finished."}}},"EnrichedFindingDto":{"type":"object","description":"A single scan finding, together with details about the page, blog post, or comment that contains it, such as the scanned text and the content title.","properties":{"contentId":{"type":"integer","format":"int64","description":"The content ID this finding was in."},"locationType":{"type":"string","description":"The type of location this finding is for -- is it a page or blog post? A comment?","enum":["PAGE_OR_BLOG_POST","ATTACHMENT","COMMENT"]},"path":{"type":"string","description":"A path identifying where within the content this finding was found."},"ruleName":{"type":"string","description":"The name of the rule which generated this finding."},"lineOffsetStart":{"type":"integer","format":"int32","description":"The start offset of the finding within the scanned text. This can be null for some findings."},"lineOffsetEnd":{"type":"integer","format":"int32","description":"The end offset of the finding within the scanned text. This can be null for some findings."},"confidence":{"type":["number","null"],"format":"double","description":"The confidence of the finding, if the matcher supports confidence scores."},"reviewed":{"type":"boolean","description":"If this finding has been reviewed."},"globallyReviewed":{"type":"boolean","description":"If this finding has been globally reviewed."},"fineGrainedReviewed":{"type":"boolean","description":"If just this instance of the finding has been reviewed."},"reviewable":{"type":"boolean","description":"If this finding is reviewable. Some built-in rules findings cannot be reviewed."},"attachmentFilename":{"type":["string","null"],"description":"The attachment filename, if this is an attachment finding."},"attachmentMediaType":{"type":["string","null"],"description":"The attachment media type, if this is an attachment finding."},"attachmentExtractionVersion":{"type":["integer","null"],"format":"int32","description":"The extraction version used to extract text, if this is an attachment finding."},"versionNumber":{"type":"integer","format":"int32","description":"The version number of the content this finding was in."},"historical":{"type":"boolean","description":"Whether this finding is not present in the latest version of the content."},"firstVersionNumber":{"type":["integer","null"],"format":"int32","description":"The first version number that this finding was present in. Null if a scan finding is only present in a single\n version of a page."},"pageName":{"type":"string","description":"The name of the page."},"text":{"type":"string","description":"The text that was scanned to generate this finding."},"contentFound":{"type":"boolean","description":"If the content was found (e.g. the text contains the actual scanned content, not a helpful error message)."},"builtInRule":{"type":"boolean","description":"Whether the rule which generated this finding is built-in; false for custom rules."},"truncated":{"type":"boolean","description":"True if this finding has been truncated because it was too long."},"url":{"type":["string","null"],"description":"The URL to the containing content for this scan finding. Null upon object creation, then populated later during\n enriching."},"securityAnalysisUrl":{"type":["string","null"],"description":"The URL to the security analysis page, deep-linked to the page or blog post containing this finding and\n pre-filtered to its rule, or the space-level view when the containing content is unknown."},"firstVersionUrl":{"type":["string","null"],"description":"The URL to the first version of this scan finding. Only used for grouped scan findings."},"diffUrl":{"type":["string","null"],"description":"A URL to a diff where the finding was first introduced. Null if this is the first version or a comment finding."},"pathFragments":{"type":["array","null"],"description":"The path to the content which contains this finding. Not used for exports.","items":{"$ref":"#/components/schemas/PathFragmentLink"}},"reasonCategory":{"type":["string","null"],"description":"The category of the review reason, if this finding has been reviewed."},"reasonNotes":{"type":["string","null"],"description":"Additional notes for the review reason, if this finding has been reviewed."},"reviewer":{"type":["string","null"],"description":"The account ID of the user who reviewed this finding."},"reviewTime":{"type":["string","null"],"format":"date-time","description":"When this finding was reviewed."},"location":{"type":"string","description":"A readable description of where this finding was found, such as the title of the page or blog post that contains it."}}},"PagedEnrichedFindingDto":{"type":"object","description":"A single page of results, together with the total number of results available.","properties":{"values":{"type":"array","description":"The results on this page.","items":{"$ref":"#/components/schemas/EnrichedFindingDto"}},"totalCount":{"type":"integer","format":"int64","description":"The total number of results available across all pages."}}},"PathFragmentLink":{"type":"object","description":"A representation of part of a file or content path, e.g., /path/to/x.","properties":{"title":{"type":"string","description":"What to call this part of the path."},"url":{"type":"string","description":"Where this part of the path points."}}},"ScanDto":{"type":"object","description":"The status of a scan, together with any findings it produced. Returned for both content scans and space scans.","properties":{"scanState":{"type":"string","description":"The state of the scan.","enum":["SCHEDULED","SCANNING","SCANNED","FAILED","UNSCANNED"]},"upToDate":{"type":"boolean","description":"Reports staleness due to content change."},"errorMessage":{"type":["string","null"],"description":"A message describing why the scan failed, or null if the scan did not fail."},"findings":{"$ref":"#/components/schemas/PagedEnrichedFindingDto"},"upToDateSettings":{"type":"boolean","description":"Reports staleness due to settings change."},"progress":{"$ref":"#/components/schemas/ScanProgressDto","description":"Progress of the scan. Only present for space scans when the scan state is SCANNING."}}},"ScanProgressDto":{"type":"null","description":"The progress of a scan, as the number of items scanned so far out of the approximate total number of items in scope.","properties":{"numScanned":{"type":"integer","format":"int64","description":"The number of items that have been scanned so far."},"numTotal":{"type":"integer","format":"int64","description":"The total number of items to scan. Might not be exact, based on Atlassian API limitations."},"percentageProgress":{"type":"integer","format":"int32","description":"Calculate the percentage progress of the scan."}}},"ReviewFindingRequestBodyLong":{"type":"object","description":"The expected contents of a request to create or delete a reviewed finding.","properties":{"matchText":{"type":"string","description":"The plain text of what to mark as reviewed.","minLength":1},"ruleName":{"type":"string","description":"The name of the rule which generated this finding.","minLength":1},"fineGrainedScope":{"type":["integer","null"],"format":"int64","description":"The fine-grained review scope."},"reasonCategory":{"type":["string","null"],"description":"The category of the review reason."},"reasonNotes":{"type":["string","null"],"description":"Additional notes for the review reason."}},"required":["matchText","ruleName"]},"ExportJobStatusDto":{"type":"object","description":"The state of an export that runs in the background.","properties":{"jobId":{"type":"string","format":"uuid","description":"The identifier of the export, used to check its status and to request its download link."},"exportType":{"type":"string","description":"The kind of content this export contains.","enum":["FINDINGS_INSTANCE","FINDINGS_SPACE","FINDINGS_ITEM","DASHBOARD","REVIEWED_FINDINGS_INSTANCE","REVIEWED_FINDINGS_SPACE","GLOBAL_REVIEWED_FINDINGS","AUDIT_LOG","ATTACHMENT_COVERAGE_INSTANCE","ATTACHMENT_COVERAGE_SPACE"]},"targetId":{"type":["integer","null"],"format":"int64","description":"The identifier of the single object the export is scoped to: the space for FINDINGS_SPACE and REVIEWED_FINDINGS_SPACE exports, and the individual content item for FINDINGS_ITEM exports. Null for exports that are not scoped to one object."},"status":{"type":"string","description":"How far the export has got, and whether its file can be downloaded.","enum":["PENDING","IN_PROGRESS","READY","DOWNLOADED","FAILED","INTERRUPTED"]},"createdAt":{"type":"number","format":"double","description":"When the export was requested."},"startedAt":{"type":["number","null"],"format":"double","description":"When the export began producing its file, or null if it has not begun yet or is waiting to be retried."},"completedAt":{"type":["number","null"],"format":"double","description":"When the export finished or failed, or null while it is still in progress."},"completedTargetsCount":{"type":["integer","null"],"format":"int32","description":"How many of the export's targets have been completed so far, or null for exports that do not report progress per target."},"totalTargetsCount":{"type":["integer","null"],"format":"int32","description":"How many targets the export covers in total, or null for exports that do not report progress per target."},"errorMessage":{"type":["string","null"],"description":"Why the export failed, or null unless the status is FAILED."},"stuck":{"type":"boolean","description":"Whether this export appears stuck (active but not progressing), so it shouldn't block a new export."}}},"UploadCsvRequest":{"type":"object","description":"JSON request body for globally reviewed findings upload and delete operations.","properties":{"filename":{"type":"string","description":"The name of the file the content came from. This value is ignored and may be omitted."},"csvBase64":{"type":"string","description":"The contents of the CSV file of globally reviewed findings, encoded as a Base64 string."}}},"GlobalReviewedFindingUpdateDto":{"type":"object","description":"Information about a particular update operation of globally reviewed findings.","properties":{"create":{"type":"boolean","description":"If this was a create operation. If false, this was a delete operation. Mostly used for integration tests."},"reviewedFindingsUploaded":{"type":"integer","format":"int64","description":"The number of rows read from the uploaded CSV, excluding the header row and any wholly empty rows."},"reviewedFindingsAdded":{"type":["integer","null"],"format":"int64","description":"For create operations, the number of reviewed findings which were actually created. Can be less than\n {@link io.soteri.cloud.dto.GlobalReviewedFindingUpdateDto#reviewedFindingsUploaded #reviewedFindingsUploaded} if some of the uploaded findings already existed. Null for delete operations."},"reviewedFindingsDeleted":{"type":["integer","null"],"format":"int64","description":"For delete operations, the number of reviewed findings which were actually deleted. Can be less than\n {@link io.soteri.cloud.dto.GlobalReviewedFindingUpdateDto#reviewedFindingsUploaded #reviewedFindingsUploaded} if some of the uploaded findings didn't exist to delete. Null for create\n operations."},"reviewedFindingsUpdated":{"type":["integer","null"],"format":"int64","description":"For create operations, the number of preexisting reviewed findings this update overwrote the review reasons of.\n Null for delete operations."},"reviewedFindingsSkipped":{"type":["integer","null"],"format":"int64","description":"For create operations, the number of uploaded rows that were rejected because their review reason was missing or\n named no allowed category. Null for delete operations."},"rowsWithoutMatchText":{"type":"integer","format":"int64","description":"The number of uploaded rows that carried content but named nothing to review, as happens when a spreadsheet\n shifts the columns of the file. Reported for both create and delete operations, so that the same file yields the\n same count either way."}}},"CreateCustomRuleDto":{"type":"object","description":"The name and regular expression of a new custom scanning rule. The identifier is assigned when the rule is created.","properties":{"name":{"type":"string","description":"The name of the rule.","maxLength":255,"minLength":0},"regexp":{"type":"string","description":"The regular expression for the rule."}},"required":["name"]},"InstanceSettingsDto":{"type":"object","description":"The settings that apply to the whole Atlassian site.","properties":{"autoScan":{"type":"boolean","description":"Whether this instance should be automatically scanned upon new and updated content."},"deduplicateExports":{"type":"boolean","description":"Whether exports should be deduplicated, showing only one finding per content item rather than one finding per\n version."},"includePlaintextInExports":{"type":"boolean","description":"Whether to include plain text secrets in exports. If true, exports will include plaintext secrets. If false,\n exports will include links to help locate the secret in context."},"requireReviewReason":{"type":"boolean","description":"Whether a reason is required when marking a finding as reviewed."},"mlScanning":{"type":"boolean","description":"Whether Model Scanning is enabled."},"scanAttachments":{"type":"boolean","description":"Whether attachment scanning is enabled."}}},"ReviewReasonCategoriesResponse":{"type":"object","description":"The review reason categories this site accepts.","properties":{"categories":{"type":"array","description":"The ordered set of allowed kebab-case category identifiers.","items":{"type":"string"},"uniqueItems":true}}},"ValidationRuleDefinitionDto":{"type":"object","description":"A constraint that a custom rule's regular expression must satisfy. A submitted pattern is rejected when it matches the constraint's pattern.","properties":{"pattern":{"type":"string","description":"Regex pattern to match against the user's input pattern. If this regex matches the user's pattern, the validation\n fails. Examples:\n\n <pre>\n - <code>(^|[^\\\\\\\\])\\\\\\\\(\\\\\\\\\\\\\\\\)*(n|r|R|(x0|u000)[aAdD])</code> Detects newline matchers\n - <code>^.{0,9</code>$} Detects patterns that are too short\n - <code>^\\\\.\\\\*.*</code> Detects patterns starting with .*\n </pre>"},"message":{"type":"string","description":"Error message to display when validation fails. Can include {pattern} placeholder which will be replaced with the\n user's pattern (e.g., \"Custom rule regexp \\\"{pattern}\\\" contains a newline matcher and cannot be used.\")."}}},"PermissionsDto":{"type":"object","description":"The permission flags for the authenticated user.","properties":{"isProductAdmin":{"type":"boolean","description":"Whether the user is a product admin."},"isAppAdmin":{"type":"boolean","description":"Whether the user is an app admin (i.e.: given explicit access)."}}},"ForceInstanceRescanStatusDto":{"type":"object","description":"Availability information for the forced instance rescan action.","properties":{"available":{"type":"boolean","description":"Whether a forced instance rescan can be requested now."},"lastForcedInstanceRescanAt":{"type":["number","null"],"format":"double","description":"When the last forced instance rescan was requested, if ever. Serialized even when null, since \"never requested\"\n is the answer a consumer is asking for rather than a field that does not apply."},"nextAvailableAt":{"type":["number","null"],"format":"double","description":"When the next forced instance rescan becomes available, if currently cooling down."}}},"AuditLogDto":{"type":"object","description":"Returned as the JSON body when fetching audit log events.","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/EventDto"}}}},"EventDto":{"type":"object","description":"A single audit log entry.","properties":{"eventType":{"type":"string","description":"The human-readable description of the type of activity this entry records."},"author":{"type":"string","description":"The account ID of the user responsible for the event, or \"System\" if there is no user."},"timestamp":{"type":"number","format":"double","description":"When the event occurred."},"eventDetails":{"type":"string","description":"Details about the event, as a JSON string."},"displayName":{"type":"string","description":"The display name of the author, or \"System\" when no user was responsible for the event."}}},"EventTypeDto":{"type":"object","description":"An audit log event type, pairing its stable code with a human-readable description.","properties":{"code":{"type":"string","description":"The stable code identifying this event type, for example \"updated_app_access\"."},"description":{"type":"string","description":"The human-readable description of this event type, as it appears in the audit log."}}},"EventTypeGroupDto":{"type":"object","description":"A named group of related audit log event types.","properties":{"description":{"type":"string","description":"Description of the group."},"eventTypes":{"type":"array","description":"Members of the group.","items":{"$ref":"#/components/schemas/EventTypeDto"}}}}},"securitySchemes":{"apiKeyBearerAuth":{"type":"http","description":"API key issued from the app's administration screen, without the `Bearer ` prefix. This is a string starting with `soteri_` followed by 43 characters.","scheme":"bearer"}}}}