Autodesk Platform Services: shared HTTP client and authentication utilities for Kiota-based SDKs
Project description
adsk-platform-httpclient
Shared HTTP client, authentication, and middleware utilities for Autodesk Platform Services Python SDKs.
This package provides the foundational components used by all adsk-platform-* SDK packages.
Installation
pip install adsk-platform-httpclient
Note: You typically don't need to install this package directly. It's automatically included as a dependency of the SDK packages (e.g.,
adsk-platform-acc,adsk-platform-data-management).
Components
HttpClientFactory
Creates pre-configured httpx.AsyncClient instances and Kiota request adapters with bearer-token authentication and the custom middleware pipeline.
from autodesk_common_httpclient import HttpClientFactory
async def get_access_token() -> str:
return "YOUR_ACCESS_TOKEN"
# Create a Kiota request adapter with authentication + middleware
adapter = HttpClientFactory.create_adapter(get_access_token)
# Or provide your own httpx client
import httpx
custom_client = httpx.AsyncClient(timeout=60.0)
adapter = HttpClientFactory.create_adapter(get_access_token, http_client=custom_client)
AccessTokenProviderCallback
Wraps an async callback into a Kiota-compatible AccessTokenProvider.
from autodesk_common_httpclient import AccessTokenProviderCallback
provider = AccessTokenProviderCallback(get_access_token)
Custom Middleware
The package includes three custom middleware handlers that are automatically added to the HTTP pipeline, matching the C# Autodesk.Common.HttpClientLibrary.Middleware:
ErrorHandler
Raises an httpx.HTTPStatusError when the HTTP response has a non-success status code (4xx/5xx). Enabled by default.
from autodesk_common_httpclient import ErrorHandlerOption
# Disable for a specific request
error_option = ErrorHandlerOption(enabled=False)
QueryParameterHandler
Appends or overwrites query parameters on every outgoing request. Useful for injecting API versions, region codes, or tracking identifiers.
from autodesk_common_httpclient import QueryParameterHandlerOption
query_option = QueryParameterHandlerOption(query_parameters={"region": "US"})
RateLimitingHandler
Limits the number of concurrent requests per endpoint within a sliding time window. Disabled by default.
from autodesk_common_httpclient import RateLimitingHandlerOption
# Allow max 10 requests per endpoint per 60 seconds
rate_option = RateLimitingHandlerOption()
rate_option.set_rate_limit(max_requests=10, time_window_seconds=60.0)
Creating a client with rate limiting
from autodesk_common_httpclient import HttpClientFactory
# Create an HTTP client with rate limiting enabled
client = HttpClientFactory.create_with_rate_limit(
max_requests=10,
time_window_seconds=60.0,
)
# Use it with any SDK client
adapter = HttpClientFactory.create_adapter(get_access_token, http_client=client)
Middleware Pipeline Order
The middleware is executed in this order (matching the C# implementation):
- Kiota defaults — Redirect, Retry, Parameters Name Decoding, URL Replace, User Agent, Headers Inspection
- RateLimitingHandler — Per-endpoint rate limiting
- QueryParameterHandler — Query parameter injection
- ErrorHandler — Error response detection
Requirements
- Python 3.10 or later
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file adsk_platform_httpclient-0.2.10.tar.gz.
File metadata
- Download URL: adsk_platform_httpclient-0.2.10.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74492127495645f0b5a097a5962ab966b2dc135e274623f334775ca36a2c0a12
|
|
| MD5 |
268b43b17f55fc96d233cc4f19f6d2a5
|
|
| BLAKE2b-256 |
64b9c8a3d16218cf0596d8e4536c5bfe813a4b3bb879618abe525e32e039c44a
|
Provenance
The following attestation bundles were made for adsk_platform_httpclient-0.2.10.tar.gz:
Publisher:
publishPyPi.yml on adsk-duszykf/Adsk.Platform.Toolkit.Python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adsk_platform_httpclient-0.2.10.tar.gz -
Subject digest:
74492127495645f0b5a097a5962ab966b2dc135e274623f334775ca36a2c0a12 - Sigstore transparency entry: 979983453
- Sigstore integration time:
-
Permalink:
adsk-duszykf/Adsk.Platform.Toolkit.Python@22fa158425f9f5214f5d3194a0b2916a650ef050 -
Branch / Tag:
refs/tags/v0.2.10 - Owner: https://github.com/adsk-duszykf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publishPyPi.yml@22fa158425f9f5214f5d3194a0b2916a650ef050 -
Trigger Event:
push
-
Statement type:
File details
Details for the file adsk_platform_httpclient-0.2.10-py3-none-any.whl.
File metadata
- Download URL: adsk_platform_httpclient-0.2.10-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3add18d1f2f937b2aa365ca33c21135d3bb3650f0983647debe7a7ffeae69e8
|
|
| MD5 |
ec017ec5e4c4ed17916ed3320b92be51
|
|
| BLAKE2b-256 |
c08b1af8090e084969b12df97c642f377105ed6f7795c831d86367d41a68cbc6
|
Provenance
The following attestation bundles were made for adsk_platform_httpclient-0.2.10-py3-none-any.whl:
Publisher:
publishPyPi.yml on adsk-duszykf/Adsk.Platform.Toolkit.Python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adsk_platform_httpclient-0.2.10-py3-none-any.whl -
Subject digest:
b3add18d1f2f937b2aa365ca33c21135d3bb3650f0983647debe7a7ffeae69e8 - Sigstore transparency entry: 979983494
- Sigstore integration time:
-
Permalink:
adsk-duszykf/Adsk.Platform.Toolkit.Python@22fa158425f9f5214f5d3194a0b2916a650ef050 -
Branch / Tag:
refs/tags/v0.2.10 - Owner: https://github.com/adsk-duszykf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publishPyPi.yml@22fa158425f9f5214f5d3194a0b2916a650ef050 -
Trigger Event:
push
-
Statement type: