Python SDK for Autodesk Platform Service APIs
pip install py-apspy-aps is a Python SDK that provides a simple and intuitive interface for interacting with Autodesk Platform Services (formerly known as Forge) APIs. This SDK simplifies authentication, data management, and automation workflows for APS-powered applications.
- Authentication: Easy OAuth2 authentication flow
- Data Management: Access and manage files in BIM 360, ACC, and other Autodesk cloud storage
- Automation: High-level workflow API for executing WorkItems with automatic file management and webhook support
- Proxy Support: HTTP/HTTPS proxy configuration for enterprise environments (v0.0.6+)
from pyaps.auth import AuthClient, Scopes
# 2-legged OAuth
client = AuthClient(client_id="...", client_secret="...")
token = client.two_legged.get_token([Scopes.DATA_READ])from pyaps.datamanagement import DataManagementClient
dm = DataManagementClient(token_provider=lambda: token.access_token)
# List hubs and projects
hubs = list(dm.hubs.list())
projects = list(dm.hubs.list_projects(hub_id))
# Browse folders
contents = list(dm.folders.contents(project_id, folder_id))from pyaps.automation import AutomationWorkflow
workflow = AutomationWorkflow(
automation_client=auto_client,
data_client=dm_client,
default_bucket="my-bucket",
)
# Execute WorkItem with automatic file management
result = workflow.run_workitem_with_files(
activity_id="Owner.MyActivity+prod",
input_files={"inputFile": "path/to/input.rvt"},
output_files={"outputFile": "output.rvt"},
)
# With webhooks (no polling required)
result = workflow.run_workitem_with_files(
activity_id="Owner.MyActivity+prod",
input_files={"inputFile": "input.rvt"},
output_files={"outputFile": "output.rvt"},
on_complete_url="https://myapp.com/webhook/complete",
)from pyaps.automation import AutomationClient
auto = AutomationClient(token_provider=lambda: token.access_token)
# List engines
engines = auto.list_engines()
# Start workitem (manual setup required)
workitem = auto.start_workitem({
'activityId': 'Owner.MyActivity+prod',
'arguments': {...}
})# Explicit proxy configuration
client = AuthClient(
client_id="...",
client_secret="...",
proxies={
'http': 'http://proxy.company.com:8080',
'https': 'https://proxy.company.com:8080'
}
)
# Or use environment variables (HTTP_PROXY, HTTPS_PROXY)
client = AuthClient(
client_id="...",
client_secret="...",
trust_env=True # Default - reads from environment
)For more examples and detailed documentation:
- AutomationWorkflow Guide:
src/pyaps/automation/WORKFLOW.md - Workflow Examples:
src/pyaps/automation/workflow_example.py - Low-Level Examples:
src/pyaps/automation/example.py - Auth Examples:
src/pyaps/auth/example.py - Data Management Examples:
src/pyaps/datamanagement/example.py - Proxy Examples:
src/pyaps/http/proxy_example.py
Current version: v0.0.7 - Proxy support for enterprise environments
This package is currently in early development. Active development is underway by voidbox.
Version History
- v0.0.7 - Fixed proxy support in AutomationWorkflow.download_output_file() to properly use session
- v0.0.6 - Added HTTP/HTTPS proxy support for enterprise environments (configurable via explicit settings or environment variables)
- v0.0.5 - Added AutomationWorkflow high-level API with automatic file management, webhook support (onComplete/onProgress), batch processing, and comprehensive documentation
- v0.0.4 - Added Automation API client (Engines, AppBundles, Activities, WorkItems)
- v0.0.3 - Added Data Management API client (Hubs, Projects, Folders, Items, Versions, Buckets, Objects)
- v0.0.2 - Added OAuth 2.0 authentication client with 2-legged/3-legged flows, PKCE support, and token management
- v0.0.1 - Initial package release (placeholder)
We welcome bug reports and feature requests through GitHub Issues.
This project is primarily developed by voidbox. External pull requests have limited review capacity.
Apache-2.0 License - see the LICENSE file for details.