Skip to main content

Autodesk Platform Service APIs Python SDK

Project description

py-aps

Python SDK for Autodesk Platform Service APIs

Installation

pip install py-aps

Overview

py-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.

Features

  • 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+)

Quick Start

Authentication

from pyaps.auth import AuthClient, Scopes

# 2-legged OAuth
client = AuthClient(client_id="...", client_secret="...")
token = client.two_legged.get_token([Scopes.DATA_READ])

Data Management

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))

Automation (High-Level Workflow)

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",
)

Automation (Low-Level API)

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': {...}
})

Proxy Configuration (v0.0.6+)

# 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

Project Status

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)

Contributing

We welcome bug reports and feature requests through GitHub Issues.

This project is primarily developed by voidbox. External pull requests have limited review capacity.

License

Apache-2.0 License - see the LICENSE file for details.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_aps-0.0.7.tar.gz (39.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_aps-0.0.7-py3-none-any.whl (46.8 kB view details)

Uploaded Python 3

File details

Details for the file py_aps-0.0.7.tar.gz.

File metadata

  • Download URL: py_aps-0.0.7.tar.gz
  • Upload date:
  • Size: 39.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.2

File hashes

Hashes for py_aps-0.0.7.tar.gz
Algorithm Hash digest
SHA256 23f43c08dd7211804a9df5d983c544e699cc308455ec2cc60c647184b694a2bc
MD5 4e9449a0ccdd64767127781abe56cb1a
BLAKE2b-256 f94860ce426850df9e01595b409e7619875f9ac33cef6dfbfe4cf8769d75b690

See more details on using hashes here.

File details

Details for the file py_aps-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: py_aps-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 46.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.2

File hashes

Hashes for py_aps-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e97cc738dff7a24706d5379e6c5ad20be25d33ad535a3a530562607fbbb204e6
MD5 1411de3f2420998f554365c382f8d591
BLAKE2b-256 62d7e13a13949f5daddf8565d49a6cdb09faa03f1bc019ada75f451a4c3f5cb3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page