Releases: stevereiner/python-alfresco-api
Release v1.1.5 - 15 Subclients completed, Path-Based Node Retrieval, Timeout Fixes (1.1.2-1.1.5)
Release v1.1.5
This release includes improvements from versions 1.1.2 through 1.1.5, covering completion of 15 subclients, path-based node retrieval, timeout handling, and custom content type fixes.
Highlights (v1.1.2 - v1.1.5)
v1.1.5 (December 14, 2025)
- ✅ Path-Based Node Retrieval - Get nodes by path using
relative_pathparameter (leverages REST API'srelativePath) - ✅ Custom Content Type Fix - Resolved validation errors with custom Alfresco content models
- ✅ Bug Fixes - Fixed
create_folder()missing parameters
v1.1.4 (October 1, 2025) - Major Feature Release
- ✅ 15 Subclients Completed - Implemented full functionality for authentication, people, sql, favorites, sites, groups, preferences, tags, shared_links, trashcan, audit, networks, aspects, types, and deployments subclients
- ✅ 136 New Methods - Added 136 API methods across the 15 newly implemented subclients
- ✅ All 31 Subclients Now 100% Functional - Complete API coverage across all Alfresco REST APIs
v1.1.3 (September 30, 2025)
- ✅ Timeout Handling Fix - Fixed timeout configuration in 16 subclients
- ✅ Improved Architecture - Subclients now share raw client from parent for better efficiency
v1.1.2 (September 29, 2025)
- ✅ Timeout Configuration System - Complete overhaul removing hardcoded 30-second defaults
- ✅ Environment Support - Added
ALFRESCO_TIMEOUTenvironment variable
What's New in v1.1.5
Added
-
Path-Based Node Retrieval: Use
relative_pathparameter to get nodes by path# Get node by path (uses REST API's relativePath parameter) node = client.nodes.get("-root-", relative_path="Sites/mysite/documentLibrary/file.pdf")
- Available in:
get_node(),get_node_async(),get_node_detailed(),get_node_detailed_async() - Automatically converts Python's
relative_pathto REST API'srelativePathquery parameter
- Available in:
-
**kwargsSupport: Future-proof for new API parameters- All
get_nodemethods support additional parameters via**kwargs
- All
Fixed
-
Custom Content Type Validation: Resolved
ValidationErrorwith custom Alfresco content models- Now works with any custom type like
fin:stock,acme:invoice,legal:contract, etc. NodeTypechanged from strict Enum to flexible namespace class- Standard types still available as constants (
NodeType.CONTENT,NodeType.FOLDER)
- Now works with any custom type like
-
Create Folder Methods: Fixed missing
versioning_enabledandmajor_versionparameterscreate_folder()andcreate_folder_async()now properly handle all required parameters
Major Feature: 15 Subclients Completed (v1.1.4)
Prior to v1.1.4, 15 subclients had placeholder implementations. Now they're fully functional:
Completed Subclients:
- Authentication (login, logout, ticket management)
- People (user management, preferences, avatars)
- Sites (site creation, membership, roles)
- Groups (group management, membership)
- Favorites (favorites management)
- Preferences (user preferences)
- Tags (tagging functionality)
- Shared Links (link sharing)
- Trashcan (deleted items management)
- Audit (audit logs)
- Networks (network information)
- SQL (SQL-like search queries)
- Aspects (aspect management)
- Types (type definitions)
- Deployments (deployment information)
Total: 136 new methods providing complete Alfresco REST API coverage!
Installation
pip install python-alfresco-api==1.1.5Upgrade from 1.1.1
pip install --upgrade python-alfresco-apiAll changes are backward compatible!
Example: Path-Based Node Retrieval
from python_alfresco_api import ClientFactory
client = ClientFactory(...).create_core_client()
# Get node by path (uses REST API's relativePath parameter)
graphrag_file = client.nodes.get(
"-root-",
relative_path="Shared/GraphRAG/document.txt"
)
# Works with sites
contract = client.nodes.get(
"-root-",
relative_path="Sites/mysite/documentLibrary/contracts/contract.pdf"
)
# Navigate from any starting point
sites_root = client.nodes.get("-root-", relative_path="Sites")
site_doc = client.nodes.get(
sites_root.entry.id,
relative_path="mysite/documentLibrary/file.pdf"
)Example: Custom Content Types (Fixed)
# Now works with custom content models!
stock_doc = client.nodes.get("-root-", relative_path="Shared/ibm-stock.txt")
print(f"Type: {stock_doc.entry.node_type}") # fin:stock (no ValidationError!)
print(f"Ticker: {stock_doc.entry.properties['fin:ticker']}") # IBM
print(f"Exchange: {stock_doc.entry.properties['fin:exchange']}") # NYSEFull Changelog
See CHANGELOG.md for complete details on all changes from v1.1.2 through v1.1.5.
Documentation
What's Included
31 Complete Subclients across 7 main APIs:
- Core API (18 subclients)
- Authentication API
- Discovery API
- Search API
- Workflow API (2 subclients)
- Model API (3 subclients)
- Search SQL API
Key Features:
- ✅ Custom content model support
- ✅ Path-based navigation
- ✅ Proper timeout handling throughout
- ✅ Full async/sync support
- ✅ Pydantic v2 models
- ✅ MCP server compatible
- ✅ 100% backward compatible
Contributors
Thanks to everyone who reported issues and provided feedback!
License
Apache License 2.0