budgetbakers-partner-sdk
Server SDK for the BudgetBakers Partner AISP API, for Python. One runtime
dependency (httpx); Python ≥ 3.10; fully typed; import name
budgetbakers_partner_sdk. Default base URL: https://aisp-partner.bbapi.io
(the API key selects sandbox vs live).
Install
Until the package is on PyPI, download the wheel from the downloads page and install it locally:
pip install ./budgetbakers_partner_sdk-<version>-py3-none-any.whl
Once published, the package name is budgetbakers-partner-sdk; your code
does not change.
Example
import os
from budgetbakers_partner_sdk import BudgetBakers
bb = BudgetBakers(api_key=os.environ["BB_API_KEY"])
# Capability discovery (mode = sandbox|live, decided by the key).
config = bb.partner.get_config()
# Clients upsert by externalId.
client = bb.clients.create(externalId="user-42", email="u42@example.com", countryCode="CZ")
# Client-scoped calls hide the X-Client-Id header.
scope = bb.client(client["id"])
# Hosted connect flow: open hostedUrl in the user's browser, then poll.
session = scope.connect_sessions.create("https://app.example.com/bb-callback")
done = scope.connect_sessions.wait_for_terminal(session["sessionId"])
# Accounts: every page walked (Disabled, unselected accounts included).
accounts = scope.connections.list_accounts(done["connectionId"])
# Cursor pagination as generators; filters and delta sync as keyword arguments.
for tx in scope.accounts.transactions(accounts[0]["id"], since_seq=0):
... # tx["amount"] is a decimal.Decimal - money is never a float.
Webhook verification
# Constant-time verification against ALL active secrets (±300 s),
# typed events; unknown types pass through, never raise (respond 2xx).
from budgetbakers_partner_sdk import parse_event, verify
result = verify(secrets, request.headers["X-BB-Signature"], raw_body)
event = parse_event(raw_body)
Verify over the raw request body bytes, before any JSON parsing.
Behavior
- Typed errors -
PartnerApiError.codeis the stable machine code (error.code); branch on it, never on messages.request_idcarries theX-Request-Idcorrelation id. - Retries - exponential backoff + jitter on 429/5xx honoring
Retry-After; POST retries only under anIdempotency-Key(auto-UUID on creates, explicitidempotency_key=override). - Money -
json.loads(parse_float=Decimal)+ quantization at the money keys; amounts are exactdecimal.Decimal, never float. - Nullability - only
idis guaranteed on Client/Connection/Account payloads (plussubscriptionStatuson accounts andseq/createdSeq/recordDateon transactions). - Paths - reads and creates call
/v2and unwrap the{"data": ...}envelope; the connection lifecycle actions (connections.create/delete/ refresh/reconnect/revoke) call/v1, where they live today.clients.get_by_external_idreturnsNonewhen nothing matches.
Documentation
Guides and the API reference: https://aisp-docs.bbapi.io. Questions: integration@budgetbakers.com.
Licence
Apache-2.0 (see LICENSE and NOTICE). Access to the Partner API itself is
governed by the BudgetBakers Partner Terms of Service.
Metadata
Release files for budgetbakers-partner-sdk 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| budgetbakers_partner_sdk-0.2.1.tar.gz | 36.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| budgetbakers_partner_sdk-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.3 kB
Release files / budgetbakers_partner_sdk-0.2.1.tar.gz
| Download URL | budgetbakers_partner_sdk-0.2.1.tar.gz |
|---|---|
| Size | 36.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
163d936e397d511305e354bf26a109605f2057de94c0f3b5e81d37013eda6d06
|
|
BLAKE2b-256 checksum How to use checksums |
59bab4d5e11ab8833e5b6374d2aa44b25c7b4cd49d8b17f6e0ec64d2b8d50109
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / budgetbakers_partner_sdk-0.2.1-py3-none-any.whl
| Download URL | budgetbakers_partner_sdk-0.2.1-py3-none-any.whl |
|---|---|
| Size | 21.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
361aeae52bbd748772bf21cbfd990ec8348c71b5c0deded1276148606a64b062
|
|
BLAKE2b-256 checksum How to use checksums |
feefcde889b8220c1907ccaf53cec4d7ba18a2316d49cba5935c56dc5c26cc62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for budgetbakers-partner-sdk 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.