@dsptch-work/api-client 0.43.0 → 0.44.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,50 @@ All notable changes to `@dsptch-work/api-client` are documented here. The format
5
5
  [Semantic Versioning](https://semver.org) — currently `0.x`, so breaking changes may land in a
6
6
  minor bump until `1.0.0`. See [RELEASING.md](./RELEASING.md) for the release and versioning process.
7
7
 
8
+ ## [0.44.0] - 2026-10-26
9
+
10
+ Generated method signatures, request/response types, and Zod validators are unchanged.
11
+ The validation changes below are enforced by the API.
12
+
13
+ ### Changed
14
+
15
+ - `Todos.listTodoInbox()` includes highlighted compliance checks awaiting an approval decision,
16
+ alongside failed checks. Handle `status: 'pending'` on `TodoInboxComplianceCheckResponseObject`;
17
+ that enum value already existed, and no response shape or generated type changes.
18
+
19
+ ### Fixed
20
+
21
+ - **Breaking runtime validation:** `Users.createUser()` requires `body.hire_date` when the
22
+ company has no configured time zone; omission returns `400`. Supply a `YYYY-MM-DD` date or
23
+ configure the company time zone. `UserParameters.hire_date` remains optional, and
24
+ `zUserParameters` / `zCreateUserBody` cannot enforce this company-dependent requirement.
25
+ - **Breaking runtime validation:** `Jobs.updateJob()` with `body.project_id` and
26
+ `Projects.updateProject()` with `body.parent_id` return `422` when the move would collide
27
+ wage-determination classifications or combine opposite apprentice-scope decisions.
28
+ `PwaTrades.createMerge()` also refuses opposite scope decisions with `422` at
29
+ `#/target_trade_id`. Resolve the reported conflict before retrying; generated request
30
+ types and validators are unchanged.
31
+ - **Breaking runtime validation:** `TimeEntryImports.createTimeEntryImport()` now requires a
32
+ schedule that keeps time entries, and `CprImports.createDsptchCprImport()` requires both
33
+ aggregate time and aggregate payroll; incompatible schedules return `422`.
34
+ `AggregateTimeImports.createAggregateTimeImport()` additionally accepts aggregate-time
35
+ schedules with no payroll. Generated signatures and Zod schemas are unchanged; the API
36
+ enforces schedule eligibility.
37
+ - **Breaking runtime validation:** on-cycle `PaystubImports.createPaystubImport()` and
38
+ `WidePaystubImports.createWidePaystubImport()` require a schedule paid from paystubs
39
+ (base payroll), otherwise returning `422`. Off-cycle imports remain independent of time
40
+ and payroll mode; both formats still refuse a connected payroll provider, and wide
41
+ imports still require an external-map contributor. Import creation now checks permissions
42
+ before schedule eligibility or queued-import conflicts, so unauthorized callers receive
43
+ `403` before those `422` / `409` responses.
44
+ - `Jobs.listPositions()` / `getPosition()` return unique, currently effective IDs in
45
+ `PositionResponseObject.federal_wage_determination_ids` and
46
+ `regional_wage_determination_ids`, without expired or future assignments. Array types are
47
+ unchanged; consumers should not use these fields as assignment history.
48
+
49
+ See the [October 26 API changelog](https://dsptch.app/support/docs/developers/api-changelog#2026-10-26)
50
+ for the full REST behavior changes.
51
+
8
52
  ## [0.43.0] - 2026-10-22
9
53
 
10
54
  ### Added
@@ -3132,6 +3132,11 @@ export declare class PwaTrades {
3132
3132
  * decisions carry over where the target holds none of its own, and the emptied
3133
3133
  * craft is deleted — all in one transaction.
3134
3134
  *
3135
+ * A merge is refused (422) when the two crafts decided an occupation's apprentice
3136
+ * scope opposite ways, in scope on one and out of scope on the other. The detail
3137
+ * lists each clash and the employer companies of the occupation's program, whose
3138
+ * admins and managers can change either decision or remove one. Nothing changes.
3139
+ *
3135
3140
  * Use this rather than `DELETE` when the craft still groups determinations:
3136
3141
  * deleting one is refused precisely because it would orphan them, and merging
3137
3142
  * moves them first.
@@ -6982,9 +6987,10 @@ export declare class Todos {
6982
6987
  /**
6983
6988
  * List Todos
6984
6989
  *
6985
- * List your company's open work in one list: todos that are not yet completed, and failing
6986
- * compliance checks on a requirement your company has highlighted. Entries come back
6987
- * soonest-due first, with undated entries last.
6990
+ * List your company's open work in one list: todos that are not yet completed, and
6991
+ * compliance checks on a requirement your company has highlighted that are failing or
6992
+ * waiting for an approval decision (`status` is `failed` or `pending`). Entries come
6993
+ * back soonest-due first, with undated entries last.
6988
6994
  *
6989
6995
  * Read `kind` on an entry before anything else — a `todo` and a `compliance_check` are
6990
6996
  * different resources, with different fields and separate id spaces. Both also carry a
@@ -5200,6 +5200,11 @@ export class PwaTrades {
5200
5200
  * decisions carry over where the target holds none of its own, and the emptied
5201
5201
  * craft is deleted — all in one transaction.
5202
5202
  *
5203
+ * A merge is refused (422) when the two crafts decided an occupation's apprentice
5204
+ * scope opposite ways, in scope on one and out of scope on the other. The detail
5205
+ * lists each clash and the employer companies of the occupation's program, whose
5206
+ * admins and managers can change either decision or remove one. Nothing changes.
5207
+ *
5203
5208
  * Use this rather than `DELETE` when the craft still groups determinations:
5204
5209
  * deleting one is refused precisely because it would orphan them, and merging
5205
5210
  * moves them first.
@@ -11117,9 +11122,10 @@ export class Todos {
11117
11122
  /**
11118
11123
  * List Todos
11119
11124
  *
11120
- * List your company's open work in one list: todos that are not yet completed, and failing
11121
- * compliance checks on a requirement your company has highlighted. Entries come back
11122
- * soonest-due first, with undated entries last.
11125
+ * List your company's open work in one list: todos that are not yet completed, and
11126
+ * compliance checks on a requirement your company has highlighted that are failing or
11127
+ * waiting for an approval decision (`status` is `failed` or `pending`). Entries come
11128
+ * back soonest-due first, with undated entries last.
11123
11129
  *
11124
11130
  * Read `kind` on an entry before anything else — a `todo` and a `compliance_check` are
11125
11131
  * different resources, with different fields and separate id spaces. Both also carry a
@@ -5911,7 +5911,7 @@ export type UserParameters = {
5911
5911
  */
5912
5912
  skip_invite?: boolean;
5913
5913
  /**
5914
- * First day of employment (YYYY-MM-DD). Sets the start of the employment record; defaults to today in your company's time zone when omitted. Null, blank text, or any other form answers 422.
5914
+ * First day of employment (YYYY-MM-DD). Sets the start of the employment record; defaults to today in your company's time zone when omitted. Required while your company has no time zone set; omitting it then answers 400. Null, blank text, or any other form answers 422.
5915
5915
  */
5916
5916
  hire_date?: string;
5917
5917
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dsptch-work/api-client",
3
- "version": "0.43.0",
3
+ "version": "0.44.0",
4
4
  "description": "Generated TypeScript client for the DSPTCH REST API.",
5
5
  "keywords": [
6
6
  "dsptch",