easecation-iam-client
Python port of @easecation/iam-client. IAM V2 API wrapper for EaseCation services.
Install
pip install easecation-iam-client
Or from repo:
pip install -e packages/iam-client-py
Usage
from easecation_iam_client import IamClient, create_iam_client_from_env
# From env (IAM_BASE_URL, IAM_CLIENT_ID, IAM_CLIENT_SECRET)
client = create_iam_client_from_env()
# Or explicit config
client = IamClient(
iam_base_url="https://iamapi.easecation.net",
client_id="YOUR_CLIENT_ID",
client_secret="YOUR_CLIENT_SECRET",
)
# API-key-only Open V2 Data calls do not require client_id/client_secret.
api_key_only_client = IamClient(
iam_base_url="https://iamapi.easecation.net",
api_key="ec_xxx",
)
feishu_users = api_key_only_client.request_open_v2_data(
"/feishu/batch",
body={"uids": [123]},
)
# Or override the API key for one request.
permission_users = client.request_open_v2_data(
"/permission/user",
api_key="ec_xxx",
body={"permission_code": "5#sen.admin"},
)
# OAuth code exchange
tokens = client.exchange_oauth_code(code, redirect_uri)
# Verify access token
verify = client.verify_token(access_token)
# API key verification
api_key_data = client.verify_api_key(key_value)
# App session verification
valid = client.verify_app_session_token(app_session_token)
# Cross-app callback with IAM-managed API key refresh/retry.
player = client.with_app_api_key(
lambda api_key: ecapi.player.get_info(
{"displayName": "Steve"},
auth={"type": "apiKey", "apiKey": api_key},
),
name="service -> ECAPI",
)
# Business delegation: app A calls app B as an authorized user without seeing
# the user's own API key. Requirements:
# 1. User OAuth-authorized app A with scope "<target_app_id>.permission".
# 2. App B granted app A scope "iam.business.delegate" in App Grants.
me_response = client.request_with_delegated_user_api_key(
"https://ecapi.example.test/users/me",
api_key="ec_app_key_for_app_a", # optional; omit to use config api_key/get_app_api_key()
user_id=123,
target_application_id=5,
)
me = me_response.json()
API
get_app_session_token(),invalidate_app_token()exchange_oauth_code(code, redirect_uri)verify_token(access_token),evict_from_verify_cache(access_token)refresh_token(refresh_token),revoke_token(refresh_token)get_jwks(),get_user_profile(access_token),get_user_bootstrap(...),get_hr_bootstrap_data(...)verify_iam_callback_token(iam_token, ...),get_user_permissions(user_id, ...)verify_api_key(key_value),evict_api_key_from_cache(key_value),clear_api_key_cache()verify_app_session_token(app_session_token),clear_app_session_verify_cache()get_app_api_key(...),with_app_api_key(callback, ...)get_delegated_user_api_key(...),get_delegated_user_api_key_data(...)request_with_delegated_user_api_key(url, api_key=..., user_id=..., target_application_id=..., ...)request_open_v2_data(path, api_key=..., body=..., params=..., method=...)
ApiKeyRotationHelper for zero-downtime key rotation: create_new_key(...), revoke_key(key_id, ...), list_active_keys(owner_id?).
Release files for easecation-iam-client 1.4.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| easecation_iam_client-1.4.5.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| easecation_iam_client-1.4.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.5 kB
Release files / easecation_iam_client-1.4.5.tar.gz
| Download URL | easecation_iam_client-1.4.5.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66a2b29df3860d06c6d8b0c516e81d182cf3d266953591ffd883a064490c11e7
|
|
BLAKE2b-256 checksum How to use checksums |
e6b4792a76c91bc6808dabdef343e83c4a5ec3b66ff614e789dddc71c2d690c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / easecation_iam_client-1.4.5-py3-none-any.whl
| Download URL | easecation_iam_client-1.4.5-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bdc9e58aaf6bbcffd96e7d8e9e528ab6e351c1c1fd59809a17f25d38deb830ee
|
|
BLAKE2b-256 checksum How to use checksums |
b3806e8c0754d1ce213b2ead740f516e7f82c9a1cd68a5231bb20d14247b94f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|