Skip to main content

ab-ecosystem-python

Python SDK for the Partner Ecosystem: JWKS-based auth verification and server-to-server actions.

Install

pip install ab-ecosystem-python

Quick start

Initialise once at start-up, then call the user methods anywhere — either via the module-level helpers (they use the process-wide singleton) or on the client returned by init.

from ab_ecosystem import init, get_user_profile, get_user_subscription

init(
    api_url="https://api.example.com",
    project_id="proj_123",
    project_secret="super-secret",
)

# module-level (singleton)
profile = get_user_profile(access_token=user_jwt)

# or on the instance
client = init(api_url="...", project_id="...", project_secret="...")
subscription = client.get_user_subscription(access_token=user_jwt)

Methods

Method Endpoint
get_user_profile() GET /api/v1/projects/:project_id/me
get_user_wallet() GET /api/v1/projects/:project_id/me
get_user_credit_wallet() GET /api/v1/projects/:project_id/credit-wallets
get_user_subscription() GET /api/v1/projects/:project_id/subscription
send_deduction_request() POST /api/v1/projects/:project_id/credit-wallets/:wallet_id/deduct
ping() GET /ping

:project_id is filled from your config. Every call sends the project credentials via HTTP Basic auth plus the x-project-id header.

Per-user authentication

Each user method accepts access_token and user_id:

  • access_token (the end-user's JWT) → forwarded as Authorization: Bearer <token>.
  • user_id (when no access_token) → keeps the project HTTP Basic auth and adds a user-id header so the API can resolve the user.
  • neither → project HTTP Basic auth only.
sdk.get_user_profile(access_token=user_jwt)
sdk.get_user_profile(user_id="user_123")

Deductions

from ab_ecosystem import send_deduction_request, DeductionRequest

# amount is required; meta / reference / note default to {} / "" / ""
send_deduction_request(
    "wallet_1",
    DeductionRequest(amount=10, meta={"order_id": "o_1"}, reference="ref_1", note="usage"),
    user_id="user_123",
)

# a plain dict works too
send_deduction_request("wallet_1", {"amount": 5}, access_token=user_jwt)

Verifying incoming tokens

The Node SDK ships an Express middleware; in Python the framework-agnostic core is exposed instead, so you can wire it into Flask, FastAPI, Django, etc.

from ab_ecosystem import verify_token, extract_bearer_token

token = extract_bearer_token(request.headers.get("authorization"))
claims = verify_token(token)          # raises jwt.PyJWTError on failure

License

MIT

Download files

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

Source Distribution

ab_ecosystem_python-0.1.4.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

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

ab_ecosystem_python-0.1.4-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file ab_ecosystem_python-0.1.4.tar.gz.

File metadata

  • Download URL: ab_ecosystem_python-0.1.4.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for ab_ecosystem_python-0.1.4.tar.gz
Algorithm Hash digest
SHA256 4b10a29667432d145c1ebf8b009835ae4a41360e6a73ead02947d03005f03fbf
MD5 ae6598ebcd2315de59c1ff9f2ed5e8c6
BLAKE2b-256 dce52fe88a11c1b69451098778a0402bdfe6459aee58a80c3c97361762b20701

See more details on using hashes here.

File details

Details for the file ab_ecosystem_python-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for ab_ecosystem_python-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dfc552a0986e2269174e136866e8ef904a2479b83ec59f6883017f00efc71604
MD5 c58f169204e5b29011a207f8ee0cb8ef
BLAKE2b-256 f141a439793407061f83522f6e8d284abbcee8a03ba197a5cf67906f6d5b9ab0

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