Skip to content

Releases: stevereiner/python-alfresco-api

Release v1.1.5 - 15 Subclients completed, Path-Based Node Retrieval, Timeout Fixes (1.1.2-1.1.5)

15 Dec 04:54

Choose a tag to compare

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_path parameter (leverages REST API's relativePath)
  • 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_TIMEOUT environment variable

What's New in v1.1.5

Added

  • Path-Based Node Retrieval: Use relative_path parameter 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_path to REST API's relativePath query parameter
  • **kwargs Support: Future-proof for new API parameters

    • All get_node methods support additional parameters via **kwargs

Fixed

  • Custom Content Type Validation: Resolved ValidationError with custom Alfresco content models

    • Now works with any custom type like fin:stock, acme:invoice, legal:contract, etc.
    • NodeType changed from strict Enum to flexible namespace class
    • Standard types still available as constants (NodeType.CONTENT, NodeType.FOLDER)
  • Create Folder Methods: Fixed missing versioning_enabled and major_version parameters

    • create_folder() and create_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.5

Upgrade from 1.1.1

pip install --upgrade python-alfresco-api

All 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']}")  # NYSE

Full 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

🎉 python-alfresco-api v1.1.1 - Release

21 Jul 17:45

Choose a tag to compare

🎉 python-alfresco-api v1.1.0 - Release

21 Jul 10:40

Choose a tag to compare

🎉 python-alfresco-api v1.0.0 - Initial Release

25 Jun 04:36

Choose a tag to compare