@vindentech/api-client 0.3.0-next.10 → 0.3.0-next.12

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.
Files changed (128) hide show
  1. package/dist/generated/_all.d.ts +13 -1
  2. package/dist/generated/_all.d.ts.map +1 -1
  3. package/dist/generated/_all.js +13 -1
  4. package/dist/generated/_all.js.map +1 -1
  5. package/dist/generated/_permissions.d.ts +272 -8
  6. package/dist/generated/_permissions.d.ts.map +1 -1
  7. package/dist/generated/_permissions.js +69 -3
  8. package/dist/generated/_permissions.js.map +1 -1
  9. package/dist/generated/account-credits/account-credits.d.ts +2 -2
  10. package/dist/generated/account-credits/account-credits.d.ts.map +1 -1
  11. package/dist/generated/account-credits/account-credits.js.map +1 -1
  12. package/dist/generated/addresses/addresses.d.ts +2 -2
  13. package/dist/generated/addresses/addresses.d.ts.map +1 -1
  14. package/dist/generated/addresses/addresses.js.map +1 -1
  15. package/dist/generated/capacity/capacity.d.ts +135 -0
  16. package/dist/generated/capacity/capacity.d.ts.map +1 -0
  17. package/dist/generated/capacity/capacity.js +112 -0
  18. package/dist/generated/capacity/capacity.js.map +1 -0
  19. package/dist/generated/carrier-bookings/carrier-bookings.d.ts +2 -2
  20. package/dist/generated/carrier-bookings/carrier-bookings.d.ts.map +1 -1
  21. package/dist/generated/carrier-methods/carrier-methods.d.ts +37 -0
  22. package/dist/generated/carrier-methods/carrier-methods.d.ts.map +1 -0
  23. package/dist/generated/carrier-methods/carrier-methods.js +24 -0
  24. package/dist/generated/carrier-methods/carrier-methods.js.map +1 -0
  25. package/dist/generated/carriers/carriers.d.ts +149 -0
  26. package/dist/generated/carriers/carriers.d.ts.map +1 -0
  27. package/dist/generated/carriers/carriers.js +129 -0
  28. package/dist/generated/carriers/carriers.js.map +1 -0
  29. package/dist/generated/carts/carts.d.ts +14 -0
  30. package/dist/generated/carts/carts.d.ts.map +1 -1
  31. package/dist/generated/carts/carts.js +10 -0
  32. package/dist/generated/carts/carts.js.map +1 -1
  33. package/dist/generated/checkout/checkout.d.ts +37 -0
  34. package/dist/generated/checkout/checkout.d.ts.map +1 -0
  35. package/dist/generated/{transport/transport.js → checkout/checkout.js} +9 -9
  36. package/dist/generated/checkout/checkout.js.map +1 -0
  37. package/dist/generated/containers/containers.d.ts +2 -2
  38. package/dist/generated/containers/containers.d.ts.map +1 -1
  39. package/dist/generated/containers/containers.js.map +1 -1
  40. package/dist/generated/coupons/coupons.d.ts +2 -2
  41. package/dist/generated/coupons/coupons.d.ts.map +1 -1
  42. package/dist/generated/coupons/coupons.js.map +1 -1
  43. package/dist/generated/folders/folders.d.ts +10 -10
  44. package/dist/generated/folders/folders.d.ts.map +1 -1
  45. package/dist/generated/folders/folders.js +4 -4
  46. package/dist/generated/folders/folders.js.map +1 -1
  47. package/dist/generated/forklift/forklift.d.ts +212 -0
  48. package/dist/generated/forklift/forklift.d.ts.map +1 -0
  49. package/dist/generated/forklift/forklift.js +89 -0
  50. package/dist/generated/forklift/forklift.js.map +1 -0
  51. package/dist/generated/index.schemas.d.ts +2852 -140
  52. package/dist/generated/index.schemas.d.ts.map +1 -1
  53. package/dist/generated/index.schemas.js +412 -0
  54. package/dist/generated/index.schemas.js.map +1 -1
  55. package/dist/generated/invoices/invoices.d.ts +2 -2
  56. package/dist/generated/invoices/invoices.d.ts.map +1 -1
  57. package/dist/generated/invoices/invoices.js.map +1 -1
  58. package/dist/generated/items/items.d.ts +2 -2
  59. package/dist/generated/items/items.d.ts.map +1 -1
  60. package/dist/generated/items/items.js.map +1 -1
  61. package/dist/generated/lookups/lookups.d.ts +23 -0
  62. package/dist/generated/lookups/lookups.d.ts.map +1 -0
  63. package/dist/generated/lookups/lookups.js +19 -0
  64. package/dist/generated/lookups/lookups.js.map +1 -0
  65. package/dist/generated/orders/orders.d.ts +114 -2
  66. package/dist/generated/orders/orders.d.ts.map +1 -1
  67. package/dist/generated/orders/orders.js +101 -0
  68. package/dist/generated/orders/orders.js.map +1 -1
  69. package/dist/generated/org-contacts/org-contacts.d.ts +2 -2
  70. package/dist/generated/org-contacts/org-contacts.d.ts.map +1 -1
  71. package/dist/generated/org-contacts/org-contacts.js.map +1 -1
  72. package/dist/generated/organization-settings/organization-settings.d.ts +37 -0
  73. package/dist/generated/organization-settings/organization-settings.d.ts.map +1 -0
  74. package/dist/generated/organization-settings/organization-settings.js +24 -0
  75. package/dist/generated/organization-settings/organization-settings.js.map +1 -0
  76. package/dist/generated/organizations/organizations.d.ts +2 -2
  77. package/dist/generated/organizations/organizations.d.ts.map +1 -1
  78. package/dist/generated/organizations/organizations.js.map +1 -1
  79. package/dist/generated/pods/pods.d.ts +2 -2
  80. package/dist/generated/pods/pods.d.ts.map +1 -1
  81. package/dist/generated/pods/pods.js.map +1 -1
  82. package/dist/generated/positions/positions.d.ts +2 -2
  83. package/dist/generated/positions/positions.d.ts.map +1 -1
  84. package/dist/generated/positions/positions.js.map +1 -1
  85. package/dist/generated/products/products.d.ts +2 -2
  86. package/dist/generated/products/products.d.ts.map +1 -1
  87. package/dist/generated/products/products.js +7 -0
  88. package/dist/generated/products/products.js.map +1 -1
  89. package/dist/generated/routes/routes.d.ts +2 -2
  90. package/dist/generated/routes/routes.d.ts.map +1 -1
  91. package/dist/generated/routes/routes.js.map +1 -1
  92. package/dist/generated/service-catalog/service-catalog.d.ts +23 -0
  93. package/dist/generated/service-catalog/service-catalog.d.ts.map +1 -0
  94. package/dist/generated/service-catalog/service-catalog.js +12 -0
  95. package/dist/generated/service-catalog/service-catalog.js.map +1 -0
  96. package/dist/generated/service-zones/service-zones.d.ts +93 -0
  97. package/dist/generated/service-zones/service-zones.d.ts.map +1 -0
  98. package/dist/generated/service-zones/service-zones.js +80 -0
  99. package/dist/generated/service-zones/service-zones.js.map +1 -0
  100. package/dist/generated/slot-configs/slot-configs.d.ts +79 -0
  101. package/dist/generated/slot-configs/slot-configs.d.ts.map +1 -0
  102. package/dist/generated/slot-configs/slot-configs.js +65 -0
  103. package/dist/generated/slot-configs/slot-configs.js.map +1 -0
  104. package/dist/generated/tenant-modules/tenant-modules.d.ts +37 -0
  105. package/dist/generated/tenant-modules/tenant-modules.d.ts.map +1 -0
  106. package/dist/generated/tenant-modules/tenant-modules.js +24 -0
  107. package/dist/generated/tenant-modules/tenant-modules.js.map +1 -0
  108. package/dist/generated/tenant-services/tenant-services.d.ts +65 -0
  109. package/dist/generated/tenant-services/tenant-services.d.ts.map +1 -0
  110. package/dist/generated/tenant-services/tenant-services.js +46 -0
  111. package/dist/generated/tenant-services/tenant-services.js.map +1 -0
  112. package/dist/generated/transport-legs/transport-legs.d.ts +2 -2
  113. package/dist/generated/transport-legs/transport-legs.d.ts.map +1 -1
  114. package/dist/generated/transport-legs/transport-legs.js.map +1 -1
  115. package/dist/generated/transport-services/transport-services.d.ts +107 -0
  116. package/dist/generated/transport-services/transport-services.d.ts.map +1 -0
  117. package/dist/generated/transport-services/transport-services.js +90 -0
  118. package/dist/generated/transport-services/transport-services.js.map +1 -0
  119. package/dist/generated/warehouse-orders/warehouse-orders.d.ts +2 -2
  120. package/dist/generated/warehouse-orders/warehouse-orders.d.ts.map +1 -1
  121. package/dist/generated/warehouses/warehouses.d.ts +16 -2
  122. package/dist/generated/warehouses/warehouses.d.ts.map +1 -1
  123. package/dist/generated/warehouses/warehouses.js +10 -0
  124. package/dist/generated/warehouses/warehouses.js.map +1 -1
  125. package/package.json +1 -1
  126. package/dist/generated/transport/transport.d.ts +0 -37
  127. package/dist/generated/transport/transport.d.ts.map +0 -1
  128. package/dist/generated/transport/transport.js.map +0 -1
@@ -24,6 +24,11 @@ export interface OrderSummaryDto {
24
24
  /** Per-job operational number (tenant sequence). */
25
25
  jobNumber: number;
26
26
  orderGroupId: string;
27
+ /**
28
+ * Dispatch warehouse (NULL for service-only / field jobs).
29
+ * @nullable
30
+ */
31
+ warehouseId: string | null;
27
32
  status: string;
28
33
  type: OrderSummaryDtoType;
29
34
  /** @nullable */
@@ -32,9 +37,45 @@ export interface OrderSummaryDto {
32
37
  editableUntil: string | null;
33
38
  /** @nullable */
34
39
  externalReference: string | null;
40
+ /**
41
+ * Measured volume (cm³), once known.
42
+ * @nullable
43
+ */
44
+ actualVolumeCm3: number | null;
45
+ /**
46
+ * Billed volume (cm³), once priced.
47
+ * @nullable
48
+ */
49
+ billableVolumeCm3: number | null;
35
50
  createdAt: string;
36
51
  updatedAt: string;
37
52
  }
53
+ export interface PaginatedOrdersDto {
54
+ /** The page of rows. */
55
+ items: OrderSummaryDto[];
56
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
57
+ total: number;
58
+ /** Effective max rows applied (after defaults/clamp). */
59
+ limit: number;
60
+ /** Effective rows skipped applied. */
61
+ offset: number;
62
+ }
63
+ export interface OrderWarehouseDto {
64
+ warehouseId: string;
65
+ name: string;
66
+ /** @nullable */
67
+ phone: string | null;
68
+ /** @nullable */
69
+ line1: string | null;
70
+ /** @nullable */
71
+ line2: string | null;
72
+ /** @nullable */
73
+ zipCode: string | null;
74
+ /** @nullable */
75
+ city: string | null;
76
+ /** @nullable */
77
+ countryCode: string | null;
78
+ }
38
79
  export interface OrderProductDto {
39
80
  salesOrderProductId: string;
40
81
  productId: string;
@@ -43,6 +84,16 @@ export interface OrderProductDto {
43
84
  * @nullable
44
85
  */
45
86
  name: string | null;
87
+ /**
88
+ * Storage key of the product's primary image (never base64).
89
+ * @nullable
90
+ */
91
+ primaryImageStorageKey: string | null;
92
+ /**
93
+ * public.category id, if categorised.
94
+ * @nullable
95
+ */
96
+ categoryId: number | null;
46
97
  /** Requested (demand) quantity. */
47
98
  requestedQuantity: number;
48
99
  /** Fulfilled quantity (derived from PICK movements). */
@@ -71,14 +122,47 @@ export interface OrderLegDto {
71
122
  legType: string;
72
123
  legSequence: number;
73
124
  status: string;
125
+ /**
126
+ * Assigned carrier (tenant_carrier_id).
127
+ * @nullable
128
+ */
129
+ tenantCarrierId: string | null;
74
130
  /** @nullable */
75
131
  plannedWindowStart: string | null;
76
132
  /** @nullable */
77
133
  plannedWindowEnd: string | null;
78
134
  /** @nullable */
79
- city: string | null;
135
+ recipientName: string | null;
136
+ /** @nullable */
137
+ recipientPhone: string | null;
138
+ /** @nullable */
139
+ addressLine1: string | null;
140
+ /** @nullable */
141
+ addressLine2: string | null;
80
142
  /** @nullable */
81
143
  zipCode: string | null;
144
+ /** @nullable */
145
+ city: string | null;
146
+ /** @nullable */
147
+ countryCode: string | null;
148
+ /** @nullable */
149
+ floorLevel: number | null;
150
+ /** @nullable */
151
+ elevator: boolean | null;
152
+ /** @nullable */
153
+ doorCode: string | null;
154
+ /** @nullable */
155
+ transportInstructions: string | null;
156
+ /**
157
+ * From the leg's carrier_booking.
158
+ * @nullable
159
+ */
160
+ trackingCode: string | null;
161
+ /**
162
+ * From the leg's carrier_booking.
163
+ * @nullable
164
+ */
165
+ trackingUrl: string | null;
82
166
  }
83
167
  export type OrderDetailDtoType = typeof OrderDetailDtoType[keyof typeof OrderDetailDtoType];
84
168
  export declare const OrderDetailDtoType: {
@@ -90,6 +174,10 @@ export declare const OrderDetailDtoType: {
90
174
  readonly PICKING: "PICKING";
91
175
  readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
92
176
  };
177
+ /**
178
+ * @nullable
179
+ */
180
+ export type OrderDetailDtoWarehouse = OrderWarehouseDto | null;
93
181
  /**
94
182
  * @nullable
95
183
  */
@@ -99,6 +187,11 @@ export interface OrderDetailDto {
99
187
  /** Per-job operational number (tenant sequence). */
100
188
  jobNumber: number;
101
189
  orderGroupId: string;
190
+ /**
191
+ * Dispatch warehouse (NULL for service-only / field jobs).
192
+ * @nullable
193
+ */
194
+ warehouseId: string | null;
102
195
  status: string;
103
196
  type: OrderDetailDtoType;
104
197
  /** @nullable */
@@ -107,8 +200,25 @@ export interface OrderDetailDto {
107
200
  editableUntil: string | null;
108
201
  /** @nullable */
109
202
  externalReference: string | null;
203
+ /**
204
+ * Measured volume (cm³), once known.
205
+ * @nullable
206
+ */
207
+ actualVolumeCm3: number | null;
208
+ /**
209
+ * Billed volume (cm³), once priced.
210
+ * @nullable
211
+ */
212
+ billableVolumeCm3: number | null;
110
213
  createdAt: string;
111
214
  updatedAt: string;
215
+ /**
216
+ * Originating cart, if any.
217
+ * @nullable
218
+ */
219
+ cartId: string | null;
220
+ /** Whether the job is a picking job. */
221
+ picking: boolean;
112
222
  /** @nullable */
113
223
  comment: string | null;
114
224
  /** @nullable */
@@ -122,128 +232,529 @@ export interface OrderDetailDto {
122
232
  cancelledAt: string | null;
123
233
  /** @nullable */
124
234
  cancellationReason: string | null;
235
+ /** @nullable */
236
+ warehouse: OrderDetailDtoWarehouse;
125
237
  products: OrderProductDto[];
126
238
  /** @nullable */
127
239
  estimate: OrderDetailDtoEstimate;
128
240
  legs: OrderLegDto[];
129
241
  }
130
- export interface OrderGroupDto {
131
- orderGroupId: string;
132
- /** Customer-facing booking number (tenant sequence). */
133
- orderNumber: number;
134
- groupType: string;
135
- /** Derived roll-up over the group's jobs. */
136
- status: string;
137
- /** @nullable */
138
- reference: string | null;
139
- createdAt: string;
140
- }
141
- export interface OrderGroupDetailDto {
142
- orderGroupId: string;
143
- /** Customer-facing booking number (tenant sequence). */
144
- orderNumber: number;
145
- groupType: string;
146
- /** Derived roll-up over the group's jobs. */
147
- status: string;
148
- /** @nullable */
149
- reference: string | null;
150
- createdAt: string;
151
- orders: OrderSummaryDto[];
152
- }
153
- export interface PickingStopPositionDto {
242
+ export type OrderTimelineEventDtoKind = typeof OrderTimelineEventDtoKind[keyof typeof OrderTimelineEventDtoKind];
243
+ export declare const OrderTimelineEventDtoKind: {
244
+ readonly STATUS_CHANGE: "STATUS_CHANGE";
245
+ readonly LEG: "LEG";
246
+ readonly APPOINTMENT: "APPOINTMENT";
247
+ readonly RELATIONSHIP: "RELATIONSHIP";
248
+ };
249
+ export type OrderTimelineEventDtoDirection = typeof OrderTimelineEventDtoDirection[keyof typeof OrderTimelineEventDtoDirection];
250
+ export declare const OrderTimelineEventDtoDirection: {
251
+ readonly PARENT: "PARENT";
252
+ readonly CHILD: "CHILD";
253
+ };
254
+ export interface OrderTimelineEventDto {
255
+ kind: OrderTimelineEventDtoKind;
256
+ /** When the event happened (STATUS_CHANGE) or is planned (LEG/RELATIONSHIP). */
257
+ occurredAt: string;
258
+ /** Human-readable one-line label for the event. */
259
+ label: string;
154
260
  /** @nullable */
155
- section: string | null;
261
+ oldStatus?: string | null;
262
+ newStatus?: string;
263
+ orderTransportLegId?: string;
264
+ legType?: string;
265
+ sequence?: number;
266
+ status?: string;
156
267
  /** @nullable */
157
- positionNumber: number | null;
268
+ plannedWindowStart?: string | null;
158
269
  /** @nullable */
159
- level: number | null;
270
+ plannedWindowEnd?: string | null;
271
+ relatedSalesOrderId?: string;
272
+ relationshipType?: string;
273
+ direction?: OrderTimelineEventDtoDirection;
274
+ }
275
+ export interface OrderTimelineDto {
276
+ salesOrderId: string;
277
+ jobNumber: number;
278
+ currentStatus: string;
279
+ events: OrderTimelineEventDto[];
160
280
  /**
161
- * position_grade value
281
+ * Latest planned leg-window end (best-effort completion estimate).
162
282
  * @nullable
163
283
  */
164
- grade: string | null;
165
- /** @nullable */
166
- checkNumber: number | null;
284
+ estimatedCompletion: string | null;
167
285
  }
168
- export type PickingStopDtoKind = typeof PickingStopDtoKind[keyof typeof PickingStopDtoKind];
169
- export declare const PickingStopDtoKind: {
170
- readonly PICK: "PICK";
171
- readonly PACKED: "PACKED";
172
- readonly SHORTAGE: "SHORTAGE";
173
- readonly REMAINDER: "REMAINDER";
174
- };
175
286
  /**
176
287
  * @nullable
177
288
  */
178
- export type PickingStopDtoPosition = PickingStopPositionDto | null;
179
- export interface PickingStopDto {
180
- /** `${sopId}:${podId}` or `${sopId}:${suffix}` for shortage/remainder */
181
- key: string;
182
- kind: PickingStopDtoKind;
183
- salesOrderProductId: string;
184
- productId: string;
289
+ export type EditOrderRecipientDtoName = {
290
+ [key: string]: unknown;
291
+ } | null;
292
+ /**
293
+ * @nullable
294
+ */
295
+ export type EditOrderRecipientDtoPhone = {
296
+ [key: string]: unknown;
297
+ } | null;
298
+ /**
299
+ * @nullable
300
+ */
301
+ export type EditOrderRecipientDtoEmail = {
302
+ [key: string]: unknown;
303
+ } | null;
304
+ /**
305
+ * @nullable
306
+ */
307
+ export type EditOrderRecipientDtoCompanyName = {
308
+ [key: string]: unknown;
309
+ } | null;
310
+ export interface EditOrderRecipientDto {
185
311
  /** @nullable */
186
- productName: string | null;
312
+ name?: EditOrderRecipientDtoName;
187
313
  /** @nullable */
188
- productImageStorageKey: string | null;
314
+ phone?: EditOrderRecipientDtoPhone;
189
315
  /** @nullable */
190
- parcelQuantity: number | null;
316
+ email?: EditOrderRecipientDtoEmail;
191
317
  /** @nullable */
192
- preferredBatch: string | null;
193
- /** Service-level constant (product has no ignore_gtin column) */
194
- ignoreGtin: boolean;
195
- /**
196
- * null for SHORTAGE / REMAINDER stops
197
- * @nullable
198
- */
199
- podId: string | null;
200
- podQuantity: number;
201
- quantityToPick: number;
318
+ companyName?: EditOrderRecipientDtoCompanyName;
319
+ }
320
+ /**
321
+ * @nullable
322
+ */
323
+ export type EditOrderAddressDtoAddressLine1 = {
324
+ [key: string]: unknown;
325
+ } | null;
326
+ /**
327
+ * @nullable
328
+ */
329
+ export type EditOrderAddressDtoAddressLine2 = {
330
+ [key: string]: unknown;
331
+ } | null;
332
+ /**
333
+ * @nullable
334
+ */
335
+ export type EditOrderAddressDtoZipCode = {
336
+ [key: string]: unknown;
337
+ } | null;
338
+ /**
339
+ * @nullable
340
+ */
341
+ export type EditOrderAddressDtoCity = {
342
+ [key: string]: unknown;
343
+ } | null;
344
+ /**
345
+ * @nullable
346
+ */
347
+ export type EditOrderAddressDtoState = {
348
+ [key: string]: unknown;
349
+ } | null;
350
+ /**
351
+ * @nullable
352
+ */
353
+ export type EditOrderAddressDtoCounty = {
354
+ [key: string]: unknown;
355
+ } | null;
356
+ /**
357
+ * ISO 3166-1 alpha-2
358
+ * @nullable
359
+ */
360
+ export type EditOrderAddressDtoCountryCode = {
361
+ [key: string]: unknown;
362
+ } | null;
363
+ /**
364
+ * @nullable
365
+ */
366
+ export type EditOrderAddressDtoFloorLevel = {
367
+ [key: string]: unknown;
368
+ } | null;
369
+ /**
370
+ * @nullable
371
+ */
372
+ export type EditOrderAddressDtoElevator = {
373
+ [key: string]: unknown;
374
+ } | null;
375
+ /**
376
+ * @nullable
377
+ */
378
+ export type EditOrderAddressDtoDoorCode = {
379
+ [key: string]: unknown;
380
+ } | null;
381
+ /**
382
+ * @nullable
383
+ */
384
+ export type EditOrderAddressDtoTransportInstructions = {
385
+ [key: string]: unknown;
386
+ } | null;
387
+ export interface EditOrderAddressDto {
202
388
  /** @nullable */
203
- packedQuantity: number | null;
204
- /** true = read-only (already picked / shortage / remainder) */
205
- handled: boolean;
389
+ addressLine1?: EditOrderAddressDtoAddressLine1;
206
390
  /** @nullable */
207
- itemId: string | null;
391
+ addressLine2?: EditOrderAddressDtoAddressLine2;
208
392
  /** @nullable */
209
- batchId: string | null;
393
+ zipCode?: EditOrderAddressDtoZipCode;
210
394
  /** @nullable */
211
- expiryDate: string | null;
395
+ city?: EditOrderAddressDtoCity;
212
396
  /** @nullable */
213
- position: PickingStopDtoPosition;
397
+ state?: EditOrderAddressDtoState;
214
398
  /** @nullable */
215
- containerId: string | null;
399
+ county?: EditOrderAddressDtoCounty;
216
400
  /**
217
- * container label_number
401
+ * ISO 3166-1 alpha-2
218
402
  * @nullable
219
403
  */
220
- containerLabelId: number | null;
404
+ countryCode?: EditOrderAddressDtoCountryCode;
221
405
  /** @nullable */
222
- podUnitWidthMm: number | null;
406
+ floorLevel?: EditOrderAddressDtoFloorLevel;
223
407
  /** @nullable */
224
- podUnitDepthMm: number | null;
408
+ elevator?: EditOrderAddressDtoElevator;
225
409
  /** @nullable */
226
- podUnitHeightMm: number | null;
227
- }
228
- export interface PickingRouteDto {
229
- salesOrderId: string;
410
+ doorCode?: EditOrderAddressDtoDoorCode;
230
411
  /** @nullable */
231
- warehouseId: string | null;
232
- /** Stops in walk order */
233
- stops: PickingStopDto[];
412
+ transportInstructions?: EditOrderAddressDtoTransportInstructions;
234
413
  }
235
- export interface AddressDto {
236
- addressId: string;
237
- organizationId: string;
238
- name: string;
239
- line1: string;
240
- /** @nullable */
241
- line2: string | null;
242
- zipCode: string;
243
- /** @nullable */
244
- city: string | null;
245
- /** @nullable */
246
- state: string | null;
414
+ export interface RescheduleOrderDto {
415
+ /** The cart_component_key of the leg to re-plan (e.g. move:pickup, move:delivery). */
416
+ componentKey: string;
417
+ /** The new transport_slot to book. */
418
+ timeslotId: string;
419
+ /** Overrides the derived transport date; defaults to the new slot's date. */
420
+ preferredDate?: string;
421
+ }
422
+ export interface EditOrderDto {
423
+ recipient?: EditOrderRecipientDto;
424
+ address?: EditOrderAddressDto;
425
+ /** New preferred transport date (does not re-plan capacity by itself). */
426
+ preferredTransportDate?: string;
427
+ reschedule?: RescheduleOrderDto;
428
+ }
429
+ /**
430
+ * Opaque line metadata. Accepted but not persisted — sales_order_product carries no metadata column.
431
+ */
432
+ export type OrderItemInputMetadata = {
433
+ [key: string]: unknown;
434
+ };
435
+ export interface OrderItemInput {
436
+ /** Present = adjust this existing live line; absent = add a new line. */
437
+ salesOrderProductId?: string;
438
+ /** Product reference. On an add it becomes the placeholder product's name (matching placement). */
439
+ productReference: string;
440
+ /**
441
+ * Requested (demand) quantity.
442
+ * @minimum 1
443
+ */
444
+ requestedQuantity: number;
445
+ /** Opaque line metadata. Accepted but not persisted — sales_order_product carries no metadata column. */
446
+ metadata?: OrderItemInputMetadata;
447
+ }
448
+ export interface EditOrderItemsDto {
449
+ /** Full desired set of product lines. Omit a stored line to remove it; an empty array removes all removable lines. */
450
+ items: OrderItemInput[];
451
+ }
452
+ /**
453
+ * Target sales_order status. Must be reachable from the order's current status via sales_order_status_transition. The terminal targets COMPLETED / CANCELLED are rejected here (transition_requires_named_command) — use POST /complete, /deliver-all, or /cancel.
454
+ */
455
+ export type OrderTransitionDtoToStatus = typeof OrderTransitionDtoToStatus[keyof typeof OrderTransitionDtoToStatus];
456
+ export declare const OrderTransitionDtoToStatus: {
457
+ readonly CREATED: "CREATED";
458
+ readonly CONFIRMED: "CONFIRMED";
459
+ readonly REQUESTED: "REQUESTED";
460
+ readonly PROCESSING: "PROCESSING";
461
+ readonly PROCESSED: "PROCESSED";
462
+ readonly IN_TRANSIT: "IN_TRANSIT";
463
+ readonly AT_CUSTOMER: "AT_CUSTOMER";
464
+ readonly RECEIVED: "RECEIVED";
465
+ readonly COMPLETED: "COMPLETED";
466
+ readonly CANCELLED: "CANCELLED";
467
+ readonly FAILED: "FAILED";
468
+ };
469
+ export interface OrderTransitionDto {
470
+ /** Target sales_order status. Must be reachable from the order's current status via sales_order_status_transition. The terminal targets COMPLETED / CANCELLED are rejected here (transition_requires_named_command) — use POST /complete, /deliver-all, or /cancel. */
471
+ toStatus: OrderTransitionDtoToStatus;
472
+ /**
473
+ * Free-text reason, carried on the emitted sales_order.status_changed outbox event only (sales_order_status_change has no reason column).
474
+ * @maxLength 500
475
+ */
476
+ reason?: string;
477
+ }
478
+ /**
479
+ * The status before the transition.
480
+ */
481
+ export type OrderTransitionResultDtoOldStatus = typeof OrderTransitionResultDtoOldStatus[keyof typeof OrderTransitionResultDtoOldStatus];
482
+ export declare const OrderTransitionResultDtoOldStatus: {
483
+ readonly CREATED: "CREATED";
484
+ readonly CONFIRMED: "CONFIRMED";
485
+ readonly REQUESTED: "REQUESTED";
486
+ readonly PROCESSING: "PROCESSING";
487
+ readonly PROCESSED: "PROCESSED";
488
+ readonly IN_TRANSIT: "IN_TRANSIT";
489
+ readonly AT_CUSTOMER: "AT_CUSTOMER";
490
+ readonly RECEIVED: "RECEIVED";
491
+ readonly COMPLETED: "COMPLETED";
492
+ readonly CANCELLED: "CANCELLED";
493
+ readonly FAILED: "FAILED";
494
+ };
495
+ /**
496
+ * The status after the transition.
497
+ */
498
+ export type OrderTransitionResultDtoNewStatus = typeof OrderTransitionResultDtoNewStatus[keyof typeof OrderTransitionResultDtoNewStatus];
499
+ export declare const OrderTransitionResultDtoNewStatus: {
500
+ readonly CREATED: "CREATED";
501
+ readonly CONFIRMED: "CONFIRMED";
502
+ readonly REQUESTED: "REQUESTED";
503
+ readonly PROCESSING: "PROCESSING";
504
+ readonly PROCESSED: "PROCESSED";
505
+ readonly IN_TRANSIT: "IN_TRANSIT";
506
+ readonly AT_CUSTOMER: "AT_CUSTOMER";
507
+ readonly RECEIVED: "RECEIVED";
508
+ readonly COMPLETED: "COMPLETED";
509
+ readonly CANCELLED: "CANCELLED";
510
+ readonly FAILED: "FAILED";
511
+ };
512
+ export interface OrderTransitionResultDto {
513
+ salesOrderId: string;
514
+ /** The status before the transition. */
515
+ oldStatus: OrderTransitionResultDtoOldStatus;
516
+ /** The status after the transition. */
517
+ newStatus: OrderTransitionResultDtoNewStatus;
518
+ transitionedAt: string;
519
+ }
520
+ export interface DeliverAllDto {
521
+ /** An existing file_asset id (kind POD) to link to the leg as proof_of_delivery. */
522
+ proofOfDeliveryFileId?: string;
523
+ /** An existing file_asset id (kind SIGNATURE) to link to the leg as signature. */
524
+ signatureFileId?: string;
525
+ /** Delivery timestamp; defaults to now(). Stamped on the leg and the order. */
526
+ deliveredAt?: string;
527
+ }
528
+ /**
529
+ * Always COMPLETED.
530
+ */
531
+ export type DeliverAllLegDtoStatus = typeof DeliverAllLegDtoStatus[keyof typeof DeliverAllLegDtoStatus];
532
+ export declare const DeliverAllLegDtoStatus: {
533
+ readonly COMPLETED: "COMPLETED";
534
+ };
535
+ export interface DeliverAllLegDto {
536
+ legId: string;
537
+ /** Always COMPLETED. */
538
+ status: DeliverAllLegDtoStatus;
539
+ completedAt: string;
540
+ }
541
+ /**
542
+ * Always DELIVERED.
543
+ */
544
+ export type DeliveredPodDtoStatus = typeof DeliveredPodDtoStatus[keyof typeof DeliveredPodDtoStatus];
545
+ export declare const DeliveredPodDtoStatus: {
546
+ readonly DELIVERED: "DELIVERED";
547
+ };
548
+ export interface DeliveredPodDto {
549
+ podId: string;
550
+ /** Always DELIVERED. */
551
+ status: DeliveredPodDtoStatus;
552
+ }
553
+ /**
554
+ * Always COMPLETED after a successful delivery.
555
+ */
556
+ export type DeliverAllResultDtoStatus = typeof DeliverAllResultDtoStatus[keyof typeof DeliverAllResultDtoStatus];
557
+ export declare const DeliverAllResultDtoStatus: {
558
+ readonly COMPLETED: "COMPLETED";
559
+ };
560
+ export interface DeliverAllResultDto {
561
+ salesOrderId: string;
562
+ /** Always COMPLETED after a successful delivery. */
563
+ status: DeliverAllResultDtoStatus;
564
+ leg: DeliverAllLegDto;
565
+ /** Every pod that was PACKED and is now DELIVERED. */
566
+ deliveredPods: DeliveredPodDto[];
567
+ /** @nullable */
568
+ proofOfDeliveryFileId: string | null;
569
+ /** @nullable */
570
+ signatureFileId: string | null;
571
+ /** True when this response is an idempotent replay. */
572
+ idempotent: boolean;
573
+ }
574
+ export interface CompleteOrderDto {
575
+ /** When true, complete even if some product lines are not HANDLED (records products_missing_info=true). Defaults to false → 409 order_has_missing_info. */
576
+ allowMissingInfo?: boolean;
577
+ }
578
+ /**
579
+ * Always COMPLETED after a successful complete.
580
+ */
581
+ export type CompleteOrderResultDtoStatus = typeof CompleteOrderResultDtoStatus[keyof typeof CompleteOrderResultDtoStatus];
582
+ export declare const CompleteOrderResultDtoStatus: {
583
+ readonly COMPLETED: "COMPLETED";
584
+ };
585
+ export interface CompleteOrderResultDto {
586
+ salesOrderId: string;
587
+ /** Always COMPLETED after a successful complete. */
588
+ status: CompleteOrderResultDtoStatus;
589
+ completedAt: string;
590
+ /** Whether the completed order still had non-HANDLED product lines (mirrors sales_order.metadata.products_missing_info). */
591
+ productsMissingInfo: boolean;
592
+ /** True when this response is an idempotent replay. */
593
+ idempotent: boolean;
594
+ }
595
+ export interface RemoveRemainingDto {
596
+ /**
597
+ * Free-text reason, carried on the emitted sales_order.lines_removed outbox event only.
598
+ * @maxLength 500
599
+ */
600
+ reason?: string;
601
+ }
602
+ export interface RemovedLineDto {
603
+ salesOrderProductId: string;
604
+ productId: string;
605
+ /** Units removed from this line: the whole requested quantity (line soft-deleted) or the unfulfilled remainder (line reduced to its fulfilled quantity). */
606
+ removedQuantity: number;
607
+ }
608
+ export interface RemoveRemainingResultDto {
609
+ salesOrderId: string;
610
+ /** Lines dropped (0 fulfilled → soft-deleted) or reduced (partial → requested lowered to fulfilled). */
611
+ removed: RemovedLineDto[];
612
+ /** Count of live product lines remaining after this call (reduced lines still count). */
613
+ remainingLineCount: number;
614
+ /** True when this was an idempotent replay of a prior call. */
615
+ idempotent: boolean;
616
+ }
617
+ export interface CancelOrderDto {
618
+ /**
619
+ * Free-text cancellation reason, persisted on sales_order.cancellation_reason.
620
+ * @maxLength 500
621
+ */
622
+ reason?: string;
623
+ }
624
+ /**
625
+ * Always CANCELLED after a successful cancel.
626
+ */
627
+ export type CancelOrderResultDtoStatus = typeof CancelOrderResultDtoStatus[keyof typeof CancelOrderResultDtoStatus];
628
+ export declare const CancelOrderResultDtoStatus: {
629
+ readonly CANCELLED: "CANCELLED";
630
+ };
631
+ export interface CancelOrderResultDto {
632
+ salesOrderId: string;
633
+ /** Always CANCELLED after a successful cancel. */
634
+ status: CancelOrderResultDtoStatus;
635
+ cancelledAt: string;
636
+ /** The persisted reason, when supplied. */
637
+ cancellationReason?: string;
638
+ /** Capacity reservations released by this cancel (may be empty). */
639
+ releasedReservationIds: string[];
640
+ }
641
+ export interface OrderGroupDto {
642
+ orderGroupId: string;
643
+ /** Customer-facing booking number (tenant sequence). */
644
+ orderNumber: number;
645
+ groupType: string;
646
+ /** Derived roll-up over the group's jobs. */
647
+ status: string;
648
+ /** @nullable */
649
+ reference: string | null;
650
+ createdAt: string;
651
+ }
652
+ export interface OrderGroupDetailDto {
653
+ orderGroupId: string;
654
+ /** Customer-facing booking number (tenant sequence). */
655
+ orderNumber: number;
656
+ groupType: string;
657
+ /** Derived roll-up over the group's jobs. */
658
+ status: string;
659
+ /** @nullable */
660
+ reference: string | null;
661
+ createdAt: string;
662
+ orders: OrderSummaryDto[];
663
+ }
664
+ export interface PickingStopPositionDto {
665
+ /** @nullable */
666
+ section: string | null;
667
+ /** @nullable */
668
+ positionNumber: number | null;
669
+ /** @nullable */
670
+ level: number | null;
671
+ /**
672
+ * position_grade value
673
+ * @nullable
674
+ */
675
+ grade: string | null;
676
+ /** @nullable */
677
+ checkNumber: number | null;
678
+ }
679
+ export type PickingStopDtoKind = typeof PickingStopDtoKind[keyof typeof PickingStopDtoKind];
680
+ export declare const PickingStopDtoKind: {
681
+ readonly PICK: "PICK";
682
+ readonly PACKED: "PACKED";
683
+ readonly SHORTAGE: "SHORTAGE";
684
+ readonly REMAINDER: "REMAINDER";
685
+ };
686
+ /**
687
+ * @nullable
688
+ */
689
+ export type PickingStopDtoPosition = PickingStopPositionDto | null;
690
+ export interface PickingStopDto {
691
+ /** `${sopId}:${podId}` or `${sopId}:${suffix}` for shortage/remainder */
692
+ key: string;
693
+ kind: PickingStopDtoKind;
694
+ salesOrderProductId: string;
695
+ productId: string;
696
+ /** @nullable */
697
+ productName: string | null;
698
+ /** @nullable */
699
+ productImageStorageKey: string | null;
700
+ /** @nullable */
701
+ parcelQuantity: number | null;
702
+ /** @nullable */
703
+ preferredBatch: string | null;
704
+ /** Service-level constant (product has no ignore_gtin column) */
705
+ ignoreGtin: boolean;
706
+ /**
707
+ * null for SHORTAGE / REMAINDER stops
708
+ * @nullable
709
+ */
710
+ podId: string | null;
711
+ podQuantity: number;
712
+ quantityToPick: number;
713
+ /** @nullable */
714
+ packedQuantity: number | null;
715
+ /** true = read-only (already picked / shortage / remainder) */
716
+ handled: boolean;
717
+ /** @nullable */
718
+ itemId: string | null;
719
+ /** @nullable */
720
+ batchId: string | null;
721
+ /** @nullable */
722
+ expiryDate: string | null;
723
+ /** @nullable */
724
+ position: PickingStopDtoPosition;
725
+ /** @nullable */
726
+ containerId: string | null;
727
+ /**
728
+ * container label_number
729
+ * @nullable
730
+ */
731
+ containerLabelId: number | null;
732
+ /** @nullable */
733
+ podUnitWidthMm: number | null;
734
+ /** @nullable */
735
+ podUnitDepthMm: number | null;
736
+ /** @nullable */
737
+ podUnitHeightMm: number | null;
738
+ }
739
+ export interface PickingRouteDto {
740
+ salesOrderId: string;
741
+ /** @nullable */
742
+ warehouseId: string | null;
743
+ /** Stops in walk order */
744
+ stops: PickingStopDto[];
745
+ }
746
+ export interface AddressDto {
747
+ addressId: string;
748
+ organizationId: string;
749
+ name: string;
750
+ line1: string;
751
+ /** @nullable */
752
+ line2: string | null;
753
+ zipCode: string;
754
+ /** @nullable */
755
+ city: string | null;
756
+ /** @nullable */
757
+ state: string | null;
247
758
  /** @nullable */
248
759
  county: string | null;
249
760
  /** ISO 3166-1 alpha-2 country code. */
@@ -277,6 +788,16 @@ export interface AddressDto {
277
788
  createdAt: string;
278
789
  updatedAt: string;
279
790
  }
791
+ export interface PaginatedAddressesDto {
792
+ /** The page of rows. */
793
+ items: AddressDto[];
794
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
795
+ total: number;
796
+ /** Effective max rows applied (after defaults/clamp). */
797
+ limit: number;
798
+ /** Effective rows skipped applied. */
799
+ offset: number;
800
+ }
280
801
  export interface CreateAddressDto {
281
802
  /** Target organization — staff-only (create on behalf). An org user's own organization is always taken from the JWT; passing another org is rejected. */
282
803
  organizationId?: string;
@@ -353,6 +874,16 @@ export interface OrgContactDto {
353
874
  createdAt: string;
354
875
  updatedAt: string;
355
876
  }
877
+ export interface PaginatedOrgContactsDto {
878
+ /** The page of rows. */
879
+ items: OrgContactDto[];
880
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
881
+ total: number;
882
+ /** Effective max rows applied (after defaults/clamp). */
883
+ limit: number;
884
+ /** Effective rows skipped applied. */
885
+ offset: number;
886
+ }
356
887
  export interface CreateOrgContactDto {
357
888
  /** Target organization — staff-only (create on behalf). An org user's own organization is always taken from the JWT; passing another org is rejected. */
358
889
  organizationId?: string;
@@ -406,6 +937,16 @@ export interface OrganizationDto {
406
937
  createdAt: string;
407
938
  updatedAt: string;
408
939
  }
940
+ export interface PaginatedOrganizationsDto {
941
+ /** The page of rows. */
942
+ items: OrganizationDto[];
943
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
944
+ total: number;
945
+ /** Effective max rows applied (after defaults/clamp). */
946
+ limit: number;
947
+ /** Effective rows skipped applied. */
948
+ offset: number;
949
+ }
409
950
  export type CreateOrganizationDtoType = typeof CreateOrganizationDtoType[keyof typeof CreateOrganizationDtoType];
410
951
  export declare const CreateOrganizationDtoType: {
411
952
  readonly business: "business";
@@ -446,38 +987,434 @@ export interface UpdateOrganizationDto {
446
987
  preferredWarehouseId?: string;
447
988
  metadata?: UpdateOrganizationDtoMetadata;
448
989
  }
449
- export interface MembershipDto {
450
- organizationId: string;
451
- role: string;
452
- /** Fine-grained permissions (resource:action) granted by this org role — drives component visibility when this org is active */
453
- capabilities: string[];
454
- }
455
- export interface MeResponseDto {
456
- /** Keycloak subject identifier */
457
- sub: string;
458
- /**
459
- * Legacy Cognito subject identifier, set for federated users
990
+ export type OrganizationSettingDtoServiceType = typeof OrganizationSettingDtoServiceType[keyof typeof OrganizationSettingDtoServiceType];
991
+ export declare const OrganizationSettingDtoServiceType: {
992
+ readonly STORAGE: "STORAGE";
993
+ readonly FULFILLMENT: "FULFILLMENT";
994
+ };
995
+ export interface OrganizationSettingDto {
996
+ serviceType: OrganizationSettingDtoServiceType;
997
+ requireBatchId: boolean;
998
+ requireExpiryDate: boolean;
999
+ requireWeight: boolean;
1000
+ requireSscc: boolean;
1001
+ allowCreateNewProduct: boolean;
1002
+ gtinSupport: boolean;
1003
+ /**
1004
+ * Free-text shown to receivers.
460
1005
  * @nullable
461
1006
  */
462
- cognitoSub: string | null;
1007
+ checkinInformation: string | null;
1008
+ createdAt: string;
1009
+ updatedAt: string;
1010
+ }
1011
+ export type UpsertOrganizationSettingDtoServiceType = typeof UpsertOrganizationSettingDtoServiceType[keyof typeof UpsertOrganizationSettingDtoServiceType];
1012
+ export declare const UpsertOrganizationSettingDtoServiceType: {
1013
+ readonly STORAGE: "STORAGE";
1014
+ readonly FULFILLMENT: "FULFILLMENT";
1015
+ };
1016
+ export interface UpsertOrganizationSettingDto {
1017
+ serviceType: UpsertOrganizationSettingDtoServiceType;
1018
+ requireBatchId?: boolean;
1019
+ requireExpiryDate?: boolean;
1020
+ requireWeight?: boolean;
1021
+ requireSscc?: boolean;
1022
+ allowCreateNewProduct?: boolean;
1023
+ gtinSupport?: boolean;
1024
+ /** Free-text shown to receivers. */
1025
+ checkinInformation?: string;
1026
+ }
1027
+ export type TenantModuleDtoModule = typeof TenantModuleDtoModule[keyof typeof TenantModuleDtoModule];
1028
+ export declare const TenantModuleDtoModule: {
1029
+ readonly PLATFORM: "PLATFORM";
1030
+ readonly LOGISTICS: "LOGISTICS";
1031
+ readonly STORAGE: "STORAGE";
1032
+ readonly FIELD_SERVICE: "FIELD_SERVICE";
1033
+ readonly MARKETPLACE: "MARKETPLACE";
1034
+ };
1035
+ export interface TenantModuleDto {
1036
+ module: TenantModuleDtoModule;
1037
+ enabled: boolean;
463
1038
  /**
464
- * Resolved tenant id; null for platform-admin without a tenant context
1039
+ * When the optional module was enabled. Null for immutable modules and for optional modules that carry no recorded timestamp.
465
1040
  * @nullable
466
1041
  */
467
- tenantId: string | null;
468
- /** @nullable */
469
- email: string | null;
470
- /** @nullable */
471
- displayName: string | null;
472
- memberships: MembershipDto[];
473
- /** Cross-cutting permissions (resource:action) from platform/tenant-wide/warehouse/carrier roles for the active context — drives client-side component visibility. Org-scoped permissions are on each membership. */
474
- capabilities: string[];
475
- }
476
- export interface UpdateMeDto {
477
- displayName?: string;
1042
+ enabledAt: string | null;
478
1043
  }
479
- export interface AnonymousSessionDto {
480
- /** Opaque bearer token for the anonymous session. Send it as the X-Session-Token header on guest-capable endpoints. Shown once — it is stored only as a hash. */
1044
+ /**
1045
+ * STORAGE | FIELD_SERVICE | MARKETPLACE
1046
+ */
1047
+ export type ModuleToggleDtoModule = typeof ModuleToggleDtoModule[keyof typeof ModuleToggleDtoModule];
1048
+ export declare const ModuleToggleDtoModule: {
1049
+ readonly STORAGE: "STORAGE";
1050
+ readonly FIELD_SERVICE: "FIELD_SERVICE";
1051
+ readonly MARKETPLACE: "MARKETPLACE";
1052
+ };
1053
+ export interface ModuleToggleDto {
1054
+ /** STORAGE | FIELD_SERVICE | MARKETPLACE */
1055
+ module: ModuleToggleDtoModule;
1056
+ enabled: boolean;
1057
+ }
1058
+ export interface UpdateTenantModulesDto {
1059
+ modules: ModuleToggleDto[];
1060
+ }
1061
+ export interface ServiceCatalogDto {
1062
+ serviceCode: string;
1063
+ name: string;
1064
+ category: string;
1065
+ /** @nullable */
1066
+ description: string | null;
1067
+ }
1068
+ export type TenantServiceDtoDispatchMode = typeof TenantServiceDtoDispatchMode[keyof typeof TenantServiceDtoDispatchMode];
1069
+ export declare const TenantServiceDtoDispatchMode: {
1070
+ readonly RIDES_LEG: "RIDES_LEG";
1071
+ readonly OWN_VISIT: "OWN_VISIT";
1072
+ readonly EITHER: "EITHER";
1073
+ };
1074
+ export type TenantServiceDtoConfig = {
1075
+ [key: string]: unknown;
1076
+ };
1077
+ export interface TenantServiceDto {
1078
+ tenantServiceId: string;
1079
+ serviceCode: string;
1080
+ /** Joined from service_catalog. */
1081
+ serviceName: string;
1082
+ /** Joined from service_catalog. */
1083
+ category: string;
1084
+ isActive: boolean;
1085
+ /** @nullable */
1086
+ billingArticleId: string | null;
1087
+ dispatchMode: TenantServiceDtoDispatchMode;
1088
+ /** @nullable */
1089
+ dispatchTransportServiceId: string | null;
1090
+ config: TenantServiceDtoConfig;
1091
+ createdAt: string;
1092
+ updatedAt: string;
1093
+ }
1094
+ export type CreateTenantServiceDtoDispatchMode = typeof CreateTenantServiceDtoDispatchMode[keyof typeof CreateTenantServiceDtoDispatchMode];
1095
+ export declare const CreateTenantServiceDtoDispatchMode: {
1096
+ readonly RIDES_LEG: "RIDES_LEG";
1097
+ readonly OWN_VISIT: "OWN_VISIT";
1098
+ readonly EITHER: "EITHER";
1099
+ };
1100
+ /**
1101
+ * Per-service operational config (JSONB).
1102
+ */
1103
+ export type CreateTenantServiceDtoConfig = {
1104
+ [key: string]: unknown;
1105
+ };
1106
+ export interface CreateTenantServiceDto {
1107
+ /** FK → service_catalog.service_code. */
1108
+ serviceCode: string;
1109
+ isActive?: boolean;
1110
+ billingArticleId?: string;
1111
+ dispatchMode?: CreateTenantServiceDtoDispatchMode;
1112
+ dispatchTransportServiceId?: string;
1113
+ /** Per-service operational config (JSONB). */
1114
+ config?: CreateTenantServiceDtoConfig;
1115
+ }
1116
+ export type UpdateTenantServiceDtoDispatchMode = typeof UpdateTenantServiceDtoDispatchMode[keyof typeof UpdateTenantServiceDtoDispatchMode];
1117
+ export declare const UpdateTenantServiceDtoDispatchMode: {
1118
+ readonly RIDES_LEG: "RIDES_LEG";
1119
+ readonly OWN_VISIT: "OWN_VISIT";
1120
+ readonly EITHER: "EITHER";
1121
+ };
1122
+ export type UpdateTenantServiceDtoConfig = {
1123
+ [key: string]: unknown;
1124
+ };
1125
+ export interface UpdateTenantServiceDto {
1126
+ isActive?: boolean;
1127
+ billingArticleId?: string;
1128
+ dispatchMode?: UpdateTenantServiceDtoDispatchMode;
1129
+ dispatchTransportServiceId?: string;
1130
+ config?: UpdateTenantServiceDtoConfig;
1131
+ }
1132
+ export type CarrierProviderDtoDefaultKind = typeof CarrierProviderDtoDefaultKind[keyof typeof CarrierProviderDtoDefaultKind];
1133
+ export declare const CarrierProviderDtoDefaultKind: {
1134
+ readonly OWN_FLEET: "OWN_FLEET";
1135
+ readonly EXTERNAL: "EXTERNAL";
1136
+ readonly INTEGRATION: "INTEGRATION";
1137
+ };
1138
+ export interface CarrierProviderDto {
1139
+ carrierProviderId: string;
1140
+ code: string;
1141
+ name: string;
1142
+ defaultKind: CarrierProviderDtoDefaultKind;
1143
+ /** @nullable */
1144
+ integrationProvider: string | null;
1145
+ /** @nullable */
1146
+ defaultTrackingUrlTemplate: string | null;
1147
+ isActive: boolean;
1148
+ }
1149
+ export interface PaginatedCarrierProvidersDto {
1150
+ /** The page of rows. */
1151
+ items: CarrierProviderDto[];
1152
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
1153
+ total: number;
1154
+ /** Effective max rows applied (after defaults/clamp). */
1155
+ limit: number;
1156
+ /** Effective rows skipped applied. */
1157
+ offset: number;
1158
+ }
1159
+ export type TenantCarrierDtoKind = typeof TenantCarrierDtoKind[keyof typeof TenantCarrierDtoKind];
1160
+ export declare const TenantCarrierDtoKind: {
1161
+ readonly OWN_FLEET: "OWN_FLEET";
1162
+ readonly EXTERNAL: "EXTERNAL";
1163
+ readonly INTEGRATION: "INTEGRATION";
1164
+ };
1165
+ /**
1166
+ * @nullable
1167
+ */
1168
+ export type TenantCarrierDtoMetadata = {
1169
+ [key: string]: unknown;
1170
+ } | null;
1171
+ export interface TenantCarrierDto {
1172
+ tenantCarrierId: string;
1173
+ carrierProviderId: string;
1174
+ code: string;
1175
+ name: string;
1176
+ kind: TenantCarrierDtoKind;
1177
+ /** @nullable */
1178
+ agreementNumber: string | null;
1179
+ /** @nullable */
1180
+ integrationConnectorId: string | null;
1181
+ supportsSelfRouting: boolean;
1182
+ /** @nullable */
1183
+ contactPhone: string | null;
1184
+ /** @nullable */
1185
+ trackingUrlTemplate: string | null;
1186
+ isActive: boolean;
1187
+ /** @nullable */
1188
+ metadata: TenantCarrierDtoMetadata;
1189
+ createdAt: string;
1190
+ updatedAt: string;
1191
+ }
1192
+ export interface PaginatedCarriersDto {
1193
+ /** The page of rows. */
1194
+ items: TenantCarrierDto[];
1195
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
1196
+ total: number;
1197
+ /** Effective max rows applied (after defaults/clamp). */
1198
+ limit: number;
1199
+ /** Effective rows skipped applied. */
1200
+ offset: number;
1201
+ }
1202
+ export type CreateTenantCarrierDtoKind = typeof CreateTenantCarrierDtoKind[keyof typeof CreateTenantCarrierDtoKind];
1203
+ export declare const CreateTenantCarrierDtoKind: {
1204
+ readonly OWN_FLEET: "OWN_FLEET";
1205
+ readonly EXTERNAL: "EXTERNAL";
1206
+ readonly INTEGRATION: "INTEGRATION";
1207
+ };
1208
+ export type CreateTenantCarrierDtoMetadata = {
1209
+ [key: string]: unknown;
1210
+ };
1211
+ export interface CreateTenantCarrierDto {
1212
+ carrierProviderId: string;
1213
+ code: string;
1214
+ name: string;
1215
+ kind: CreateTenantCarrierDtoKind;
1216
+ agreementNumber?: string;
1217
+ integrationConnectorId?: string;
1218
+ supportsSelfRouting?: boolean;
1219
+ contactPhone?: string;
1220
+ trackingUrlTemplate?: string;
1221
+ isActive?: boolean;
1222
+ metadata?: CreateTenantCarrierDtoMetadata;
1223
+ }
1224
+ export type UpdateTenantCarrierDtoKind = typeof UpdateTenantCarrierDtoKind[keyof typeof UpdateTenantCarrierDtoKind];
1225
+ export declare const UpdateTenantCarrierDtoKind: {
1226
+ readonly OWN_FLEET: "OWN_FLEET";
1227
+ readonly EXTERNAL: "EXTERNAL";
1228
+ readonly INTEGRATION: "INTEGRATION";
1229
+ };
1230
+ export type UpdateTenantCarrierDtoMetadata = {
1231
+ [key: string]: unknown;
1232
+ };
1233
+ export interface UpdateTenantCarrierDto {
1234
+ code?: string;
1235
+ name?: string;
1236
+ kind?: UpdateTenantCarrierDtoKind;
1237
+ agreementNumber?: string;
1238
+ integrationConnectorId?: string;
1239
+ supportsSelfRouting?: boolean;
1240
+ contactPhone?: string;
1241
+ trackingUrlTemplate?: string;
1242
+ isActive?: boolean;
1243
+ metadata?: UpdateTenantCarrierDtoMetadata;
1244
+ }
1245
+ export type CarrierMethodDtoSupportedRecipientTypesItem = typeof CarrierMethodDtoSupportedRecipientTypesItem[keyof typeof CarrierMethodDtoSupportedRecipientTypesItem];
1246
+ export declare const CarrierMethodDtoSupportedRecipientTypesItem: {
1247
+ readonly business: "business";
1248
+ readonly personal: "personal";
1249
+ };
1250
+ export type CarrierMethodDtoSupportedShipmentUnitTypesItem = typeof CarrierMethodDtoSupportedShipmentUnitTypesItem[keyof typeof CarrierMethodDtoSupportedShipmentUnitTypesItem];
1251
+ export declare const CarrierMethodDtoSupportedShipmentUnitTypesItem: {
1252
+ readonly EPAL: "EPAL";
1253
+ readonly HALF_PALLET: "HALF_PALLET";
1254
+ readonly QUARTER_PALLET: "QUARTER_PALLET";
1255
+ readonly PARCEL: "PARCEL";
1256
+ readonly SACK: "SACK";
1257
+ readonly LOOSE_ITEM: "LOOSE_ITEM";
1258
+ readonly OTHER: "OTHER";
1259
+ };
1260
+ export interface CarrierMethodDto {
1261
+ tenantCarrierMethodId: string;
1262
+ tenantCarrierId: string;
1263
+ code: string;
1264
+ name: string;
1265
+ /** @nullable */
1266
+ methodCode: string | null;
1267
+ /** @nullable */
1268
+ maxWeightG: number | null;
1269
+ /** @nullable */
1270
+ maxLengthMm: number | null;
1271
+ /**
1272
+ * bigint
1273
+ * @nullable
1274
+ */
1275
+ maxVolumeCm3: number | null;
1276
+ supportedRecipientTypes: CarrierMethodDtoSupportedRecipientTypesItem[];
1277
+ supportedShipmentUnitTypes: CarrierMethodDtoSupportedShipmentUnitTypesItem[];
1278
+ /** @nullable */
1279
+ bookingSoftware: string | null;
1280
+ isActive: boolean;
1281
+ }
1282
+ export interface PaginatedCarrierMethodsDto {
1283
+ /** The page of rows. */
1284
+ items: CarrierMethodDto[];
1285
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
1286
+ total: number;
1287
+ /** Effective max rows applied (after defaults/clamp). */
1288
+ limit: number;
1289
+ /** Effective rows skipped applied. */
1290
+ offset: number;
1291
+ }
1292
+ export type CreateCarrierMethodDtoSupportedRecipientTypesItem = typeof CreateCarrierMethodDtoSupportedRecipientTypesItem[keyof typeof CreateCarrierMethodDtoSupportedRecipientTypesItem];
1293
+ export declare const CreateCarrierMethodDtoSupportedRecipientTypesItem: {
1294
+ readonly business: "business";
1295
+ readonly personal: "personal";
1296
+ };
1297
+ export type CreateCarrierMethodDtoSupportedShipmentUnitTypesItem = typeof CreateCarrierMethodDtoSupportedShipmentUnitTypesItem[keyof typeof CreateCarrierMethodDtoSupportedShipmentUnitTypesItem];
1298
+ export declare const CreateCarrierMethodDtoSupportedShipmentUnitTypesItem: {
1299
+ readonly EPAL: "EPAL";
1300
+ readonly HALF_PALLET: "HALF_PALLET";
1301
+ readonly QUARTER_PALLET: "QUARTER_PALLET";
1302
+ readonly PARCEL: "PARCEL";
1303
+ readonly SACK: "SACK";
1304
+ readonly LOOSE_ITEM: "LOOSE_ITEM";
1305
+ readonly OTHER: "OTHER";
1306
+ };
1307
+ export interface CreateCarrierMethodDto {
1308
+ code: string;
1309
+ name: string;
1310
+ /** The carrier-API product code. */
1311
+ methodCode?: string;
1312
+ maxWeightG?: number;
1313
+ maxLengthMm?: number;
1314
+ /** bigint */
1315
+ maxVolumeCm3?: number;
1316
+ supportedRecipientTypes?: CreateCarrierMethodDtoSupportedRecipientTypesItem[];
1317
+ supportedShipmentUnitTypes?: CreateCarrierMethodDtoSupportedShipmentUnitTypesItem[];
1318
+ bookingSoftware?: string;
1319
+ isActive?: boolean;
1320
+ }
1321
+ export interface DriverDto {
1322
+ /** Keycloak subject identifier of the driver */
1323
+ userSub: string;
1324
+ /**
1325
+ * Driver display name (non-PII)
1326
+ * @nullable
1327
+ */
1328
+ displayName: string | null;
1329
+ /** Assignment role (carrier-driver) */
1330
+ role: string;
1331
+ active: boolean;
1332
+ }
1333
+ export type UpdateCarrierMethodDtoSupportedRecipientTypesItem = typeof UpdateCarrierMethodDtoSupportedRecipientTypesItem[keyof typeof UpdateCarrierMethodDtoSupportedRecipientTypesItem];
1334
+ export declare const UpdateCarrierMethodDtoSupportedRecipientTypesItem: {
1335
+ readonly business: "business";
1336
+ readonly personal: "personal";
1337
+ };
1338
+ export type UpdateCarrierMethodDtoSupportedShipmentUnitTypesItem = typeof UpdateCarrierMethodDtoSupportedShipmentUnitTypesItem[keyof typeof UpdateCarrierMethodDtoSupportedShipmentUnitTypesItem];
1339
+ export declare const UpdateCarrierMethodDtoSupportedShipmentUnitTypesItem: {
1340
+ readonly EPAL: "EPAL";
1341
+ readonly HALF_PALLET: "HALF_PALLET";
1342
+ readonly QUARTER_PALLET: "QUARTER_PALLET";
1343
+ readonly PARCEL: "PARCEL";
1344
+ readonly SACK: "SACK";
1345
+ readonly LOOSE_ITEM: "LOOSE_ITEM";
1346
+ readonly OTHER: "OTHER";
1347
+ };
1348
+ export interface UpdateCarrierMethodDto {
1349
+ code?: string;
1350
+ name?: string;
1351
+ methodCode?: string;
1352
+ maxWeightG?: number;
1353
+ maxLengthMm?: number;
1354
+ /** bigint */
1355
+ maxVolumeCm3?: number;
1356
+ supportedRecipientTypes?: UpdateCarrierMethodDtoSupportedRecipientTypesItem[];
1357
+ supportedShipmentUnitTypes?: UpdateCarrierMethodDtoSupportedShipmentUnitTypesItem[];
1358
+ bookingSoftware?: string;
1359
+ isActive?: boolean;
1360
+ }
1361
+ export interface MembershipDto {
1362
+ organizationId: string;
1363
+ role: string;
1364
+ /** Fine-grained permissions (resource:action) granted by this org role — drives component visibility when this org is active */
1365
+ capabilities: string[];
1366
+ }
1367
+ export interface AssignmentDto {
1368
+ /** Assignment kind: warehouse | carrier | tenant_wide */
1369
+ kind: string;
1370
+ /**
1371
+ * Warehouse (when kind=warehouse)
1372
+ * @nullable
1373
+ */
1374
+ warehouseId: string | null;
1375
+ /**
1376
+ * Tenant carrier (when kind=carrier)
1377
+ * @nullable
1378
+ */
1379
+ tenantCarrierId: string | null;
1380
+ role: string;
1381
+ active: boolean;
1382
+ }
1383
+ export interface MeResponseDto {
1384
+ /** Keycloak subject identifier */
1385
+ sub: string;
1386
+ /**
1387
+ * Legacy Cognito subject identifier, set for federated users
1388
+ * @nullable
1389
+ */
1390
+ cognitoSub: string | null;
1391
+ /**
1392
+ * Resolved tenant id; null for platform-admin without a tenant context
1393
+ * @nullable
1394
+ */
1395
+ tenantId: string | null;
1396
+ /** @nullable */
1397
+ email: string | null;
1398
+ /** @nullable */
1399
+ displayName: string | null;
1400
+ memberships: MembershipDto[];
1401
+ /** Cross-cutting permissions (resource:action) from platform/tenant-wide/warehouse/carrier roles for the active context — drives client-side component visibility. Org-scoped permissions are on each membership. */
1402
+ capabilities: string[];
1403
+ /** Warehouses the caller can act for (JWT warehouse_ids claim; [] if none) — matches what RLS scopes operational reads to. */
1404
+ warehouseIds: string[];
1405
+ /**
1406
+ * Carrier the caller can act for (JWT carrier_id claim; null if none).
1407
+ * @nullable
1408
+ */
1409
+ carrierId: string | null;
1410
+ /** Long-form staff assignments (own rows only) from employee_assignment — the authoritative warehouse/carrier reach behind the warehouseIds/carrierId summary. */
1411
+ assignments: AssignmentDto[];
1412
+ }
1413
+ export interface UpdateMeDto {
1414
+ displayName?: string;
1415
+ }
1416
+ export interface AnonymousSessionDto {
1417
+ /** Opaque bearer token for the anonymous session. Send it as the X-Session-Token header on guest-capable endpoints. Shown once — it is stored only as a hash. */
481
1418
  sessionToken: string;
482
1419
  expiresAt: string;
483
1420
  }
@@ -1058,15 +1995,56 @@ export interface PlaceOrderResultDto {
1058
1995
  orderNumber: number;
1059
1996
  salesOrders: PlacedSalesOrderDto[];
1060
1997
  }
1998
+ export type TransportServiceDtoSalesOrderType = typeof TransportServiceDtoSalesOrderType[keyof typeof TransportServiceDtoSalesOrderType];
1999
+ export declare const TransportServiceDtoSalesOrderType: {
2000
+ readonly PICKUP: "PICKUP";
2001
+ readonly DELIVERY: "DELIVERY";
2002
+ readonly MOVE: "MOVE";
2003
+ readonly DROP_OFF: "DROP_OFF";
2004
+ readonly TRANSFER: "TRANSFER";
2005
+ readonly PICKING: "PICKING";
2006
+ readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
2007
+ };
2008
+ export type TransportServiceDtoFulfilmentMode = typeof TransportServiceDtoFulfilmentMode[keyof typeof TransportServiceDtoFulfilmentMode];
2009
+ export declare const TransportServiceDtoFulfilmentMode: {
2010
+ readonly DELIVERY_TIMESLOT: "DELIVERY_TIMESLOT";
2011
+ readonly DISPATCH_SLOT: "DISPATCH_SLOT";
2012
+ readonly BOOKED: "BOOKED";
2013
+ };
2014
+ export type TransportServiceDtoCustomerTypesItem = typeof TransportServiceDtoCustomerTypesItem[keyof typeof TransportServiceDtoCustomerTypesItem];
2015
+ export declare const TransportServiceDtoCustomerTypesItem: {
2016
+ readonly business: "business";
2017
+ readonly personal: "personal";
2018
+ };
2019
+ /**
2020
+ * @nullable
2021
+ */
2022
+ export type TransportServiceDtoMetadata = {
2023
+ [key: string]: unknown;
2024
+ } | null;
1061
2025
  export interface TransportServiceDto {
1062
2026
  transportServiceId: string;
2027
+ code: string;
1063
2028
  name: string;
1064
- /** PICKUP | DELIVERY | MOVE | DROP_OFF | TRANSFER | PICKING | MERCHANDISE_SALE */
1065
- salesOrderType: string;
1066
- /** DELIVERY_TIMESLOT | DISPATCH_SLOT | BOOKED */
1067
- fulfilmentMode: string;
1068
- /** The zone that matched the queried zip code */
1069
- serviceZoneId: string;
2029
+ salesOrderType: TransportServiceDtoSalesOrderType;
2030
+ fulfilmentMode: TransportServiceDtoFulfilmentMode;
2031
+ /** @nullable */
2032
+ tenantCarrierId: string | null;
2033
+ /** @nullable */
2034
+ tenantCarrierMethodId: string | null;
2035
+ /** @nullable */
2036
+ originWarehouseId: string | null;
2037
+ /** @nullable */
2038
+ billingArticleId: string | null;
2039
+ customerTypes: TransportServiceDtoCustomerTypesItem[];
2040
+ minLeadTimeHours: number;
2041
+ customerSelectable: boolean;
2042
+ isActive: boolean;
2043
+ displayOrder: number;
2044
+ /** @nullable */
2045
+ metadata: TransportServiceDtoMetadata;
2046
+ createdAt: string;
2047
+ updatedAt: string;
1070
2048
  }
1071
2049
  export interface TransportSlotDto {
1072
2050
  slotId: string;
@@ -1078,18 +2056,925 @@ export interface TransportSlotDto {
1078
2056
  /** @nullable */
1079
2057
  priceExVat: string | null;
1080
2058
  /** @nullable */
1081
- priceIncRut: string | null;
1082
- /** @nullable */
2059
+ priceIncRut: string | null;
2060
+ /** @nullable */
2061
+ vatRate: string | null;
2062
+ /** @nullable */
2063
+ expressSurchargeExVat: string | null;
2064
+ /**
2065
+ * Orders still bookable in this slot; null = unlimited
2066
+ * @nullable
2067
+ */
2068
+ remainingOrders: number | null;
2069
+ /** ACTIVE | CLOSED */
2070
+ status: string;
2071
+ }
2072
+ export interface PaginatedTransportServicesDto {
2073
+ /** The page of rows. */
2074
+ items: TransportServiceDto[];
2075
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
2076
+ total: number;
2077
+ /** Effective max rows applied (after defaults/clamp). */
2078
+ limit: number;
2079
+ /** Effective rows skipped applied. */
2080
+ offset: number;
2081
+ }
2082
+ export interface TransportServiceZoneDto {
2083
+ transportServiceZoneId: string;
2084
+ serviceZoneId: string;
2085
+ serviceZoneCode: string;
2086
+ }
2087
+ /**
2088
+ * @nullable
2089
+ */
2090
+ export type TransportServicePriceDtoCustomerType = typeof TransportServicePriceDtoCustomerType[keyof typeof TransportServicePriceDtoCustomerType] | null;
2091
+ export declare const TransportServicePriceDtoCustomerType: {
2092
+ readonly business: "business";
2093
+ readonly personal: "personal";
2094
+ };
2095
+ /**
2096
+ * @nullable
2097
+ */
2098
+ export type TransportServicePriceDtoUnitType = typeof TransportServicePriceDtoUnitType[keyof typeof TransportServicePriceDtoUnitType] | null;
2099
+ export declare const TransportServicePriceDtoUnitType: {
2100
+ readonly EPAL: "EPAL";
2101
+ readonly HALF_PALLET: "HALF_PALLET";
2102
+ readonly QUARTER_PALLET: "QUARTER_PALLET";
2103
+ readonly PARCEL: "PARCEL";
2104
+ readonly SACK: "SACK";
2105
+ readonly LOOSE_ITEM: "LOOSE_ITEM";
2106
+ readonly OTHER: "OTHER";
2107
+ };
2108
+ export interface TransportServicePriceDto {
2109
+ transportServicePriceId: string;
2110
+ transportServiceId: string;
2111
+ /** @nullable */
2112
+ serviceZoneId: string | null;
2113
+ /** @nullable */
2114
+ customerType: TransportServicePriceDtoCustomerType;
2115
+ /** @nullable */
2116
+ unitType: TransportServicePriceDtoUnitType;
2117
+ /** @nullable */
2118
+ baseFeeExVat: string | null;
2119
+ /** @nullable */
2120
+ pricePerUnitExVat: string | null;
2121
+ /** @nullable */
2122
+ pricePerM3ExVat: string | null;
2123
+ /** @nullable */
2124
+ pricePerHourExVat: string | null;
2125
+ rutEligible: boolean;
2126
+ vatRate: string;
2127
+ currencyCode: string;
2128
+ /** @nullable */
2129
+ effectiveFrom: string | null;
2130
+ /** @nullable */
2131
+ effectiveUntil: string | null;
2132
+ isActive: boolean;
2133
+ createdAt: string;
2134
+ }
2135
+ export type TransportServiceDetailDtoSalesOrderType = typeof TransportServiceDetailDtoSalesOrderType[keyof typeof TransportServiceDetailDtoSalesOrderType];
2136
+ export declare const TransportServiceDetailDtoSalesOrderType: {
2137
+ readonly PICKUP: "PICKUP";
2138
+ readonly DELIVERY: "DELIVERY";
2139
+ readonly MOVE: "MOVE";
2140
+ readonly DROP_OFF: "DROP_OFF";
2141
+ readonly TRANSFER: "TRANSFER";
2142
+ readonly PICKING: "PICKING";
2143
+ readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
2144
+ };
2145
+ export type TransportServiceDetailDtoFulfilmentMode = typeof TransportServiceDetailDtoFulfilmentMode[keyof typeof TransportServiceDetailDtoFulfilmentMode];
2146
+ export declare const TransportServiceDetailDtoFulfilmentMode: {
2147
+ readonly DELIVERY_TIMESLOT: "DELIVERY_TIMESLOT";
2148
+ readonly DISPATCH_SLOT: "DISPATCH_SLOT";
2149
+ readonly BOOKED: "BOOKED";
2150
+ };
2151
+ export type TransportServiceDetailDtoCustomerTypesItem = typeof TransportServiceDetailDtoCustomerTypesItem[keyof typeof TransportServiceDetailDtoCustomerTypesItem];
2152
+ export declare const TransportServiceDetailDtoCustomerTypesItem: {
2153
+ readonly business: "business";
2154
+ readonly personal: "personal";
2155
+ };
2156
+ /**
2157
+ * @nullable
2158
+ */
2159
+ export type TransportServiceDetailDtoMetadata = {
2160
+ [key: string]: unknown;
2161
+ } | null;
2162
+ export interface TransportServiceDetailDto {
2163
+ transportServiceId: string;
2164
+ code: string;
2165
+ name: string;
2166
+ salesOrderType: TransportServiceDetailDtoSalesOrderType;
2167
+ fulfilmentMode: TransportServiceDetailDtoFulfilmentMode;
2168
+ /** @nullable */
2169
+ tenantCarrierId: string | null;
2170
+ /** @nullable */
2171
+ tenantCarrierMethodId: string | null;
2172
+ /** @nullable */
2173
+ originWarehouseId: string | null;
2174
+ /** @nullable */
2175
+ billingArticleId: string | null;
2176
+ customerTypes: TransportServiceDetailDtoCustomerTypesItem[];
2177
+ minLeadTimeHours: number;
2178
+ customerSelectable: boolean;
2179
+ isActive: boolean;
2180
+ displayOrder: number;
2181
+ /** @nullable */
2182
+ metadata: TransportServiceDetailDtoMetadata;
2183
+ createdAt: string;
2184
+ updatedAt: string;
2185
+ zones: TransportServiceZoneDto[];
2186
+ activePrices: TransportServicePriceDto[];
2187
+ }
2188
+ export interface TransportServiceZoneInputDto {
2189
+ transportServiceZoneId?: string;
2190
+ serviceZoneId: string;
2191
+ }
2192
+ export type PricePerShipmentUnitDtoUnitType = typeof PricePerShipmentUnitDtoUnitType[keyof typeof PricePerShipmentUnitDtoUnitType];
2193
+ export declare const PricePerShipmentUnitDtoUnitType: {
2194
+ readonly EPAL: "EPAL";
2195
+ readonly HALF_PALLET: "HALF_PALLET";
2196
+ readonly QUARTER_PALLET: "QUARTER_PALLET";
2197
+ readonly PARCEL: "PARCEL";
2198
+ readonly SACK: "SACK";
2199
+ readonly LOOSE_ITEM: "LOOSE_ITEM";
2200
+ readonly OTHER: "OTHER";
2201
+ };
2202
+ export interface PricePerShipmentUnitDto {
2203
+ unitType: PricePerShipmentUnitDtoUnitType;
2204
+ /** Decimal money, ex-VAT */
2205
+ price: string;
2206
+ }
2207
+ export type TransportServicePriceInputDtoCustomerType = typeof TransportServicePriceInputDtoCustomerType[keyof typeof TransportServicePriceInputDtoCustomerType];
2208
+ export declare const TransportServicePriceInputDtoCustomerType: {
2209
+ readonly business: "business";
2210
+ readonly personal: "personal";
2211
+ };
2212
+ export interface TransportServicePriceInputDto {
2213
+ transportServicePriceId?: string;
2214
+ serviceZoneId?: string;
2215
+ customerType?: TransportServicePriceInputDtoCustomerType;
2216
+ baseFeeExVat?: string;
2217
+ pricePerM3ExVat?: string;
2218
+ pricePerHourExVat?: string;
2219
+ pricePerShipmentUnit?: PricePerShipmentUnitDto[];
2220
+ rutEligible?: boolean;
2221
+ /** Decimal; snapshot, not derived */
2222
+ vatRate: string;
2223
+ /** ISO-4217 alpha-3 */
2224
+ currencyCode: string;
2225
+ effectiveFrom?: string;
2226
+ effectiveUntil?: string;
2227
+ isActive?: boolean;
2228
+ }
2229
+ export type CreateTransportServiceDtoSalesOrderType = typeof CreateTransportServiceDtoSalesOrderType[keyof typeof CreateTransportServiceDtoSalesOrderType];
2230
+ export declare const CreateTransportServiceDtoSalesOrderType: {
2231
+ readonly PICKUP: "PICKUP";
2232
+ readonly DELIVERY: "DELIVERY";
2233
+ readonly MOVE: "MOVE";
2234
+ readonly DROP_OFF: "DROP_OFF";
2235
+ readonly TRANSFER: "TRANSFER";
2236
+ readonly PICKING: "PICKING";
2237
+ readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
2238
+ };
2239
+ export type CreateTransportServiceDtoFulfilmentMode = typeof CreateTransportServiceDtoFulfilmentMode[keyof typeof CreateTransportServiceDtoFulfilmentMode];
2240
+ export declare const CreateTransportServiceDtoFulfilmentMode: {
2241
+ readonly DELIVERY_TIMESLOT: "DELIVERY_TIMESLOT";
2242
+ readonly DISPATCH_SLOT: "DISPATCH_SLOT";
2243
+ readonly BOOKED: "BOOKED";
2244
+ };
2245
+ export type CreateTransportServiceDtoCustomerTypesItem = typeof CreateTransportServiceDtoCustomerTypesItem[keyof typeof CreateTransportServiceDtoCustomerTypesItem];
2246
+ export declare const CreateTransportServiceDtoCustomerTypesItem: {
2247
+ readonly business: "business";
2248
+ readonly personal: "personal";
2249
+ };
2250
+ export type CreateTransportServiceDtoMetadata = {
2251
+ [key: string]: unknown;
2252
+ };
2253
+ export interface CreateTransportServiceDto {
2254
+ code: string;
2255
+ name: string;
2256
+ salesOrderType: CreateTransportServiceDtoSalesOrderType;
2257
+ fulfilmentMode: CreateTransportServiceDtoFulfilmentMode;
2258
+ /**
2259
+ * Carrier-pinned service. Omit or null ⇒ carrier-agnostic (carrier chosen at dispatch).
2260
+ * @nullable
2261
+ */
2262
+ tenantCarrierId?: string | null;
2263
+ tenantCarrierMethodId?: string;
2264
+ /** NULL = any warehouse */
2265
+ originWarehouseId?: string;
2266
+ billingArticleId?: string;
2267
+ customerTypes?: CreateTransportServiceDtoCustomerTypesItem[];
2268
+ minLeadTimeHours?: number;
2269
+ customerSelectable?: boolean;
2270
+ isActive?: boolean;
2271
+ displayOrder?: number;
2272
+ metadata?: CreateTransportServiceDtoMetadata;
2273
+ zones?: TransportServiceZoneInputDto[];
2274
+ prices?: TransportServicePriceInputDto[];
2275
+ }
2276
+ export type UpdateTransportServiceDtoSalesOrderType = typeof UpdateTransportServiceDtoSalesOrderType[keyof typeof UpdateTransportServiceDtoSalesOrderType];
2277
+ export declare const UpdateTransportServiceDtoSalesOrderType: {
2278
+ readonly PICKUP: "PICKUP";
2279
+ readonly DELIVERY: "DELIVERY";
2280
+ readonly MOVE: "MOVE";
2281
+ readonly DROP_OFF: "DROP_OFF";
2282
+ readonly TRANSFER: "TRANSFER";
2283
+ readonly PICKING: "PICKING";
2284
+ readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
2285
+ };
2286
+ export type UpdateTransportServiceDtoFulfilmentMode = typeof UpdateTransportServiceDtoFulfilmentMode[keyof typeof UpdateTransportServiceDtoFulfilmentMode];
2287
+ export declare const UpdateTransportServiceDtoFulfilmentMode: {
2288
+ readonly DELIVERY_TIMESLOT: "DELIVERY_TIMESLOT";
2289
+ readonly DISPATCH_SLOT: "DISPATCH_SLOT";
2290
+ readonly BOOKED: "BOOKED";
2291
+ };
2292
+ export type UpdateTransportServiceDtoCustomerTypesItem = typeof UpdateTransportServiceDtoCustomerTypesItem[keyof typeof UpdateTransportServiceDtoCustomerTypesItem];
2293
+ export declare const UpdateTransportServiceDtoCustomerTypesItem: {
2294
+ readonly business: "business";
2295
+ readonly personal: "personal";
2296
+ };
2297
+ export type UpdateTransportServiceDtoMetadata = {
2298
+ [key: string]: unknown;
2299
+ };
2300
+ export interface UpdateTransportServiceDto {
2301
+ name?: string;
2302
+ salesOrderType?: UpdateTransportServiceDtoSalesOrderType;
2303
+ fulfilmentMode?: UpdateTransportServiceDtoFulfilmentMode;
2304
+ /**
2305
+ * Set null to make the service carrier-agnostic; a uuid to pin a carrier.
2306
+ * @nullable
2307
+ */
2308
+ tenantCarrierId?: string | null;
2309
+ /**
2310
+ * A method may only be pinned when a carrier is pinned; set null to clear it (auto-cleared when the carrier is cleared).
2311
+ * @nullable
2312
+ */
2313
+ tenantCarrierMethodId?: string | null;
2314
+ originWarehouseId?: string;
2315
+ billingArticleId?: string;
2316
+ customerTypes?: UpdateTransportServiceDtoCustomerTypesItem[];
2317
+ minLeadTimeHours?: number;
2318
+ customerSelectable?: boolean;
2319
+ isActive?: boolean;
2320
+ displayOrder?: number;
2321
+ metadata?: UpdateTransportServiceDtoMetadata;
2322
+ zones?: TransportServiceZoneInputDto[];
2323
+ prices?: TransportServicePriceInputDto[];
2324
+ }
2325
+ export interface PaginatedTransportServicePricesDto {
2326
+ /** The page of rows. */
2327
+ items: TransportServicePriceDto[];
2328
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
2329
+ total: number;
2330
+ /** Effective max rows applied (after defaults/clamp). */
2331
+ limit: number;
2332
+ /** Effective rows skipped applied. */
2333
+ offset: number;
2334
+ }
2335
+ /**
2336
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone.
2337
+ * @nullable
2338
+ */
2339
+ export type ServiceZoneDtoBoundary = {
2340
+ [key: string]: unknown;
2341
+ } | null;
2342
+ /**
2343
+ * @nullable
2344
+ */
2345
+ export type ServiceZoneDtoMetadata = {
2346
+ [key: string]: unknown;
2347
+ } | null;
2348
+ export interface ServiceZoneDto {
2349
+ serviceZoneId: string;
2350
+ code: string;
2351
+ name: string;
2352
+ /** ISO-3166-1 alpha-2 country code */
2353
+ countryCode: string;
2354
+ /**
2355
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone.
2356
+ * @nullable
2357
+ */
2358
+ boundary: ServiceZoneDtoBoundary;
2359
+ /** Lower wins on overlap. */
2360
+ matchPriority: number;
2361
+ isActive: boolean;
2362
+ /** @nullable */
2363
+ metadata: ServiceZoneDtoMetadata;
2364
+ /** Count of mapped postal codes. */
2365
+ postalCodeCount: number;
2366
+ createdAt: string;
2367
+ updatedAt: string;
2368
+ }
2369
+ export interface PaginatedServiceZonesDto {
2370
+ /** The page of rows. */
2371
+ items: ServiceZoneDto[];
2372
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
2373
+ total: number;
2374
+ /** Effective max rows applied (after defaults/clamp). */
2375
+ limit: number;
2376
+ /** Effective rows skipped applied. */
2377
+ offset: number;
2378
+ }
2379
+ export interface ServiceZonePostalCodeDto {
2380
+ serviceZonePostalCodeId: string;
2381
+ /** ISO-3166-1 alpha-2 country code */
2382
+ countryCode: string;
2383
+ /** Normalised: no spaces, upper-case */
2384
+ postalCode: string;
2385
+ }
2386
+ /**
2387
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone.
2388
+ * @nullable
2389
+ */
2390
+ export type ServiceZoneDetailDtoBoundary = {
2391
+ [key: string]: unknown;
2392
+ } | null;
2393
+ /**
2394
+ * @nullable
2395
+ */
2396
+ export type ServiceZoneDetailDtoMetadata = {
2397
+ [key: string]: unknown;
2398
+ } | null;
2399
+ export interface ServiceZoneDetailDto {
2400
+ serviceZoneId: string;
2401
+ code: string;
2402
+ name: string;
2403
+ /** ISO-3166-1 alpha-2 country code */
2404
+ countryCode: string;
2405
+ /**
2406
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone.
2407
+ * @nullable
2408
+ */
2409
+ boundary: ServiceZoneDetailDtoBoundary;
2410
+ /** Lower wins on overlap. */
2411
+ matchPriority: number;
2412
+ isActive: boolean;
2413
+ /** @nullable */
2414
+ metadata: ServiceZoneDetailDtoMetadata;
2415
+ /** Count of mapped postal codes. */
2416
+ postalCodeCount: number;
2417
+ createdAt: string;
2418
+ updatedAt: string;
2419
+ postalCodes: ServiceZonePostalCodeDto[];
2420
+ }
2421
+ export interface ServiceZonePostalCodeInputDto {
2422
+ /** Present = keep/update; absent = insert. */
2423
+ serviceZonePostalCodeId?: string;
2424
+ /** Normalised server-side (spaces stripped, upper-cased). */
2425
+ postalCode: string;
2426
+ /** ISO-3166-1 alpha-2. Defaults to the zone's countryCode. */
2427
+ countryCode?: string;
2428
+ }
2429
+ /**
2430
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone.
2431
+ * @nullable
2432
+ */
2433
+ export type CreateServiceZoneDtoBoundary = {
2434
+ [key: string]: unknown;
2435
+ } | null;
2436
+ export type CreateServiceZoneDtoMetadata = {
2437
+ [key: string]: unknown;
2438
+ };
2439
+ export interface CreateServiceZoneDto {
2440
+ code: string;
2441
+ name: string;
2442
+ /** ISO-3166-1 alpha-2 country code */
2443
+ countryCode: string;
2444
+ /**
2445
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone.
2446
+ * @nullable
2447
+ */
2448
+ boundary?: CreateServiceZoneDtoBoundary;
2449
+ /** Lower wins on overlap. */
2450
+ matchPriority?: number;
2451
+ isActive?: boolean;
2452
+ metadata?: CreateServiceZoneDtoMetadata;
2453
+ /** Reconciled postal-code set (same pattern as PATCH /carts/:id). */
2454
+ postalCodes?: ServiceZonePostalCodeInputDto[];
2455
+ }
2456
+ /**
2457
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone.
2458
+ * @nullable
2459
+ */
2460
+ export type UpdateServiceZoneDtoBoundary = {
2461
+ [key: string]: unknown;
2462
+ } | null;
2463
+ export type UpdateServiceZoneDtoMetadata = {
2464
+ [key: string]: unknown;
2465
+ };
2466
+ export interface UpdateServiceZoneDto {
2467
+ name?: string;
2468
+ /** ISO-3166-1 alpha-2 country code */
2469
+ countryCode?: string;
2470
+ /**
2471
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone.
2472
+ * @nullable
2473
+ */
2474
+ boundary?: UpdateServiceZoneDtoBoundary;
2475
+ /** Lower wins on overlap. */
2476
+ matchPriority?: number;
2477
+ isActive?: boolean;
2478
+ metadata?: UpdateServiceZoneDtoMetadata;
2479
+ /** Reconciled postal-code set; omitted leaves the zip set unchanged. */
2480
+ postalCodes?: ServiceZonePostalCodeInputDto[];
2481
+ }
2482
+ /**
2483
+ * NULL = all eligible zones.
2484
+ * @nullable
2485
+ */
2486
+ export type SlotConfigDtoServiceZoneId = {
2487
+ [key: string]: unknown;
2488
+ } | null;
2489
+ /**
2490
+ * NULL = daily-cap-only.
2491
+ * @nullable
2492
+ */
2493
+ export type SlotConfigDtoSlotKind = typeof SlotConfigDtoSlotKind[keyof typeof SlotConfigDtoSlotKind] | null;
2494
+ export declare const SlotConfigDtoSlotKind: {
2495
+ readonly DELIVERY_WINDOW: "DELIVERY_WINDOW";
2496
+ readonly DISPATCH_WINDOW: "DISPATCH_WINDOW";
2497
+ readonly PICKUP_WINDOW: "PICKUP_WINDOW";
2498
+ };
2499
+ /**
2500
+ * Per-weekday window schedule.
2501
+ * @nullable
2502
+ */
2503
+ export type SlotConfigDtoWeeklySchedule = {
2504
+ [key: string]: unknown;
2505
+ } | null;
2506
+ export interface SlotConfigDto {
2507
+ transportSlotConfigId: string;
2508
+ transportServiceId: string;
2509
+ /**
2510
+ * NULL = all eligible zones.
2511
+ * @nullable
2512
+ */
2513
+ serviceZoneId: SlotConfigDtoServiceZoneId;
2514
+ /**
2515
+ * NULL = daily-cap-only.
2516
+ * @nullable
2517
+ */
2518
+ slotKind: SlotConfigDtoSlotKind;
2519
+ timezone: string;
2520
+ /**
2521
+ * Per-weekday window schedule.
2522
+ * @nullable
2523
+ */
2524
+ weeklySchedule: SlotConfigDtoWeeklySchedule;
2525
+ /** @nullable */
2526
+ dayMaxOrders: number | null;
2527
+ /**
2528
+ * bigint
2529
+ * @nullable
2530
+ */
2531
+ dayMaxVolumeCm3: number | null;
2532
+ /**
2533
+ * bigint
2534
+ * @nullable
2535
+ */
2536
+ dayMaxWeightG: number | null;
2537
+ generateHorizonDays: number;
2538
+ status: string;
2539
+ createdAt: string;
2540
+ updatedAt: string;
2541
+ }
2542
+ export interface PaginatedSlotConfigsDto {
2543
+ /** The page of rows. */
2544
+ items: SlotConfigDto[];
2545
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
2546
+ total: number;
2547
+ /** Effective max rows applied (after defaults/clamp). */
2548
+ limit: number;
2549
+ /** Effective rows skipped applied. */
2550
+ offset: number;
2551
+ }
2552
+ /**
2553
+ * NULL = daily-cap-only (no concrete slots).
2554
+ */
2555
+ export type CreateSlotConfigDtoSlotKind = typeof CreateSlotConfigDtoSlotKind[keyof typeof CreateSlotConfigDtoSlotKind];
2556
+ export declare const CreateSlotConfigDtoSlotKind: {
2557
+ readonly DELIVERY_WINDOW: "DELIVERY_WINDOW";
2558
+ readonly DISPATCH_WINDOW: "DISPATCH_WINDOW";
2559
+ readonly PICKUP_WINDOW: "PICKUP_WINDOW";
2560
+ };
2561
+ /**
2562
+ * Per-weekday windows (incl. per-slot base_max_orders / price_ex_vat). NULL = daily-cap-only.
2563
+ */
2564
+ export type CreateSlotConfigDtoWeeklySchedule = {
2565
+ [key: string]: unknown;
2566
+ };
2567
+ export interface CreateSlotConfigDto {
2568
+ /** NULL = all eligible zones. */
2569
+ serviceZoneId?: string;
2570
+ /** NULL = daily-cap-only (no concrete slots). */
2571
+ slotKind?: CreateSlotConfigDtoSlotKind;
2572
+ timezone?: string;
2573
+ /** Per-weekday windows (incl. per-slot base_max_orders / price_ex_vat). NULL = daily-cap-only. */
2574
+ weeklySchedule?: CreateSlotConfigDtoWeeklySchedule;
2575
+ dayMaxOrders?: number;
2576
+ /** bigint */
2577
+ dayMaxVolumeCm3?: string;
2578
+ /** bigint */
2579
+ dayMaxWeightG?: string;
2580
+ generateHorizonDays?: number;
2581
+ status?: string;
2582
+ }
2583
+ export type UpdateSlotConfigDtoSlotKind = typeof UpdateSlotConfigDtoSlotKind[keyof typeof UpdateSlotConfigDtoSlotKind];
2584
+ export declare const UpdateSlotConfigDtoSlotKind: {
2585
+ readonly DELIVERY_WINDOW: "DELIVERY_WINDOW";
2586
+ readonly DISPATCH_WINDOW: "DISPATCH_WINDOW";
2587
+ readonly PICKUP_WINDOW: "PICKUP_WINDOW";
2588
+ };
2589
+ export type UpdateSlotConfigDtoWeeklySchedule = {
2590
+ [key: string]: unknown;
2591
+ };
2592
+ export interface UpdateSlotConfigDto {
2593
+ /** NULL = all eligible zones. */
2594
+ serviceZoneId?: string;
2595
+ slotKind?: UpdateSlotConfigDtoSlotKind;
2596
+ timezone?: string;
2597
+ weeklySchedule?: UpdateSlotConfigDtoWeeklySchedule;
2598
+ dayMaxOrders?: number;
2599
+ /** bigint */
2600
+ dayMaxVolumeCm3?: string;
2601
+ /** bigint */
2602
+ dayMaxWeightG?: string;
2603
+ generateHorizonDays?: number;
2604
+ status?: string;
2605
+ }
2606
+ export interface GenerateCapacityDto {
2607
+ /** Inclusive start (YYYY-MM-DD). Default: today (UTC). */
2608
+ fromDate?: string;
2609
+ /** Inclusive end (YYYY-MM-DD). Default: today + config.generateHorizonDays. */
2610
+ toDate?: string;
2611
+ /** Regenerate existing days. Never destroys a day that carries live reservations (it is reported under skipped[] instead). */
2612
+ force?: boolean;
2613
+ }
2614
+ export interface GenerateCapacityResultDto {
2615
+ created: number;
2616
+ updated: number;
2617
+ skippedReserved: number;
2618
+ skippedExisting: number;
2619
+ /** true when replayed from a prior Idempotency-Key. */
2620
+ idempotent: boolean;
2621
+ }
2622
+ /**
2623
+ * { amount, currencyCode }.
2624
+ * @nullable
2625
+ */
2626
+ export type CapacityDayDtoLowestPrice = {
2627
+ [key: string]: unknown;
2628
+ } | null;
2629
+ export interface CapacityDayDto {
2630
+ transportCapacityDayId: string;
2631
+ transportServiceId: string;
2632
+ serviceZoneId: string;
2633
+ capacityDate: string;
2634
+ /** 0=Mon..6=Sun. */
2635
+ weekday: number;
2636
+ isHoliday: boolean;
2637
+ /**
2638
+ * NULL = unlimited.
2639
+ * @nullable
2640
+ */
2641
+ baseMaxOrders: number | null;
2642
+ /**
2643
+ * bigint. NULL = unlimited.
2644
+ * @nullable
2645
+ */
2646
+ baseMaxVolumeCm3: number | null;
2647
+ /**
2648
+ * bigint. NULL = unlimited.
2649
+ * @nullable
2650
+ */
2651
+ baseMaxWeightG: number | null;
2652
+ /**
2653
+ * { amount, currencyCode }.
2654
+ * @nullable
2655
+ */
2656
+ lowestPrice: CapacityDayDtoLowestPrice;
2657
+ createdAt: string;
2658
+ updatedAt: string;
2659
+ }
2660
+ export interface PaginatedCapacityDaysDto {
2661
+ /** The page of rows. */
2662
+ items: CapacityDayDto[];
2663
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
2664
+ total: number;
2665
+ /** Effective max rows applied (after defaults/clamp). */
2666
+ limit: number;
2667
+ /** Effective rows skipped applied. */
2668
+ offset: number;
2669
+ }
2670
+ export interface DayAvailabilityDto {
2671
+ /**
2672
+ * NULL = unlimited.
2673
+ * @nullable
2674
+ */
2675
+ capOrders: number | null;
2676
+ usedOrders: number;
2677
+ /**
2678
+ * NULL = unlimited.
2679
+ * @nullable
2680
+ */
2681
+ availableOrders: number | null;
2682
+ /** @nullable */
2683
+ capVolumeCm3?: number | null;
2684
+ usedVolumeCm3?: number;
2685
+ /** @nullable */
2686
+ availableVolumeCm3?: number | null;
2687
+ /** @nullable */
2688
+ capWeightG?: number | null;
2689
+ usedWeightG?: number;
2690
+ /** @nullable */
2691
+ availableWeightG?: number | null;
2692
+ }
2693
+ /**
2694
+ * @nullable
2695
+ */
2696
+ export type SlotDtoTransportSlotConfigId = {
2697
+ [key: string]: unknown;
2698
+ } | null;
2699
+ export type SlotDtoSlotKind = typeof SlotDtoSlotKind[keyof typeof SlotDtoSlotKind];
2700
+ export declare const SlotDtoSlotKind: {
2701
+ readonly DELIVERY_WINDOW: "DELIVERY_WINDOW";
2702
+ readonly DISPATCH_WINDOW: "DISPATCH_WINDOW";
2703
+ readonly PICKUP_WINDOW: "PICKUP_WINDOW";
2704
+ };
2705
+ export interface SlotDto {
2706
+ transportSlotId: string;
2707
+ transportCapacityDayId: string;
2708
+ /** @nullable */
2709
+ transportSlotConfigId: SlotDtoTransportSlotConfigId;
2710
+ transportServiceId: string;
2711
+ serviceZoneId: string;
2712
+ tenantCarrierId: string;
2713
+ slotKind: SlotDtoSlotKind;
2714
+ /** @nullable */
2715
+ slotDate: string | null;
2716
+ windowStart: string;
2717
+ windowEnd: string;
2718
+ orderCutoffAt: string;
2719
+ /** @nullable */
2720
+ expressStartAt: string | null;
2721
+ /**
2722
+ * NULL = unlimited.
2723
+ * @nullable
2724
+ */
2725
+ baseMaxOrders: number | null;
2726
+ /**
2727
+ * bigint.
2728
+ * @nullable
2729
+ */
2730
+ baseMaxVolumeCm3: number | null;
2731
+ /**
2732
+ * bigint.
2733
+ * @nullable
2734
+ */
2735
+ baseMaxWeightG: number | null;
2736
+ /**
2737
+ * money
2738
+ * @nullable
2739
+ */
2740
+ priceExVat: string | null;
2741
+ /** @nullable */
2742
+ vatRate: string | null;
2743
+ /** @nullable */
2744
+ priceIncRut: string | null;
2745
+ /**
2746
+ * money
2747
+ * @nullable
2748
+ */
2749
+ expressSurchargeExVat: string | null;
2750
+ /** @nullable */
2751
+ currencyCode: string | null;
2752
+ status: string;
2753
+ manuallyClosed: boolean;
2754
+ /** @nullable */
2755
+ scheduledClosureRule: string | null;
2756
+ createdAt: string;
2757
+ updatedAt: string;
2758
+ }
2759
+ /**
2760
+ * { amount, currencyCode }.
2761
+ * @nullable
2762
+ */
2763
+ export type CapacityDayDetailDtoLowestPrice = {
2764
+ [key: string]: unknown;
2765
+ } | null;
2766
+ export interface CapacityDayDetailDto {
2767
+ transportCapacityDayId: string;
2768
+ transportServiceId: string;
2769
+ serviceZoneId: string;
2770
+ capacityDate: string;
2771
+ /** 0=Mon..6=Sun. */
2772
+ weekday: number;
2773
+ isHoliday: boolean;
2774
+ /**
2775
+ * NULL = unlimited.
2776
+ * @nullable
2777
+ */
2778
+ baseMaxOrders: number | null;
2779
+ /**
2780
+ * bigint. NULL = unlimited.
2781
+ * @nullable
2782
+ */
2783
+ baseMaxVolumeCm3: number | null;
2784
+ /**
2785
+ * bigint. NULL = unlimited.
2786
+ * @nullable
2787
+ */
2788
+ baseMaxWeightG: number | null;
2789
+ /**
2790
+ * { amount, currencyCode }.
2791
+ * @nullable
2792
+ */
2793
+ lowestPrice: CapacityDayDetailDtoLowestPrice;
2794
+ createdAt: string;
2795
+ updatedAt: string;
2796
+ availability: DayAvailabilityDto;
2797
+ slots: SlotDto[];
2798
+ }
2799
+ export type PatchSlotDtoStatus = typeof PatchSlotDtoStatus[keyof typeof PatchSlotDtoStatus];
2800
+ export declare const PatchSlotDtoStatus: {
2801
+ readonly ACTIVE: "ACTIVE";
2802
+ readonly CLOSED: "CLOSED";
2803
+ };
2804
+ export interface PatchSlotDto {
2805
+ status?: PatchSlotDtoStatus;
2806
+ manuallyClosed?: boolean;
2807
+ /** money */
2808
+ priceExVat?: string;
2809
+ /** money */
2810
+ expressSurchargeExVat?: string;
2811
+ windowStart?: string;
2812
+ windowEnd?: string;
2813
+ orderCutoffAt?: string;
2814
+ baseMaxOrders?: number;
2815
+ /** bigint */
2816
+ baseMaxVolumeCm3?: string;
2817
+ /** bigint */
2818
+ baseMaxWeightG?: string;
2819
+ }
2820
+ export interface SlotPatchAvailabilityDto {
2821
+ /** @nullable */
2822
+ slotCapOrders: number | null;
2823
+ slotUsedOrders: number;
2824
+ /** @nullable */
2825
+ slotAvailableOrders: number | null;
2826
+ /** @nullable */
2827
+ dayCapOrders: number | null;
2828
+ dayUsedOrders: number;
2829
+ /** @nullable */
2830
+ dayAvailableOrders: number | null;
2831
+ /** @nullable */
2832
+ slotAvailableVolumeCm3?: number | null;
2833
+ /** @nullable */
2834
+ slotAvailableWeightG?: number | null;
2835
+ }
2836
+ /**
2837
+ * @nullable
2838
+ */
2839
+ export type SlotWithAvailabilityDtoTransportSlotConfigId = {
2840
+ [key: string]: unknown;
2841
+ } | null;
2842
+ export type SlotWithAvailabilityDtoSlotKind = typeof SlotWithAvailabilityDtoSlotKind[keyof typeof SlotWithAvailabilityDtoSlotKind];
2843
+ export declare const SlotWithAvailabilityDtoSlotKind: {
2844
+ readonly DELIVERY_WINDOW: "DELIVERY_WINDOW";
2845
+ readonly DISPATCH_WINDOW: "DISPATCH_WINDOW";
2846
+ readonly PICKUP_WINDOW: "PICKUP_WINDOW";
2847
+ };
2848
+ export interface SlotWithAvailabilityDto {
2849
+ transportSlotId: string;
2850
+ transportCapacityDayId: string;
2851
+ /** @nullable */
2852
+ transportSlotConfigId: SlotWithAvailabilityDtoTransportSlotConfigId;
2853
+ transportServiceId: string;
2854
+ serviceZoneId: string;
2855
+ tenantCarrierId: string;
2856
+ slotKind: SlotWithAvailabilityDtoSlotKind;
2857
+ /** @nullable */
2858
+ slotDate: string | null;
2859
+ windowStart: string;
2860
+ windowEnd: string;
2861
+ orderCutoffAt: string;
2862
+ /** @nullable */
2863
+ expressStartAt: string | null;
2864
+ /**
2865
+ * NULL = unlimited.
2866
+ * @nullable
2867
+ */
2868
+ baseMaxOrders: number | null;
2869
+ /**
2870
+ * bigint.
2871
+ * @nullable
2872
+ */
2873
+ baseMaxVolumeCm3: number | null;
2874
+ /**
2875
+ * bigint.
2876
+ * @nullable
2877
+ */
2878
+ baseMaxWeightG: number | null;
2879
+ /**
2880
+ * money
2881
+ * @nullable
2882
+ */
2883
+ priceExVat: string | null;
2884
+ /** @nullable */
1083
2885
  vatRate: string | null;
1084
2886
  /** @nullable */
1085
- expressSurchargeExVat: string | null;
2887
+ priceIncRut: string | null;
1086
2888
  /**
1087
- * Orders still bookable in this slot; null = unlimited
2889
+ * money
1088
2890
  * @nullable
1089
2891
  */
1090
- remainingOrders: number | null;
1091
- /** ACTIVE | CLOSED */
2892
+ expressSurchargeExVat: string | null;
2893
+ /** @nullable */
2894
+ currencyCode: string | null;
2895
+ status: string;
2896
+ manuallyClosed: boolean;
2897
+ /** @nullable */
2898
+ scheduledClosureRule: string | null;
2899
+ createdAt: string;
2900
+ updatedAt: string;
2901
+ availability: SlotPatchAvailabilityDto;
2902
+ }
2903
+ export interface SlotAvailabilityDto {
2904
+ transportSlotId: string;
1092
2905
  status: string;
2906
+ availability: SlotPatchAvailabilityDto;
2907
+ }
2908
+ /**
2909
+ * @nullable
2910
+ */
2911
+ export type CapacityOverrideDtoTransportSlotId = {
2912
+ [key: string]: unknown;
2913
+ } | null;
2914
+ /**
2915
+ * @nullable
2916
+ */
2917
+ export type CapacityOverrideDtoTransportCapacityDayId = {
2918
+ [key: string]: unknown;
2919
+ } | null;
2920
+ export interface CapacityOverrideDto {
2921
+ transportCapacityOverrideId: string;
2922
+ /** @nullable */
2923
+ transportSlotId: CapacityOverrideDtoTransportSlotId;
2924
+ /** @nullable */
2925
+ transportCapacityDayId: CapacityOverrideDtoTransportCapacityDayId;
2926
+ /** Signed (may be negative). */
2927
+ deltaMaxOrders: number;
2928
+ /** bigint, signed. */
2929
+ deltaMaxVolumeCm3: number;
2930
+ /** bigint, signed. */
2931
+ deltaMaxWeightG: number;
2932
+ reason: string;
2933
+ effectiveFrom: string;
2934
+ /** @nullable */
2935
+ effectiveUntil: string | null;
2936
+ isActive: boolean;
2937
+ /** @nullable */
2938
+ createdByUserSub: string | null;
2939
+ createdAt: string;
2940
+ }
2941
+ export interface PaginatedCapacityOverridesDto {
2942
+ /** The page of rows. */
2943
+ items: CapacityOverrideDto[];
2944
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
2945
+ total: number;
2946
+ /** Effective max rows applied (after defaults/clamp). */
2947
+ limit: number;
2948
+ /** Effective rows skipped applied. */
2949
+ offset: number;
2950
+ }
2951
+ export interface CreateCapacityOverrideDto {
2952
+ /** XOR transportCapacityDayId. */
2953
+ transportSlotId?: string;
2954
+ /** XOR transportSlotId. */
2955
+ transportCapacityDayId?: string;
2956
+ /** Signed (may be negative). */
2957
+ deltaMaxOrders?: number;
2958
+ /** bigint, signed. */
2959
+ deltaMaxVolumeCm3?: string;
2960
+ /** bigint, signed. */
2961
+ deltaMaxWeightG?: string;
2962
+ reason: string;
2963
+ /** Defaults to now. */
2964
+ effectiveFrom?: string;
2965
+ effectiveUntil?: string;
2966
+ }
2967
+ export interface UpdateCapacityOverrideDto {
2968
+ /** Signed (may be negative). */
2969
+ deltaMaxOrders?: number;
2970
+ /** bigint, signed. */
2971
+ deltaMaxVolumeCm3?: string;
2972
+ /** bigint, signed. */
2973
+ deltaMaxWeightG?: string;
2974
+ reason?: string;
2975
+ effectiveFrom?: string;
2976
+ effectiveUntil?: string;
2977
+ isActive?: boolean;
1093
2978
  }
1094
2979
  export interface RouteDto {
1095
2980
  routeId: string;
@@ -1121,6 +3006,16 @@ export interface RouteDto {
1121
3006
  createdAt: string;
1122
3007
  updatedAt: string;
1123
3008
  }
3009
+ export interface PaginatedRoutesDto {
3010
+ /** The page of rows. */
3011
+ items: RouteDto[];
3012
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3013
+ total: number;
3014
+ /** Effective max rows applied (after defaults/clamp). */
3015
+ limit: number;
3016
+ /** Effective rows skipped applied. */
3017
+ offset: number;
3018
+ }
1124
3019
  export interface RouteStopDto {
1125
3020
  routeStopId: string;
1126
3021
  routeId: string;
@@ -1491,6 +3386,16 @@ export interface TransportLegDto {
1491
3386
  carrierBooking?: TransportLegDtoCarrierBooking;
1492
3387
  shipmentUnits?: TransportLegShipmentUnitDto[];
1493
3388
  }
3389
+ export interface PaginatedTransportLegsDto {
3390
+ /** The page of rows. */
3391
+ items: TransportLegDto[];
3392
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3393
+ total: number;
3394
+ /** Effective max rows applied (after defaults/clamp). */
3395
+ limit: number;
3396
+ /** Effective rows skipped applied. */
3397
+ offset: number;
3398
+ }
1494
3399
  export interface PlanLegDto {
1495
3400
  /**
1496
3401
  * Free-text reason / note.
@@ -1583,9 +3488,14 @@ export interface PatchDoorCodeDto {
1583
3488
  */
1584
3489
  doorCode: string | null;
1585
3490
  }
1586
- export interface CarrierBookingListDto {
3491
+ export interface PaginatedCarrierBookingsDto {
3492
+ /** The page of rows. */
1587
3493
  items: CarrierBookingDto[];
3494
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3495
+ total: number;
3496
+ /** Effective max rows applied (after defaults/clamp). */
1588
3497
  limit: number;
3498
+ /** Effective rows skipped applied. */
1589
3499
  offset: number;
1590
3500
  }
1591
3501
  export interface ShipmentUnitOverrideDto {
@@ -1762,6 +3672,16 @@ export interface ProductDto {
1762
3672
  createdAt: string;
1763
3673
  updatedAt: string;
1764
3674
  }
3675
+ export interface PaginatedProductsDto {
3676
+ /** The page of rows. */
3677
+ items: ProductDto[];
3678
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3679
+ total: number;
3680
+ /** Effective max rows applied (after defaults/clamp). */
3681
+ limit: number;
3682
+ /** Effective rows skipped applied. */
3683
+ offset: number;
3684
+ }
1765
3685
  export interface UpdateProductDto {
1766
3686
  /** Catalogued product name */
1767
3687
  name?: string;
@@ -1842,6 +3762,16 @@ export interface ItemDto {
1842
3762
  createdAt: string;
1843
3763
  updatedAt: string;
1844
3764
  }
3765
+ export interface PaginatedItemsDto {
3766
+ /** The page of rows. */
3767
+ items: ItemDto[];
3768
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3769
+ total: number;
3770
+ /** Effective max rows applied (after defaults/clamp). */
3771
+ limit: number;
3772
+ /** Effective rows skipped applied. */
3773
+ offset: number;
3774
+ }
1845
3775
  export interface UpdateItemDto {
1846
3776
  condition?: string;
1847
3777
  /** Supplier/manufacturing batch id */
@@ -1881,6 +3811,16 @@ export interface PodDto {
1881
3811
  createdAt: string;
1882
3812
  updatedAt: string;
1883
3813
  }
3814
+ export interface PaginatedPodsDto {
3815
+ /** The page of rows. */
3816
+ items: PodDto[];
3817
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3818
+ total: number;
3819
+ /** Effective max rows applied (after defaults/clamp). */
3820
+ limit: number;
3821
+ /** Effective rows skipped applied. */
3822
+ offset: number;
3823
+ }
1884
3824
  export interface PickStateDto {
1885
3825
  podId: string;
1886
3826
  /** Current on-hand projection */
@@ -1938,10 +3878,30 @@ export interface PositionDto {
1938
3878
  heightMm: number | null;
1939
3879
  /** @nullable */
1940
3880
  depthMm: number | null;
3881
+ /**
3882
+ * Ordering hint for pick sequencing
3883
+ * @nullable
3884
+ */
3885
+ rank: number | null;
3886
+ /**
3887
+ * Physical check/verification number
3888
+ * @nullable
3889
+ */
3890
+ checkNumber: number | null;
1941
3891
  /** True when an active position_blocked row exists */
1942
3892
  isBlocked: boolean;
1943
3893
  createdAt: string;
1944
3894
  }
3895
+ export interface PaginatedPositionsDto {
3896
+ /** The page of rows. */
3897
+ items: PositionDto[];
3898
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3899
+ total: number;
3900
+ /** Effective max rows applied (after defaults/clamp). */
3901
+ limit: number;
3902
+ /** Effective rows skipped applied. */
3903
+ offset: number;
3904
+ }
1945
3905
  export interface PositionProductDto {
1946
3906
  productId: string;
1947
3907
  /** @nullable */
@@ -2011,6 +3971,16 @@ export interface ContainerDto {
2011
3971
  createdAt: string;
2012
3972
  updatedAt: string;
2013
3973
  }
3974
+ export interface PaginatedContainersDto {
3975
+ /** The page of rows. */
3976
+ items: ContainerDto[];
3977
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
3978
+ total: number;
3979
+ /** Effective max rows applied (after defaults/clamp). */
3980
+ limit: number;
3981
+ /** Effective rows skipped applied. */
3982
+ offset: number;
3983
+ }
2014
3984
  export interface CreateContainerDto {
2015
3985
  warehouseId: string;
2016
3986
  /** container_type lookup value (e.g. EPAL) */
@@ -2084,6 +4054,11 @@ export interface WarehouseOrderSummaryDto {
2084
4054
  status: string;
2085
4055
  /** @nullable */
2086
4056
  externalReference: string | null;
4057
+ /**
4058
+ * Human-readable order name
4059
+ * @nullable
4060
+ */
4061
+ name: string | null;
2087
4062
  /** @nullable */
2088
4063
  plannedArrivalDate: string | null;
2089
4064
  /** @nullable */
@@ -2093,14 +4068,45 @@ export interface WarehouseOrderSummaryDto {
2093
4068
  createdAt: string;
2094
4069
  updatedAt: string;
2095
4070
  }
4071
+ export interface PaginatedWarehouseOrdersDto {
4072
+ /** The page of rows. */
4073
+ items: WarehouseOrderSummaryDto[];
4074
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
4075
+ total: number;
4076
+ /** Effective max rows applied (after defaults/clamp). */
4077
+ limit: number;
4078
+ /** Effective rows skipped applied. */
4079
+ offset: number;
4080
+ }
2096
4081
  export interface WarehouseOrderProductDto {
2097
4082
  woProductId: string;
2098
4083
  productId: string;
4084
+ /**
4085
+ * Per-line ship-to address (public.address). Set on RECEIVE_AND_DISTRIBUTE lines that fan out to a destination; null on plain inbound lines.
4086
+ * @nullable
4087
+ */
4088
+ destinationAddressId: string | null;
2099
4089
  /** Expected quantity. */
2100
4090
  requestedQuantity: number;
2101
4091
  /** Received quantity (derived from RECEIVE movements). */
2102
4092
  quantity: number;
4093
+ /** The line's warehouse_order_product_status value. */
2103
4094
  status: string;
4095
+ /**
4096
+ * Referenced product's catalogue name. Null when the product is not visible in the caller's RLS scope (e.g. a warehouse operator viewing an inbound line for a catalogue product with no goods yet).
4097
+ * @nullable
4098
+ */
4099
+ productName: string | null;
4100
+ /**
4101
+ * Referenced product's primary image storage key (same visibility caveat as productName).
4102
+ * @nullable
4103
+ */
4104
+ productImageStorageKey: string | null;
4105
+ /**
4106
+ * Referenced product's product_status value (same visibility caveat as productName).
4107
+ * @nullable
4108
+ */
4109
+ productStatus: string | null;
2104
4110
  }
2105
4111
  export interface WarehouseOrderContainerDto {
2106
4112
  woContainerId: string;
@@ -2144,6 +4150,11 @@ export interface WarehouseOrderDetailDto {
2144
4150
  status: string;
2145
4151
  /** @nullable */
2146
4152
  externalReference: string | null;
4153
+ /**
4154
+ * Human-readable order name
4155
+ * @nullable
4156
+ */
4157
+ name: string | null;
2147
4158
  /** @nullable */
2148
4159
  plannedArrivalDate: string | null;
2149
4160
  /** @nullable */
@@ -2227,6 +4238,11 @@ export interface WarehouseOrderCommandResultDto {
2227
4238
  status: string;
2228
4239
  /** @nullable */
2229
4240
  externalReference: string | null;
4241
+ /**
4242
+ * Human-readable order name
4243
+ * @nullable
4244
+ */
4245
+ name: string | null;
2230
4246
  /** @nullable */
2231
4247
  plannedArrivalDate: string | null;
2232
4248
  /** @nullable */
@@ -2304,6 +4320,16 @@ export interface FolderDto {
2304
4320
  name: string;
2305
4321
  createdAt: string;
2306
4322
  }
4323
+ export interface PaginatedFoldersDto {
4324
+ /** The page of rows. */
4325
+ items: FolderDto[];
4326
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
4327
+ total: number;
4328
+ /** Effective max rows applied (after defaults/clamp). */
4329
+ limit: number;
4330
+ /** Effective rows skipped applied. */
4331
+ offset: number;
4332
+ }
2307
4333
  export interface CreateFolderDto {
2308
4334
  /**
2309
4335
  * Folder display name.
@@ -2320,14 +4346,53 @@ export interface UpdateFolderDto {
2320
4346
  * New folder display name.
2321
4347
  * @maxLength 200
2322
4348
  */
2323
- name: string;
2324
- }
2325
- export interface MoveFolderDto {
4349
+ name?: string;
2326
4350
  /**
2327
- * New parent folder (same org); null moves the folder to the root.
4351
+ * Re-parent the folder (same org, cycle-checked). Explicit null moves it to the root; omit to leave the parent unchanged.
2328
4352
  * @nullable
2329
4353
  */
2330
- parentFolderId: string | null;
4354
+ parentFolderId?: string | null;
4355
+ }
4356
+ export interface MoveIntoFolderDto {
4357
+ /** Products to move into this folder (product.folder_id ← :id). */
4358
+ productIds?: string[];
4359
+ /** Sub-folders to nest under this folder (folder.parent_folder_id ← :id). */
4360
+ folderIds?: string[];
4361
+ /**
4362
+ * Removed. Single-folder re-parent is now PATCH /v1/folders/:id { parentFolderId }. Sending this returns 400.
4363
+ * @deprecated
4364
+ */
4365
+ parentFolderId?: string;
4366
+ }
4367
+ /**
4368
+ * Why this id was not moved.
4369
+ */
4370
+ export type FolderMoveSkippedDtoReason = typeof FolderMoveSkippedDtoReason[keyof typeof FolderMoveSkippedDtoReason];
4371
+ export declare const FolderMoveSkippedDtoReason: {
4372
+ readonly not_found: "not_found";
4373
+ readonly wrong_organization: "wrong_organization";
4374
+ readonly would_form_cycle: "would_form_cycle";
4375
+ };
4376
+ export interface FolderMoveSkippedDto {
4377
+ id: string;
4378
+ /** Why this id was not moved. */
4379
+ reason: FolderMoveSkippedDtoReason;
4380
+ }
4381
+ export interface MoveIntoFolderResultDto {
4382
+ /** The target folder. */
4383
+ folderId: string;
4384
+ /** Products actually moved. */
4385
+ movedProducts: string[];
4386
+ /** Sub-folders actually nested. */
4387
+ movedFolders: string[];
4388
+ /** Ids skipped, with the reason. */
4389
+ skipped: FolderMoveSkippedDto[];
4390
+ /** Total products + folders moved. */
4391
+ movedCount: number;
4392
+ /** Total ids skipped. */
4393
+ skippedCount: number;
4394
+ /** True when this response replays a previous run of the key. */
4395
+ idempotent: boolean;
2331
4396
  }
2332
4397
  export interface ReceiveCoreCommandDto {
2333
4398
  /** The inbound line being handled. */
@@ -2845,6 +4910,224 @@ export interface DamageReportDto {
2845
4910
  active: boolean;
2846
4911
  createdAt: string;
2847
4912
  }
4913
+ export interface ForkliftPositionRefDto {
4914
+ positionId: string;
4915
+ /** @nullable */
4916
+ section: string | null;
4917
+ /** @nullable */
4918
+ positionNumber: number | null;
4919
+ /** @nullable */
4920
+ level: number | null;
4921
+ /** @nullable */
4922
+ checkNumber: number | null;
4923
+ }
4924
+ /**
4925
+ * @nullable
4926
+ */
4927
+ export type ForkliftQueueItemDtoPosition = ForkliftPositionRefDto | null;
4928
+ export interface ForkliftQueueItemDto {
4929
+ containerId: string;
4930
+ /** container.label_number */
4931
+ containerLabelId: number;
4932
+ /** container_type.value */
4933
+ containerType: string;
4934
+ /** @nullable */
4935
+ position: ForkliftQueueItemDtoPosition;
4936
+ /** Live pods currently in the container. */
4937
+ podCount: number;
4938
+ unhandledSopCount?: number;
4939
+ /** Set for the `transfer` queue. */
4940
+ warehouseOrderContainerId?: string;
4941
+ /** @nullable */
4942
+ dueAt?: string | null;
4943
+ }
4944
+ export type ForkliftQueueDtoMode = typeof ForkliftQueueDtoMode[keyof typeof ForkliftQueueDtoMode];
4945
+ export declare const ForkliftQueueDtoMode: {
4946
+ readonly place: "place";
4947
+ readonly pack: "pack";
4948
+ readonly empty: "empty";
4949
+ readonly transfer: "transfer";
4950
+ readonly downlift: "downlift";
4951
+ readonly replace: "replace";
4952
+ };
4953
+ export interface ForkliftQueueDto {
4954
+ mode: ForkliftQueueDtoMode;
4955
+ warehouseId: string;
4956
+ items: ForkliftQueueItemDto[];
4957
+ }
4958
+ export type ResolvePlacementDtoMode = typeof ResolvePlacementDtoMode[keyof typeof ResolvePlacementDtoMode];
4959
+ export declare const ResolvePlacementDtoMode: {
4960
+ readonly place: "place";
4961
+ readonly downlift: "downlift";
4962
+ readonly replace: "replace";
4963
+ };
4964
+ export interface ResolvePlacementDto {
4965
+ /** One of containerId / containerLabelId. */
4966
+ containerId?: string;
4967
+ /** Container label number (alternative to containerId). */
4968
+ containerLabelId?: string;
4969
+ mode: ResolvePlacementDtoMode;
4970
+ warehouseId: string;
4971
+ /** Prefer slots in this section. */
4972
+ section?: string;
4973
+ /** Position ids to EXCLUDE from the candidate set — the client re-asks after rejecting a slot. */
4974
+ skipPositionIds?: string[];
4975
+ }
4976
+ export interface ResolvePlacementContainerDto {
4977
+ containerId: string;
4978
+ containerLabelId: number;
4979
+ containerType: string;
4980
+ }
4981
+ export interface RecommendedPositionDto {
4982
+ positionId: string;
4983
+ /** @nullable */
4984
+ section: string | null;
4985
+ /** @nullable */
4986
+ positionNumber: number | null;
4987
+ /** @nullable */
4988
+ level: number | null;
4989
+ /**
4990
+ * position_grade.value
4991
+ * @nullable
4992
+ */
4993
+ grade: string | null;
4994
+ /** @nullable */
4995
+ checkNumber: number | null;
4996
+ }
4997
+ /**
4998
+ * null for SEAPAL (manual placement).
4999
+ * @nullable
5000
+ */
5001
+ export type ResolvePlacementResultDtoRecommendedPosition = RecommendedPositionDto | null;
5002
+ export interface ResolvePlacementResultDto {
5003
+ container: ResolvePlacementContainerDto;
5004
+ /**
5005
+ * null for SEAPAL (manual placement).
5006
+ * @nullable
5007
+ */
5008
+ recommendedPosition: ResolvePlacementResultDtoRecommendedPosition;
5009
+ isStaticProduct: boolean;
5010
+ isSeapal: boolean;
5011
+ requiresManualPlacement: boolean;
5012
+ }
5013
+ export interface NeighborPositionDto {
5014
+ positionId: string;
5015
+ section: string;
5016
+ positionNumber: number;
5017
+ level: number;
5018
+ occupied: boolean;
5019
+ /** Signed offset from the origin slot (±2 / ±4). */
5020
+ offset: number;
5021
+ }
5022
+ export interface NeighborPositionsDto {
5023
+ neighbors: NeighborPositionDto[];
5024
+ /** The origin slot is narrower than the container. */
5025
+ forceBlock: boolean;
5026
+ }
5027
+ export interface ForkliftPlaceDto {
5028
+ /** One of containerId / containerLabelId. */
5029
+ containerId?: string;
5030
+ /** Container label number (alternative to containerId). */
5031
+ containerLabelId?: string;
5032
+ /** Destination position. */
5033
+ positionId: string;
5034
+ }
5035
+ export interface ForkliftPlaceResultDto {
5036
+ containerId: string;
5037
+ /** container.label_number */
5038
+ containerLabelId: number;
5039
+ /** The position the container now stands on. */
5040
+ positionId: string;
5041
+ /** Live pods relocated (one MOVE movement each). */
5042
+ movedPods: number;
5043
+ /** True when this response replays a previous run of the key. */
5044
+ idempotent: boolean;
5045
+ }
5046
+ export interface ForkliftEmptyDto {
5047
+ /** One of containerId / containerLabelId. */
5048
+ containerId?: string;
5049
+ /** Container label number (alternative to containerId). */
5050
+ containerLabelId?: string;
5051
+ }
5052
+ export interface ForkliftEmptyResultDto {
5053
+ containerId: string;
5054
+ /** container.label_number */
5055
+ containerLabelId: number;
5056
+ /** Always true — the container is off its position with dimensions reset. */
5057
+ cleared: boolean;
5058
+ /** True when this response replays a previous run of the key. */
5059
+ idempotent: boolean;
5060
+ }
5061
+ export interface ForkliftPackDto {
5062
+ /** One of containerId / containerLabelId. */
5063
+ containerId?: string;
5064
+ /** Container label number (alternative to containerId). */
5065
+ containerLabelId?: string;
5066
+ /** Explicit PACK-type destination (else the warehouse's PACK position is resolved). */
5067
+ positionId?: string;
5068
+ /** Source-pallet verification: the container's current position check_number. */
5069
+ checkNumber?: number;
5070
+ }
5071
+ export interface ForkliftPackContainerDto {
5072
+ containerId: string;
5073
+ /** The PACK position the container now stands on. */
5074
+ positionId: string;
5075
+ /**
5076
+ * Canonical width (NULL when unknown).
5077
+ * @nullable
5078
+ */
5079
+ widthMm: number | null;
5080
+ /**
5081
+ * Canonical depth (NULL when unknown).
5082
+ * @nullable
5083
+ */
5084
+ depthMm: number | null;
5085
+ /** Reset to 0 on pack. */
5086
+ heightMm: number;
5087
+ }
5088
+ export interface ForkliftPackPositionDto {
5089
+ positionId: string;
5090
+ /** @nullable */
5091
+ section: string | null;
5092
+ /** @nullable */
5093
+ positionNumber: number | null;
5094
+ /** @nullable */
5095
+ level: number | null;
5096
+ }
5097
+ export interface ForkliftPackResultDto {
5098
+ container: ForkliftPackContainerDto;
5099
+ packPosition: ForkliftPackPositionDto;
5100
+ /** True when this response replays a previous run of the key. */
5101
+ idempotent: boolean;
5102
+ }
5103
+ export interface ForkliftTransferDto {
5104
+ /** One of containerId / containerLabelId. */
5105
+ containerId?: string;
5106
+ /** Container label number (alternative to containerId). */
5107
+ containerLabelId?: string;
5108
+ }
5109
+ /**
5110
+ * The WOC status after the transfer.
5111
+ */
5112
+ export type ForkliftTransferResultDtoStatus = typeof ForkliftTransferResultDtoStatus[keyof typeof ForkliftTransferResultDtoStatus];
5113
+ export declare const ForkliftTransferResultDtoStatus: {
5114
+ readonly HANDLED: "HANDLED";
5115
+ };
5116
+ export interface ForkliftTransferResultDto {
5117
+ containerId: string;
5118
+ /** container.label_number */
5119
+ containerLabelId: number;
5120
+ /** The warehouse_order_container flipped to HANDLED. */
5121
+ warehouseOrderContainerId: string;
5122
+ /** The destination position the container now stands on. */
5123
+ positionId: string;
5124
+ /** The WOC status after the transfer. */
5125
+ status: ForkliftTransferResultDtoStatus;
5126
+ /** Live pods relocated (one MOVE movement each). */
5127
+ movedPods: number;
5128
+ /** True when this response replays a previous run of the key. */
5129
+ idempotent: boolean;
5130
+ }
2848
5131
  /**
2849
5132
  * Opening-hours JSONB
2850
5133
  * @nullable
@@ -2891,6 +5174,16 @@ export interface WarehouseDto {
2891
5174
  createdAt: string;
2892
5175
  updatedAt: string;
2893
5176
  }
5177
+ export interface PaginatedWarehousesDto {
5178
+ /** The page of rows. */
5179
+ items: WarehouseDto[];
5180
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
5181
+ total: number;
5182
+ /** Effective max rows applied (after defaults/clamp). */
5183
+ limit: number;
5184
+ /** Effective rows skipped applied. */
5185
+ offset: number;
5186
+ }
2894
5187
  /**
2895
5188
  * Weekday → { open, close } opening hours (JSONB)
2896
5189
  */
@@ -2988,6 +5281,25 @@ export interface CreatePositionDto {
2988
5281
  /** @nullable */
2989
5282
  internalComment?: string | null;
2990
5283
  }
5284
+ export interface StatusCountDto {
5285
+ /** The status value (FK into the matching status lookup) */
5286
+ status: string;
5287
+ /** How many rows in this warehouse carry the status */
5288
+ count: number;
5289
+ }
5290
+ export interface WarehouseStatsDto {
5291
+ warehouseId: string;
5292
+ /** Active positions (slots) in the warehouse */
5293
+ positionCount: number;
5294
+ /** Active containers in the warehouse */
5295
+ containerCount: number;
5296
+ /** Active products whose home warehouse is this one */
5297
+ productCount: number;
5298
+ /** Pods in a container at this warehouse, grouped by pod status */
5299
+ podsByStatus: StatusCountDto[];
5300
+ /** Warehouse orders on this warehouse, grouped by status */
5301
+ warehouseOrdersByStatus: StatusCountDto[];
5302
+ }
2991
5303
  export interface ValidateLocationDto {
2992
5304
  /** Latitude (WGS84) */
2993
5305
  latitude: number;
@@ -2999,6 +5311,24 @@ export interface ValidateLocationResultDto {
2999
5311
  inside: boolean;
3000
5312
  warehouseId: string;
3001
5313
  }
5314
+ export interface LookupItemDto {
5315
+ /** The stable code stored on rows (the FK/enum value). */
5316
+ value: string;
5317
+ /** Human-readable label. For table-backed kinds this is the row's English display name; for native-enum kinds (which carry no DB label) it equals the value. */
5318
+ label: string;
5319
+ }
5320
+ /**
5321
+ * The requested lookup kind (echoed back).
5322
+ */
5323
+ export type LookupsResponseDtoKind = {
5324
+ [key: string]: unknown;
5325
+ };
5326
+ export interface LookupsResponseDto {
5327
+ /** The requested lookup kind (echoed back). */
5328
+ kind: LookupsResponseDtoKind;
5329
+ /** The vocabulary, in display order. */
5330
+ items: LookupItemDto[];
5331
+ }
3002
5332
  export type CreateUploadUrlDtoKind = typeof CreateUploadUrlDtoKind[keyof typeof CreateUploadUrlDtoKind];
3003
5333
  export declare const CreateUploadUrlDtoKind: {
3004
5334
  readonly product_image: "product_image";
@@ -3295,6 +5625,16 @@ export interface InvoiceDto {
3295
5625
  /** @nullable */
3296
5626
  snapshotCorporateIdentityNumber: string | null;
3297
5627
  }
5628
+ export interface PaginatedInvoicesDto {
5629
+ /** The page of rows. */
5630
+ items: InvoiceDto[];
5631
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
5632
+ total: number;
5633
+ /** Effective max rows applied (after defaults/clamp). */
5634
+ limit: number;
5635
+ /** Effective rows skipped applied. */
5636
+ offset: number;
5637
+ }
3298
5638
  export interface InvoiceRowDto {
3299
5639
  invoiceRowId: string;
3300
5640
  /** @nullable */
@@ -3905,6 +6245,16 @@ export interface AccountCreditDto {
3905
6245
  createdAt: string;
3906
6246
  updatedAt: string;
3907
6247
  }
6248
+ export interface PaginatedAccountCreditsDto {
6249
+ /** The page of rows. */
6250
+ items: AccountCreditDto[];
6251
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
6252
+ total: number;
6253
+ /** Effective max rows applied (after defaults/clamp). */
6254
+ limit: number;
6255
+ /** Effective rows skipped applied. */
6256
+ offset: number;
6257
+ }
3908
6258
  export interface AccountCreditApplicationDto {
3909
6259
  accountCreditApplicationId: string;
3910
6260
  tenantId: string;
@@ -4168,6 +6518,16 @@ export interface CouponRedemptionDto {
4168
6518
  status: string;
4169
6519
  createdAt: string;
4170
6520
  }
6521
+ export interface PaginatedCouponRedemptionsDto {
6522
+ /** The page of rows. */
6523
+ items: CouponRedemptionDto[];
6524
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
6525
+ total: number;
6526
+ /** Effective max rows applied (after defaults/clamp). */
6527
+ limit: number;
6528
+ /** Effective rows skipped applied. */
6529
+ offset: number;
6530
+ }
4171
6531
  export interface UnitOfMeasureDto {
4172
6532
  unitOfMeasureId: string;
4173
6533
  /**
@@ -4367,10 +6727,22 @@ export type OrdersControllerListV1Params = {
4367
6727
  */
4368
6728
  offset?: number;
4369
6729
  /**
4370
- * Filter by sales_order status (lookup value).
6730
+ * Filter by sales_order status. Repeatable — pass ?status=A&status=B for a set; a single value is accepted too.
4371
6731
  */
4372
- status?: string;
6732
+ status?: string[];
4373
6733
  type?: OrdersControllerListV1Type;
6734
+ /**
6735
+ * Narrow to one organization (within the caller's RLS scope).
6736
+ */
6737
+ organizationId?: string;
6738
+ /**
6739
+ * created_at lower bound, inclusive (ISO-8601).
6740
+ */
6741
+ fromDate?: string;
6742
+ /**
6743
+ * created_at upper bound, inclusive (ISO-8601).
6744
+ */
6745
+ toDate?: string;
4374
6746
  };
4375
6747
  export type OrdersControllerListV1Type = typeof OrdersControllerListV1Type[keyof typeof OrdersControllerListV1Type];
4376
6748
  export declare const OrdersControllerListV1Type: {
@@ -4451,13 +6823,89 @@ export type OrganizationsControllerListV1Params = {
4451
6823
  * Filter by organization type.
4452
6824
  */
4453
6825
  type?: OrganizationsControllerListV1Type;
6826
+ /**
6827
+ * Case-insensitive substring search over organization name and corporate identity number (orgnr) (accelerated by the pg_trgm GIN indexes)
6828
+ * @maxLength 200
6829
+ */
6830
+ search?: string;
4454
6831
  };
4455
6832
  export type OrganizationsControllerListV1Type = typeof OrganizationsControllerListV1Type[keyof typeof OrganizationsControllerListV1Type];
4456
6833
  export declare const OrganizationsControllerListV1Type: {
4457
6834
  readonly business: "business";
4458
6835
  readonly personal: "personal";
4459
6836
  };
4460
- export type TransportControllerListServicesV1Params = {
6837
+ export type CarriersControllerListProvidersV1Params = {
6838
+ /**
6839
+ * Max rows to return (1–100).
6840
+ * @minimum 1
6841
+ * @maximum 100
6842
+ */
6843
+ limit?: number;
6844
+ /**
6845
+ * Rows to skip.
6846
+ * @minimum 0
6847
+ */
6848
+ offset?: number;
6849
+ /**
6850
+ * Filter by active state.
6851
+ */
6852
+ isActive?: boolean;
6853
+ /**
6854
+ * Filter by default kind.
6855
+ */
6856
+ defaultKind?: CarriersControllerListProvidersV1DefaultKind;
6857
+ };
6858
+ export type CarriersControllerListProvidersV1DefaultKind = typeof CarriersControllerListProvidersV1DefaultKind[keyof typeof CarriersControllerListProvidersV1DefaultKind];
6859
+ export declare const CarriersControllerListProvidersV1DefaultKind: {
6860
+ readonly OWN_FLEET: "OWN_FLEET";
6861
+ readonly EXTERNAL: "EXTERNAL";
6862
+ readonly INTEGRATION: "INTEGRATION";
6863
+ };
6864
+ export type CarriersControllerListCarriersV1Params = {
6865
+ /**
6866
+ * Max rows to return (1–100).
6867
+ * @minimum 1
6868
+ * @maximum 100
6869
+ */
6870
+ limit?: number;
6871
+ /**
6872
+ * Rows to skip.
6873
+ * @minimum 0
6874
+ */
6875
+ offset?: number;
6876
+ /**
6877
+ * Filter by carrier kind.
6878
+ */
6879
+ kind?: CarriersControllerListCarriersV1Kind;
6880
+ /**
6881
+ * Filter by active state.
6882
+ */
6883
+ isActive?: boolean;
6884
+ };
6885
+ export type CarriersControllerListCarriersV1Kind = typeof CarriersControllerListCarriersV1Kind[keyof typeof CarriersControllerListCarriersV1Kind];
6886
+ export declare const CarriersControllerListCarriersV1Kind: {
6887
+ readonly OWN_FLEET: "OWN_FLEET";
6888
+ readonly EXTERNAL: "EXTERNAL";
6889
+ readonly INTEGRATION: "INTEGRATION";
6890
+ };
6891
+ export type CarriersControllerListMethodsV1Params = {
6892
+ /**
6893
+ * Max rows to return (1–100).
6894
+ * @minimum 1
6895
+ * @maximum 100
6896
+ */
6897
+ limit?: number;
6898
+ /**
6899
+ * Rows to skip.
6900
+ * @minimum 0
6901
+ */
6902
+ offset?: number;
6903
+ /**
6904
+ * Filter by active state.
6905
+ */
6906
+ isActive?: boolean;
6907
+ };
6908
+ export type CheckoutControllerAvailableServicesV1Params = {
4461
6909
  /**
4462
6910
  * Recipient zip code — resolves the service zone
4463
6911
  */
@@ -4467,7 +6915,11 @@ export type TransportControllerListServicesV1Params = {
4467
6915
  */
4468
6916
  countryCode?: string;
4469
6917
  };
4470
- export type TransportControllerListSlotsV1Params = {
6918
+ export type CheckoutControllerAvailableSlotsV1Params = {
6919
+ /**
6920
+ * The chosen transport service
6921
+ */
6922
+ transportServiceId: string;
4471
6923
  /**
4472
6924
  * Inclusive start of the slot-date range
4473
6925
  */
@@ -4476,6 +6928,171 @@ export type TransportControllerListSlotsV1Params = {
4476
6928
  * Inclusive end of the slot-date range
4477
6929
  */
4478
6930
  to: string;
6931
+ /**
6932
+ * The recipient's service zone (from GET /available-services). The v1 checkout flow ALWAYS passes this: slots are then resolved most-specific-wins — an exact-zone slot overrides the pooled (zone-agnostic) slot for the same window (even if full), so callers get one deduped row per window. Omitting it is back-compat only: every slot for the service is listed unfiltered and both pooled + per-zone rows may appear.
6933
+ */
6934
+ serviceZoneId?: string;
6935
+ };
6936
+ export type TransportServicesControllerListV1Params = {
6937
+ /**
6938
+ * Max rows to return (1–100).
6939
+ * @minimum 1
6940
+ * @maximum 100
6941
+ */
6942
+ limit?: number;
6943
+ /**
6944
+ * Rows to skip.
6945
+ * @minimum 0
6946
+ */
6947
+ offset?: number;
6948
+ /**
6949
+ * Checkout filter — only customer-pickable offerings.
6950
+ */
6951
+ customerSelectable?: boolean;
6952
+ salesOrderType?: TransportServicesControllerListV1SalesOrderType;
6953
+ fulfilmentMode?: TransportServicesControllerListV1FulfilmentMode;
6954
+ /**
6955
+ * Filter by active state.
6956
+ */
6957
+ isActive?: boolean;
6958
+ };
6959
+ export type TransportServicesControllerListV1SalesOrderType = typeof TransportServicesControllerListV1SalesOrderType[keyof typeof TransportServicesControllerListV1SalesOrderType];
6960
+ export declare const TransportServicesControllerListV1SalesOrderType: {
6961
+ readonly PICKUP: "PICKUP";
6962
+ readonly DELIVERY: "DELIVERY";
6963
+ readonly MOVE: "MOVE";
6964
+ readonly DROP_OFF: "DROP_OFF";
6965
+ readonly TRANSFER: "TRANSFER";
6966
+ readonly PICKING: "PICKING";
6967
+ readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
6968
+ };
6969
+ export type TransportServicesControllerListV1FulfilmentMode = typeof TransportServicesControllerListV1FulfilmentMode[keyof typeof TransportServicesControllerListV1FulfilmentMode];
6970
+ export declare const TransportServicesControllerListV1FulfilmentMode: {
6971
+ readonly DELIVERY_TIMESLOT: "DELIVERY_TIMESLOT";
6972
+ readonly DISPATCH_SLOT: "DISPATCH_SLOT";
6973
+ readonly BOOKED: "BOOKED";
6974
+ };
6975
+ export type TransportServicesControllerListPricesV1Params = {
6976
+ /**
6977
+ * Max rows to return (1–100).
6978
+ * @minimum 1
6979
+ * @maximum 100
6980
+ */
6981
+ limit?: number;
6982
+ /**
6983
+ * Rows to skip.
6984
+ * @minimum 0
6985
+ */
6986
+ offset?: number;
6987
+ /**
6988
+ * Filter by active state.
6989
+ */
6990
+ isActive?: boolean;
6991
+ };
6992
+ export type ServiceZonesControllerListV1Params = {
6993
+ /**
6994
+ * Max rows to return (1–100).
6995
+ * @minimum 1
6996
+ * @maximum 100
6997
+ */
6998
+ limit?: number;
6999
+ /**
7000
+ * Rows to skip.
7001
+ * @minimum 0
7002
+ */
7003
+ offset?: number;
7004
+ /**
7005
+ * Filter by ISO-3166-1 alpha-2 country code.
7006
+ */
7007
+ countryCode?: string;
7008
+ /**
7009
+ * Filter by active state.
7010
+ */
7011
+ isActive?: boolean;
7012
+ };
7013
+ export type ServiceZonesControllerListPostalCodesV1Params = {
7014
+ /**
7015
+ * Max rows to return (1–100).
7016
+ * @minimum 1
7017
+ * @maximum 100
7018
+ */
7019
+ limit?: number;
7020
+ /**
7021
+ * Rows to skip.
7022
+ * @minimum 0
7023
+ */
7024
+ offset?: number;
7025
+ };
7026
+ export type SlotConfigsControllerListV1Params = {
7027
+ /**
7028
+ * Max rows to return (1–100).
7029
+ * @minimum 1
7030
+ * @maximum 100
7031
+ */
7032
+ limit?: number;
7033
+ /**
7034
+ * Rows to skip.
7035
+ * @minimum 0
7036
+ */
7037
+ offset?: number;
7038
+ /**
7039
+ * Filter by service zone.
7040
+ */
7041
+ zoneId?: string;
7042
+ /**
7043
+ * Filter by status.
7044
+ */
7045
+ status?: string;
7046
+ };
7047
+ export type CapacityControllerListCapacityDaysV1Params = {
7048
+ /**
7049
+ * Max rows to return (1–100).
7050
+ * @minimum 1
7051
+ * @maximum 100
7052
+ */
7053
+ limit?: number;
7054
+ /**
7055
+ * Rows to skip.
7056
+ * @minimum 0
7057
+ */
7058
+ offset?: number;
7059
+ /**
7060
+ * Filter by service zone.
7061
+ */
7062
+ zoneId?: string;
7063
+ /**
7064
+ * Inclusive from date (YYYY-MM-DD).
7065
+ */
7066
+ from?: string;
7067
+ /**
7068
+ * Inclusive to date (YYYY-MM-DD).
7069
+ */
7070
+ to?: string;
7071
+ };
7072
+ export type CapacityControllerListOverridesV1Params = {
7073
+ /**
7074
+ * Max rows to return (1–100).
7075
+ * @minimum 1
7076
+ * @maximum 100
7077
+ */
7078
+ limit?: number;
7079
+ /**
7080
+ * Rows to skip.
7081
+ * @minimum 0
7082
+ */
7083
+ offset?: number;
7084
+ /**
7085
+ * Filter by slot (xor dayId).
7086
+ */
7087
+ slotId?: string;
7088
+ /**
7089
+ * Filter by capacity day (xor slotId).
7090
+ */
7091
+ dayId?: string;
7092
+ /**
7093
+ * Filter by active state.
7094
+ */
7095
+ isActive?: boolean;
4479
7096
  };
4480
7097
  export type RoutesControllerListV1Params = {
4481
7098
  /**
@@ -4601,9 +7218,22 @@ export type ProductsControllerListV1Params = {
4601
7218
  */
4602
7219
  folderId?: string;
4603
7220
  /**
4604
- * Filter by product_status value (e.g. IN_STORAGE)
7221
+ * Restrict to a single organization (tenant/warehouse staff; org users are already RLS-scoped to their own org)
4605
7222
  */
4606
- status?: string;
7223
+ organizationId?: string;
7224
+ /**
7225
+ * Filter by one or more product_status values (repeatable — ?status=IN_STORAGE&status=CREATED)
7226
+ */
7227
+ status?: string[];
7228
+ /**
7229
+ * Only top-level products (folder_id IS NULL) — the storage-root view
7230
+ */
7231
+ rootOnly?: boolean;
7232
+ /**
7233
+ * Case-insensitive substring search over product name and external reference (accelerated by the pg_trgm GIN indexes)
7234
+ * @maxLength 200
7235
+ */
7236
+ search?: string;
4607
7237
  };
4608
7238
  export type ItemsControllerListV1Params = {
4609
7239
  /**
@@ -4642,6 +7272,14 @@ export type PodsControllerListV1Params = {
4642
7272
  * Filter by pod_status value
4643
7273
  */
4644
7274
  status?: string;
7275
+ /**
7276
+ * Filter to pods allocated to a single sales order
7277
+ */
7278
+ salesOrderId?: string;
7279
+ /**
7280
+ * Filter to pods in a single container
7281
+ */
7282
+ containerId?: string;
4645
7283
  };
4646
7284
  export type PodsControllerGetPickStateV1Params = {
4647
7285
  /**
@@ -4665,6 +7303,14 @@ export type PositionsControllerListV1Params = {
4665
7303
  * Filter to positions in a single warehouse
4666
7304
  */
4667
7305
  warehouseId?: string;
7306
+ /**
7307
+ * Filter to a single section (exact match).
7308
+ */
7309
+ section?: string;
7310
+ /**
7311
+ * Filter by position_type taxonomy value (e.g. RACK).
7312
+ */
7313
+ type?: string;
4668
7314
  };
4669
7315
  export type ContainersControllerListV1Params = {
4670
7316
  /**
@@ -4686,6 +7332,11 @@ export type ContainersControllerListV1Params = {
4686
7332
  * Filter to containers in a single warehouse
4687
7333
  */
4688
7334
  warehouseId?: string;
7335
+ /**
7336
+ * Exact per-tenant label-number lookup.
7337
+ * @minimum 1
7338
+ */
7339
+ labelNumber?: number;
4689
7340
  };
4690
7341
  export type WarehouseOrdersControllerListV1Params = {
4691
7342
  /**
@@ -4704,6 +7355,22 @@ export type WarehouseOrdersControllerListV1Params = {
4704
7355
  */
4705
7356
  status?: string;
4706
7357
  type?: WarehouseOrdersControllerListV1Type;
7358
+ /**
7359
+ * Filter to orders at a single warehouse.
7360
+ */
7361
+ warehouseId?: string;
7362
+ /**
7363
+ * Filter to a single organization.
7364
+ */
7365
+ organizationId?: string;
7366
+ /**
7367
+ * Planned-arrival range lower bound, inclusive (ISO date YYYY-MM-DD).
7368
+ */
7369
+ arrivalFrom?: string;
7370
+ /**
7371
+ * Planned-arrival range upper bound, inclusive (ISO date YYYY-MM-DD).
7372
+ */
7373
+ arrivalTo?: string;
4707
7374
  };
4708
7375
  export type WarehouseOrdersControllerListV1Type = typeof WarehouseOrdersControllerListV1Type[keyof typeof WarehouseOrdersControllerListV1Type];
4709
7376
  export declare const WarehouseOrdersControllerListV1Type: {
@@ -4734,6 +7401,20 @@ export type FoldersControllerListV1Params = {
4734
7401
  */
4735
7402
  parentFolderId?: string;
4736
7403
  };
7404
+ export type ForkliftControllerGetQueueV1Params = {
7405
+ /**
7406
+ * Warehouse whose work queue to compute.
7407
+ */
7408
+ warehouseId: string;
7409
+ /**
7410
+ * Restrict the queue to one section.
7411
+ */
7412
+ section?: string;
7413
+ };
7414
+ export type ForkliftControllerGetNeighborPositionsV1Params = {
7415
+ containerId: string;
7416
+ positionId: string;
7417
+ };
4737
7418
  export type WarehousesControllerListV1Params = {
4738
7419
  /**
4739
7420
  * Max rows to return (1–100).
@@ -4747,6 +7428,37 @@ export type WarehousesControllerListV1Params = {
4747
7428
  */
4748
7429
  offset?: number;
4749
7430
  };
7431
+ export type LookupsControllerListV1Params = {
7432
+ /**
7433
+ * Which vocabulary to return.
7434
+ */
7435
+ kind: LookupsControllerListV1Kind;
7436
+ };
7437
+ export type LookupsControllerListV1Kind = typeof LookupsControllerListV1Kind[keyof typeof LookupsControllerListV1Kind];
7438
+ export declare const LookupsControllerListV1Kind: {
7439
+ readonly 'position-type': "position-type";
7440
+ readonly 'position-grade': "position-grade";
7441
+ readonly 'container-type': "container-type";
7442
+ readonly 'damage-report-reason': "damage-report-reason";
7443
+ readonly 'damage-report-location': "damage-report-location";
7444
+ readonly 'pod-status': "pod-status";
7445
+ readonly 'cart-status': "cart-status";
7446
+ readonly 'sales-order-status': "sales-order-status";
7447
+ readonly 'product-status': "product-status";
7448
+ readonly 'warehouse-order-status': "warehouse-order-status";
7449
+ readonly 'route-status': "route-status";
7450
+ readonly 'route-stop-status': "route-stop-status";
7451
+ readonly 'transport-leg-status': "transport-leg-status";
7452
+ readonly 'order-relationship-type': "order-relationship-type";
7453
+ readonly 'sales-order-type': "sales-order-type";
7454
+ readonly 'warehouse-order-type': "warehouse-order-type";
7455
+ readonly 'carrier-kind': "carrier-kind";
7456
+ readonly 'fulfilment-mode': "fulfilment-mode";
7457
+ readonly 'shipment-unit-type': "shipment-unit-type";
7458
+ readonly 'transport-leg-type': "transport-leg-type";
7459
+ readonly 'transport-slot-kind': "transport-slot-kind";
7460
+ readonly 'organization-type': "organization-type";
7461
+ };
4750
7462
  export type IntegrationsControllerGetByIdV1200 = StripeAccountDto | FortnoxAccountDto;
4751
7463
  export type BillingAccountsControllerListAccountsV1Params = {
4752
7464
  /**