jaz-clio 5.63.1 → 5.65.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.63.1
3
+ version: 5.65.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
@@ -149,22 +149,28 @@ Turn APPROVED claims into journal entries, and record books-only employee payout
149
149
  The expense-claim members. CLI: `clio employees …`. `list = search_employees` (no
150
150
  bare list endpoint).
151
151
 
152
- - **`add_employee`** — `name`, **`userResourceId`, and `claimProfileResourceId` are
153
- required** (the server rejects a create without a user to bind:
154
- `422 EMPLOYEE_USER_RESOURCE_ID_MISSING`). **`userResourceId` is the user's resourceId —
152
+ - **`add_employee`** — **`name` and `claimProfileResourceId` are required** (without a
153
+ profile: `422 EMPLOYEE_CLAIM_PROFILE_REQUIRED`). `userResourceId` is optional: omit it
154
+ for an offline employee with no login. **`userResourceId` is the user's resourceId —
155
155
  read it as the `userResourceId` FIELD on an org-user (`search_org_users`), NOT the
156
156
  org-user record's own `resourceId`; passing the membership id returns
157
- `422 EMPLOYEE_USER_NOT_FOUND`.** Each user binds to at most one employee. Binding is
158
- **PERMANENT** (rotation blocked once set). An **offline employee** (no user bound yet) can
159
- still arise via import bind it later with `bind_employee_user`. Dedups by email (per-org unique).
157
+ `422 EMPLOYEE_USER_NOT_FOUND`.** Each user links to at most one employee per org. The link
158
+ can be changed later: `update_employee` `userResourceId` relinks, `clearFields: ["userResourceId"]`
159
+ unlinks. An **offline employee** (no user bound yet) can also arise via import; bind it with
160
+ `bind_employee_user` or `update_employee` `userResourceId`. Dedups by email (per-org unique).
160
161
  - **The approver comes from the claim profile, not the employee.** An employee's approver
161
162
  is `claimProfile.approverUserResourceId` (set on the Claim Profile) — the employee record
162
163
  has no own approver field. To change who approves, edit the profile or move the employee
163
164
  to another profile. `claimProfileResourceId` is locked while the employee has unsettled claims.
164
- - **`update_employee`** — partial (omit = no change; email `""` clears). **Archive with
165
- `active: false`** (reversible prefer over `delete_employee`). `userResourceId` is NOT
166
- editable here; for an **offline employee** (no user bound yet), use **`bind_employee_user`**
167
- (one-way, permanent only while unbound). `clearEmploymentType` unsets the classification.
165
+ - **`update_employee`** — partial: an omitted, `null` or `""` param is left unchanged (the
166
+ tool drops them, because the raw API treats an explicit `null` on email, phone,
167
+ managerEmployeeResourceId, employmentType or userResourceId, and `phone: ""`, as a clear).
168
+ To clear, list the fields in **`clearFields`** (`email`, `phone`, `managerEmployeeResourceId`,
169
+ `employmentType`, `userResourceId`); a field both set and cleared in one call is refused.
170
+ One exception: `email: ""` is passed through and clears email, same as `clearFields: ["email"]`.
171
+ `userResourceId` links or relinks the login user; `clearFields: ["userResourceId"]`
172
+ unlinks it. **Archive with `active: false`** (reversible, prefer over `delete_employee`).
173
+ `bind_employee_user` only binds an employee that has no user yet.
168
174
  - **`delete_employee`** — server validates the employee is settled (else error). Prefer archive.
169
175
  - **`search_employees`** / **`search_employee_balances`** — the second is the balance
170
176
  directory (per-currency reimbursement owed). `search_employee_payouts` lives in `claim_processing`.
@@ -176,7 +182,8 @@ bare list endpoint).
176
182
  - **Import**: `preprocess_employees_file` (sync — pass a sheet `fileUrl`, returns a row
177
183
  preview) → `import_employees` (`create`/`update`/`delete` arrays, **max 100 each**;
178
184
  sync-validates rows with row-level 422s, then queues an async job — poll
179
- `search_background_jobs`). Create rows need a bound user + claim profile.
185
+ `search_background_jobs`). Create rows need `name` + `claimProfileResourceId`;
186
+ `userResourceId` is optional (omit for an offline employee).
180
187
 
181
188
  ---
182
189
 
@@ -930,8 +930,8 @@ Two of the seven never reach you through this path: a zero `adjustmentValue` and
930
930
  **Fix**: Find an expense GL account via `search_accounts` — `accountType` is a **display label** (`"Operating Expense"`, `"Direct Costs"`), NOT an enum like `"EXPENSE"` (which returns zero rows) — then pass its `resourceId` as `expenseAccountResourceId`.
931
931
 
932
932
  ### "EMPLOYEE_USER_NOT_FOUND" (422)
933
- **Cause**: `add_employee` / `bind_employee_user` was given a `userResourceId` that isn't a user ("User not found for userResourceId …"). The usual mistake: passing an org-user record's own `resourceId` instead of its `userResourceId`.
934
- **Fix**: Use `search_org_users` and read the member's **`userResourceId`** field (not the org-user record's `resourceId`), then retry. Each user binds to at most one employee, and the binding is permanent once set.
933
+ **Cause**: `add_employee` / `update_employee` / `bind_employee_user` was given a `userResourceId` that isn't a user ("User not found for userResourceId …"). The usual mistake: passing an org-user record's own `resourceId` instead of its `userResourceId`.
934
+ **Fix**: Use `search_org_users` and read the member's **`userResourceId`** field (not the org-user record's `resourceId`), then retry. Each user links to at most one employee per org. To move a link, relink with `update_employee` `userResourceId` or unlink with `clearFields: ["userResourceId"]`.
935
935
 
936
936
  ### "EMPLOYEE_CLAIM_PROFILE_REQUIRED" (422)
937
937
  **Cause**: `add_employee` was called without `claimProfileResourceId` ("A claim profile is required for an employee — it carries the employee balance account used to convert and pay claims"). The claim profile is **server-required** — the org default is NOT auto-applied for employees (unlike claims), even when a default profile exists.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-cli
3
- version: 5.63.1
3
+ version: 5.65.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,
@@ -268,9 +268,9 @@ Same subcommands and flags as `cash-in`.
268
268
  | `search` | `--name`, `--email`, `--active`, `--claim-profile-resource-id`, `--sort`, `--order` |
269
269
  | `balances` (alias `search-balances`) | per-employee, per-currency reimbursement owed |
270
270
  | `get <id>` | `--json` |
271
- | `create` | `--name`, `--user`* (bind login), `--claim-profile`*, `--employment-type`, `--email`, `--manager` |
272
- | `update <id>` | `--name`, `--claim-profile`, `--employment-type`, `--archive` / `--activate`, `--clear-employment-type` |
273
- | `bind-user <id> <userId>` | bind a login user to an offline employee (no user yet) one-way, only while unbound |
271
+ | `create` | `--name`*, `--claim-profile`*, `--user` (link login, optional), `--employment-type`, `--email`, `--manager` |
272
+ | `update <id>` | `--name`, `--email`, `--phone`, `--manager`, `--claim-profile`, `--employment-type`, `--user` (link/relink), `--archive` / `--activate`, `--clear-email`, `--clear-phone`, `--clear-manager`, `--clear-employment-type`, `--unlink-user` |
273
+ | `bind-user <id> <userId>` | bind a login user to an offline employee (no user yet); relink or unlink via `update` |
274
274
  | `delete <id>` | only if settled (no outstanding balance) |
275
275
  | `preprocess <fileUrl>` | `--file-type` (CSV / XLS / XLSX) — preview rows before import |
276
276
  | `import` | `--create` / `--update` / `--delete` (JSON arrays) — async, returns jobId |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: jaz-conversion
3
- version: 5.63.1
3
+ version: 5.65.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.63.1
3
+ version: 5.65.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.63.1
3
+ version: 5.65.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.63.1
3
+ version: 5.65.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.63.1
3
+ version: 5.65.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