Maintenance (admin) API
Base URL: https://YOUR-SERVER/api. Send your API key in x-api-key where authentication is required. A key also needs the listed permission; your account's access rules still apply.
API guide · All endpoints · OpenAPI JSON
GET /admin/integrity/report— Get integrity report by typeDELETE /admin/integrity/report/{id}— Delete integrity report itemGET /admin/integrity/report/{id}/file— Download flagged fileGET /admin/integrity/report/{type}/csv— Export integrity report by type as CSVGET /admin/integrity/runs— Get integrity check runsGET /admin/integrity/summary— Get integrity report summaryGET /admin/maintenance/detect-install— Detect existing installPOST /admin/maintenance/login— Log into maintenance modeGET /admin/maintenance/status— Get maintenance mode statusPOST /admin/physical-deduplication/applies/{id}/restore— Restore a copy of an applied physical deduplication planPOST /admin/physical-deduplication/applies/{id}/verify— Verify an applied physical deduplication planPOST /admin/physical-deduplication/plan/review— Review a physical deduplication planGET /admin/physical-deduplication/preview— Get physical deduplication previewPOST /admin/physical-deduplication/preview— Request physical deduplication preview
Get integrity report by type
GET /api/admin/integrity/report
Get all flagged items by integrity report type
Administrator access required.
Authentication: API key. Permission: maintenance.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
cursor | query | No | Cursor for pagination |
limit | query | No | Number of items per page |
type | query | Yes |
Parameter types, defaults and constraints
Field definitions: IntegrityReport
[
{
"name": "cursor",
"required": false,
"in": "query",
"description": "Cursor for pagination",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"required": false,
"in": "query",
"description": "Number of items per page",
"schema": {
"maximum": 9007199254740991,
"exclusiveMinimum": true,
"default": 500,
"type": "integer",
"minimum": 0
}
},
{
"name": "type",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/IntegrityReport"
}
}
]Responses
Field definitions: IntegrityReportResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IntegrityReportResponseDto"
}
}
},
"description": ""
}
}Delete integrity report item
DELETE /api/admin/integrity/report/{id}
Delete a given report item and perform corresponding deletion (e.g. trash asset, delete file)
Administrator access required.
Authentication: API key. Permission: maintenance.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Responses
{
"200": {
"description": ""
}
}Download flagged file
GET /api/admin/integrity/report/{id}/file
Download the untracked/broken file if one exists
Administrator access required.
Authentication: API key. Permission: maintenance.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Responses
{
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
}Export integrity report by type as CSV
GET /api/admin/integrity/report/{type}/csv
Get all integrity report entries for a given type as a CSV
Administrator access required.
Authentication: API key. Permission: maintenance.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
type | path | Yes |
Parameter types, defaults and constraints
Field definitions: IntegrityReport
[
{
"name": "type",
"required": true,
"in": "path",
"schema": {
"$ref": "#/components/schemas/IntegrityReport"
}
}
]Responses
{
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
}Get integrity check runs
GET /api/admin/integrity/runs
Get when each integrity check last completed a full run
Administrator access required.
Authentication: API key. Permission: maintenance.
Responses
Field definitions: IntegrityCheckRunsResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IntegrityCheckRunsResponseDto"
}
}
},
"description": ""
}
}Get integrity report summary
GET /api/admin/integrity/summary
Get a count of the items flagged in each integrity report
Administrator access required.
Authentication: API key. Permission: maintenance.
Responses
Field definitions: IntegrityReportSummaryResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IntegrityReportSummaryResponseDto"
}
}
},
"description": ""
}
}Detect existing install
GET /api/admin/maintenance/detect-install
Collect integrity checks and other heuristics about local data.
Administrator access required.
Authentication: API key. Permission: maintenance.
Responses
Field definitions: MaintenanceDetectInstallResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MaintenanceDetectInstallResponseDto"
}
}
},
"description": ""
}
}Log into maintenance mode
POST /api/admin/maintenance/login
Login with maintenance token or cookie to receive current information and perform further actions.
Authentication: No API key required. Permission: Public.
Request body
Required.
Field definitions: MaintenanceLoginDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/MaintenanceLoginDto"
}
}
}Responses
Field definitions: MaintenanceAuthDto
{
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MaintenanceAuthDto"
}
}
},
"description": ""
}
}Get maintenance mode status
GET /api/admin/maintenance/status
Fetch information about the currently running maintenance action.
Authentication: No API key required. Permission: Public.
Responses
Field definitions: MaintenanceStatusResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MaintenanceStatusResponseDto"
}
}
},
"description": ""
}
}Restore a copy of an applied physical deduplication plan
POST /api/admin/physical-deduplication/applies/{id}/restore
Point one copy back at its own former file, only while that file is still on disk with the reviewed checksum and size, and answer with the plan verified again. A copy whose own file was removed cannot be restored.
Administrator access required.
Authentication: API key. Permission: job.create.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Request body
Required.
Field definitions: PhysicalDeduplicationRestoreRequestDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhysicalDeduplicationRestoreRequestDto"
}
}
}Responses
Field definitions: PhysicalDeduplicationVerificationDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhysicalDeduplicationVerificationDto"
}
}
},
"description": ""
}
}Verify an applied physical deduplication plan
POST /api/admin/physical-deduplication/applies/{id}/verify
Hash every retained original the applied plan shares again and check that every copy it changed still resolves to one. Reports, per copy, whether its own former file is gone (which cannot be undone) or still on disk (which can be restored). Nothing is written.
Administrator access required.
Authentication: API key. Permission: job.read.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
id | path | Yes | string |
Parameter types, defaults and constraints
[
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
}
]Responses
Field definitions: PhysicalDeduplicationVerificationDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhysicalDeduplicationVerificationDto"
}
}
},
"description": ""
}
}Review a physical deduplication plan
POST /api/admin/physical-deduplication/plan/review
Check the plan on screen against the library again and bind the per-group decisions to it. Answers 409 when a newer preview replaced the plan, it was applied, or any checksum, ownership, path or reference evidence changed. Nothing is written.
Administrator access required.
Authentication: API key. Permission: job.create.
Request body
Required.
Field definitions: PhysicalDeduplicationReviewRequestDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhysicalDeduplicationReviewRequestDto"
}
}
}Responses
Field definitions: PhysicalDeduplicationReviewResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhysicalDeduplicationReviewResponseDto"
}
}
},
"description": ""
}
}Get physical deduplication preview
GET /api/admin/physical-deduplication/preview
Return the latest physical deduplication plan with per-copy evidence, and the plans being applied or applied recently. Thumbnail visibility is the asset access of the requesting administrator, evaluated on every read.
Administrator access required.
Authentication: API key. Permission: job.read.
Responses
Field definitions: PhysicalDeduplicationPreviewResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhysicalDeduplicationPreviewResponseDto"
}
}
},
"description": ""
}
}Request physical deduplication preview
POST /api/admin/physical-deduplication/preview
Queue a dry run that may retain originals in an account chosen for the preview and may review the copies of one account. Applying needs a reviewed plan and the saved master account.
Administrator access required.
Authentication: API key. Permission: job.create.
Request body
Required.
Field definitions: PhysicalDeduplicationPreviewRequestDto
{
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhysicalDeduplicationPreviewRequestDto"
}
}
}Responses
{
"204": {
"description": ""
}
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.