jaz-clio 5.73.1 → 5.73.2
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 +4 -4
- package/assets/skills/api/references/claims.md +2 -1
- package/assets/skills/api/references/endpoints.md +52 -21
- package/assets/skills/api/references/errors.md +2 -2
- package/assets/skills/api/references/feature-glossary.md +3 -3
- package/assets/skills/api/references/field-map.md +2 -2
- package/assets/skills/api/references/full-api-surface.md +8 -7
- package/assets/skills/cli/SKILL.md +1 -1
- package/assets/skills/conversion/SKILL.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/cli.mjs +4 -4
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jaz-api
|
|
3
|
-
version: 5.73.
|
|
3
|
+
version: 5.73.2
|
|
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
|
|
@@ -215,7 +215,7 @@ The rest of this skill — field names, gotchas, error catalog, dependency order
|
|
|
215
215
|
73. **Capsules PUT requires `resourceId` + `capsuleTypeResourceId`** — Even for partial updates, `PUT /capsules/:id` requires `resourceId` and `capsuleTypeResourceId` in the body. Omitting either causes 422 or "Capsule type not found". Use read-modify-write pattern: GET current capsule, merge updates, PUT full payload. Clio handles this automatically.
|
|
216
216
|
|
|
217
217
|
### Cash Entry Response Shape (CRITICAL)
|
|
218
|
-
74. **Cash-in/out/transfer CREATE returns `parentEntityResourceId
|
|
218
|
+
74. **Cash-in/out/transfer CREATE returns `parentEntityResourceId`**: the resourceId in the POST response (`{ data: { resourceId: "X" } }`) is the journal header's `parentEntityResourceId`. This ID is used for DELETE (`DELETE /cash-entries/X`) and PUT. GET (`GET /cash-in-entries/:id`) accepts either the cashflow-transaction `resourceId` from the LIST response or this `parentEntityResourceId`. Three different IDs exist per cash entry: `parentEntityResourceId` (from CREATE + in LIST), `resourceId` (cashflow-transaction ID, from LIST, also accepted by GET), `businessTransactionResourceId` (underlying journal ID, do NOT use for anything).
|
|
219
219
|
75. **Cash-in/out/transfer LIST/GET return cashflow-transaction shape** — NOT journal shape. Key field differences from journals: `transactionReference` (NOT `reference`), `transactionStatus` (NOT `status` — values: `ACTIVE`/`VOID`), `valueDate` is epoch ms (NOT ISO string), no `journalEntries` array, has `direction` (`PAYIN`/`PAYOUT`), has nested `account` object with bank name, has `businessTransactionType` (`JOURNAL_DIRECT_CASH_IN`/`JOURNAL_DIRECT_CASH_OUT`/`JOURNAL_CASH_TRANSFER`).
|
|
220
220
|
76. **Cash-in/out/transfer search uses `/cashflow-transactions/search`** — Filter by `businessTransactionType: { eq: "JOURNAL_DIRECT_CASH_IN" }` (or `JOURNAL_DIRECT_CASH_OUT` or `JOURNAL_CASH_TRANSFER`). Other useful filters: `organizationAccountResourceId` (bank account), `businessTransactionReference` (reference), `valueDate` (date range). The search endpoint is shared across all cashflow transaction types.
|
|
221
221
|
77. **DELETE for cash entries uses `/cash-entries/:id`** — NOT the individual resource paths. The ID used is the `parentEntityResourceId` (= the resourceId returned by CREATE). This is a shared endpoint for all cash entry types (cash-in, cash-out, cash-transfer).
|
|
@@ -329,7 +329,7 @@ Bills, invoices, and credit notes share identical mandatory field specs. Adding
|
|
|
329
329
|
94. **Scheduled transaction search does NOT support `createdAt` sort** — `POST /scheduled-transaction/search` sort fields: `startDate`, `nextScheduleDate`, etc. Default to `startDate` DESC. This is a cross-entity search across all scheduled types (invoices, bills, journals, subscriptions). Filter by `businessTransactionType` (SALE, PURCHASE, JOURNAL) and/or `schedulerType` (RECURRING, SUBSCRIPTION) to narrow results.
|
|
330
330
|
|
|
331
331
|
### Contact Groups
|
|
332
|
-
96. **Contact groups have `associatedContacts` array
|
|
332
|
+
96. **Contact groups have `associatedContacts` array**: each group contains `{ name, resourceId, associatedContacts: [{ name, resourceId }] }`. Search via `POST /contact-groups/search`.
|
|
333
333
|
|
|
334
334
|
### Inventory
|
|
335
335
|
97. **Inventory balances: one item or all.** One item: `GET /inventory-item-balance/:itemResourceId` (`get_inventory_balance`) returns `{ itemResourceId, latestAverageCostAmount, baseQty, baseUnit }`; the id is the ITEM resourceId, not an inventory-specific ID. All items: `GET /inventory-balances/:balanceStatus` (`list_inventory_balances`, `clio inventory balances --status`) with `balanceStatus` one of `ALL`, `AVAILABLE`, `FULLY_DRAWN` (anything else is 422); rows carry `itemCode`, `internalName`, `totalQuantity`, `baseUnit`, `averageCostAmount`, `balanceAmount`. The API answers an empty result with 404; the tool and CLI return it as `data: []`. `offset` is a page number here, though the spec says row (probed live 2026-09-23).
|
|
@@ -374,7 +374,7 @@ Bills, invoices, and credit notes share identical mandatory field specs. Adding
|
|
|
374
374
|
111. **Quick-fix uses `tags` (string array) — e.g., `"tags": ["Q1"]`** — The `attributes` object in quick-fix transaction endpoints accepts `tags` as a string array (e.g., `"tags": ["Q1"]`). `tag` (singular) is silently ignored. This matches the `tags` array format used on create/update for all transaction types. The CLI `--tag` flag auto-wraps to `tags: [name]`.
|
|
375
375
|
|
|
376
376
|
### Sub-Resource Response Shapes
|
|
377
|
-
112. **Invoice/bill payment & credit sub-resources
|
|
377
|
+
112. **Invoice/bill payment & credit sub-resources: two shapes** (read from the API source; payments and the empty-credits case measured raw 2026-09-24). `GET /invoices/:id/payments` and `GET /bills/:id/payments` return `{ data: [{paymentRecord}, ...] }` (Rule 64). `GET /invoices/:id/credits` and `GET /bills/:id/credits` return `{ TotalElements, data: [...] }` when credits are applied but a BARE `[]` when none are. The CLI and tools normalize all of these to `{data: [...]}`. `DELETE /invoices/:id/credits/:creditsAppliedResourceId` reverses a credit application.
|
|
378
378
|
|
|
379
379
|
### Nano-Classifier API
|
|
380
380
|
113. **Nano-classifier API gotchas** — CREATE uses `classes: string[]` (NOT `classNames` or `[{className}]`). `printable: boolean` is required — defaults to `false` (most classifiers are not printable). GET single is double-wrapped: `{data: {data: [...], totalElements, totalPages}}` — extract the first element from the inner paginated response. GET/LIST response returns classes as `[{className, resourceId}]` (objects), while CREATE accepts plain `string[]`.
|
|
@@ -20,7 +20,8 @@ employee** automatically (server resolves it at enqueue) — no `search_claims`
|
|
|
20
20
|
don't pre-check). No bound employee on the uploader (a service / shared-key identity) →
|
|
21
21
|
the server leaves it unbound; relay that ("not set up for claims"), don't invent one. The
|
|
22
22
|
OCR'd draft may also carry no `reference` — if a later submit returns
|
|
23
|
-
`CLAIM_REFERENCE_REQUIRED_AT_SUBMIT`,
|
|
23
|
+
`CLAIM_REFERENCE_REQUIRED_AT_SUBMIT`, read the next number with `get_next_reference` (type
|
|
24
|
+
`CLAIM`) and pass it as `reference` on `update_claim` (it has no autoReference).
|
|
24
25
|
|
|
25
26
|
## Claim records (`claims` + `claim_processing` namespaces)
|
|
26
27
|
|
|
@@ -787,7 +787,7 @@ Same shape as list items, wrapped in `{ data: {...} }`. Use the `resourceId` fro
|
|
|
787
787
|
### PUT /api/v1/cash-in-entries/:resourceId
|
|
788
788
|
### PUT /api/v1/cash-out-entries/:resourceId
|
|
789
789
|
|
|
790
|
-
Same request body as POST. Use
|
|
790
|
+
Same request body as POST. Use the `parentEntityResourceId` (= the CREATE-returned resourceId).
|
|
791
791
|
|
|
792
792
|
### DELETE /api/v1/cash-entries/:resourceId
|
|
793
793
|
|
|
@@ -801,7 +801,7 @@ Shared delete endpoint for ALL cash entry types (cash-in, cash-out, cash-transfe
|
|
|
801
801
|
**CRITICAL ID gotcha (verified via live testing)**:
|
|
802
802
|
- CREATE returns `resourceId = A` (this is `parentEntityResourceId`)
|
|
803
803
|
- LIST returns `resourceId = B` (cashflow-transaction ID), `parentEntityResourceId = A`
|
|
804
|
-
- GET
|
|
804
|
+
- GET accepts `B` (cashflow-transaction ID) or `A` (parentEntityResourceId; a transfer's two rows share one `A`, so GET by `A` returns the first)
|
|
805
805
|
- DELETE expects `A` (parentEntityResourceId, via `/cash-entries/A`)
|
|
806
806
|
- `businessTransactionResourceId = C` (underlying journal ID) — do NOT use for any CRUD operation
|
|
807
807
|
|
|
@@ -1056,7 +1056,7 @@ Same cashflow-transaction response shape as cash-in/out list. `businessTransacti
|
|
|
1056
1056
|
|
|
1057
1057
|
### GET /api/v1/cash-transfers/:resourceId
|
|
1058
1058
|
|
|
1059
|
-
|
|
1059
|
+
Accepts the cashflow-transaction `resourceId` from LIST or the `parentEntityResourceId` from CREATE (both legs share it; GET by it returns the first). Returns same shape wrapped in `{ data: {...} }`.
|
|
1060
1060
|
|
|
1061
1061
|
**Cash transfers have NO update (PUT) endpoint.**
|
|
1062
1062
|
|
|
@@ -2345,37 +2345,40 @@ Update an existing payment record. All fields optional — only included fields
|
|
|
2345
2345
|
|
|
2346
2346
|
## 19b. Invoice/Bill Sub-Resource Endpoints
|
|
2347
2347
|
|
|
2348
|
-
### GET /api/v1/invoices/{resourceId}/payments
|
|
2348
|
+
### GET /api/v1/invoices/{resourceId}/payments
|
|
2349
2349
|
|
|
2350
2350
|
```json
|
|
2351
|
-
// Response (
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2351
|
+
// Response ({data: [...]} envelope):
|
|
2352
|
+
{
|
|
2353
|
+
"data": [
|
|
2354
|
+
{
|
|
2355
|
+
"resourceId": "uuid-payment",
|
|
2356
|
+
"paymentAmount": 2250.00,
|
|
2357
|
+
"transactionAmount": 2250.00,
|
|
2358
|
+
"valueDate": 1709251200000,
|
|
2359
|
+
"paymentMethod": "BANK_TRANSFER",
|
|
2360
|
+
"reference": "PAY-001"
|
|
2361
|
+
}
|
|
2362
|
+
]
|
|
2363
|
+
}
|
|
2362
2364
|
```
|
|
2363
2365
|
|
|
2364
|
-
Same for `GET /bills/{resourceId}/payments
|
|
2366
|
+
Same envelope for `GET /bills/{resourceId}/payments`.
|
|
2365
2367
|
|
|
2366
|
-
**CRITICAL**:
|
|
2368
|
+
**CRITICAL**: `GET /invoices/{resourceId}/credits` and `GET /bills/{resourceId}/credits` differ:
|
|
2369
|
+
`{ "TotalElements": n, "data": [...] }` when credits are applied, but a BARE `[]` when none
|
|
2370
|
+
are (read from the API source; the empty case measured raw 2026-09-24). The CLI and tools normalize both to `{data: [...]}`.
|
|
2367
2371
|
|
|
2368
2372
|
---
|
|
2369
2373
|
|
|
2370
|
-
## 19c. Request Changes
|
|
2374
|
+
## 19c. Request Changes
|
|
2371
2375
|
|
|
2372
2376
|
Sends a **submitted** record back to its creator for edits: the record returns to draft, its
|
|
2373
2377
|
approval markers are cleared, and `message` is posted as the first comment on a new
|
|
2374
2378
|
collaboration thread. Records in any other state are skipped and reported in the response.
|
|
2375
2379
|
|
|
2376
|
-
> **
|
|
2377
|
-
> `
|
|
2378
|
-
> tool that does not exist.
|
|
2380
|
+
> **Wrapped.** MCP tools `request_document_changes` / `bulk_request_document_changes`, CLI
|
|
2381
|
+
> `clio approvals request-changes` / `clio approvals bulk-request-changes`.
|
|
2379
2382
|
|
|
2380
2383
|
Nine entities, each with a single-record and a bulk form:
|
|
2381
2384
|
|
|
@@ -2440,6 +2443,34 @@ the job was accepted.
|
|
|
2440
2443
|
|
|
2441
2444
|
---
|
|
2442
2445
|
|
|
2446
|
+
## 19d. Approve
|
|
2447
|
+
|
|
2448
|
+
Approves a record awaiting approval. **Irreversible**: it posts the ledger (and for invoices and
|
|
2449
|
+
bills also confirms a linked order and consumes the document reference). There is nothing to undo, and approving is one-shot
|
|
2450
|
+
(a record not awaiting approval, including an already-approved one, is refused).
|
|
2451
|
+
MCP tools `approve_documents` / `bulk_approve_documents`, CLI `clio approvals approve` /
|
|
2452
|
+
`clio approvals bulk-approve`. Four entities: `invoices`, `bills`, `customer-credit-notes`,
|
|
2453
|
+
`supplier-credit-notes` (claims approve through their own claims routes).
|
|
2454
|
+
|
|
2455
|
+
| Form | Route | Response |
|
|
2456
|
+
|------|-------|----------|
|
|
2457
|
+
| Single | `POST /api/v1/{entity}/:resourceId/approve` (no body) | 200, `{ "data": { "records": [ { resourceId, status, approvalStatus, isSuccess, failureReason, errorCode } ] } }` |
|
|
2458
|
+
| Bulk | `POST /api/v1/{entity}/bulk-approve` | 202, job handle (same shape as 19c bulk); poll `POST /api/v1/background-jobs/search` |
|
|
2459
|
+
|
|
2460
|
+
- Bulk body `{ "resourceIds": [...] }`: 1-100 **unique** UUIDs. Over 100 or a duplicate is 422
|
|
2461
|
+
with nothing written.
|
|
2462
|
+
- Single form: an id not found in your organization is 404.
|
|
2463
|
+
- An id not found in your organization rejects the **whole** bulk batch with 422 and no job is
|
|
2464
|
+
dispatched: fix the list and retry.
|
|
2465
|
+
- Bulk: records not awaiting approval are skipped and reported on the job tasks; only a foreign
|
|
2466
|
+
id fails the batch.
|
|
2467
|
+
- Refusal channel differs: invoices/bills return 422 on a refused single approve; credit notes
|
|
2468
|
+
return 200 with `isSuccess: false` while `approvalStatus` still reads the document's state.
|
|
2469
|
+
Check `isSuccess`, never `approvalStatus`.
|
|
2470
|
+
- On a timeout or 500, read the record back and check its approval status before retrying.
|
|
2471
|
+
|
|
2472
|
+
---
|
|
2473
|
+
|
|
2443
2474
|
## 20. Nano-Classifier CRUD
|
|
2444
2475
|
|
|
2445
2476
|
### POST /api/v1/nano-classifiers — Create
|
|
@@ -869,7 +869,7 @@ The same applies on update: `PUT /cash-in-entries/:id` with `saveAsDraft: true`
|
|
|
869
869
|
|
|
870
870
|
**"INACTIVE_OR_DELETED_ACCOUNT"** — The account referenced in the update is deleted or inactive. Verify the account UUID is valid and active.
|
|
871
871
|
|
|
872
|
-
**"Cannot update ACTIVE entry"
|
|
872
|
+
**"Cannot update ACTIVE entry"**: a per-record quick-fix failure. Do NOT void and recreate; edit the record with its own update tool: `update_invoice` / `update_bill` / `update_cash_in` / `update_cash_out` / `update_journal`.
|
|
873
873
|
|
|
874
874
|
**"TRANSACTION_LOCKED"** — Transaction is in a locked period. Cannot update.
|
|
875
875
|
|
|
@@ -914,7 +914,7 @@ Two of the seven never reach you through this path: a zero `adjustmentValue` and
|
|
|
914
914
|
|
|
915
915
|
### Sub-Resource Response Errors
|
|
916
916
|
|
|
917
|
-
**`Cannot read property 'data'` / TypeError
|
|
917
|
+
**`Cannot read property 'data'` / TypeError**: `GET /invoices/:id/credits` and `GET /bills/:id/credits` return a BARE `[]` when no credits are applied (else `{TotalElements, data}`), so `.data` on the empty case fails. Accept both shapes. The `/payments` sub-resources always answer `{data: [...]}`.
|
|
918
918
|
|
|
919
919
|
---
|
|
920
920
|
|
|
@@ -14,7 +14,7 @@ Key capabilities: draft/approval workflows, multi-currency (auto-fetch ECB rates
|
|
|
14
14
|
|
|
15
15
|
If payment date equals invoice date, it's recorded as a cash transaction (not AR). Transaction fees are deducted from cash received, and a payment `adjustment` shifts the cash leg further (net cash = paymentAmount - feesCharged + feesCollected +/- adjustmentValue) without touching AR. RGL = `(Invoice payment / Transaction Rate) - (Cash received / Payment Rate)`.
|
|
16
16
|
|
|
17
|
-
**API**: CRUD `GET/POST/PUT/DELETE /invoices`, `POST /invoices/search`, `POST /invoices/:id/payments`, `GET /invoices/:id/payments`, `POST /invoices/:id/credits`, `GET /invoices/:id/download`, `POST/GET/DELETE /invoices/:id/attachments`, `
|
|
17
|
+
**API**: CRUD `GET/POST/PUT/DELETE /invoices`, `POST /invoices/search`, `POST /invoices/:id/payments`, `GET /invoices/:id/payments`, `POST /invoices/:id/credits`, `GET /invoices/:id/download`, `POST/GET/DELETE /invoices/:id/attachments`, `POST /invoices/:id/approve`, `POST /scheduled/invoices` (CRUD), `POST /scheduled/subscriptions` (recurring). Generic payment ops: `GET/PUT/DELETE /payments/:id`. **Starting from a PDF/JPG attachment?** Use `POST /magic/createBusinessTransactionFromAttachment` instead: Jaz Magic handles extraction & autofill (see AI Agents section).
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
@@ -40,7 +40,7 @@ Key capabilities: bill receipts (short-form template creating bill + payment tog
|
|
|
40
40
|
|
|
41
41
|
Transaction fees are added to cash spent (not deducted like invoices), and a payment `adjustment` shifts the cash leg further without touching AP. RGL = `(Cash spent / Payment rate) - (Bill payment / Transaction rate)`.
|
|
42
42
|
|
|
43
|
-
**API**: CRUD `GET/POST/PUT/DELETE /bills`, `POST /bills/search`, `POST /bills/:id/payments`, `GET /bills/:id/payments`, `POST /bills/:id/credits`, `POST/GET/DELETE /bills/:id/attachments`, `
|
|
43
|
+
**API**: CRUD `GET/POST/PUT/DELETE /bills`, `POST /bills/search`, `POST /bills/:id/payments`, `GET /bills/:id/payments`, `POST /bills/:id/credits`, `POST/GET/DELETE /bills/:id/attachments`, `POST /bills/:id/approve`, `POST /scheduled/bills` (CRUD). Generic payment ops: `GET/PUT/DELETE /payments/:id`. **Starting from a PDF/JPG attachment?** Use `POST /magic/createBusinessTransactionFromAttachment` instead: Jaz Magic handles extraction & autofill (see AI Agents section).
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
@@ -179,7 +179,7 @@ Statement amounts are recorded in the bank account's currency — no auto-conver
|
|
|
179
179
|
|
|
180
180
|
Workflow for draft invoices and bills requiring admin sign-off before activation. Three user roles: Admins (approve + create active), Preparers (submit drafts for approval), Members (submit own drafts only). Status progression: Draft → For Approval → Approved (active). Approval PDFs capture Submitted By / Approved By audit trail.
|
|
181
181
|
|
|
182
|
-
**API**: `
|
|
182
|
+
**API**: `POST /{invoices|bills|customer-credit-notes|supplier-credit-notes}/:id/approve` and `/bulk-approve` (irreversible: posts the ledger), `POST /{entity}/:id/request-changes` (endpoints.md sections 19c, 19d)
|
|
183
183
|
|
|
184
184
|
---
|
|
185
185
|
|
|
@@ -327,10 +327,10 @@ PUT URL: `/cash-in-entries/:parentEntityResourceId` (or `/cash-out-entries/:id`)
|
|
|
327
327
|
|
|
328
328
|
```
|
|
329
329
|
CREATE → { resourceId: "A" } ← This is parentEntityResourceId
|
|
330
|
-
LIST → { resourceId: "B", ← This is the cashflow-transaction ID (
|
|
330
|
+
LIST → { resourceId: "B", ← This is the cashflow-transaction ID (GET accepts it)
|
|
331
331
|
businessTransactionResourceId: "C", ← underlying journal ID (don't use)
|
|
332
332
|
parentEntityResourceId: "A" } ← matches CREATE response
|
|
333
|
-
GET →
|
|
333
|
+
GET → accepts "B" (cashflow-transaction ID) or "A" (parentEntityResourceId)
|
|
334
334
|
PUT → expects "A" (parentEntityResourceId) — body needs resourceId: "A"
|
|
335
335
|
DELETE → expects "A" (parentEntityResourceId, via /cash-entries/:id)
|
|
336
336
|
```
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
>
|
|
10
10
|
> **Paths below are written without the `/api/v1` prefix.** Every one of them is really
|
|
11
11
|
> `/api/v1/<path>`. Recent additions not yet folded into the tables are listed at the end
|
|
12
|
-
> under "2026-
|
|
12
|
+
> under "Additions since 2026-07-11".
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
| DELETE | `/invoices/:resourceId` | Delete invoice |
|
|
49
49
|
| GET | `/invoices/:resourceId/download` | Download PDF |
|
|
50
50
|
| POST | `/invoices/:resourceId/payments` | Record payment(s) |
|
|
51
|
-
| GET | `/invoices/:resourceId/payments` | List recorded payments
|
|
51
|
+
| GET | `/invoices/:resourceId/payments` | List recorded payments (`{data: [...]}`) |
|
|
52
52
|
| POST | `/invoices/:resourceId/credits` | Apply credit note(s) |
|
|
53
|
-
| GET | `/invoices/:resourceId/credits` | List applied credits
|
|
53
|
+
| GET | `/invoices/:resourceId/credits` | List applied credits (**bare `[]` when none applied**, else `{TotalElements, data}`) |
|
|
54
54
|
| DELETE | `/invoices/:resourceId/credits/:creditsAppliedResourceId` | Reverse credit |
|
|
55
55
|
| GET | `/invoices/:resourceId/attachments` | List attachments |
|
|
56
56
|
| POST | `/invoices/:resourceId/attachments` | Upload attachment |
|
|
@@ -705,7 +705,7 @@ These features exist in the Jaz platform and may affect API responses or cause u
|
|
|
705
705
|
- Bills and invoices can be submitted for approval workflow
|
|
706
706
|
- Only admin users (AP permission) can approve submitted bills
|
|
707
707
|
- API-created transactions with `saveAsDraft: false` bypass approval workflow
|
|
708
|
-
-
|
|
708
|
+
- Approve and request-changes are writable via API: `POST /{entity}/:resourceId/approve` + `bulk-approve` (invoices, bills, both credit notes; irreversible) and `request-changes` (endpoints.md sections 19c, 19d)
|
|
709
709
|
|
|
710
710
|
### Lock Dates
|
|
711
711
|
- Organizations can set a lock date preventing changes before that cutoff
|
|
@@ -779,8 +779,8 @@ See endpoints.md section 25 for request/response shapes and the `refs` grammar (
|
|
|
779
779
|
|
|
780
780
|
## Additions since 2026-07-11
|
|
781
781
|
|
|
782
|
-
Live routes added after the tables above were last regenerated.
|
|
783
|
-
or
|
|
782
|
+
Live routes added after the tables above were last regenerated. Unless a subsection names its
|
|
783
|
+
wrapper, it has no `clio` subcommand or MCP tool: call it with a raw request.
|
|
784
784
|
|
|
785
785
|
### Request changes (18) — 2026-08-06
|
|
786
786
|
|
|
@@ -788,7 +788,8 @@ or an MCP tool — call them with a raw request.
|
|
|
788
788
|
`invoices`, `bills`, `customer-credit-notes`, `supplier-credit-notes`, `purchase-orders`,
|
|
789
789
|
`purchase-requests`, `sale-orders`, `sale-quotes`. Claims uses a different bulk shape:
|
|
790
790
|
`POST /claims/:resourceId/request-changes` + `POST /claims/bulk/request-changes`.
|
|
791
|
-
Bodies and per-record outcome semantics: endpoints.md section 19c.
|
|
791
|
+
Bodies and per-record outcome semantics: endpoints.md section 19c. Wrapped by
|
|
792
|
+
`request_document_changes` / `bulk_request_document_changes` and `clio approvals`.
|
|
792
793
|
|
|
793
794
|
### Payments, bulk and batch (9) — 2026-08-13
|
|
794
795
|
|