jaz-clio 5.44.0 → 5.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-api
3
- version: 5.44.0
3
+ version: 5.45.0
4
4
  description: >-
5
5
  Use this skill whenever you call, debug, or review code that touches the Jaz
6
6
  REST API. Covers field names, response shapes, 159 production gotchas, error
@@ -396,7 +396,7 @@ Bills, invoices, and credit notes share identical mandatory field specs. Adding
396
396
 
397
397
  121. **Intra-batch reference dedup is MERGE, not REJECT** — Two rows in the same bulk-upsert call sharing the same natural key (`invoiceReference`/`billReference`/etc.) are MERGED by the API (last row wins). If the user wants strict-uniqueness, dedup client-side first.
398
398
 
399
- 122. **Fixed asset bulk upsert — date fields are inconsistent** — the bulk-upsert REQUEST has TWO different date conventions: `valueDate` is `YYYY-MM-DD` (string); `depreciationStartDate` is **epoch milliseconds** (number). Sending YYYY-MM-DD for `depreciationStartDate` returns generic 400 "Invalid request body" with no detail. The GET RESPONSE uses `purchaseDate` (different field from request `valueDate`). Sending `purchaseDate` in the request same generic 400. Other fields: `cost` and `purchaseAmount` are synonyms; `effectiveLife` and `usefulLifeMonths` are synonyms. Required: `reference`, `registrationType` ("NEW" | "TRANSFER"). Recommended: `typeCode` (e.g. `FURNITURE_AND_FIXTURE`), `typeName`, `category` ("TANGIBLE" | "INTANGIBLE"), `cost`/`purchaseAmount`, `valueDate` (YYYY-MM-DD), `effectiveLife`/`usefulLifeMonths`, `depreciationMethod` (`STRAIGHT_LINE` | `NO_DEPRECIATION`), `purchaseAssetAccountResourceId` (UUIDv4), `depreciationExpenseAccountResourceId` (UUIDv4), `accumulatedDepreciationAccountResourceId`. To set `depreciationStartDate`: pass epoch ms OR omit (defaults to valueDate).
399
+ 122. **Fixed asset bulk upsert — dates are EPOCH MILLISECONDS** — the bulk-upsert REQUEST takes `purchaseDate` and `depreciationStartDate` as **epoch milliseconds** (numbers), unlike every other bulk-upsert (which takes `YYYY-MM-DD`). A date string returns a generic 400 "Invalid request body" with no detail. There is no `valueDate`, `cost`, `usefulLifeMonths`, `currencyCode`, `tags` or `resourceId` field on this endpoint those are silently discarded; the wire names are `purchaseDate`, `purchaseAmount` and `effectiveLife`, and the natural key is `reference`. Required: `reference`, `registrationType` ("NEW" | "TRANSFER"). `NEW` also requires `purchaseBusinessTransactionType` ("PURCHASE" | "SALE" | "JOURNAL_MANUAL") + `purchaseBusinessTransactionResourceId` (the purchase LINE ITEM, not the bill/journal id); `TRANSFER` instead takes `accumulatedDepreciationAtTransferDate` + `bookValueAtTransferDate`. Recommended: `typeCode` (e.g. `FURNITURE_AND_FIXTURE`), `typeName`, `category` ("TANGIBLE" | "INTANGIBLE"), `purchaseAmount`, `purchaseDate`, `effectiveLife`, `depreciationMethod` (`STRAIGHT_LINE` | `NO_DEPRECIATION`), `purchaseAssetAccountResourceId` (UUIDv4), `depreciationExpenseAccountResourceId` (UUIDv4), `accumulatedDepreciationAccountResourceId`. Omit `depreciationStartDate` to default it to `purchaseDate`.
400
400
 
401
401
  ### Reconciliation actions (write-side)
402
402
 
@@ -82,7 +82,7 @@ All GET list endpoints and POST `/search` endpoints use **`limit`/`offset` pagin
82
82
  "resourceId": "31eb050a-...",
83
83
  "name": "Jaz Global SG",
84
84
  "currency": "SGD",
85
- "countryCode": "SG",
85
+ "country": "SG",
86
86
  "status": "ACTIVE",
87
87
  "lockDate": null
88
88
  }
@@ -83,7 +83,7 @@ These aliases are applied by middleware on POST/PUT endpoints. The alias is only
83
83
  | `apiKey` header | `x-jk-api-key` | Custom header (not Authorization: Bearer) |
84
84
  | `org.id` | `data[0].resourceId` | Org endpoint returns a LIST |
85
85
  | `org.baseCurrency` | `data[0].currency` | Not `baseCurrency` |
86
- | `org.country` | `data[0].countryCode` | ISO 2-letter code |
86
+ | `org.country` | `data[0].country` | ISO 2-letter code. NOT `countryCode` — that name is a deprecated alias, is optional, and may be absent from the response |
87
87
 
88
88
  ---
89
89
 
@@ -247,7 +247,7 @@ DIFFERENT shape from single create — easier to confuse.
247
247
 
248
248
  ### Bulk upsert (`POST /fixed-assets/bulk-upsert`) — REQUEST shape
249
249
 
250
- ⚠️ **Date field is `valueDate`, NOT `purchaseDate`.** The GET response uses `purchaseDate`; the bulk-upsert REQUEST uses `valueDate`. Sending `purchaseDate` returns generic 400 "Invalid request body" with no detail. Most painful field-name asymmetry in the API.
250
+ ⚠️ **Both dates are EPOCH MILLISECONDS, not `YYYY-MM-DD`.** `purchaseDate` and `depreciationStartDate` are integers on this endpoint (every other bulk-upsert takes `YYYY-MM-DD`). A date string returns a generic 400 "Invalid request body" with no detail. There is no `valueDate`, `cost`, `usefulLifeMonths`, `currencyCode`, `tags` or `resourceId` field here they are silently discarded.
251
251
 
252
252
  | Field | Required? | Notes |
253
253
  |-------|-----------|-------|
@@ -257,19 +257,22 @@ DIFFERENT shape from single create — easier to confuse.
257
257
  | `typeCode` | recommended | e.g. `FURNITURE_AND_FIXTURE`, `COMPUTER_AND_ELECTRONIC` |
258
258
  | `typeName` | recommended | Human label, e.g. `"Furniture and Fixtures"` |
259
259
  | `category` | recommended | `"TANGIBLE"` or `"INTANGIBLE"` |
260
- | `cost` OR `purchaseAmount` | recommended | Synonyms both accepted |
261
- | `valueDate` | recommended | Acquisition date YYYY-MM-DD (NOT `purchaseDate`!) |
262
- | `currencyCode` | recommended | `"SGD"` flat string |
263
- | `depreciationStartDate` | optional | **EPOCH MILLISECONDS** (number, NOT YYYY-MM-DD — inconsistent with `valueDate` on the same endpoint). Sending YYYY-MM-DD → generic 400. Omit to default to `valueDate`. |
264
- | `effectiveLife` OR `usefulLifeMonths` | recommended | Months — synonyms |
260
+ | `purchaseAmount` | recommended | Acquisition cost (there is no `cost` alias) |
261
+ | `purchaseDate` | recommended | Acquisition date, **epoch milliseconds** |
262
+ | `depreciationStartDate` | optional | **Epoch milliseconds.** Omit to default to `purchaseDate` |
263
+ | `effectiveLife` | recommended | Months (there is no `usefulLifeMonths` alias) |
265
264
  | `depreciationMethod` | recommended | `"STRAIGHT_LINE"` or `"NO_DEPRECIATION"` |
266
265
  | `purchaseAssetAccountResourceId` | recommended | Asset account UUIDv4 |
267
266
  | `depreciationExpenseAccountResourceId` | recommended | Depreciation expense account UUIDv4 |
268
267
  | `accumulatedDepreciationAccountResourceId` | recommended | Accum dep account UUIDv4 |
268
+ | `purchaseBusinessTransactionType` | required for `NEW` | `"PURCHASE"` \| `"SALE"` \| `"JOURNAL_MANUAL"` |
269
+ | `purchaseBusinessTransactionResourceId` | required for `NEW` | Purchase LINE ITEM resourceId, must be UNLINKED |
270
+ | `accumulatedDepreciationAtTransferDate` | `TRANSFER` only | Depreciation already booked in the source system |
271
+ | `bookValueAtTransferDate` | `TRANSFER` only | Remaining undepreciated value |
269
272
 
270
273
  ### Single create (`POST /fixed-assets`)
271
274
 
272
- Uses `purchaseAmount` + `purchaseDate` + `effectiveLife` + `purchaseAssetAccountResourceId` + `depreciationExpenseAccountResourceId`. CLI command `clio fixed-assets create` mirrors this. **Different date field from bulk-upsert** — see warning above.
275
+ Uses `purchaseAmount` + `purchaseDate` + `effectiveLife` + `purchaseAssetAccountResourceId` + `depreciationExpenseAccountResourceId`. CLI command `clio fixed-assets create` mirrors this. Same field names as bulk-upsert, but dates here are `YYYY-MM-DD` strings — see warning above.
273
276
 
274
277
  ---
275
278
 
@@ -813,7 +813,12 @@ single-create siblings do — the alias middleware rewrites the top-level body o
813
813
  these routes the aliased keys sit inside the `cashEntries[]` / `cashTransfers[]` rows. Send
814
814
  `valueDate` on bulk rows.
815
815
 
816
- ### Record-list option pickers (4) — 2026-08-12
816
+ ### Record-list option pickers (4) — NOT WRAPPED
817
+
818
+ These four exist in the REST API but this client has **no wrapper for them and no
819
+ tool exposes them**, so they cannot be called from here. They are listed only so
820
+ that looking for them and finding nothing is not mistaken for the catalog being
821
+ incomplete. Reaching them needs a raw HTTP call.
817
822
 
818
823
  | Method | Path | Description |
819
824
  |--------|------|-------------|
@@ -370,9 +370,12 @@ No enum fields on the top level. String filters: `resourceId`, `type`.
370
370
  | Field | Valid Values |
371
371
  |-------|-------------|
372
372
  | `status` | `ACTIVE`, `INACTIVE` |
373
- | `role` | `ADMIN`, `CUSTOM_USER` |
373
+ | `userType` | `ADMIN`, `CUSTOM_USER` |
374
374
 
375
- **String fields**: `name`, `email`
375
+ **String fields**: `email`, `resourceId`, `userResourceId`
376
+ **Nested** (`user`): `user.firstName`, `user.lastName`, `user.email`, `user.status`, `user.phoneRegistered`
377
+
378
+ There is no `name` or `role` field on this filter.
376
379
 
377
380
  ---
378
381
 
@@ -683,9 +683,12 @@ To convert response dates: `new Date(epochMs).toISOString().slice(0, 10)` → `Y
683
683
 
684
684
  ### 21. POST /api/v1/organization-users/search
685
685
 
686
- **Filter fields** (`OrganizationUserFilter`): `name`, `email`, `role`, `status`
686
+ **Filter fields** (`OrganizationUserFilter`): `resourceId`, `userResourceId`, `userType`, `status`, `email`, `and`, `or`
687
+ **Nested**: `user` (`user.firstName`, `user.lastName`, `user.email`, `user.phoneRegistered`, `user.status`, `user.resourceId`, `user.deleted`)
687
688
 
688
- **Sort fields**: `name`, `email`, `createdAt`
689
+ **Sort fields** (max 9): `resourceId`, `status`, `userResourceId`, `userType`, `user.FirstName`, `user.LastName`, `user.Email`, `user.PhoneRegistered`, `user.Status`
690
+
691
+ There is no top-level `name` or `role` on this filter, and the nested sort keys are capitalised while the nested filter keys are not — `user.firstName` filters, `user.FirstName` sorts. Anything else in `sort.sortBy` is a 422. `query` is rejected on this endpoint; use the filter.
689
692
 
690
693
  Standard pattern with limit/offset/filter/sort. Rarely used in conversions.
691
694
 
@@ -707,6 +710,8 @@ Standard pattern with limit/offset/filter/sort. Used for managing bank reconcili
707
710
 
708
711
  **Sort fields** (max 13): `resourceId`, `name`, `reference`, `currencyCode`, `status`, `valueDate`, `totalItemAmount`, `description`
709
712
 
713
+ `query` is rejected on this endpoint ("The query field is not supported for this entity") despite being declared on `SearchPurchaseItemRequest`. Use the filter.
714
+
710
715
  ---
711
716
 
712
717
  ### 24. POST /api/v1/sale-orders/search
@@ -58,9 +58,12 @@ Prefix with any currency symbol or type a numeric range.
58
58
  |-------|---------|
59
59
  | `$500` | amount = 500 |
60
60
  | `$-500` | amount = -500 (negative) |
61
+ | `-$500` | same as above (negative before currency) |
61
62
  | `$100-500` | amount between 100 and 500 |
62
63
  | `$100 to 500` | same as above |
64
+ | `$500 to $1000` | range with currency on both sides |
63
65
  | `$-500 to -100` | negative range |
66
+ | `-$4000 to -$6000` | negative range with currency |
64
67
  | `$-100 - -500` | negative range (space-hyphen-space) |
65
68
  | `$500+` | amount >= 500 |
66
69
  | `$<200` | amount < 200 |
@@ -69,6 +72,34 @@ Prefix with any currency symbol or type a numeric range.
69
72
  | `>500` | amount > 500 (no symbol needed for comparisons) |
70
73
  | `500+` | amount >= 500 (no symbol needed) |
71
74
 
75
+ ### Magnitude Suffixes
76
+
77
+ Use shorthand for large numbers. Case-insensitive.
78
+
79
+ | Suffix | Aliases | Multiplier | Example |
80
+ |--------|---------|-----------|---------|
81
+ | `k` | k | 1,000 | `$5k` = 5,000 |
82
+ | `m` | m, mn, mm, mil | 1,000,000 | `4.5m` = 4,500,000 |
83
+ | `b` | b, bn, bil | 1,000,000,000 | `$1b` = 1,000,000,000 |
84
+ | `t` | t, tn, trn | 1,000,000,000,000 | `1trn` = 1,000,000,000,000 |
85
+
86
+ Works everywhere: `$5k`, `5k+`, `>2m`, `4k-5k`, `$4k to $5k`, `amount:5k+`, `amount:>2m`
87
+
88
+ ### Field:Value Amount Syntax
89
+
90
+ Use `amount:` prefix for explicit field targeting. Supports currency, suffixes, and `to` ranges.
91
+
92
+ | Input | Meaning |
93
+ |-------|---------|
94
+ | `amount:500` | amount = 500 |
95
+ | `amount:$500` | same (currency stripped) |
96
+ | `amount:-$80000` | amount = -80000 |
97
+ | `amount:100-500` | amount between 100 and 500 |
98
+ | `amount:4k-5k` | amount between 4000 and 5000 |
99
+ | `amount:-4000 to -6000` | amount between -6000 and -4000 |
100
+ | `amount:5k+` | amount >= 5000 |
101
+ | `amount:>2m` | amount > 2,000,000 |
102
+
72
103
  Supported currency symbols: `$` `€` `£` `¥` `₱` `₹` `₩` `฿` `₫` `₺` `R$` `RM` `Rp` `kr` `Fr` `zł` `R`
73
104
 
74
105
  Also works with ISO codes: `SGD500`, `PHP1000`, `EUR200-500`
@@ -85,14 +116,20 @@ Prefix with `date:` for invoice/transaction date, or `due:` for due date.
85
116
  |-------|---------|
86
117
  | `date:today` | today |
87
118
  | `date:yesterday` | yesterday |
119
+ | `date:tomorrow` | tomorrow |
120
+ | `date:2 days ago` | 2 days ago |
88
121
  | `date:this week` | current week (Mon-Sun) |
89
122
  | `date:last week` | previous week |
123
+ | `date:next week` | next week |
90
124
  | `date:this month` | current month |
91
125
  | `date:last month` | previous month |
126
+ | `date:next month` | next month |
92
127
  | `date:this quarter` | current quarter |
93
128
  | `date:last quarter` | previous quarter |
129
+ | `date:next quarter` | next quarter |
94
130
  | `date:this year` | current year |
95
131
  | `date:last year` | previous year |
132
+ | `date:next year` | next year |
96
133
  | `date:jan 2025` | January 2025 |
97
134
  | `date:jan-mar 2025` | Jan 1 to Mar 31, 2025 |
98
135
  | `date:jan to mar 2025` | same as above |
@@ -105,8 +142,26 @@ Prefix with `date:` for invoice/transaction date, or `due:` for due date.
105
142
  | `date:-3m` | last 3 months |
106
143
  | `date:last 30 days` | same as -30d |
107
144
  | `date:last 2 weeks` | same as -2w |
145
+ | `date:next 7 days` | next 7 days from today |
146
+ | `date:next 30 days` | next 30 days from today |
147
+
148
+ ### Due Date Semantics
149
+
150
+ | Input | Meaning |
151
+ |-------|---------|
152
+ | `due:overdue` | due date before today (past due) |
153
+ | `due:past` | same as overdue |
154
+ | `due:upcoming` | due in the next 30 days |
155
+ | `due:tomorrow` | due tomorrow |
156
+ | `due:next 7 days` | due within next 7 days |
157
+ | `due:next 30 days` | due within next 30 days |
158
+ | `due:this week` | due this week |
108
159
 
109
- Date field aliases: `due:` (due date), `created:` (created date), `submitted:` (submitted date), `approved:` (approved date), `lastpayment:` (last payment date)
160
+ ### Commas in Amounts
161
+
162
+ Commas are stripped from amounts: `$1,000` = 1000, `$1,000,000` = 1000000, `$1,000+` = gte 1000
163
+
164
+ Date field aliases: `due:` (due date), `created:` (created date), `updated:` / `modified:` (updated date), `submitted:` (submitted date), `approved:` (approved date), `lastpayment:` (last payment date)
110
165
 
111
166
  ---
112
167
 
@@ -156,6 +211,38 @@ Comma-separated values search for any match.
156
211
 
157
212
  ---
158
213
 
214
+ ## Boolean Search
215
+
216
+ Some fields accept yes/no values (e.g. `hasattachment`, `customer`, `supplier`).
217
+
218
+ | Input | Meaning |
219
+ |-------|---------|
220
+ | `hasattachment:yes` | has attachments |
221
+ | `hasattachment:no` | no attachments |
222
+ | `!hasattachment:yes` | no attachments (negated) |
223
+ | `attachmentfilename:report` | attachment file name contains "report" |
224
+
225
+ Accepted truthy values: `yes`, `true`, `y`, `1`. Accepted falsy values: `no`, `false`, `n`, `0`.
226
+
227
+ ---
228
+
229
+ ## Absolute Value Search
230
+
231
+ Filter by amount magnitude regardless of sign. Useful for cashflow, bank records, and journals with mixed debit/credit amounts.
232
+
233
+ | Input | Meaning |
234
+ |-------|---------|
235
+ | `abs:500` | amount = 500 OR amount = -500 |
236
+ | `abs:>=500` | amount >= 500 OR amount <= -500 |
237
+ | `abs:500+` | same as above |
238
+ | `abs:>500` | amount > 500 OR amount < -500 |
239
+ | `abs:<100` | amount < 100 OR amount > -100 |
240
+ | `abs:100-500` | amount between 100-500 OR between -500 and -100 |
241
+ | `abs:$5k+` | currency symbols and suffixes work |
242
+ | `!abs:500` | amount != 500 AND amount != -500 |
243
+
244
+ ---
245
+
159
246
  ## Blank / Empty Checks
160
247
 
161
248
  | Input | Meaning |
@@ -240,31 +327,200 @@ NOT (status:paid OR status:void)
240
327
  ## Available Fields by Entity
241
328
 
242
329
  ### Sales / Invoices
243
- `customer` `ref` `status` `approval` `currency` `tag` `id` `amount` `balance` `paid` `date` `duedate` `created` `lastpayment` `submitted` `approved` `updated` `paymentrecorded` `creditapplied` `taxid` `regid` `submittedby` `approvedby` `terms`
330
+ `customer` `ref` `status` `approval` `currency` `tag` `id` `amount` `balance` `paid` `date` `duedate` `createdat` `lastpayment` `submitted` `approved` `updatedat` `paymentrecorded` `creditapplied` `taxid` `regid` `submittedby` `approvedby` `terms` `hasattachment` `attachmentfilename` `saleorderresourceid` `saleresourceid` `lastemail` `changesrequested`
331
+
332
+ Status values: `unpaid` `paid` `partial` `void` `draft` `overdue`
333
+ Approval values: `pending` `approved`
334
+ Aliases: `invoicedate:` = `date:`, `billref:` / `invoiceref:` = `ref:`
335
+
336
+ ### Sale Line Items
337
+ `amount` `price` `qty` `currency` `name` `desc` `sku` `id` `discount` `taxrate` `account` `accountcode` `customer` `status` `ref` `date` `createdat`
244
338
 
245
339
  ### Purchases / Bills
246
- `supplier` `ref` `status` `approval` `currency` `tag` `id` `amount` `balance` `paid` `date` `duedate` `created` `lastpayment` `submitted` `approved` `updated` `paymentrecorded` `creditapplied` `taxid` `regid` `submittedby` `approvedby` `terms`
340
+ `supplier` `ref` `status` `approval` `currency` `tag` `id` `amount` `balance` `paid` `date` `duedate` `createdat` `lastpayment` `submitted` `approved` `updatedat` `paymentrecorded` `creditapplied` `taxid` `regid` `submittedby` `approvedby` `terms` `hasattachment` `attachmentfilename` `purchaseorderresourceid` `purchaseresourceid` `changesrequested`
341
+
342
+ Status values: `unpaid` `paid` `partial` `void` `draft` `overdue`
343
+ Aliases: `billdate:` = `date:`, `vendor:` = `supplier:`
344
+
345
+ ### Purchase Line Items
346
+ `amount` `price` `qty` `currency` `name` `desc` `sku` `id` `discount` `taxrate` `account` `accountcode` `supplier` `status` `ref` `date` `createdat`
347
+
348
+ ### Billable Items
349
+ `id` `status` `item` `desc` `amount` `currency` `assigned` `billed` `account` `accountcode` `customer` `createdat` `supplier` `ref` `date`
247
350
 
248
351
  ### Credit Notes (Sale)
249
- `customer` `ref` `status` `approval` `currency` `tag` `id` `amount` `balance` `paid` `date` `created` `submitted` `approved` `lastpayment` `taxid`
352
+ `customer` `ref` `status` `approval` `currency` `tag` `id` `amount` `paid` `date` `createdat` `submitted` `approved` `lastpayment` `taxid` `hasattachment` `lastemail` `changesrequested`
353
+
354
+ Status values: `unpaid` `paid` `partial` `void` `draft`
250
355
 
251
356
  ### Credit Notes (Purchase)
252
- `supplier` `ref` `status` `approval` `currency` `tag` `id` `amount` `balance` `date` `created` `submitted` `approved` `lastpayment` `taxid`
357
+ `supplier` `ref` `status` `approval` `currency` `tag` `id` `amount` `paid` `date` `createdat` `submitted` `approved` `lastpayment` `taxid` `hasattachment` `changesrequested`
358
+
359
+ Status values: `unpaid` `paid` `partial` `void` `draft`
360
+
361
+ ### Credit Note Line Items (Sale / Purchase)
362
+ `amount` `price` `qty` `currency` `name` `desc` `sku` `id` `discount` `taxrate` `account` `accountcode` `createdat`
253
363
 
254
364
  ### Payments
255
- `customer` `ref` `status` `method` `currency` `id` `amount` `date` `created`
365
+ `customer` `ref` `method` `currency` `id` `amount` `date` `createdat` `status` `taxid` `paymentcurrency` `hasattachment`
366
+
367
+ Sale payments (default). Aliases: `paymentmethod:` = `method:`, `paymentdate:` / `valuedate:` = `date:`, `curr:` = `currency:`, `contact:` = `customer:`
368
+
369
+ For purchase payments: use `supplier:` / `vendor:` instead of `customer:`.
370
+ For batch payments: use `contact:` (matches `customer:` and `supplier:`); amount field → `totalAmount`.
371
+
372
+ ### Payments Due
373
+ `amount` `ref` `contact` `currency` `date` `createdat` `tag` `type` `status` `total` `taxid`
374
+
375
+ Aliases: `balance:` = `amount:`, `reference:` = `ref:`, `customer:` / `supplier:` = `contact:`, `curr:` = `currency:`, `valuedate:` = `date:`, `transactiontype:` = `type:`
256
376
 
257
377
  ### Journals
258
- `contact` `ref` `type` `status` `tag` `id` `debit` `credit` `date` `created` `notes`
378
+ `contact` `ref` `type` `status` `tag` `id` `debit` `credit` `date` `createdat` `notes`
379
+
380
+ Status values: `active` `void` `draft`
381
+ Type values: `manual` `system` `recurring`
382
+ Aliases: `journaltype:` = `type:`, `customer:` / `supplier:` = `contact:`, `amount:` = `debit:`, `internalnotes:` = `notes:`
383
+
384
+ ### Journal Entry Lines
385
+ `amount` `currency` `desc` `id` `contact` `ref` `status` `date`
386
+
387
+ Aliases: `debit:` / `credit:` = `amount:`, `curr:` = `currency:`, `description:` / `notes:` = `desc:`, `customer:` / `supplier:` = `contact:`, `reference:` = `ref:`, `valuedate:` = `date:`
388
+
389
+ ### Cashflow / Bank Records / Bank Entries
390
+ `description` `payee` / `payer` `ref` `status` `review` `id` `amount` `date`
391
+
392
+ Status values: `unreconciled` `reconciled` `excluded`
393
+ Review values: `reviewed` `unreviewed`
394
+ Aliases: `desc:` = `description:`, `contact:` / `extcontactname:` = `payee:`, `reference:` / `extreference:` = `ref:`, `netamount:` = `amount:`, `valuedate:` = `date:`, `reviewstate:` = `review:`
395
+
396
+ ### Cash Entries
397
+ `status` `ref` `contact` `currency` `amount` `date` `createdat` `id`
398
+
399
+ Status values: `active` `void`
400
+ Aliases: `reference:` = `ref:`, `payee:` = `contact:`, `curr:` = `currency:`, `balance:` = `amount:`, `valuedate:` = `date:`
259
401
 
260
- ### Cashflow / Bank Entries
261
- `description` `payee` `ref` `status` `review` `id` `amount` `date`
402
+ ### Cash Entry Lines
403
+ `amount` `currency` `ref` `type` `contact` `date` `createdat` `tag` `id`
404
+
405
+ Aliases: `balance:` = `amount:`, `curr:` = `currency:`, `reference:` = `ref:`, `payee:` = `contact:`, `valuedate:` = `date:`
262
406
 
263
407
  ### Contacts
264
408
  `name` `email` `status` `registration` `taxid` `customer` `supplier` `id`
265
409
 
410
+ Status values: `active` `inactive`
411
+ Boolean: `customer:yes` / `customer:no`, `supplier:yes` / `supplier:no`
412
+
266
413
  ### Items / Products
267
- `name` `sku` `status` `type` `id`
414
+ `name` `sku` `status` `id` `costing` `purchasename` `salename` `cogsaccount` `purchaseaccount` `saleaccount`
415
+
416
+ Status values: `active` `inactive`
417
+ Aliases: `item:` / `product:` = `name:`, `code:` = `sku:`
418
+
419
+ ### Fixed Assets
420
+ `name` `ref` `status` `id` `amount` `date`
421
+
422
+ Status values: `registered` `disposed` `draft`
423
+ Aliases: `asset:` = `name:`, `reference:` = `ref:`, `price:` / `cost:` = `amount:`, `purchasedate:` = `date:`
424
+
425
+ ### Disposal Assets
426
+ `name` `ref` `status` `id` `amount` `date` `type` `tag` `bookvalue` `gainloss`
427
+
428
+ Status values: `registered` `disposed` `draft`
429
+ Aliases: `asset:` = `name:`, `reference:` = `ref:`, `price:` / `cost:` = `amount:`, `disposaldate:` = `date:`, `purchasedate:` = purchase date (separate field), `netbook:` = `bookvalue:`, `gain:` / `loss:` = `gainloss:`
430
+
431
+ ### Capsules / Capsule Transactions
432
+ `name` `ref` `status` `id` `date`
433
+
434
+ Aliases: `capsule:` = `name:`, `reference:` = `ref:`, `valuedate:` = `date:`
435
+
436
+ ### Inventory Balance
437
+ `name` `sku` `id`
438
+
439
+ Aliases: `item:` = `name:`, `code:` = `sku:`
440
+
441
+ ### Inventory Transactions
442
+ `ref` `type` `date` `id`
443
+
444
+ Aliases: `reference:` = `ref:`, `valuedate:` = `date:`
445
+
446
+ ### Deposits / Deposit Balances
447
+ `status` `ref` `contact` `id` `amount` `date`
448
+
449
+ Aliases: `reference:` = `ref:`, `customer:` / `supplier:` = `contact:`, `total:` = `amount:`, `valuedate:` = `date:`
450
+
451
+ ### Bank Accounts
452
+ `name` `code` `status` `currency` `id` `balance`
453
+
454
+ Status values: `active` `inactive`
455
+ Aliases: `account:` = `name:`, `curr:` = `currency:`, `amount:` = `balance:`
456
+
457
+ ### Match Transactions (Bank Reconciliation)
458
+ `ref` `contact` `id` `amount` `balance` `date`
459
+
460
+ Aliases: `reference:` = `ref:`, `customer:` / `supplier:` / `payee:` = `contact:`, `total:` = `amount:`, `bal:` = `balance:`, `valuedate:` = `date:`
461
+
462
+ ### Scheduled Transactions (Invoices / Bills / Subscriptions)
463
+ `contact` `customer` `supplier` `ref` `reference` `status` `currency` `curr` `id` `amount` `total` `date` `nextdate` (→ nextScheduleDate)
464
+
465
+ ### Scheduled Journals
466
+ `contact` `customer` `supplier` `ref` `reference` `status` `tag` `tags` `interval` `id` `date` `start` `startdate` (→ startDate) `end` `enddate` `last` `lastdate`
467
+ NOTE: No amount fields — JournalSchedulerFilter has no BigDecimalExpression fields.
468
+
469
+ Interval values: `daily` `weekly` `monthly` `quarterly` `yearly` `onetime`
470
+
471
+ ### Scheduled Line Items (Invoice / Bill / Subscription)
472
+ `name` `item` `desc` `description` `sku` `itemcode` `code` `contact` `customer` `supplier` `currency` `curr` `status` `ref` `reference` `date` `valuedate` (→ businessTransactionValueDate) `start` `startdate` `end` `enddate` `next` `nextdate`
473
+
474
+ Status values: `active` `completed` `cancelled`
475
+
476
+ ### Journal Scheduler Line Items
477
+ `contact` `customer` `supplier` `desc` `description` `currency` `curr` `ref` `reference` `status` `date` `start` `startdate` (→ startDate) `end` `enddate` `next` `nextdate` `id`
478
+
479
+ ### Mandate Batches (E-invoicing)
480
+ `name` `desc` `status` `mandate` `provider` `id` `startdate` `enddate` `createdat` `updatedat` `submissions`
481
+
482
+ Status values: `draft` `submitted` `accepted` `rejected` `cancelled`
483
+ Aliases: `batchname:` = `name:`, `mandatecode:` = `mandate:`, `providercode:` = `provider:`, `periodstart:` = `startdate:`, `periodend:` = `enddate:`, `count:` = `submissions:`
484
+
485
+ ### Mandate Submissions (E-invoicing)
486
+ `ref` `contact` `type` `doctype` `direction` `status` `response` `id` `btid` `submittedat` `responseat` `workflowupdated` `mandate`
487
+
488
+ Direction values: `supply` `purchase`
489
+ Status values: `draft` `queued` `submitted` `accepted` `completed` `rejected` `cancelled` `failed`
490
+ Aliases: `bttype:` = `type:`, `documenttype:` = `doctype:`, `workflowstatus:` = `status:`, `responsestatus:` = `response:`, `btresourceid:` = `btid:`, `workflowupdatedat:` = `workflowupdated:`, `mandatecode:` = `mandate:`
491
+
492
+ ### Sale Orders
493
+ `id` `ref` `date` `due` `approved` `currency` `amount` `customer` `regid` `taxid` `tag` `created` `status` `customfields`
494
+
495
+ ### Sale Order Line Items
496
+ `id` `name` `currency` `amount` `customer` `status` `ref` `date`
497
+
498
+ ### Sale Quotes
499
+ `id` `ref` `date` `due` `currency` `amount` `customer` `regid` `taxid` `tag` `created` `status` `customfields` `signing` `changesrequested`
500
+
501
+ ### Sale Quote Line Items
502
+ `id` `name` `currency` `amount` `customer` `status` `ref` `date`
503
+
504
+ ### Purchase Orders
505
+ `id` `ref` `date` `due` `approved` `currency` `amount` `supplier` `regid` `taxid` `tag` `created` `status` `customfields`
506
+
507
+ ### Purchase Order Line Items
508
+ `id` `name` `currency` `amount` `supplier` `status` `ref` `date`
509
+
510
+ ### Purchase Requests
511
+ `id` `ref` `date` `due` `currency` `amount` `supplier` `regid` `taxid` `tag` `created` `status` `customfields` `signing` `changesrequested`
512
+
513
+ ### Purchase Request Line Items
514
+ `id` `name` `currency` `amount` `supplier` `status` `ref` `date`
515
+
516
+ ### Employees / Directory
517
+ `id` `name` `email` `phone` `currency` `employmenttype` `beneficiary` `paymentmethod` `manager` `claimprofile` `created` `updated`
518
+
519
+ ### Employees / Claims
520
+ `id` `ref` `currency` `date` `created` `amount` `employee` `vendor` `customfields` `hasattachment` `createdby` `changesrequested`
521
+
522
+ ### Employees / Payouts
523
+ `employee` `ref` `type` `valuedate`
268
524
 
269
525
  ---
270
526
 
@@ -289,6 +545,12 @@ NOT status:void sort:amount:desc
289
545
  # Find negative journal entries in a date range
290
546
  $-1000 to -5000 AND date:feb-mar 2025
291
547
 
548
+ # Match transactions between $4k and $5k for reconciliation
549
+ amount:4k to 5k
550
+
551
+ # Find purchases over $2 million
552
+ supplier:acme AND amount:>2m
553
+
292
554
  # Find all unpaid purchases from a specific supplier in EUR
293
555
  supplier:acme AND status:unpaid AND currency:EUR
294
556
 
@@ -300,4 +562,22 @@ taxid:T1234567
300
562
 
301
563
  # Find all transactions with balance > 0 and due before today
302
564
  balance:>0 AND duedate:<2026-03-15
565
+
566
+ # Find unreconciled bank entries above $1,000
567
+ status:unreconciled AND $1000+
568
+
569
+ # Find manual journals from this month
570
+ type:manual AND date:this month
571
+
572
+ # Find active items of type service
573
+ status:active AND type:service
574
+
575
+ # Find registered fixed assets purchased this year
576
+ status:registered AND date:this year
577
+
578
+ # Find batch e-invoice submissions that were rejected
579
+ status:rejected
580
+
581
+ # Find capsules with no reference
582
+ ref:blank
303
583
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-cli
3
- version: 5.44.0
3
+ version: 5.45.0
4
4
  description: >-
5
5
  Use this skill when running Clio CLI commands, building shell scripts with
6
6
  Clio, debugging auth issues, understanding --json output, paginating results,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-conversion
3
- version: 5.44.0
3
+ version: 5.45.0
4
4
  description: >-
5
5
  Use this skill when migrating accounting data into Jaz — importing from Xero,
6
6
  QuickBooks, Sage, MYOB, or Excel exports. Covers the full conversion pipeline:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-kit
3
- version: 5.44.0
3
+ version: 5.45.0
4
4
  description: >-
5
5
  Use this skill when an accountant, bookkeeper, or owner is running real books
6
6
  in Jaz across one or more organizations from the terminal — setting up a
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-pseudo-sql
3
- version: 5.44.0
3
+ version: 5.45.0
4
4
  description: >-
5
5
  Use this skill when answering ad-hoc data questions that aren't covered by
6
6
  download_export (canonical reports — anomaly, audit, aging, P&L, BS, GL,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-jobs
3
- version: 5.44.0
3
+ version: 5.45.0
4
4
  description: >-
5
5
  Use this skill for recurring accounting workflows — month/quarter/year-end
6
6
  close, bank reconciliation, GST/VAT filing, payment runs, credit control,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-recipes
3
- version: 5.44.0
3
+ version: 5.45.0
4
4
  description: >-
5
5
  Use this skill when modeling complex multi-step accounting transactions —
6
6
  anything that spans multiple periods, involves changing amounts, or requires