Skip to content

[FEATURE] Maintenance Tools APIs #35191

@hassandotcms

Description

@hassandotcms

Problem

System maintenance operations (search-replace, fix assets, drop old versions, clean orphan assets, delete contentlets, delete pushed assets) are currently only accessible via DWR calls to CMSMaintenanceAjax and Struts form actions in ViewCMSMaintenanceAction. Need REST endpoints to answer "How do I clean up and fix the system?"

Goal

Provide REST endpoints for all maintenance tools operations. Long-running operations (fix assets, clean orphan assets) use a start/poll pattern — POST to start, GET to check progress.

APIs

  • POST /v1/maintenance/_searchAndReplace — DB-wide find/replace across content tables
  • POST /v1/maintenance/_fixAssets — Start fix assets inconsistencies task
  • GET /v1/maintenance/_fixAssets — Poll fix assets progress
  • DELETE /v1/maintenance/_oldVersions — Drop old versions of versionable objects by date
  • POST /v1/maintenance/_cleanAssets — Start orphan binary asset cleanup
  • GET /v1/maintenance/_cleanAssets — Poll orphan cleanup progress
  • DELETE /v1/maintenance/_contentlets — Bulk delete contentlets by identifier list
  • DELETE /v1/maintenance/_pushedAssets — Delete all push publishing history

Personas

  • Developer Teams — Need REST APIs for Angular Tools tab
  • System Administrators — Need to perform system maintenance, cleanup old data, fix inconsistencies

Legacy Reference

  • DWR Class: CMSMaintenanceAjax.java — fixAssetsInconsistencies, removeOldVersions, cleanAssets, deleteContentletsFromIdList, deletePushedAssets
  • Struts Action: ViewCMSMaintenanceAction.java — searchAndReplace (cmd=searchandreplace)
  • Backend Services: MaintenanceUtil.DBSearchAndReplace(), CMSMaintenanceFactory.deleteOldAssetVersions(), CleanAssetsThread, FixTasksExecutor
  • JSP: view_cms_maintenance.jsp lines 1541–1851 (Tools tab)
  • Target Class: MaintenanceResource.java (/api/v1/maintenance)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions