You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 90a3c29
Browse filesBrowse the repository at this point in the historyBrowse files
Release 0.8.0: regenerate from contract sha256:149fc7b0599d
Generated by packages/sdk-generator 1.0.0 from the Desktop Accounting API OpenAPI contract (sha256:149fc7b0599dee2c0c0bde9a8f502f9d32e6215a26c5222594330c429e9b735f, API 1.0.0, 438 operations).
Copy file name to clipboardExpand all lines: README.md
+17-7Lines changed: 17 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
The Python client for [Desktop Accounting API](https://www.desktopaccountingapi.com/), a REST API for QuickBooks Desktop and QuickBooks Enterprise. Your server makes typed calls such as `client.qbd.invoices.create(...)`, and Desktop Accounting API delivers them to your customer's company file through the QuickBooks Web Connector.
4
4
5
-
- Covers all 439 operations of API 1.0.0: QuickBooks objects and reports (`client.qbd`), end users, auth sessions, request tracking, qbXML passthrough and webhook verification.
5
+
- Covers all 438 operations of API 1.0.0: QuickBooks objects and reports (`client.qbd`), end users, auth sessions, request tracking, qbXML passthrough and webhook verification.
6
6
- Frozen dataclass models, keyword-only arguments, `Literal` enums, `mypy --strict` clean, a synchronous and an asyncio client.
7
7
- Amounts are `decimal.Decimal`, never `float`.
8
8
- Every write carries an idempotency key, retries happen only where they cannot duplicate data, and an expired QuickBooks cursor never restarts a list silently.
@@ -15,12 +15,12 @@ The Python client for [Desktop Accounting API](https://www.desktopaccountingapi.
The distribution is `desktopaccountingapi-quickbooks-desktop`; the import package is `desktopaccountingapi`.
@@ -317,6 +317,16 @@ except CursorExpiredError as error:
317
317
318
318
Lists without cursor pagination (accounts, classes, terms and other small lists) return the whole list. The [pagination guide](https://www.desktopaccountingapi.com/docs/guides/pagination/) explains cursor lifetimes.
319
319
320
+
### Required arguments and confirmations
321
+
322
+
- Required parameters are keyword arguments without a default, so leaving one out raises `TypeError` and mypy reports it. The SDK does not validate values itself (lengths, formats, combinations of filters): the API checks every request and answers `400 INVALID_PARAMETER`, naming the parameter, before anything reaches QuickBooks.
323
+
- Destructive operations need `confirm=True`, typed `Literal[True]`: `client.qbd.customers.delete(id, confirm=True)`.
324
+
- Methods take keyword arguments. The models of whole request bodies and query strings are not exported; models nested in a request (`InvoiceLineCreateInput`) are.
325
+
- Transaction deletes and voids take no confirmation, as in Conductor. Deleting a list record, merging two records and deleting a custom field definition do, because they cannot be undone.
326
+
- A list-record delete answers `deleted: true` only when QuickBooks removed the record. QuickBooks Desktop can accept the delete and keep the record inactive: then `deleted` is false and `deactivated` is true.
327
+
- Quantities (`quantityCanBuild`, `totalMiles`, line quantities) can have decimals: QuickBooks stores them as decimal quantities, and units of measure allow fractions.
328
+
-`CursorExpiredError` is an `InvalidRequestError`, because the API classifies `CURSOR_EXPIRED` as `INVALID_REQUEST_ERROR`. Catch it first when you handle the two differently; `err.reason` is a `CursorExpiredReason`.
329
+
320
330
## Errors
321
331
322
332
Every error is a `DaapiError`. Problems found before sending (missing key, malformed key, missing end user) raise `DaapiError` itself. Error responses raise `APIError` or the subclass for their `type`:
@@ -511,7 +521,7 @@ The [migration guide](https://www.desktopaccountingapi.com/docs/get-started/migr
511
521
- The Python, Node.js, .NET and Java SDKs and the [MCP server](https://github.com/DesktopAccountingAPI/quickbooks-desktop-mcp) are released together with the same version number, generated from the same API contract.
512
522
- Every release is listed in [CHANGELOG.md](https://github.com/DesktopAccountingAPI/quickbooks-desktop-python/blob/main/CHANGELOG.md) and tagged `v<version>` on GitHub.
513
523
- The API is versioned in its path (`/v1`). Within `v1` the API only adds operations, fields, enum values and error codes, and the SDK tolerates all of them, so older SDK versions keep working.
514
-
- Each release is generated from one version of the API contract; `.daapi-sdk.json` and `desktopaccountingapi.CONTRACT_SHA256` record its digest (`sha256:f4cd9b5c733e...` for this release), `desktopaccountingapi.API_VERSION` the API version and `desktopaccountingapi.__version__` the package version.
524
+
- Each release is generated from one version of the API contract; `.daapi-sdk.json` and `desktopaccountingapi.CONTRACT_SHA256` record its digest (`sha256:149fc7b0599d...` for this release), `desktopaccountingapi.API_VERSION` the API version and `desktopaccountingapi.__version__` the package version.
515
525
516
526
## Support
517
527
@@ -525,7 +535,7 @@ The [migration guide](https://www.desktopaccountingapi.com/docs/get-started/migr
525
535
526
536
The toolchain is pinned in `mise.toml`. `mise run check` installs the pinned dev tools with uv and runs ruff, `mypy --strict`, the unit tests, the cross-language conformance suite (against `conformance/mock-server.mjs`), the example type checks, the README samples (`mypy --strict` on every Python block of this file, and the quickstart against the mock server) and a build plus clean install of the wheel. Set `UV_PYTHON=3.9` (or any supported version) to run it on another interpreter.
527
537
528
-
To install from source: `pip install "git+https://github.com/DesktopAccountingAPI/quickbooks-desktop-python.git@v0.7.0"`. The code under `src/desktopaccountingapi/types` and `src/desktopaccountingapi/resources`, `api.md`, `conformance/fixtures` and this README are generated; see [CONTRIBUTING.md](https://github.com/DesktopAccountingAPI/quickbooks-desktop-python/blob/main/CONTRIBUTING.md).
538
+
To install from source: `pip install "git+https://github.com/DesktopAccountingAPI/quickbooks-desktop-python.git@v0.8.0"`. The code under `src/desktopaccountingapi/types` and `src/desktopaccountingapi/resources`, `api.md`, `conformance/fixtures` and this README are generated; see [CONTRIBUTING.md](https://github.com/DesktopAccountingAPI/quickbooks-desktop-python/blob/main/CONTRIBUTING.md).
0 commit comments