Five more resources following clients.rs's template exactly: the same list/get/create/update/delete shape, including the fetch-merge-write pattern for update. quotes.rs is otherwise identical to invoices.rs since Quote is a type alias for Invoice in the SDK (same table, distinguished by entity_type upstream). Verified against a live local server: full create/list/get/update/ delete round trip for all six resources, confirming update preserves fields the caller didn't mention. Also adds CHANGELOG.md (Keep a Changelog format, matching the SDK's) and updates README/CLAUDE.md's resource counts. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
Pre-1.0, per GOALS.md, a minor release can still break flags or output —
this file is where that gets written down instead of discovered at the
command line.
[Unreleased]
Added
- Six resources, each with
list(with--allfor every page,--status, and--param key=valuefor anythingListParamsdoesn't have a typed setter for),get,create,update, anddelete:clients,invoices,quotes,payments,products,expenses.quotesisinvoicesunder a different endpoint — Invoice Ninja stores both in the same table, distinguished byentity_type, soQuoteis a type alias forInvoicein the SDK andcommands/quotes.rsis otherwise identical tocommands/invoices.rs. updatefetches the current record, shallow-merges the caller's--data/--fileJSON on top, and writes the merged result back, rather than sending the patch alone — Invoice Ninja'sPUTis a full replace. SeeCLAUDE.mdand the comment insrc/body.rs.--output jsonon every command for the model's fullSerializeoutput (includingextra), suitable as input to a laterupdate/create; the default table view is a convenience subset of columns.- Global
--base-url,--token, and--api-passwordflags, each with a matching environment variable (IN_BASE_URL,IN_API_TOKEN,IN_API_PASSWORD); both secrets are hidden from--helpand any echoed default. - Depends on
invoiceninja-sdk0.2.0 from crates.io. - A
flake.nixwithdevShells.default,packages.default(built with a pinned toolchain), andoverlays.default(for pullinginvoiceninja-cliinto another flake's ownpkgs). - CI on GitHub Actions, mirroring
invoiceninja-sdk's ownci.yml: a pinned-toolchaintestjob, a build-onlymsrvjob on the declared 1.88 floor, and an advisorystablejob.