Skip to content

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 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

NameWhereRequiredDescription
cursorqueryNoCursor for pagination
limitqueryNoNumber of items per page
typequeryYes
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

NameWhereRequiredDescription
idpathYesstring
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

NameWhereRequiredDescription
idpathYesstring
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

NameWhereRequiredDescription
typepathYes
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

NameWhereRequiredDescription
idpathYesstring
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

NameWhereRequiredDescription
idpathYesstring
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": ""
  }
}