{"openapi":"3.1.0","info":{"title":"Security for Jira Cloud API","description":"REST API for the Soteri Security for Jira Cloud app.\n\nThis document uses Jira's own terminology: a site contains spaces, and a space contains work items. The paths and parameters that identify them keep the earlier names for the same objects, so a space is addressed as `project` and identified by `projectId` or `projectKey`, and a work item is addressed as `issue` and identified by `issueId`.\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":"3.41.0"},"externalDocs":{"description":"Documentation","url":"https://docs.soteri.io/security-for-jira-cloud"},"servers":[{"url":"https://security-for-jira.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":"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":"Reviewed Findings","description":"Marking findings as reviewed and removing existing reviews."},{"name":"AI Scanning Rules","description":"Read and update the AI scanning rules applied to scanned content."},{"name":"Scan Management","description":"Scheduling scans and reading scan status and findings."},{"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":"Scanning Rules","description":"REST API for dealing with scanning rules."},{"name":"Content Labeling","description":"Applying and removing the remediation label on the content that contains a finding."},{"name":"Instance Settings","description":"Read and change the settings that apply to the whole Atlassian site."},{"name":"Dashboard","description":"Scan statistics for the spaces you administer."},{"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"}}}},"401":{"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/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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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":"Updated rule.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ModelRuleDto"}}}}}}},"/rest/space/{spaceId}/label-finding/delete":{"post":{"tags":["Content Labeling"],"summary":"Remove the remediation label from the work item containing a finding","description":"Remove the remediation label from the work item containing a finding.","operationId":"delete","parameters":[{"name":"spaceId","in":"path","description":"The ID of the space the work item is in.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"The work item to remove the label from.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelFindingRequestBody"}}},"required":true},"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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/{spaceId}/label-finding/create":{"post":{"tags":["Content Labeling"],"summary":"Apply the remediation label to the work item containing a finding","description":"Apply the remediation label to the work item containing a finding.","operationId":"create","parameters":[{"name":"spaceId","in":"path","description":"The ID of the space the work item is in.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"The work item to label.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelFindingRequestBody"}}},"required":true},"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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/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"}}}},"401":{"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 summary of the import, including the number of rows submitted and the number of globally reviewed findings created. Rows which already existed are counted as submitted but not as created.","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"}}}},"401":{"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"}}}},"401":{"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 summary of the deletion, including the number of rows submitted and the number of globally reviewed findings deleted. Rows which did not exist are counted as submitted but not as 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"}}}},"401":{"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 summary of the deletion, including the number of globally reviewed findings deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlobalReviewedFindingUpdateDto"}}}}}}},"/rest/scan/project/{projectId}":{"get":{"tags":["Scan Management"],"summary":"Get the scan status of a space","description":"Get the scan status of a space.","operationId":"getProjectScanStatus","parameters":[{"name":"projectId","in":"path","description":"The ID of the space.","required":true,"schema":{"type":"integer","format":"int64"}},{"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":"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"}},{"name":"page","in":"query","description":"The desired page of results.","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"The desired number of results per page.","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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 state of the space's scan, together with the requested page of findings.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScanDto"}}}}}},"post":{"tags":["Scan Management"],"summary":"Schedule scans for an entire space","description":"Schedule scans for an entire space.","operationId":"scanProject","parameters":[{"name":"projectId","in":"path","description":"The ID of the space.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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 state of the space's scan after scheduling it.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScanDto"}}}}}}},"/rest/scan/issue/{issueId}":{"get":{"tags":["Scan Management"],"summary":"Get the scan status of a work item","description":"Get the scan status of a work item.","operationId":"getIssueScanStatus","parameters":[{"name":"issueId","in":"path","description":"The ID of the work item.","required":true,"schema":{"type":"integer","format":"int64"}},{"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":"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"}},{"name":"page","in":"query","description":"The desired page of results.","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"The desired number of results per page.","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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 state of the work item's scan, together with the requested page of findings.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScanDto"}}}}}},"post":{"tags":["Scan Management"],"summary":"Schedule a scan for a single work item","description":"Schedule a scan for a single work item.","operationId":"scanIssue","parameters":[{"name":"issueId","in":"path","description":"The ID of the work item.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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 state of the work item's scan after scheduling it.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScanDto"}}}}}}},"/rest/scan/instance":{"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 work items.","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"}}}},"401":{"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/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"}}}},"401":{"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"}}}},"401":{"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/project/{projectId}/reviewed-finding/delete":{"post":{"tags":["Reviewed Findings"],"summary":"Delete a space-scoped or fine-grained reviewed finding","description":"Delete a space-scoped or fine-grained reviewed finding.","operationId":"delete_2","parameters":[{"name":"projectId","in":"path","description":"The ID of the space this review is scoped to.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"The matched text and rule whose review should be removed, and its scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewFindingRequestBodyFineGrainedScope"}}},"required":true},"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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/project/{projectId}/reviewed-finding/create":{"post":{"tags":["Reviewed Findings"],"summary":"Create a space-scoped or fine-grained reviewed finding","description":"Create a space-scoped or fine-grained reviewed finding.","operationId":"create_2","parameters":[{"name":"projectId","in":"path","description":"The ID of the space this review is scoped to.","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"description":"The matched text and rule to review, and the scope the review applies to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewFindingRequestBodyFineGrainedScope"}}},"required":true},"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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/project/{projectId}/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":"exportProjectFindings","parameters":[{"name":"projectId","in":"path","description":"The ID of the space.","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":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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/project/{projectId}/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":"exportProjectAttachmentCoverage","parameters":[{"name":"projectId","in":"path","description":"The ID of the space.","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"402":{"description":"Relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"401":{"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/issue/{issueId}/findings":{"post":{"tags":["Exports"],"summary":"Start an export of a work item's findings","description":"Starts an export of the findings in a single work item and returns the created job. The export is produced in the background, so the job is returned before its file exists.","operationId":"exportIssueFindings","parameters":[{"name":"issueId","in":"path","description":"The ID of the work item.","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":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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/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":"exportAllUserFindingsAsync","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"}}}},"401":{"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/project/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":"exportAllReviewedFindingsForProject","parameters":[{"name":"projectId","in":"query","description":"The ID of the space.","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"projectKey","in":"query","description":"The key of the space.","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"The relevant error information.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestErrorDto"}}}},"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"}}}},"401":{"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/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","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"}}}},"401":{"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/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","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"}}}},"401":{"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","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"}}}},"401":{"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":"exportAllUserAttachmentCoverageAsync","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"}}}},"401":{"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/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"}}}},"401":{"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"}}}},"401":{"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/scan/instance/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"}}}},"401":{"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/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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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/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"}}}},"401":{"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"}}}},"401":{"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"}}}},"401":{"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/dashboard/stats":{"get":{"tags":["Dashboard"],"summary":"Get scan statistics for the spaces you administer","description":"Returns a page of per-space scan statistics, covering every space on the site that the current user has administrator permission for.","operationId":"getInstanceScanStats","parameters":[{"name":"start","in":"query","description":"Start ordinal.","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"order","in":"query","description":"Ordering.","required":false,"schema":{"type":"string","default":"name"}},{"name":"query","in":"query","description":"Text search query.","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","description":"Sort direction.","required":false,"schema":{"type":"string","default":"asc"}}],"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"}}}},"401":{"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 requested page of scan statistics, one entry per space the current user administers.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InfiniteScrollPagedDashboardResult"}}}}}}},"/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"}}}},"401":{"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"}}}},"401":{"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}}},"LabelFindingRequestBody":{"type":"object","description":"The work item to label.","properties":{"contentId":{"type":"integer","format":"int64","description":"The ID of the content the finding is on."}},"required":["contentId"]},"UploadCsvRequest":{"type":"object","description":"JSON request body for globally reviewed findings upload and delete operations.","properties":{"filename":{"type":"string","description":"An optional name for the submitted file. This value is ignored and has no effect on the operation."},"csvBase64":{"type":"string","description":"The contents of a CSV file, encoded as a Base64 string. This value is required. Once decoded, the CSV must contain a single column with the header \"Match text\", and one row for each matched text to be reviewed."}}},"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."}}},"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."}}},"EnrichedFindingDto":{"type":"object","description":"A single scan finding, including the text which was scanned and details about the work item it was found in.","properties":{"locationType":{"type":"string","description":"The kind of location this finding was found in, for example a field or a comment.","enum":["FIELD","COMMENT","ATTACHMENT"]},"fieldName":{"type":["string","null"],"description":"If this finding is for a field, then this is the name (ID) of the field."},"changeItemCreated":{"type":["integer","null"],"format":"int64","description":"If this finding is for a field, then this is when the field changed to the version that was scanned. Can be null\n if the field has never changed since the work item was created."},"commentId":{"type":["integer","null"],"format":"int64","description":"If this finding is for a comment, then this is the comment ID."},"commentLastUpdated":{"type":["number","null"],"format":"double","description":"If this finding is for a comment, then this is when the comment was last updated prior to scanning. If the\n comment has been updated since, then it could have arbitrarily different content and must be re-scanned."},"attachmentId":{"type":["integer","null"],"format":"int64","description":"If this finding is for an attachment, then this is the attachment ID."},"attachmentFilename":{"type":["string","null"],"description":"If this finding is for an attachment, then this is the attachment filename."},"attachmentMediaType":{"type":["string","null"],"description":"If this finding is for an attachment, then this is the attachment media type."},"attachmentExtractionVersion":{"type":["integer","null"],"format":"int32","description":"If this finding is for an attachment, then this is the extraction version."},"ruleName":{"type":"string","description":"The name of the rule which generated this finding."},"lineOffsetStart":{"type":"integer","format":"int32","description":"Start offset of the finding in the scanned text."},"lineOffsetEnd":{"type":"integer","format":"int32","description":"End offset of the finding in the scanned text."},"confidence":{"type":["number","null"],"format":"double","description":"The confidence of the finding, if the matcher supports confidence scores. Updated via the generated\n <code>withConfidence</code> after AI confirmation to record the classifier's true-positive confidence."},"reviewed":{"type":"boolean","description":"If this finding has been reviewed."},"fineGrainedReviewed":{"type":"boolean","description":"If this finding has been reviewed at fine-grained scope."},"globallyReviewed":{"type":"boolean","description":"If this finding has been globally reviewed."},"reviewable":{"type":"boolean","description":"If this finding is reviewable. Some built-in rules' findings cannot be reviewed."},"issueKey":{"type":"string","description":"The key of the work item."},"workItemSummary":{"type":"string","description":"The summary of the work item."},"text":{"type":"string","description":"The text that was scanned to generate this finding."},"contentFound":{"type":"boolean","description":"If the content was found (e.g. text contains the actual scanned content, not a helpful error message)."},"truncated":{"type":"boolean","description":"True if this finding's text has been truncated because it was too long."},"builtInRule":{"type":"boolean","description":"Whether the rule which generated this finding is built-in; false for custom rules."},"location":{"type":"string","description":"A human-readable description of where this finding was found."},"historical":{"type":["boolean","null"],"description":"Whether this finding is not present in the latest version of the content. Note that this value will be null for\n redacted findings, and in cases where we can't (for whatever reason) determine whether the finding is historical."},"workItemCreated":{"type":["integer","null"],"format":"int64","description":"When the work item was created. Null when the work item could not be fetched."},"firstIntroducedTimestamp":{"type":["integer","null"],"format":"int64","description":"When the finding was first introduced. Null if unavailable."},"removedTimestamp":{"type":["integer","null"],"format":"int64","description":"The timestamp when the finding was removed (only for historical findings)."},"historyUnavailable":{"type":["boolean","null"],"description":"Whether the time at which this finding was introduced is unavailable. When true, firstIntroducedTimestamp is the time the content was last updated rather than the time the finding was introduced, because comments do not preserve their edit history."},"url":{"type":["string","null"],"description":"The URL to the containing content for this scan finding."},"securityAnalysisUrl":{"type":["string","null"],"description":"The URL to the security analysis page, deep-linked to the work item containing this finding and pre-filtered to\n its rule."},"pathFragments":{"type":["array","null"],"description":"The path to the content which contains this finding.","items":{"$ref":"#/components/schemas/PathFragmentLink"}},"reasonCategory":{"type":["string","null"],"description":"The category of the review reason (e.g., \"false-positive\", \"acceptable-risk\")."},"reasonNotes":{"type":["string","null"],"description":"Free-text notes explaining the review decision."},"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."},"authorAccountId":{"type":["string","null"],"description":"The account ID of the finding's author. See {@link io.soteri.cloud.jira.dto.EnrichedFindingDto#authorName #authorName}."},"authorName":{"type":["string","null"],"description":"The display name of the finding's author. See {@link io.soteri.cloud.jira.dto.EnrichedFindingDto#authorAccountId #authorAccountId}."},"labeled":{"type":["boolean","null"],"description":"Whether the issue this finding is on carries the remediation label."},"editTimestamp":{"type":["integer","null"],"format":"int64","description":"Get when the content holding this finding was last edited. For findings in fields, this is when the field was\n changed to the scanned version. A finding in the field's original value has no changelog entry to date it, so\n {@link io.soteri.cloud.jira.dto.EnrichedFindingDto#workItemCreated #workItemCreated} is used instead. The security analysis page dates those findings the same way. For\n findings in comments, this is when the comment was last updated. For findings in attachments, this is when the\n attachment was added, which {@link io.soteri.cloud.jira.dto.EnrichedFindingDto#firstIntroducedTimestamp #firstIntroducedTimestamp} already holds. Jira replaces attachments rather\n than editing them in place, so an attachment's content is as old as the attachment itself. Security for Jira Data\n Center dates attachment findings the same way."},"issueId":{"type":"integer","format":"int64","description":"The ID of the work item this finding was found in."}}},"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 results of a scan. Used for both work item scans and space scans.","properties":{"scanState":{"type":"string","description":"The state of the scan.","enum":["SCHEDULED","SCANNING","SCANNED","FAILED","UNSCANNED"]},"upToDateContent":{"type":"boolean","description":"Reports staleness of this scan due to content change."},"upToDateSettings":{"type":"boolean","description":"Reports staleness due to a settings change (e.g., a built-in rule was disabled)."},"errorMessage":{"type":["string","null"],"description":"An optional error message associated with this scan."},"findings":{"$ref":"#/components/schemas/PagedEnrichedFindingDto","description":"The page of findings."},"progress":{"$ref":"#/components/schemas/ScanProgressDto","description":"Progress of the scan. Only present for space scans which are currently running."}}},"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."}}},"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"]},"FineGrainedScope":{"type":"null","description":"Fine-grained review scope within a Jira work item.","properties":{"issueId":{"type":"integer","format":"int64","description":"The ID of the work item."},"fieldName":{"type":["string","null"],"description":"Name of the field, if the scope is a specific field."},"commentId":{"type":["integer","null"],"format":"int64","description":"ID of the comment, if the scope is a comment."},"attachmentId":{"type":["integer","null"],"format":"int64","description":"ID of the attachment, if the scope is an attachment."}}},"ReviewFindingRequestBodyFineGrainedScope":{"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":{"$ref":"#/components/schemas/FineGrainedScope","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"]},"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}}},"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."}}},"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)."}}},"DashboardResult":{"type":"object","description":"Scan statistics for a single space.","properties":{"projectKey":{"type":"string","description":"The key of the space, as shown in the space's work item keys."},"id":{"type":"integer","format":"int64","description":"The ID of the space."},"name":{"type":"string","description":"The display name of the space."},"avatarUrl":{"type":"string","description":"A URL to the space's avatar image."},"state":{"type":"string","description":"The state of the space's most recent scan.","enum":["SCHEDULED","SCANNING","SCANNED","FAILED","UNSCANNED"]},"upToDateContent":{"type":"boolean","description":"Whether the scan covers the space's current content. This is false when content has changed since the space was last scanned."},"upToDateSettings":{"type":"boolean","description":"Whether the scan used the current scanning settings. This is false when the settings have changed since the space was last scanned, for example because a rule was enabled or disabled."},"findingCount":{"type":"integer","format":"int64","description":"The number of findings in this space which have not been reviewed."}}},"InfiniteScrollPagedDashboardResult":{"type":"object","description":"A single page of results for infinite scrolling, where the total number of results available is not known in advance.","properties":{"values":{"type":"array","description":"The page of data.","items":{"$ref":"#/components/schemas/DashboardResult"}},"nextPageRequestStart":{"type":"integer","format":"int32","description":"The value to use for \"start\" in the next page request, or -1 if there is no more data."},"hasMore":{"type":"boolean","description":"Whether more data is available."}}},"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"}}}}