Source Code
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 <uuid> --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 <doc-uuid> --target-path <folder-uuid>
Rename document
python3 openkm_cli.py rename --doc-id <uuid> --new-name new_filename.pdf
Delete document
python3 openkm_cli.py delete --doc-id <uuid>
Metadata & Organization
Get document properties
Shows title, description, keywords, categories, and other metadata:
python3 openkm_cli.py properties --doc-id <uuid>
Set title and description
python3 openkm_cli.py set-properties --doc-id <uuid> --title "My Title" --description "My description"
Add keyword
python3 openkm_cli.py add-keyword --doc-id <uuid> --keyword "Invoice"
Remove keyword
python3 openkm_cli.py remove-keyword --doc-id <uuid> --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 <uuid> --category-id <category-uuid-or-path>
Remove category
python3 openkm_cli.py remove-category --doc-id <uuid> --category-id <category-uuid-or-path>
Versioning
Get version history
python3 openkm_cli.py versions --doc-id <uuid>
Download specific version
python3 openkm_cli.py download-version --doc-id <uuid> --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 <uuid> --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 <workflow-uuid> --doc-id <doc-uuid>
List tasks
# Tasks for a document
python3 openkm_cli.py tasks --doc-id <uuid>
# Tasks for an actor
python3 openkm_cli.py tasks --actor-id john.doe
Complete a task
python3 openkm_cli.py complete-task --task-id <task-id> --transition "approve"
Add comment to task
python3 openkm_cli.py comment-task --task-id <task-id> --message "Review complete"
Assign task to actor
python3 openkm_cli.py assign-task --task-id <task-id> --actor-id john.doe
Notes
- The API expects
Content-Type: application/xmlfor POST requests with path as body - Paths must be URL-encoded when passed as query parameters
- The
fldId,docId,dstId,nodeId,catIdparameters accept either UUIDs or paths (e.g.,/okm:root/Folder) - For move operations, the
target-pathshould be the UUID of the destination folder - For rename operations, provide only the new filename (not full path)
- Keywords are free-form text tags; categories are predefined in OpenKM
- Version names are typically numbers like
1.0,1.1,2.0, etc. - Search results include a relevance score
- Workflow features require proper workflow configuration in OpenKM
API Reference
The skill uses the OpenKM 6.3 REST API endpoints:
Folders:
GET /folder/getChildren- List folder contentsPOST /folder/createSimple- Create folder
Documents:
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 document
Versioning:
GET /document/getVersionHistory- Get version historyPUT /document/restoreVersion- Restore to versionGET /document/getContentByVersion- Download specific version
Properties/Metadata:
POST /property/addKeyword- Add keywordDELETE /property/removeKeyword- Remove keywordPOST /property/addCategory- Add categoryDELETE /property/removeCategory- Remove category
Search:
GET /search/find- General search with filtersGET /search/findByContent- Full-text searchGET /search/findByName- Filename searchGET /search/findByKeywords- Keyword search
Workflows:
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