Skip to content

Commit 90a3c29

Browse files
committed
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).
1 parent fcba6ec commit 90a3c29

101 files changed

Lines changed: 3755 additions & 12184 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.daapi-sdk.json‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
{
22
"repository": "DesktopAccountingAPI/quickbooks-desktop-python",
3-
"sdkVersion": "0.7.0",
3+
"sdkVersion": "0.8.0",
44
"generator": {
55
"name": "packages/sdk-generator",
66
"version": "1.0.0"
77
},
88
"contract": {
99
"path": "packages/api-contract/generated/openapi.json",
10-
"sha256": "f4cd9b5c733eeada3d1a452ca3a11144f0d4b560ed58a595281cf54780b20691",
10+
"sha256": "149fc7b0599dee2c0c0bde9a8f502f9d32e6215a26c5222594330c429e9b735f",
1111
"openapi": "3.1.0",
1212
"apiVersion": "1.0.0"
1313
},
14-
"operations": 439,
15-
"models": 1669,
16-
"enums": 252,
14+
"operations": 438,
15+
"models": 1662,
16+
"enums": 126,
1717
"generatedFiles": [
1818
"api.md",
1919
"conformance/fixtures/api-keys.json",

‎CHANGELOG.md‎

Lines changed: 112 additions & 0 deletions
Large diffs are not rendered by default.

‎CONTRIBUTING.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Because of this, we usually cannot merge pull requests as they are. Open an issu
1616

1717
Open an issue with:
1818

19-
- the SDK version (for example `0.7.0`) and your Python version,
19+
- the SDK version (for example `0.8.0`) and your Python version,
2020
- the operation you called, for example `qbd.invoices.create`,
2121
- the `Daapi-Request-Id` of the failing call (every error exposes it as its request ID),
2222
- what you expected and what happened.

‎README.md‎

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
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.
44

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.
66
- Frozen dataclass models, keyword-only arguments, `Literal` enums, `mypy --strict` clean, a synchronous and an asyncio client.
77
- Amounts are `decimal.Decimal`, never `float`.
88
- 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.
1515
pip install desktopaccountingapi-quickbooks-desktop
1616
```
1717

18-
The current version is **0.7.0**. To pin it exactly:
18+
The current version is **0.8.0**. To pin it exactly:
1919

2020
```sh
21-
pip install "desktopaccountingapi-quickbooks-desktop==0.7.0"
22-
uv add "desktopaccountingapi-quickbooks-desktop==0.7.0"
23-
poetry add "desktopaccountingapi-quickbooks-desktop==0.7.0"
21+
pip install "desktopaccountingapi-quickbooks-desktop==0.8.0"
22+
uv add "desktopaccountingapi-quickbooks-desktop==0.8.0"
23+
poetry add "desktopaccountingapi-quickbooks-desktop==0.8.0"
2424
```
2525

2626
The distribution is `desktopaccountingapi-quickbooks-desktop`; the import package is `desktopaccountingapi`.
@@ -317,6 +317,16 @@ except CursorExpiredError as error:
317317

318318
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.
319319

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+
320330
## Errors
321331

322332
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
511521
- 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.
512522
- Every release is listed in [CHANGELOG.md](https://github.com/DesktopAccountingAPI/quickbooks-desktop-python/blob/main/CHANGELOG.md) and tagged `v<version>` on GitHub.
513523
- 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.
515525

516526
## Support
517527

@@ -525,7 +535,7 @@ The [migration guide](https://www.desktopaccountingapi.com/docs/get-started/migr
525535

526536
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.
527537

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).
529539

530540
## License
531541

‎api.md‎

Lines changed: 5 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎conformance/fixtures/consumer.json‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)