jaz-clio 5.40.3 → 5.40.4
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.
- package/assets/skills/api/SKILL.md +2 -2
- package/assets/skills/api/references/endpoints.md +2 -2
- package/assets/skills/api/references/errors.md +2 -10
- package/assets/skills/api/references/field-map.md +1 -1
- package/assets/skills/api/references/full-api-surface.md +1 -1
- package/assets/skills/cli/SKILL.md +1 -1
- package/assets/skills/conversion/SKILL.md +1 -1
- package/assets/skills/conversion/references/mapping-rules.md +1 -1
- package/assets/skills/jaz-kit/SKILL.md +1 -1
- package/assets/skills/jaz-pseudo-sql/SKILL.md +1 -1
- package/assets/skills/jobs/SKILL.md +1 -1
- package/assets/skills/transaction-recipes/SKILL.md +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jaz-api
|
|
3
|
-
version: 5.40.
|
|
3
|
+
version: 5.40.4
|
|
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
|
|
@@ -164,7 +164,7 @@ The rest of this skill — field names, gotchas, error catalog, dependency order
|
|
|
164
164
|
38. **All list/search endpoints use `limit`/`offset` pagination** — NOT `page`/`size`. **`offset` is a 0-indexed PAGE NUMBER, not a row-skip** (offset=1 = second page of `limit` rows). Default limit=100, offset=0. Max limit=1000, max offset=65536. `page`/`size` params are silently ignored. Response shape: `{ totalPages, totalElements, truncated, data: [...] }`. When `truncated: true`, a `_meta: { fetchedRows, maxRows }` field explains why (offset cap or `--max-rows` soft cap — default 10,000). Use `--max-rows <n>` to override. Always check `truncated` before assuming the full dataset was returned. **Payload tier (`view`) — page-then-drill:** `search_*` and the lean `list_*` tools (invoices, bills, contacts, items, journals, customer/supplier credit notes, sale/purchase orders) return a **compact summary row by default** (`view:"lean"` — id + reference/status/date/contact/amount). Search lean to FIND a record, then read it in full via its `get_*`; pass `view:"full"` only when you need whole rows up front (heavier — avoid for broad searches). Other collections always return full. CLI defaults to full; use `--view lean`.
|
|
165
165
|
|
|
166
166
|
### Other
|
|
167
|
-
39. **Currency rates use `/organization/currencies/:code/rates`** — enable currencies first via `POST /organization/currencies`, then set rates via `POST /organization/currencies/:code/rates` with body `{ "rate": 0.74, "rateApplicableFrom": "YYYY-MM-DD" }` (see Rule 49 for direction). The older hyphenated `/organization-currencies/...` rate paths still resolve but are
|
|
167
|
+
39. **Currency rates use `/organization/currencies/:code/rates`** — enable currencies first via `POST /organization/currencies`, then set rates via `POST /organization/currencies/:code/rates` with body `{ "rate": 0.74, "rateApplicableFrom": "YYYY-MM-DD" }` (see Rule 49 for direction). The older hyphenated `/organization-currencies/...` rate paths still resolve but are **superseded**: treat the nested form as the only supported path. The reference is migrating away from the hyphenated form, so do not rely on it being documented. Cannot set rates for org base currency. Full CRUD: POST (create), GET (list), GET/:id, PUT/:id, DELETE/:id.
|
|
168
168
|
40. **FX invoices/bills MUST use `currency` object** — `currencyCode: "USD"` (string) is **silently ignored** (transaction created in base currency!). Use `currency: { sourceCurrency: "USD" }` to auto-fetch platform rate (ECB/FRANKFURTER), or `currency: { sourceCurrency: "USD", exchangeRate: 0.74 }` for a custom rate. Rate hierarchy: org rate → platform/ECB → transaction-level. **Direction**: `exchangeRate` is functionalToSource (1 org-base unit = N `sourceCurrency`) — usually the inverse of a quoted rate. Pass your figure as-is with `rateDirection` rather than inverting by hand; Rule 49.
|
|
169
169
|
41. **Invoice GET uses `organizationAccountResourceId`** for line item accounts — POST uses `accountResourceId`. Request-side aliases resolve `issueDate` → `valueDate`, `bankAccountResourceId` → `accountResourceId`, etc.
|
|
170
170
|
42. **Scheduler GET returns `interval`** — POST uses `repeat`. (Response-side asymmetry remains.)
|
|
@@ -67,7 +67,7 @@ All GET list endpoints and POST `/search` endpoints use **`limit`/`offset` pagin
|
|
|
67
67
|
| Async batch kickoff (`/bulk-request-changes`, claims `bulk/*`) | **202** |
|
|
68
68
|
| Quick Fix / bulk partial failure | **207** (body shape identical to 200 — check `failed[]`) |
|
|
69
69
|
|
|
70
|
-
**Changed 2026-08-10**: seven `PUT` endpoints moved 201 → 200 — `/bills/{id}`, `/contacts/{id}`, `/nano-classifiers/{id}`, `/items/{id}`, `/journals/{id}`, `/scheduled/journals/{id}`, `/organization
|
|
70
|
+
**Changed 2026-08-10**: seven `PUT` endpoints moved 201 → 200 — `/bills/{id}`, `/contacts/{id}`, `/nano-classifiers/{id}`, `/items/{id}`, `/journals/{id}`, `/scheduled/journals/{id}`, `/organization/currencies/{code}/rates/{id}`. Request shapes and response bodies are byte-identical; only the status changed. The same release corrected 114 published success codes that disagreed with what the endpoints actually returned, so the API reference now matches runtime everywhere. A client that asserted `status === 201` on an update breaks; one that checks `response.ok` does not.
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
@@ -308,7 +308,7 @@ Enable currencies first, then set rates via the **separate** rate endpoints belo
|
|
|
308
308
|
|
|
309
309
|
### Currency Rates — `/organization/currencies/:code/rates`
|
|
310
310
|
|
|
311
|
-
**Path note**: both enable and rates live under the nested `/organization/currencies` family. The older hyphenated `/organization-currencies/...` rate paths still resolve but are
|
|
311
|
+
**Path note**: both enable and rates live under the nested `/organization/currencies` family. The older hyphenated `/organization-currencies/...` rate paths still resolve but are **superseded**. Use the nested form; do not rely on the hyphenated one being documented.
|
|
312
312
|
|
|
313
313
|
#### POST /api/v1/organization/currencies/:currencyCode/rates
|
|
314
314
|
|
|
@@ -182,16 +182,8 @@ Valid `type` values: `"TEXT"`, `"DATE"`, `"DROPDOWN"` (UPPERCASE).
|
|
|
182
182
|
- `/api/v1/organization/currencies/USD/rate` → 404 (singular)
|
|
183
183
|
- `/api/v1/organization/currencies/{id}/rate` → 404 (singular)
|
|
184
184
|
**Fix**: Rate endpoints live under the nested `/organization/currencies` family. The older
|
|
185
|
-
hyphenated `/organization-currencies/...` rate paths still resolve but are
|
|
186
|
-
**
|
|
187
|
-
```
|
|
188
|
-
POST /api/v1/organization/currencies/:currencyCode/rates Set rate
|
|
189
|
-
GET /api/v1/organization/currencies/:currencyCode/rates List rates
|
|
190
|
-
GET /api/v1/organization/currencies/:currencyCode/rates/:id Get rate
|
|
191
|
-
PUT /api/v1/organization/currencies/:currencyCode/rates/:id Update rate
|
|
192
|
-
DELETE /api/v1/organization/currencies/:currencyCode/rates/:id Delete rate
|
|
193
|
-
```
|
|
194
|
-
Enable currencies first via `POST /organization/currencies`, then set rates via `/organization/currencies/:code/rates`.
|
|
185
|
+
hyphenated `/organization-currencies/...` rate paths still resolve but are
|
|
186
|
+
**superseded** — use the nested form.
|
|
195
187
|
|
|
196
188
|
### "Cannot set rate for organization base currency" (400)
|
|
197
189
|
**Cause**: Trying to POST/PUT a rate for the org's base currency (e.g., SGD for a Singapore org).
|
|
@@ -462,7 +462,7 @@ DELETE → expects "A" (parentEntityResourceId, via /cash-entries/:id)
|
|
|
462
462
|
|
|
463
463
|
| What You'd Guess | Actual API Field | Notes |
|
|
464
464
|
|------------------|-------------------|-------|
|
|
465
|
-
| `/organization-currencies/:code/rates` (older docs) | `/organization/currencies/:code/rates` | Nested path is
|
|
465
|
+
| `/organization-currencies/:code/rates` (older docs) | `/organization/currencies/:code/rates` | Nested path is the supported one; the hyphenated form still resolves but is **superseded** |
|
|
466
466
|
| `exchangeRate` (rate POST body) | `rate` | Just `rate`, not `exchangeRate` |
|
|
467
467
|
| `effectiveDate` / `valueDate` / `date` | `rateApplicableFrom` | Rate start date, `YYYY-MM-DD` only |
|
|
468
468
|
| `expiryDate` | `rateApplicableTo` | Optional rate end date |
|
|
@@ -317,7 +317,7 @@ Body for all three: `{ items: [{btResourceId: "<uuid>", btType: "SALE|PURCHASE|S
|
|
|
317
317
|
| DELETE | `/organization/currencies/:currencyCode/rates/:resourceId` | Delete rate |
|
|
318
318
|
| POST | `/organization/currencies/rates/bulk-upsert` | Bulk create exchange rates (max 500, auto-enables currencies) |
|
|
319
319
|
|
|
320
|
-
**Path note**: rate management, enable/disable and bulk-upsert all live under the nested `/organization/currencies` family. The older hyphenated `/organization-currencies/...` rate paths still resolve but are
|
|
320
|
+
**Path note**: rate management, enable/disable and bulk-upsert all live under the nested `/organization/currencies` family. The older hyphenated `/organization-currencies/...` rate paths still resolve but are **superseded**. Use the nested form; do not rely on the hyphenated one being documented. POST body: `{ "rate": 0.74, "rateApplicableFrom": "YYYY-MM-DD" }` (rate = 1 base → X foreign; see endpoints.md for direction details). Base currency rates return 400. See endpoints.md for full examples.
|
|
321
321
|
|
|
322
322
|
---
|
|
323
323
|
|
|
@@ -231,7 +231,7 @@ POST /api/v1/organization/currencies/<code>/rates
|
|
|
231
231
|
|
|
232
232
|
**Rate direction:** `functionalToSource` — how many units of SOURCE (foreign) currency = 1 unit of FUNCTIONAL (base) currency. Example: base SGD, 1 SGD = 0.74 USD → rate = 0.74. A quote written foreign-first ("1 USD = 1.35 SGD") is the inverse — send 1/1.35 = 0.74, or send 1.35 with `rateDirection: "SOURCE_TO_FUNCTIONAL"` and let the endpoint apply it. Omitting `rateDirection` means `FUNCTIONAL_TO_SOURCE`.
|
|
233
233
|
|
|
234
|
-
**Note:** Rate endpoints and enable/disable both live under the nested `/organization/currencies` family. The older hyphenated `/organization-currencies/...` rate paths are **
|
|
234
|
+
**Note:** Rate endpoints and enable/disable both live under the nested `/organization/currencies` family. The older hyphenated `/organization-currencies/...` rate paths still resolve but are **superseded**; use the nested form.
|
|
235
235
|
|
|
236
236
|
**CRITICAL:** The field is `rateApplicableFrom` (NOT `effectiveDate`). Using the wrong field name will silently fail.
|
|
237
237
|
|