Now that the SDK dependency resolves from crates.io instead of a sibling checkout, a workflow here needs nothing special to build. Same three jobs as the SDK's own ci.yml: pinned-toolchain test, a build-only msrv job on the declared 1.88 floor, and an advisory stable job that reports red but stays out of required status checks. Verified locally: all four `test`-job commands pass with the pinned 1.99.1 toolchain, and a build+test against an actual rustc 1.88.0 toolchain confirms the msrv job will be green too. Resolves the "own CI" open question in GOALS.md into goal 6; adds the matching "Rust version and CI" section to CLAUDE.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
invoiceninja-cli
A command-line client for the Invoice Ninja
v5 API, built on invoiceninja-sdk.
Early scaffold. Only the
clientsresource is wired up so far, as the template for adding the rest — seeCLAUDE.mdfor the pattern.GOALS.mdcovers what the crate is for and what it is not.
Development
Enter the dev shell (Rust toolchain via rust-overlay, matching the SDK's):
nix develop
Usage
Every subcommand needs an API token and, for a self-hosted install, a base URL. Both can be passed as flags or environment variables (the same names the SDK's own examples use):
export IN_API_TOKEN=...
# export IN_BASE_URL=https://your-domain.example/api/v1 # self-hosted only
invoiceninja-cli clients list
invoiceninja-cli clients list --all --status active,archived
invoiceninja-cli clients get <id>
invoiceninja-cli clients create --data '{"name": "Acme Inc"}'
invoiceninja-cli clients update <id> --data '{"city": "Springfield"}'
invoiceninja-cli clients delete <id>
create and update read the record body as JSON, from --data inline,
--file <path> (- for stdin), or stdin if neither flag is given.
update fetches the current record first and overlays the given fields on
top of it, so you only need to mention what's changing — see the comment in
src/body.rs for why that matters (Invoice Ninja's PUT is a full replace,
not a patch).
Add --output json to any command for the full record instead of the
table view's few key columns:
invoiceninja-cli --output json clients get <id>