Thin, dependency-free server-side client for the VellumCharter entitlements + billing API
Project description
vellumcharter
Thin, dependency-free (stdlib-only) server-side client for the VellumCharter entitlements + billing API. Server-side only — it holds a secret API key.
Install
pip install vellumcharter
Requires Python 3.11+.
Usage
from vellumcharter import VellumCharterClient
vellum = VellumCharterClient(
api_key="vlm_sam.xxxxx", # keep server-side, never ship to a browser
tenant_id="sam",
# base_url defaults to https://api.vellumcharter.com
)
# Gate a feature (cached with a short TTL):
if vellum.can("unit_1", "imports"):
...
ent = vellum.get_entitlements("unit_1")
ent.is_active() # True for active/trialing
ent.has("imports")
ent.config("trial_days")
ent.found # False if the customer has no record (no exception)
A 404 returns an empty EntitlementSet (no exception), so gating never needs a
null check.
Async
AsyncVellumCharterClient is the awaitable counterpart — same constructor and
methods, each await-ed. Use it from async frameworks (e.g. FastAPI):
from vellumcharter import AsyncVellumCharterClient
vellum = AsyncVellumCharterClient(api_key="vlm_sam.xxxxx", tenant_id="sam")
if await vellum.can("unit_1", "imports"):
...
ent = await vellum.get_entitlements("unit_1")
vellum.invalidate("unit_1") # cache op is synchronous (no await)
What it covers
- Entitlements:
get_entitlements,can, opt-in TTL cache +invalidate. - Checkout / subscriptions:
create_checkout,create_setup_checkout,create_subscription,cancel_subscription,get_subscription. - Provisioning:
create_account,create_customer,set_account_status,set_customer_status. - Billing:
list_payment_methods,set_default_payment_method,remove_payment_method,set_subscription_payment_method,list_invoices,invoice_pdf_url. - Webhook verification:
verify_push_signature(raw_body, header, secret)— validates a push and returns the parsed event (raises on a bad signature).
Errors
VellumCharterAuthError on 401/403; VellumCharterApiError (with .status /
.body) on other non-2xx; VellumCharterSignatureError on a bad push signature.
The API key is sent as x-api-key on every request.
API reference
Full endpoint + webhook contract: https://api.vellumcharter.com/openapi.json
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
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 vellumcharter-0.2.0.tar.gz.
File metadata
- Download URL: vellumcharter-0.2.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0f7d33a2caf44faa8e2a275ebeb28316b3c01b2f085c6efa783f3b70b2fbc12
|
|
| MD5 |
1e517140dbc027144fa614a926ec0237
|
|
| BLAKE2b-256 |
a7901ed7899be895c1be8b0309fbf99b0674974c6fc97aa34703c505662130ac
|
Provenance
The following attestation bundles were made for vellumcharter-0.2.0.tar.gz:
Publisher:
publish.yml on tdesposito/VellumCharter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vellumcharter-0.2.0.tar.gz -
Subject digest:
d0f7d33a2caf44faa8e2a275ebeb28316b3c01b2f085c6efa783f3b70b2fbc12 - Sigstore transparency entry: 1832538806
- Sigstore integration time:
-
Permalink:
tdesposito/VellumCharter@994174a38df9e55d16f43f161eb6a9f8e1473878 -
Branch / Tag:
refs/tags/sdks-python-v0.2.0 - Owner: https://github.com/tdesposito
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@994174a38df9e55d16f43f161eb6a9f8e1473878 -
Trigger Event:
push
-
Statement type:
File details
Details for the file vellumcharter-0.2.0-py3-none-any.whl.
File metadata
- Download URL: vellumcharter-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4833dc7c78119e5c9bf6f044c85b7f6a61bb0d962bd90cf359a26d93acba5af5
|
|
| MD5 |
7af1f1a6d0ab8c8cdda9732219a56821
|
|
| BLAKE2b-256 |
0197c4e3bfba3041be301942e1536a05685094326896c1d590c3bef519556f2b
|
Provenance
The following attestation bundles were made for vellumcharter-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on tdesposito/VellumCharter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vellumcharter-0.2.0-py3-none-any.whl -
Subject digest:
4833dc7c78119e5c9bf6f044c85b7f6a61bb0d962bd90cf359a26d93acba5af5 - Sigstore transparency entry: 1832538945
- Sigstore integration time:
-
Permalink:
tdesposito/VellumCharter@994174a38df9e55d16f43f161eb6a9f8e1473878 -
Branch / Tag:
refs/tags/sdks-python-v0.2.0 - Owner: https://github.com/tdesposito
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@994174a38df9e55d16f43f161eb6a9f8e1473878 -
Trigger Event:
push
-
Statement type: