Skip to content

Commit 8f15610

Browse files
committed
Release 0.1.0: regenerate from contract sha256:1cc3058cecb5
Generated by packages/sdk-generator 1.0.0 from the Desktop Accounting API OpenAPI contract (sha256:1cc3058cecb557ce1cc724d5236d36860df6bec39636e2d427c8a408bf5f2ca2, API 1.0.0, 275 operations).
0 parents  commit 8f15610

830 files changed

Lines changed: 169128 additions & 0 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: 787 additions & 0 deletions
Large diffs are not rendered by default.

‎.gitattributes‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
* text=auto eol=lf
2+
*.jar binary
3+
src/main/java/com/desktopaccountingapi/quickbooksdesktop/models/** linguist-generated=true
4+
src/main/java/com/desktopaccountingapi/quickbooksdesktop/services/** linguist-generated=true
5+
src/main/java/com/desktopaccountingapi/quickbooksdesktop/DesktopAccountingApiClient.java linguist-generated=true
6+
conformance/fixtures/** linguist-generated=true
7+
api.md linguist-generated=true

‎.github/workflows/ci.yml‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
check:
14+
name: Java ${{ matrix.java }} (${{ matrix.os }})
15+
runs-on: ${{ matrix.os }}
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
include:
20+
- { os: ubuntu-latest, java: "11" }
21+
- { os: ubuntu-latest, java: "17" }
22+
- { os: ubuntu-latest, java: "21" }
23+
- { os: windows-latest, java: "21" }
24+
steps:
25+
- uses: actions/checkout@v7
26+
- uses: jdx/mise-action@v5
27+
# mise.toml pins Temurin 21 for releases; the matrix runs the same check on each supported LTS.
28+
- name: Select Java ${{ matrix.java }}
29+
if: matrix.java != '21'
30+
shell: bash
31+
run: |
32+
mise use "java@temurin-${{ matrix.java }}"
33+
mise install
34+
mise exec -- java -version
35+
- name: mise run check
36+
run: mise run check

‎.github/workflows/publish.yml‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Publish
2+
3+
# Releases to Maven Central through the Central Portal. Push the tag v<version> (matching pom.xml)
4+
# or run manually. Re-running is safe: a version that is already published is not uploaded again.
5+
on:
6+
push:
7+
tags: ["v*"]
8+
workflow_dispatch:
9+
inputs:
10+
tag:
11+
description: "Tag to release, for example v0.1.0 (default: the selected ref)"
12+
required: false
13+
type: string
14+
15+
permissions:
16+
contents: read
17+
id-token: write
18+
19+
concurrency:
20+
group: publish-${{ inputs.tag || github.ref_name }}
21+
cancel-in-progress: false
22+
23+
jobs:
24+
publish:
25+
name: Publish to Maven Central
26+
runs-on: ubuntu-latest
27+
environment: release
28+
timeout-minutes: 120
29+
env:
30+
RELEASE_TAG: ${{ inputs.tag || (github.ref_type == 'tag' && github.ref_name || '') }}
31+
steps:
32+
- uses: actions/checkout@v7
33+
with:
34+
ref: ${{ inputs.tag || github.ref }}
35+
- uses: jdx/mise-action@v5
36+
- name: Check tag matches pom.xml version
37+
run: |
38+
version=$(sed -n 's:.*<version>\(.*\)</version>.*:\1:p' pom.xml | head -1)
39+
echo "pom.xml version: $version, tag: ${RELEASE_TAG:-<none>}"
40+
if [ -n "$RELEASE_TAG" ] && [ "$RELEASE_TAG" != "v$version" ]; then
41+
echo "::error::tag $RELEASE_TAG does not match pom.xml version $version"
42+
exit 1
43+
fi
44+
- name: Full check (build, tests, conformance, javadoc, examples)
45+
run: mise run check
46+
- name: Upload, validate and publish
47+
run: mise exec -- node scripts/publish.mjs --publish
48+
env:
49+
MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
50+
MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
51+
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
52+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
53+
- name: Install from Maven Central into a clean project and run a smoke program
54+
run: mise exec -- node scripts/publish.mjs --verify-consumer

‎.gitignore‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
target/
2+
*.class
3+
*.log
4+
.idea/
5+
*.iml
6+
.vscode/
7+
.classpath
8+
.project
9+
.settings/
10+
.DS_Store
11+
.env
12+
.env.*

‎CHANGELOG.md‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Changelog
2+
3+
## 0.1.0
4+
5+
First release, generated from API contract 1.0.0 (sha256 `1cc3058cecb5`, 275 operations).
6+
7+
- `DesktopAccountingApiClient` with builder, `fromEnv()` and `forEndUser(...)`; local secret-key validation.
8+
- Typed models for every request and response: `BigDecimal` money with preserved scale, `LocalDate`, `OffsetDateTime`, open enums as string constants, unknown fields kept in `additionalProperties()`, `toJson()` on every model.
9+
- Input objects that distinguish unset fields from explicit `null`.
10+
- Auto-pagination (`Pager<T>`: `Iterable`, `stream()`, `firstPage()`, `pages()`, `listAll()`) with one page of read-ahead and `CursorExpiredException` progress fields.
11+
- Retries for network errors, 429 and retryable 5xx responses with backoff, `Retry-After` and one idempotency key per call.
12+
- Long-polling after `504 QBD_REQUEST_TIMEOUT` and `RequestPendingException`.
13+
- Async mode through `enqueue()` returning `RequestHandle<T>`.
14+
- Typed exceptions per error type with every error field; `ErrorCode` and `ErrorType` constants.
15+
- `...WithResponse(...)` methods returning status and headers.
16+
- Passthrough as JSON or raw qbXML.
17+
- Standard Webhooks verification (`Webhooks`, `WebhookVerifier`).
18+
- No runtime dependencies; Java 11 or later.

‎CONTRIBUTING.md‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Contributing
2+
3+
Thanks for helping improve the Desktop Accounting API Java SDK.
4+
5+
## How this repository is built
6+
7+
Most of this repository is generated from the Desktop Accounting API OpenAPI contract by our SDK generator. The same contract produces the Node.js, Python, .NET and Java SDKs and the API reference, so all of them change together.
8+
9+
- Files that start with a `Code generated by packages/sdk-generator. DO NOT EDIT.` header are regenerated on every release. Changes made to them directly are overwritten.
10+
- The runtime (HTTP, retries, pagination, errors, webhooks), the tests, the examples and this documentation are maintained by hand. They are copied into this repository by the same release process.
11+
- `.daapi-sdk.json` records the contract digest and SDK version of each generated release.
12+
13+
Because of this, we usually cannot merge pull requests as they are. Open an issue or a pull request anyway: we reproduce the fix in the generator or the runtime, credit you in the changelog, and close the pull request when the regenerated release lands.
14+
15+
## Reporting bugs
16+
17+
Open an issue with:
18+
19+
- the SDK version (`0.1.0` or later) and your Java version,
20+
- the operation you called, for example `qbd.invoices.create`,
21+
- the `Daapi-Request-Id` of the failing call (every error exposes it as its request ID),
22+
- what you expected and what happened.
23+
24+
Never paste secret keys (`sk_live_...`, `sk_test_...`), webhook signing secrets, Web Connector passwords or customer data. Report security issues privately as described in `SECURITY.md`. Do not open a public issue for them.
25+
26+
## Running the checks
27+
28+
The toolchain is pinned in `mise.toml`. With [mise](https://mise.jdx.dev) installed:
29+
30+
```sh
31+
mise install
32+
mise run check
33+
```
34+
35+
`mise run check` builds the SDK, runs the strict compiler and lint settings, the unit tests and the cross-language conformance suite in `conformance/`. CI runs the same command.

‎LICENSE‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Desktop Accounting API
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)