π¦ ClawHub
OpenKM Document Management
by @pes0
OpenKM Document Management via REST API (folders, documents, metadata, versioning, search, workflows)
TERMINAL
clawhub install openkm-restπ About This Skill
name: openkm-rest description: OpenKM Document Management via REST API (folders, documents, metadata, versioning, search, workflows) metadata: openclaw: emoji: "π" requires: bins: ["python"] env: - OPENKM_BASE_URL - OPENKM_USERNAME - OPENKM_PASSWORD primaryEnv: OPENKM_BASE_URL user-invocable: true disable-model-invocation: false
OpenKM REST Skill
This skill provides a local CLI that accesses OpenKM exclusively via REST (no SOAP, no CMIS).
The agent uses shell calls to openkm_cli.py.
Environment Variables (Required)
OPENKM_BASE_URL=https://openkm.example.com # WITHOUT /OpenKM
OPENKM_USERNAME=okm_admin
OPENKM_PASSWORD=secret
Folder Operations
List folder contents
python3 openkm_cli.py list --folder-path /okm:root
Create folder structure
Creates parent folders if they don't exist:python3 openkm_cli.py ensure-structure --parts Folder1 Subfolder
Document Operations
Upload document
python3 openkm_cli.py upload --okm-path /okm:root/Folder/file.pdf --local-path /path/file.pdf
Download document
python3 openkm_cli.py download --doc-id --local-path /path/file.pdf
Move document
Move a document to another folder (using folder UUID as target):python3 openkm_cli.py move --doc-id --target-path
Rename document
python3 openkm_cli.py rename --doc-id --new-name new_filename.pdf
Delete document
python3 openkm_cli.py delete --doc-id
Metadata & Organization
Get document properties
Shows title, description, keywords, categories, and other metadata:python3 openkm_cli.py properties --doc-id
Set title and description
python3 openkm_cli.py set-properties --doc-id --title "My Title" --description "My description"
Add keyword
python3 openkm_cli.py add-keyword --doc-id --keyword "Invoice"
Remove keyword
python3 openkm_cli.py remove-keyword --doc-id --keyword "Invoice"
Add category
Category ID can be a UUID or path (e.g.,/okm:categories/Finance):
python3 openkm_cli.py add-category --doc-id --category-id
Remove category
python3 openkm_cli.py remove-category --doc-id --category-id
Versioning
Get version history
python3 openkm_cli.py versions --doc-id
Download specific version
python3 openkm_cli.py download-version --doc-id --version 1.0 --local-path /path/file_v1.pdf
Restore version
Restores document to a previous version:python3 openkm_cli.py restore-version --doc-id --version 1.0
Search
Search by content (full-text)
python3 openkm_cli.py search-content --content "invoice hosting"
Search by filename
python3 openkm_cli.py search-name --name "hetzner"
Search by keywords
python3 openkm_cli.py search-keywords --keywords "Invoice,Hosting"
General search with filters
python3 openkm_cli.py search --content "server" --author "john.doe" --path "/okm:root"
Workflows
> Note: Workflow features require workflows to be configured in OpenKM. > If workflows are not enabled, these commands will return 404.
List available workflows
python3 openkm_cli.py workflows
python3 openkm_cli.py workflows --name "approval"
Start a workflow
python3 openkm_cli.py start-workflow --workflow-uuid --doc-id
List tasks
# Tasks for a document
python3 openkm_cli.py tasks --doc-id Tasks for an actor
python3 openkm_cli.py tasks --actor-id john.doe
Complete a task
python3 openkm_cli.py complete-task --task-id --transition "approve"
Add comment to task
python3 openkm_cli.py comment-task --task-id --message "Review complete"
Assign task to actor
python3 openkm_cli.py assign-task --task-id --actor-id john.doe
Notes
Content-Type: application/xml for POST requests with path as bodyfldId, docId, dstId, nodeId, catId parameters accept either UUIDs or paths (e.g., /okm:root/Folder)target-path should be the UUID of the destination folder1.0, 1.1, 2.0, etc.API Reference
The skill uses the OpenKM 6.3 REST API endpoints:
Folders:
GET /folder/getChildren - List folder contentsPOST /folder/createSimple - Create folderDocuments:
POST /document/createSimple - Upload documentGET /document/getContent - Download documentGET /document/getProperties - Get document metadataPUT /document/setProperties - Update title/descriptionPUT /document/move - Move documentPUT /document/rename - Rename documentDELETE /document/delete - Delete documentVersioning:
GET /document/getVersionHistory - Get version historyPUT /document/restoreVersion - Restore to versionGET /document/getContentByVersion - Download specific versionProperties/Metadata:
POST /property/addKeyword - Add keywordDELETE /property/removeKeyword - Remove keywordPOST /property/addCategory - Add categoryDELETE /property/removeCategory - Remove categorySearch:
GET /search/find - General search with filtersGET /search/findByContent - Full-text searchGET /search/findByName - Filename searchGET /search/findByKeywords - Keyword searchWorkflows:
GET /workflow/getAllProcessDefinitions - List workflowsGET /workflow/getAllProcessDefinitionsByName - Find workflow by namePOST /workflow/runProcessDefinition - Start workflowGET /workflow/findTaskInstances - Get tasks by documentGET /workflow/findTaskInstancesByActor - Get tasks by actorPOST /workflow/setTaskInstanceValues - Complete taskPOST /workflow/addTaskInstanceComment - Add commentPOST /workflow/setTaskInstanceActor - Assign taskπ Tips & Best Practices
Content-Type: application/xml for POST requests with path as bodyfldId, docId, dstId, nodeId, catId parameters accept either UUIDs or paths (e.g., /okm:root/Folder)target-path should be the UUID of the destination folder1.0, 1.1, 2.0, etc.