{"openapi":"3.1.1","info":{"title":"Compliance for Confluence REST API","version":"1.0.0","description":"\nThe Compliance for Confluence REST API provides programmatic access to classification, detection, and audit features for your Confluence instance. This API enables you to:\n\n- **Classification Management**: Create, update, and manage classification levels and schemes\n- **Detectors Management**: Create, update, and manage detectors\n- **Detector Schemes**: Manage and update detector schemes\n- **Page Classification**: Apply classification levels to Confluence pages and track their history\n- **Sensitive Data Detection**: Search and redact sensitive data detected in Confluence pages\n- **Excluded Pages**: Manage pages excluded from sensitive data detection\n- **Exclusion Rules**: Manage text excluded from sensitive data detection\n\n### Authentication\nAll API endpoints require authentication using an API key. Include your API key in the `x-api-key` header with each request. API keys can be generated and managed through the Compliance for Confluence app interface.\n\n### Resources\n- **[API Documentation](https://docs.appfox.io/confluence-compliance/rest-api)**: Detailed guides, examples, and best practices\n- **[Support](https://appfox.atlassian.net/servicedesk/customer/portal/3)**: Get help with API integration and troubleshooting\n\nFor questions, feature requests, or technical support, please visit our support portal.","termsOfService":"https://www.appfox.io/about/end-user-licence-agreement/"},"externalDocs":{"description":"Compliance Documentation and Guides","url":"https://docs.appfox.io/confluence-compliance/"},"servers":[{"url":"https://ac-cloud.com/compliance/api/v1"}],"components":{"securitySchemes":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"API key authentication. An API key can be created in the Compliance for Confluence app."}},"schemas":{"Detection":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the detection."},"pageId":{"type":"string","description":"The Confluence page identifier containing the detection."},"spaceId":{"type":"string","description":"The Confluence space identifier containing the page."},"pageVersion":{"type":"integer","format":"int64","example":3,"description":"The version of the page where the detection was found."},"jobId":{"type":"string","description":"The identifier of the job that performed the detection."},"detectedText":{"type":"string","description":"The text content that was detected."},"entityType":{"type":"string","example":"Credit Card Number","description":"The type of sensitive entity that was detected."},"author":{"type":"string","nullable":true,"description":"The author of the content (if available)."},"locationStart":{"type":"integer","format":"int64","description":"The starting position of the detected text."},"locationEnd":{"type":"integer","format":"int64","description":"The ending position of the detected text."},"scannerVersion":{"type":"integer","description":"The version of the scanner used for detection."},"detectorId":{"type":"string","description":"The identifier of the detector that found the detection."},"createdAt":{"type":"string","format":"date-time","example":"2023-01-01T12:00:00Z","description":"The timestamp when the detection was created."},"updatedAt":{"type":"string","format":"date-time","example":"2023-01-01T12:00:00Z","description":"The timestamp when the detection was last updated."}}},"Detector":{"type":"object","properties":{"id":{"type":"string","description":"ID of the detector","format":"uuid"},"name":{"type":"string","example":"Credit Card Detector","description":"Name of the detector"},"description":{"type":"string","example":"Detects credit card numbers in the format XXXX-XXXX-XXXX-XXXX","description":"Description of the detector"},"regex":{"type":"string","nullable":true,"example":"\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}","description":"Regex of text to detect"},"entityType":{"type":"string","example":"Credit Card Number","description":"The entity type of the detector"},"isSystem":{"type":"boolean","example":true,"description":"Is the detector created by Compliance (isSystem is true) or custom detector"},"createdBy":{"type":"string","nullable":true,"example":"user123","description":"ID of the detector creator"},"createdAt":{"type":"string","format":"date-time","example":"2023-01-01T12:00:00Z","description":"The date the detector was created"},"updatedAt":{"type":"string","format":"date-time","example":"2023-01-01T12:00:00Z","description":"The date the detector was last updated"},"confidenceLevel":{"type":"integer","nullable":true,"description":"Confidence level of the detector"},"version":{"type":"integer","description":"Detector version"},"iconName":{"type":"string","description":"Name of the detector's icon","example":"flask"}}},"ExpandedDetection":{"allOf":[{"$ref":"#/components/schemas/Detection"},{"type":"object","properties":{"page":{"$ref":"#/components/schemas/Page"},"detector":{"$ref":"#/components/schemas/Detector"},"pageLevel":{"type":"object","nullable":true,"properties":{"levelId":{"type":"string","description":"ID of the classification level","nullable":true},"level":{"nullable":true,"$ref":"#/components/schemas/Level"},"subLevelId":{"type":"string","description":"ID of the classification sub-level","nullable":true},"subLevel":{"nullable":true,"$ref":"#/components/schemas/SubLevel"},"classifierId":{"type":"string","description":"ID of the classifier","nullable":true},"classificationDate":{"type":"string","format":"date-time","description":"Date when the page was classified","nullable":true}}}}}]},"GetDetectionsResponse":{"type":"object","properties":{"results":{"type":"array","description":"List of detection results","items":{"allOf":[{"$ref":"#/components/schemas/ExpandedDetection"}]}},"meta":{"$ref":"#/components/schemas/PaginationMeta"},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"GetDetectionResponse":{"allOf":[{"$ref":"#/components/schemas/ExpandedDetection"}]},"RedactDetectionBody":{"type":"object","properties":{"deletePageVersionWithDetection":{"type":"boolean","example":true,"description":"If true, the page version containing the detection will be deleted."}}},"PostDetectionRedactResponse":{"type":"object","properties":{"error":{"type":"string","example":"NOT_FOUND"},"message":{"type":"string","example":"Error whilst redacting detection"}}},"DetectorScheme":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of the detector scheme."},"name":{"type":"string","description":"The name of the detector scheme."},"description":{"type":"string","description":"The description of the detector scheme."},"isSystem":{"type":"boolean","description":"Is the detector scheme created by Compliance (isSystem is true) or a custom detector scheme"},"detectors":{"type":"array","description":"List of detectors","allOf":[{"$ref":"#/components/schemas/Detector"},{"type":"object"}]},"createdAt":{"type":"string","format":"date-time","example":"2023-01-01T12:00:00Z","description":"The timestamp when the detector scheme was created."},"updatedAt":{"type":"string","format":"date-time","example":"2023-01-01T12:00:00Z","description":"The timestamp when the detector scheme was last updated."},"createdBy":{"type":"string","nullable":true,"example":"user123","description":"The identifier of the user who created this detector scheme."}}},"UpdateDetectorSchemeBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the detector scheme"},"description":{"type":"string","description":"Description of the detector scheme"},"detectorIds":{"type":"array","description":"IDs of detectors","format":"uuid"}}},"GetDetectorSchemesResponse":{"type":"object","properties":{"results":{"type":"array","description":"List of detector scheme results","items":{"allOf":[{"$ref":"#/components/schemas/DetectorScheme"}]}},"meta":{"$ref":"#/components/schemas/PaginationMeta"},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"GetDetectorSchemeResponse":{"allOf":[{"$ref":"#/components/schemas/DetectorScheme"}]},"PutDetectorSchemeResponse":{"allOf":[{"$ref":"#/components/schemas/DetectorScheme"}]},"CreateDetectorBody":{"type":"object","required":["name","regex"],"properties":{"name":{"type":"string","description":"Name of the detector"},"regex":{"type":"string","description":"Regex to use to detect text"},"description":{"type":"string","description":"Description of the detector"},"iconName":{"type":"string","description":"Name of the icon to represent the detector. Default is flask","example":"vehicleCar","enum":["alert","angleBrackets","briefcase","cash","compass","creditCard","dataNumber","dataString","devices","email","exclamationSquare","files","flag","flask","globe","lockLocked","mention","officeBuilding","person","peopleGroup","phone","screen","shield","tools","vehicleCar"]}}},"UpdateDetectorBody":{"type":"object","properties":{"name":{"type":"string","description":"Name of the detector"},"description":{"type":"string","description":"Description of the detector"},"regex":{"type":"string","description":"Regex to use to detect text"},"iconName":{"type":"string","description":"Name of the icon to represent the detector","enum":["alert","angleBrackets","briefcase","cash","compass","creditCard","dataNumber","dataString","devices","email","exclamationSquare","files","flag","flask","globe","lockLocked","mention","officeBuilding","person","peopleGroup","phone","screen","shield","tools","vehicleCar"]}}},"GetDetectorsResponse":{"type":"object","properties":{"results":{"type":"array","description":"List of detectors","items":{"allOf":[{"$ref":"#/components/schemas/Detector"}]}},"meta":{"$ref":"#/components/schemas/PaginationMeta"},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"GetDetectorResponse":{"allOf":[{"$ref":"#/components/schemas/Detector"}]},"PostDetectorResponse":{"allOf":[{"$ref":"#/components/schemas/Detector"}]},"PutDetectorResponse":{"allOf":[{"$ref":"#/components/schemas/Detector"}]},"DeleteDetectorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"ExcludedPage":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"pageId":{"type":"string"},"spaceId":{"type":"string"},"excludedBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ExpandedExcludedPage":{"allOf":[{"$ref":"#/components/schemas/ExcludedPage"},{"type":"object","properties":{"page":{"$ref":"#/components/schemas/Page"},"space":{"$ref":"#/components/schemas/Space"}}}]},"GetExcludedPagesResponse":{"type":"object","properties":{"results":{"type":"array","description":"List of excluded page results","items":{"allOf":[{"$ref":"#/components/schemas/ExpandedExcludedPage"}]}},"meta":{"$ref":"#/components/schemas/PaginationMeta"},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"CreateExcludedPageBody":{"type":"object","required":["pageId"],"properties":{"pageId":{"type":"string","description":"The ID of the page to exclude (this is the ID of the excluded page instance, not the Confluence page ID)","format":"uuid"}}},"CreateExcludedPageResponse":{"allOf":[{"$ref":"#/components/schemas/ExpandedExcludedPage"}]},"ExclusionRule":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID of the exclusion rule"},"name":{"type":"string","description":"Name of the exclusion rule"},"text":{"type":"string","description":"Text to be excluded"},"isCaseSensitive":{"type":"boolean","default":true,"description":"Enable to match exact text casing for the exclusion rule"},"isEnabled":{"type":"boolean","default":true,"description":"Enable to enable the exclusion rule"},"entityType":{"type":"string","nullable":true,"description":"The entity type of the excluded text"},"createdBy":{"type":"string","description":"ID of the exclusion rule creator"},"createdAt":{"type":"string","format":"date-time","description":"The date the exclusion rule was created"},"updatedAt":{"type":"string","format":"date-time","description":"The date the exclusion rule was last updated"}}},"CreateUpdateExclusionRuleBody":{"type":"object","required":["name","text"],"properties":{"name":{"type":"string","description":"Name of the exclusion rule"},"text":{"type":"string","description":"Text to be excluded"},"isCaseSensitive":{"type":"boolean","default":true,"description":"Enable to match exact text casing for the exclusion rule"},"isEnabled":{"type":"boolean","default":true,"description":"Enable to enable the exclusion rule"}}},"GetExclusionRulesResponse":{"type":"object","properties":{"results":{"type":"array","description":"List of exclusion rules","items":{"$ref":"#/components/schemas/ExclusionRule"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"GetExclusionRuleResponse":{"allOf":[{"$ref":"#/components/schemas/ExclusionRule"}]},"PostExclusionRuleResponse":{"allOf":[{"$ref":"#/components/schemas/ExclusionRule"}]},"PutExclusionRuleResponse":{"allOf":[{"$ref":"#/components/schemas/ExclusionRule"}]},"DeleteExclusionRuleResponse":{"type":"object","properties":{"success":{"type":"boolean"}}},"ExpandedLevelScheme":{"allOf":[{"$ref":"#/components/schemas/LevelScheme"},{"type":"object","properties":{"levels":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/Level"},{"type":"object","properties":{"index":{"type":"integer"}}}]}}}}]},"GetLevelSchemesResponse":{"type":"array","items":{"$ref":"#/components/schemas/ExpandedLevelScheme"}},"GetLevelSchemeResponse":{"allOf":[{"$ref":"#/components/schemas/ExpandedLevelScheme"}]},"Level":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"textColour":{"type":"string"},"backgroundColour":{"type":"string"},"createdBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"status":{"type":"string"}}},"SubLevel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"textColour":{"type":"string"},"backgroundColour":{"type":"string"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"levelId":{"type":"string"}}},"LevelScheme":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"isSystem":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ExpandedLevel":{"allOf":[{"$ref":"#/components/schemas/Level"},{"type":"object","properties":{"subLevels":{"type":"array","items":{"$ref":"#/components/schemas/SubLevel"}},"levelSchemes":{"type":"array","items":{"$ref":"#/components/schemas/LevelScheme"}},"publishedBy":{"type":"string","nullable":true},"publishedAt":{"type":"string","format":"date-time","nullable":true},"archivedBy":{"type":"string","nullable":true},"archivedAt":{"type":"string","format":"date-time","nullable":true}}}]},"CreateUpdateLevelBody":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"textColour":{"type":"string"},"backgroundColour":{"type":"string"}}},"GetLevelsResponse":{"type":"array","items":{"$ref":"#/components/schemas/ExpandedLevel"}},"GetLevelResponse":{"allOf":[{"$ref":"#/components/schemas/ExpandedLevel"}]},"PostLevelResponse":{"allOf":[{"$ref":"#/components/schemas/ExpandedLevel"}]},"PutLevelResponse":{"allOf":[{"$ref":"#/components/schemas/ExpandedLevel"}]},"PostLevelPublishResponse":{"allOf":[{"$ref":"#/components/schemas/ExpandedLevel"}]},"Page":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["current","draft","archived","trashed"]},"subtype":{"type":"string"}}},"Space":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"iconPath":{"type":"string"}}},"DetectionSummary":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"detectorId":{"type":"string"},"detector":{"$ref":"#/components/schemas/Detector"},"createdAt":{"type":"string","format":"date-time"}}},"PageLevel":{"type":"object","properties":{"pageId":{"type":"string","description":"ID of the Confluence page"},"page":{"$ref":"#/components/schemas/Page"},"ownerId":{"type":"string","description":"ID of the page owner"},"spaceId":{"type":"string","description":"ID of the Confluence space"},"space":{"$ref":"#/components/schemas/Space"},"levelId":{"type":"string","description":"ID of the classification level","nullable":true},"level":{"nullable":true,"$ref":"#/components/schemas/Level"},"subLevelId":{"type":"string","description":"ID of the classification sub-level","nullable":true},"subLevel":{"nullable":true,"$ref":"#/components/schemas/SubLevel"},"classifierId":{"type":"string","description":"ID of the classifier","nullable":true},"classificationDate":{"type":"string","format":"date-time","description":"Date when the page was classified","nullable":true},"detections":{"type":"array","description":"List of detections found in the page (only included with detection read scope)","items":{"$ref":"#/components/schemas/DetectionSummary"}}}},"GetPageLevelsResponse":{"type":"object","properties":{"results":{"type":"array","description":"List of page level results","items":{"$ref":"#/components/schemas/PageLevel"}},"meta":{"$ref":"#/components/schemas/PaginationMeta"},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"GetPageLevelResponse":{"allOf":[{"$ref":"#/components/schemas/PageLevel"}]},"PostPageLevelResponse":{"allOf":[{"$ref":"#/components/schemas/PageLevel"}]},"GetPageLevelLevelsResponse":{"type":"object","properties":{"levels":{"type":"array","description":"Available classification levels for the page","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"subLevels":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}}}}}},"canSetLevel":{"type":"boolean","description":"Whether the current user has permission to set the level"}}},"GetPageLevelHistoryResponse":{"type":"object","properties":{"history":{"type":"array","description":"List of classification history entries for the page","items":{"$ref":"#/components/schemas/PageLevel"}}}},"CreateUpdateSubLevelBody":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"textColour":{"type":"string"},"backgroundColour":{"type":"string"}}},"GetSubLevelsResponse":{"type":"array","items":{"$ref":"#/components/schemas/SubLevel"}},"CreateSubLevelResponse":{"allOf":[{"$ref":"#/components/schemas/SubLevel"}]},"GetSubLevelResponse":{"allOf":[{"$ref":"#/components/schemas/SubLevel"}]},"UpdateSubLevelResponse":{"allOf":[{"$ref":"#/components/schemas/SubLevel"}]},"DeleteSubLevelResponse":{"type":"object","properties":{"success":{"type":"boolean"}}},"PaginationLinks":{"type":"object","properties":{"self":{"name":"self","type":"string","description":"URL to the current page of results"},"next":{"name":"next","type":"string","description":"URL to the next page of results","nullable":true},"prev":{"name":"prev","type":"string","description":"URL to the previous page of results","nullable":true}}},"PaginationMeta":{"type":"object","properties":{"totalResults":{"type":"integer","description":"Total number of results"},"totalPages":{"type":"integer","description":"Total number of pages"},"currentPage":{"type":"integer","description":"Current page number"},"limit":{"type":"integer","description":"Number of results per page"},"offset":{"type":"integer","description":"Offset from the first result"}}}},"responses":{"UnauthorizedError":{"description":"API key is missing or invalid, or Forge authentication failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"UNAUTHORIZED"},"message":{"type":"string","example":"Authentication failed"}}}}}},"ForbiddenError":{"description":"Required API key scopes are missing","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"FORBIDDEN"},"message":{"type":"string","example":"Required at least one scope from classification:read, classification:write"}}}}}}},"parameters":{"limit":{"in":"query","name":"limit","description":"The maximum number of items to return.","schema":{"type":"integer","default":50,"minimum":1},"required":false},"offset":{"in":"query","name":"offset","description":"The number of items to skip before starting to return results.","schema":{"type":"integer","default":0,"minimum":0},"required":false}}},"paths":{"/detection":{"get":{"tags":["Detection"],"summary":"Search all detections.","description":"Retrieve a list of detections matching the search filter.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:read`, `classification:read` (for classification data).\n","operationId":"getDetections","security":[{"apiKeyAuth":[]}],"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"},{"name":"pages","in":"query","description":"The page IDs to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"spaces","in":"query","description":"The space IDs to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"owners","in":"query","description":"The page owners (as user IDs) to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"detectors","in":"query","description":"The detector IDs to filter by","schema":{"type":"array","items":{"type":"string","format":"uuid"}}},{"name":"detectionStart","in":"query","description":"The start/minimum date on which the detection was made","schema":{"type":"string","format":"date-time"}},{"name":"detectionEnd","in":"query","description":"The end/maximum date on which the detection was made","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Detections returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDetectionsResponse"}}},"links":{"self":{"operationId":"getDetections","description":"Link to the current page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset"}},"next":{"operationId":"getDetections","description":"Link to the next page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset + $response.body#/meta/limit"}},"prev":{"operationId":"getDetections","description":"Link to the previous page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset - $response.body#/meta/limit"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"}}}},"/detection/{detectionId}":{"get":{"tags":["Detection"],"summary":"Get a detection by ID.","description":"Retrieve a specific detection by its ID.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:read`, `classification:read` (for classification data).\n","operationId":"getDetection","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"detectionId","in":"path","description":"The ID of the detection to retrieve","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Detection returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDetectionResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Detection not found"}}}},"/detection/{detectionId}/redact":{"post":{"tags":["Detection"],"summary":"Redact a detection on its Confluence page.","description":"Redacts sensitive data that was detected in a Confluence page.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:write`.\n","operationId":"redactDetection","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"detectionId","in":"path","description":"The ID of the detection to redact","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedactDetectionBody"}}}},"responses":{"200":{"description":"Detection successfully redacted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostDetectionRedactResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Detection not found"}}}},"/detector-scheme":{"get":{"tags":["Detector Scheme"],"summary":"Search all detector schemes.","description":"Retrieve a list of detector schemes matching the search filter.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`\n","operationId":"getDetectorSchemes","security":[{"apiKeyAuth":[]}],"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"},{"name":"name","in":"query","description":"The name of detector scheme to filter by","schema":{"type":"string"}},{"name":"detectorId","in":"query","description":"The ID of the detector to filter by - returning all detector schemes that contain this detector","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Detector Schemes returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDetectorSchemesResponse"}}},"links":{"self":{"operationId":"getDetectorSchemes","description":"Link to the current page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset"}},"next":{"operationId":"getDetectorSchemes","description":"Link to the next page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset + $response.body#/meta/limit"}},"prev":{"operationId":"getDetectorSchemes","description":"Link to the previous page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset - $response.body#/meta/limit"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"}}},"put":{"tags":["Detector Scheme"],"summary":"Update an existing detector scheme.","description":"Update an existing detector scheme.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`\n","operationId":"updateDetectorScheme","security":[{"apiKeyAuth":[]}],"requestBody":{"description":"Detector update information","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDetectorSchemeBody"}}}},"responses":{"200":{"description":"Detector scheme updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutDetectorSchemeResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Detector scheme not found"}}}},"/detector-scheme/{detectorSchemeId}":{"get":{"tags":["Detector Scheme"],"summary":"Get a Detector Scheme by ID.","description":"Retrieve a specific Detector Scheme by its ID.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`\n","operationId":"getDetectorScheme","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"detectorSchemeId","in":"path","description":"The ID of the detector scheme to retrieve","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Detector scheme returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDetectorSchemeResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Detector scheme not found"}}}},"/detector":{"get":{"tags":["Detector"],"summary":"Search all detectors.","description":"Retrieve a list of detectors matching the search filter.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"getDetectors","security":[{"apiKeyAuth":[]}],"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"},{"name":"name","in":"query","description":"The name of the detector","schema":{"type":"string"}},{"name":"description","in":"query","description":"The description of the detector to filter by","schema":{"type":"string"}},{"name":"isSystem","in":"query","description":"Whether the detector is created by Compliance or Custom","schema":{"type":"boolean"}},{"name":"createdAt","in":"query","description":"The date on which the detector was created","schema":{"type":"string","format":"date-time"}},{"name":"updatedAt","in":"query","description":"The date on which the detector was updated","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Detectors returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDetectorsResponse"}}},"links":{"self":{"operationId":"getDetectors","description":"Link to the current page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset"}},"next":{"operationId":"getDetectors","description":"Link to the next page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset + $response.body#/meta/limit"}},"prev":{"operationId":"getDetectors","description":"Link to the previous page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset - $response.body#/meta/limit"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"}}},"post":{"tags":["Detector"],"summary":"Create a new detector.","description":"Create a new detector.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"createDetector","security":[{"apiKeyAuth":[]}],"requestBody":{"description":"Detector creation information","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDetectorBody"}}}},"responses":{"201":{"description":"Detector created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostDetectorResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}},"put":{"tags":["Detector"],"summary":"Update an existing detector.","description":"Update an existing detector.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"createDetector","security":[{"apiKeyAuth":[]}],"requestBody":{"description":"Detector update information","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDetectorBody"}}}},"responses":{"200":{"description":"Detector updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutDetectorResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/detector/{detectorId}":{"get":{"tags":["Detector"],"summary":"Get a detector by ID.","description":"Retrieve a specific detector by its ID.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"getDetector","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"detectorId","in":"path","description":"The ID of the detector to retrieve","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Detection returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDetectorResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Detector not found"}}},"delete":{"tags":["Detector"],"summary":"Delete a detector","description":"Delete the detector and stop using it to detect any text in pages\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"deleteDetector","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"detectorId","in":"path","required":true,"description":"The ID of the detector to delete","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Detector deleted successfully"},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Detector not found"}}}},"/excluded-page":{"get":{"tags":["Excluded Page"],"summary":"Search all excluded pages.","description":"Retrieve a list of excluded pages matching the search filter.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"getExcludedPages","security":[{"apiKeyAuth":[]}],"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"},{"name":"pages","in":"query","description":"The page IDs to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"spaces","in":"query","description":"The space IDs to filter by","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Excluded pages returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExcludedPagesResponse"}}},"links":{"self":{"operationId":"getExcludedPages","description":"Link to the current page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset"}},"next":{"operationId":"getExcludedPages","description":"Link to the next page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset + $response.body#/meta/limit"}},"prev":{"operationId":"getExcludedPages","description":"Link to the previous page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset - $response.body#/meta/limit"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the user doesn't have the required detection permission","$ref":"#/components/responses/ForbiddenError"}}},"post":{"tags":["Excluded Page"],"summary":"Add a page to the excluded page list.","description":"Exclude a Confluence page from data detection by adding it to Excluded Pages.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"addExcludedPage","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExcludedPageBody"}}}},"responses":{"201":{"description":"Page excluded successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExcludedPageResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Page not found"}}}},"/excluded-page/{excludedPageId}":{"delete":{"tags":["Excluded Page"],"summary":"Remove a page from the excluded page list.","description":"Stop excluding a Confluence page from data detection by deleting the excluded page.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"deleteExcludedPage","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"excludedPageId","in":"path","required":true,"description":"The ID of the excluded page to delete","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Excluded page deleted successfully"},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Excluded page not found"}}}},"/exclusion-rule":{"get":{"tags":["Exclusion Rule"],"summary":"Get all exclusion rules.","description":"Retrieve a list of all exclusion rules.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"getExclusionRules","security":[{"apiKeyAuth":[]}],"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"},{"name":"name","in":"query","description":"The exclusion rule name to filter by","schema":{"type":"string"}},{"name":"text","in":"query","description":"The exclusion rule text to filter by","schema":{"type":"string"}},{"name":"createdBy","in":"query","description":"The createdBy user IDs to filter by","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Exclusion Rules returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExclusionRulesResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during validation"}}},"post":{"tags":["Exclusion Rule"],"summary":"Create a new exclusion rule.","description":"Create a new exclusion rule.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"createExclusionRule","security":[{"apiKeyAuth":[]}],"requestBody":{"description":"Exclusion rule creation information","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpdateExclusionRuleBody"}}}},"responses":{"201":{"description":"Exclusion rule created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostExclusionRuleResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/exclusion-rule/{id}":{"get":{"tags":["Exclusion Rule"],"summary":"Get exclusion rule by ID.","description":"Retrieve a specific exclusion rule by its ID.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"getExclusionRule","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","description":"The ID of the exclusion rule to retrieve","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Exclusion rule returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExclusionRuleResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}},"put":{"tags":["Exclusion Rule"],"summary":"Update an exclusion rule by ID.","description":"Update an existing exclusion rule with the provided details.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"updateExclusionRule","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","description":"The ID of the exclusion rule to update","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"description":"Exclusion rule update information","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpdateExclusionRuleBody"}}}},"responses":{"200":{"description":"Exclusion rule updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutExclusionRuleResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}},"delete":{"tags":["Exclusion Rule"],"summary":"Delete exclusion rule by ID.","description":"Delete a specific exclusion rule by its ID.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `detection:manage`.\n","operationId":"deleteExclusionRule","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"id","in":"path","description":"The ID of the exclusion rule to delete","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Exclusion rule delete","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteExclusionRuleResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/level-scheme":{"get":{"tags":["Level Scheme"],"summary":"Get all level schemes.","description":"Retrieve a list of all level schemes.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"getLevelSchemes","security":[{"apiKeyAuth":[]}],"responses":{"200":{"description":"Level schemes returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLevelSchemesResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"}}}},"/level-scheme/{levelSchemeId}":{"get":{"tags":["Level Scheme"],"summary":"Get a level scheme by ID.","description":"Retrieve a specific level scheme by its ID.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"getLevelScheme","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelSchemeId","in":"path","required":true,"description":"The ID of the level scheme to retrieve","schema":{"type":"string"}}],"responses":{"200":{"description":"Level scheme returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLevelSchemeResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Level scheme not found"}}}},"/level":{"get":{"tags":["Level"],"summary":"Get all levels.","description":"Retrieve a list of all levels.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"getLevels","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"status","in":"query","description":"Filter levels by their status (e.g., 'draft', 'archived', or 'published')","schema":{"type":"string"}}],"responses":{"200":{"description":"Levels returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLevelsResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"}}},"post":{"tags":["Level"],"summary":"Create a new level.","description":"Create a new level with the provided details.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"createLevel","security":[{"apiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpdateLevelBody"}}}},"responses":{"201":{"description":"Level created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLevelResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"}}}},"/level/{levelId}":{"get":{"tags":["Level"],"summary":"Get a level by ID.","description":"Retrieve a specific level by its ID.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"getLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level to retrieve","schema":{"type":"string"}}],"responses":{"200":{"description":"Level returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLevelResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"}}},"put":{"tags":["Level"],"summary":"Update a level by ID.","description":"Update an existing level with the provided details.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"updateLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level to update","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpdateLevelBody"}}}},"responses":{"200":{"description":"Level updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutLevelResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/level/{levelId}/publish":{"post":{"tags":["Level"],"summary":"Publish a level by ID.","description":"Publish an existing level.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"publishLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level to publish","schema":{"type":"string"}}],"responses":{"200":{"description":"Level published successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostLevelPublishResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/page-level":{"get":{"tags":["Page Level"],"summary":"Get pages with their classification levels.","description":"Retrieve a list of all page levels.\nA page level is a pairing of Compliance data (e.g., classification levels) with a Confluence page.\n\n[Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:read` (for classification data), `detection:read` (for detection data).\n","operationId":"getPageLevels","security":[{"apiKeyAuth":[]}],"parameters":[{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/offset"},{"name":"spaces","in":"query","description":"The spaces IDs to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"owners","in":"query","description":"The owners (as user IDs) to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"levels","in":"query","description":"The level IDs to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"subLevels","in":"query","description":"The sub-level IDs to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"classifiers","in":"query","description":"The classifiers (as user IDs) to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"classificationStart","in":"query","description":"The start/minimum date on which the pages were classified","schema":{"type":"string","format":"date-time"}},{"name":"classificationEnd","in":"query","description":"The end/maximum date on which the pages were classified","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Page levels returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPageLevelsResponse"}}},"links":{"self":{"operationId":"getPageLevels","description":"Link to the current page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset"}},"next":{"operationId":"getPageLevels","description":"Link to the next page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset + $response.body#/meta/limit"}},"prev":{"operationId":"getPageLevels","description":"Link to the previous page of results","parameters":{"limit":"$response.body#/meta/limit","offset":"$response.body#/meta/offset - $response.body#/meta/limit"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during validation"}}},"post":{"tags":["Page Level"],"summary":"Classify a page.","description":"Create a new page level by classifying a page.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:write`.\n","operationId":"createPageLevel","security":[{"apiKeyAuth":[]}],"requestBody":{"description":"Page level creation information","required":true,"content":{"application/json":{"schema":{"type":"object","required":["pageId","levelId"],"properties":{"pageId":{"type":"string","description":"ID of the Confluence page to classify"},"levelId":{"type":"string","format":"uuid","description":"UUID of the classification level"},"subLevelId":{"type":"string","format":"uuid","description":"UUID of the classification sub-level (optional)","nullable":true}}}}}},"responses":{"201":{"description":"Page classified successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostPageLevelResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the page is out of scope","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/page-level/by-page/{pageId}":{"get":{"tags":["Page Level"],"summary":"Get page level by page ID.","description":"Retrieve a specific page level by its page ID.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:read` (for classification data), `detection:read` (for detection data).\n","operationId":"getPageLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"pageId","in":"path","description":"The ID of the page to retrieve","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Page level returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPageLevelResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the page is out of scope","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/page-level/by-page/{pageId}/levels":{"get":{"tags":["Page Level"],"summary":"Get possible classification levels for a page by page ID.","description":"Retrieve all possible classification levels for a specific page.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:read`.\n","operationId":"getPageLevelPossibleLevels","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"pageId","in":"path","description":"The ID of the page to get possible levels for","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Possible levels returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPageLevelLevelsResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the page is out of scope","$ref":"#/components/responses/ForbiddenError"},"500":{"description":"An error occurred during processing"}}}},"/page-level/by-page/{pageId}/history":{"get":{"tags":["Page Level"],"summary":"Get page level history by page ID.","description":"Retrieve the classification history for a specific page.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:read`.\n","operationId":"getPageLevelHistory","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"pageId","in":"path","description":"The ID of the page to retrieve history for","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Page level history returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPageLevelHistoryResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes or the page is out of scope","$ref":"#/components/responses/ForbiddenError"}}}},"/level/{levelId}/sub-level":{"get":{"tags":["Sub-level"],"summary":"Get all sub-levels for a level.","description":"Retrieve a list of all sub-levels for a specific level.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"getSubLevels","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level to retrieve sub-levels for","schema":{"type":"string"}}],"responses":{"200":{"description":"Sub-levels returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSubLevelsResponse"}}}},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Level not found"}}},"post":{"tags":["Sub-level"],"summary":"Create a new sub-level.","description":"Create a new sub-level for a specific level with the provided details.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"createSubLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level to create a sub-level for","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpdateSubLevelBody"}}}},"responses":{"201":{"description":"Sub-level created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubLevelResponse"}}}},"400":{"description":"Invalid input data"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Level not found"}}}},"/level/{levelId}/sub-level/{subLevelId}":{"get":{"tags":["Sub-level"],"summary":"Get a sub-level by ID.","description":"Retrieve a specific sub-level by its ID.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"getSubLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level that the sub-level belongs to","schema":{"type":"string"}},{"name":"subLevelId","in":"path","required":true,"description":"The ID of the sub-level to retrieve","schema":{"type":"string"}}],"responses":{"200":{"description":"Sub-level returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSubLevelResponse"}}}},"400":{"description":"Sub-level does not belong to the specified level"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Level or sub-level not found"}}},"put":{"tags":["Sub-level"],"summary":"Update a sub-level by ID.","description":"Update an existing sub-level with the provided details.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"updateSubLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level that the sub-level belongs to","schema":{"type":"string"}},{"name":"subLevelId","in":"path","required":true,"description":"The ID of the sub-level to update","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUpdateSubLevelBody"}}}},"responses":{"200":{"description":"Sub-level updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSubLevelResponse"}}}},"400":{"description":"Invalid input data or sub-level does not belong to the specified level"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Level or sub-level not found"}}},"delete":{"tags":["Sub-level"],"summary":"Delete a sub-level by ID.","description":"Delete an existing sub-level.\n\n [Scopes](https://docs.appfox.io/confluence-compliance/rest-api#RESTAPI-Scopes): `classification:manage`.\n","operationId":"deleteSubLevel","security":[{"apiKeyAuth":[]}],"parameters":[{"name":"levelId","in":"path","required":true,"description":"The ID of the level that the sub-level belongs to","schema":{"type":"string"}},{"name":"subLevelId","in":"path","required":true,"description":"The ID of the sub-level to delete","schema":{"type":"string"}}],"responses":{"200":{"description":"Sub-level deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSubLevelResponse"}}}},"400":{"description":"Sub-level does not belong to the specified level"},"401":{"description":"An error occurred during authentication","$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"The API key does not have the required scopes","$ref":"#/components/responses/ForbiddenError"},"404":{"description":"Level or sub-level not found"}}}}},"tags":[]}