@vindentech/api-client 0.3.0-next.23 → 0.3.0-next.24

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 (29) hide show
  1. package/dist/generated/_permissions.d.ts +17 -1
  2. package/dist/generated/_permissions.d.ts.map +1 -1
  3. package/dist/generated/_permissions.js +5 -1
  4. package/dist/generated/_permissions.js.map +1 -1
  5. package/dist/generated/carriers/carriers.d.ts +3 -3
  6. package/dist/generated/checkout/checkout.d.ts +2 -2
  7. package/dist/generated/checkout/checkout.d.ts.map +1 -1
  8. package/dist/generated/containers/containers.d.ts +14 -0
  9. package/dist/generated/containers/containers.d.ts.map +1 -1
  10. package/dist/generated/containers/containers.js +10 -0
  11. package/dist/generated/containers/containers.js.map +1 -1
  12. package/dist/generated/index.schemas.d.ts +259 -140
  13. package/dist/generated/index.schemas.d.ts.map +1 -1
  14. package/dist/generated/index.schemas.js +34 -0
  15. package/dist/generated/index.schemas.js.map +1 -1
  16. package/dist/generated/payment-instruments/payment-instruments.d.ts +15 -1
  17. package/dist/generated/payment-instruments/payment-instruments.d.ts.map +1 -1
  18. package/dist/generated/payment-instruments/payment-instruments.js +10 -0
  19. package/dist/generated/payment-instruments/payment-instruments.js.map +1 -1
  20. package/dist/generated/pods/pods.d.ts +17 -3
  21. package/dist/generated/pods/pods.d.ts.map +1 -1
  22. package/dist/generated/pods/pods.js +12 -0
  23. package/dist/generated/pods/pods.js.map +1 -1
  24. package/dist/generated/sync-dimensions/sync-dimensions.d.ts +1 -1
  25. package/dist/generated/transport-services/transport-services.d.ts +15 -1
  26. package/dist/generated/transport-services/transport-services.d.ts.map +1 -1
  27. package/dist/generated/transport-services/transport-services.js +10 -0
  28. package/dist/generated/transport-services/transport-services.js.map +1 -1
  29. package/package.json +1 -1
@@ -373,133 +373,58 @@ export interface OrderTimelineDto {
373
373
  */
374
374
  estimatedCompletion: string | null;
375
375
  }
376
- /**
377
- * @nullable
378
- */
379
- export type EditOrderRecipientDtoName = {
380
- [key: string]: unknown;
381
- } | null;
382
- /**
383
- * @nullable
384
- */
385
- export type EditOrderRecipientDtoPhone = {
386
- [key: string]: unknown;
387
- } | null;
388
- /**
389
- * @nullable
390
- */
391
- export type EditOrderRecipientDtoEmail = {
392
- [key: string]: unknown;
393
- } | null;
394
- /**
395
- * @nullable
396
- */
397
- export type EditOrderRecipientDtoCompanyName = {
398
- [key: string]: unknown;
399
- } | null;
400
376
  export interface EditOrderRecipientDto {
401
377
  /** @nullable */
402
- name?: EditOrderRecipientDtoName;
378
+ name?: string | null;
403
379
  /** @nullable */
404
- phone?: EditOrderRecipientDtoPhone;
380
+ phone?: string | null;
405
381
  /** @nullable */
406
- email?: EditOrderRecipientDtoEmail;
382
+ email?: string | null;
407
383
  /** @nullable */
408
- companyName?: EditOrderRecipientDtoCompanyName;
384
+ companyName?: string | null;
409
385
  }
410
386
  /**
387
+ * Which kind of elevator the address has (`public.elevator_type`). Distinct from `elevator`, which only says whether there is one: crews plan a move differently for a SMALL cabin than a LARGE or FREIGHT one. Null clears it.
411
388
  * @nullable
412
389
  */
413
- export type EditOrderAddressDtoAddressLine1 = {
414
- [key: string]: unknown;
415
- } | null;
416
- /**
417
- * @nullable
418
- */
419
- export type EditOrderAddressDtoAddressLine2 = {
420
- [key: string]: unknown;
421
- } | null;
422
- /**
423
- * @nullable
424
- */
425
- export type EditOrderAddressDtoZipCode = {
426
- [key: string]: unknown;
427
- } | null;
428
- /**
429
- * @nullable
430
- */
431
- export type EditOrderAddressDtoCity = {
432
- [key: string]: unknown;
433
- } | null;
434
- /**
435
- * @nullable
436
- */
437
- export type EditOrderAddressDtoState = {
438
- [key: string]: unknown;
439
- } | null;
440
- /**
441
- * @nullable
442
- */
443
- export type EditOrderAddressDtoCounty = {
444
- [key: string]: unknown;
445
- } | null;
446
- /**
447
- * ISO 3166-1 alpha-2
448
- * @nullable
449
- */
450
- export type EditOrderAddressDtoCountryCode = {
451
- [key: string]: unknown;
452
- } | null;
453
- /**
454
- * @nullable
455
- */
456
- export type EditOrderAddressDtoFloorLevel = {
457
- [key: string]: unknown;
458
- } | null;
459
- /**
460
- * @nullable
461
- */
462
- export type EditOrderAddressDtoElevator = {
463
- [key: string]: unknown;
464
- } | null;
465
- /**
466
- * @nullable
467
- */
468
- export type EditOrderAddressDtoDoorCode = {
469
- [key: string]: unknown;
470
- } | null;
471
- /**
472
- * @nullable
473
- */
474
- export type EditOrderAddressDtoTransportInstructions = {
475
- [key: string]: unknown;
476
- } | null;
390
+ export type EditOrderAddressDtoElevatorType = typeof EditOrderAddressDtoElevatorType[keyof typeof EditOrderAddressDtoElevatorType] | null;
391
+ export declare const EditOrderAddressDtoElevatorType: {
392
+ readonly NONE: "NONE";
393
+ readonly SMALL: "SMALL";
394
+ readonly LARGE: "LARGE";
395
+ readonly FREIGHT: "FREIGHT";
396
+ };
477
397
  export interface EditOrderAddressDto {
478
398
  /** @nullable */
479
- addressLine1?: EditOrderAddressDtoAddressLine1;
399
+ addressLine1?: string | null;
480
400
  /** @nullable */
481
- addressLine2?: EditOrderAddressDtoAddressLine2;
401
+ addressLine2?: string | null;
482
402
  /** @nullable */
483
- zipCode?: EditOrderAddressDtoZipCode;
403
+ zipCode?: string | null;
484
404
  /** @nullable */
485
- city?: EditOrderAddressDtoCity;
405
+ city?: string | null;
486
406
  /** @nullable */
487
- state?: EditOrderAddressDtoState;
407
+ state?: string | null;
488
408
  /** @nullable */
489
- county?: EditOrderAddressDtoCounty;
409
+ county?: string | null;
490
410
  /**
491
411
  * ISO 3166-1 alpha-2
492
412
  * @nullable
493
413
  */
494
- countryCode?: EditOrderAddressDtoCountryCode;
414
+ countryCode?: string | null;
495
415
  /** @nullable */
496
- floorLevel?: EditOrderAddressDtoFloorLevel;
416
+ floorLevel?: number | null;
497
417
  /** @nullable */
498
- elevator?: EditOrderAddressDtoElevator;
418
+ elevator?: boolean | null;
419
+ /**
420
+ * Which kind of elevator the address has (`public.elevator_type`). Distinct from `elevator`, which only says whether there is one: crews plan a move differently for a SMALL cabin than a LARGE or FREIGHT one. Null clears it.
421
+ * @nullable
422
+ */
423
+ elevatorType?: EditOrderAddressDtoElevatorType;
499
424
  /** @nullable */
500
- doorCode?: EditOrderAddressDtoDoorCode;
425
+ doorCode?: string | null;
501
426
  /** @nullable */
502
- transportInstructions?: EditOrderAddressDtoTransportInstructions;
427
+ transportInstructions?: string | null;
503
428
  }
504
429
  export interface RescheduleOrderDto {
505
430
  /** The cart_component_key of the leg to re-plan (e.g. move:pickup, move:delivery). */
@@ -514,6 +439,14 @@ export interface EditOrderDto {
514
439
  address?: EditOrderAddressDto;
515
440
  /** New preferred transport date (does not re-plan capacity by itself). */
516
441
  preferredTransportDate?: string;
442
+ /**
443
+ * Discount code carried on the order; null removes it. Stored as a label, not redeemed here — the code is resolved against the coupon catalogue when the order is priced, and one that is unknown or out of its window simply yields no discount. An unchanged code may therefore be re-sent on every save without the edit failing.
444
+ * @maxLength 100
445
+ * @nullable
446
+ */
447
+ couponCode?: string | null;
448
+ /** Whether the order claims a RUT deduction. The identity number the claim is filed against is frozen at placement and has no edit path, so enabling RUT on an order placed without one leaves the claim without an identity number; disabling it leaves any stored number in place (removal belongs to the personal-data erasure path, not to this toggle). */
449
+ rutDeduction?: boolean;
517
450
  reschedule?: RescheduleOrderDto;
518
451
  }
519
452
  /**
@@ -2714,6 +2647,39 @@ export interface PlaceOrderResultDto {
2714
2647
  orderNumber: number;
2715
2648
  salesOrders: PlacedSalesOrderDto[];
2716
2649
  }
2650
+ export interface CheckoutTransportServiceDto {
2651
+ transportServiceId: string;
2652
+ name: string;
2653
+ /** PICKUP | DELIVERY | MOVE | DROP_OFF | TRANSFER | PICKING | MERCHANDISE_SALE */
2654
+ salesOrderType: string;
2655
+ /** DELIVERY_TIMESLOT | DISPATCH_SLOT | BOOKED */
2656
+ fulfilmentMode: string;
2657
+ /** The zone that matched the queried zip code */
2658
+ serviceZoneId: string;
2659
+ }
2660
+ export interface TransportSlotDto {
2661
+ slotId: string;
2662
+ slotDate: string;
2663
+ windowStart: string;
2664
+ windowEnd: string;
2665
+ /** @nullable */
2666
+ orderCutoffAt: string | null;
2667
+ /** @nullable */
2668
+ priceExVat: string | null;
2669
+ /** @nullable */
2670
+ priceIncRut: string | null;
2671
+ /** @nullable */
2672
+ vatRate: string | null;
2673
+ /** @nullable */
2674
+ expressSurchargeExVat: string | null;
2675
+ /**
2676
+ * Orders still bookable in this slot; null = unlimited
2677
+ * @nullable
2678
+ */
2679
+ remainingOrders: number | null;
2680
+ /** ACTIVE | CLOSED */
2681
+ status: string;
2682
+ }
2717
2683
  export type TransportServiceDtoSalesOrderType = typeof TransportServiceDtoSalesOrderType[keyof typeof TransportServiceDtoSalesOrderType];
2718
2684
  export declare const TransportServiceDtoSalesOrderType: {
2719
2685
  readonly PICKUP: "PICKUP";
@@ -2735,6 +2701,14 @@ export declare const TransportServiceDtoCustomerTypesItem: {
2735
2701
  readonly business: "business";
2736
2702
  readonly personal: "personal";
2737
2703
  };
2704
+ /**
2705
+ * Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed.
2706
+ */
2707
+ export type TransportServiceDtoVisibility = typeof TransportServiceDtoVisibility[keyof typeof TransportServiceDtoVisibility];
2708
+ export declare const TransportServiceDtoVisibility: {
2709
+ readonly PUBLIC: "PUBLIC";
2710
+ readonly RESTRICTED: "RESTRICTED";
2711
+ };
2738
2712
  /**
2739
2713
  * @nullable
2740
2714
  */
@@ -2758,6 +2732,8 @@ export interface TransportServiceDto {
2758
2732
  customerTypes: TransportServiceDtoCustomerTypesItem[];
2759
2733
  minLeadTimeHours: number;
2760
2734
  customerSelectable: boolean;
2735
+ /** Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed. */
2736
+ visibility: TransportServiceDtoVisibility;
2761
2737
  isActive: boolean;
2762
2738
  displayOrder: number;
2763
2739
  /** @nullable */
@@ -2765,29 +2741,6 @@ export interface TransportServiceDto {
2765
2741
  createdAt: string;
2766
2742
  updatedAt: string;
2767
2743
  }
2768
- export interface TransportSlotDto {
2769
- slotId: string;
2770
- slotDate: string;
2771
- windowStart: string;
2772
- windowEnd: string;
2773
- /** @nullable */
2774
- orderCutoffAt: string | null;
2775
- /** @nullable */
2776
- priceExVat: string | null;
2777
- /** @nullable */
2778
- priceIncRut: string | null;
2779
- /** @nullable */
2780
- vatRate: string | null;
2781
- /** @nullable */
2782
- expressSurchargeExVat: string | null;
2783
- /**
2784
- * Orders still bookable in this slot; null = unlimited
2785
- * @nullable
2786
- */
2787
- remainingOrders: number | null;
2788
- /** ACTIVE | CLOSED */
2789
- status: string;
2790
- }
2791
2744
  export interface PaginatedTransportServicesDto {
2792
2745
  /** The page of rows. */
2793
2746
  items: TransportServiceDto[];
@@ -2851,6 +2804,15 @@ export interface TransportServicePriceDto {
2851
2804
  isActive: boolean;
2852
2805
  createdAt: string;
2853
2806
  }
2807
+ export interface TransportServiceOrgGrantDto {
2808
+ transportServiceOrgGrantId: string;
2809
+ organizationId: string;
2810
+ /** The granted organization's display name */
2811
+ organizationName: string;
2812
+ createdAt: string;
2813
+ /** Last change to the grant — including when a revoked grant was re-granted. */
2814
+ updatedAt: string;
2815
+ }
2854
2816
  export type TransportServiceDetailDtoSalesOrderType = typeof TransportServiceDetailDtoSalesOrderType[keyof typeof TransportServiceDetailDtoSalesOrderType];
2855
2817
  export declare const TransportServiceDetailDtoSalesOrderType: {
2856
2818
  readonly PICKUP: "PICKUP";
@@ -2872,6 +2834,14 @@ export declare const TransportServiceDetailDtoCustomerTypesItem: {
2872
2834
  readonly business: "business";
2873
2835
  readonly personal: "personal";
2874
2836
  };
2837
+ /**
2838
+ * Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed.
2839
+ */
2840
+ export type TransportServiceDetailDtoVisibility = typeof TransportServiceDetailDtoVisibility[keyof typeof TransportServiceDetailDtoVisibility];
2841
+ export declare const TransportServiceDetailDtoVisibility: {
2842
+ readonly PUBLIC: "PUBLIC";
2843
+ readonly RESTRICTED: "RESTRICTED";
2844
+ };
2875
2845
  /**
2876
2846
  * @nullable
2877
2847
  */
@@ -2895,6 +2865,8 @@ export interface TransportServiceDetailDto {
2895
2865
  customerTypes: TransportServiceDetailDtoCustomerTypesItem[];
2896
2866
  minLeadTimeHours: number;
2897
2867
  customerSelectable: boolean;
2868
+ /** Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed. */
2869
+ visibility: TransportServiceDetailDtoVisibility;
2898
2870
  isActive: boolean;
2899
2871
  displayOrder: number;
2900
2872
  /** @nullable */
@@ -2903,6 +2875,8 @@ export interface TransportServiceDetailDto {
2903
2875
  updatedAt: string;
2904
2876
  zones: TransportServiceZoneDto[];
2905
2877
  activePrices: TransportServicePriceDto[];
2878
+ /** Organizations that may be offered this service. Meaningful only when visibility is RESTRICTED; always empty for a PUBLIC service unless grants were authored ahead of the flip. */
2879
+ orgGrants: TransportServiceOrgGrantDto[];
2906
2880
  }
2907
2881
  export interface TransportServiceZoneInputDto {
2908
2882
  transportServiceZoneId?: string;
@@ -2945,6 +2919,10 @@ export interface TransportServicePriceInputDto {
2945
2919
  effectiveUntil?: string;
2946
2920
  isActive?: boolean;
2947
2921
  }
2922
+ export interface TransportServiceOrgGrantInputDto {
2923
+ /** The organization to grant this service to. */
2924
+ organizationId: string;
2925
+ }
2948
2926
  export type CreateTransportServiceDtoSalesOrderType = typeof CreateTransportServiceDtoSalesOrderType[keyof typeof CreateTransportServiceDtoSalesOrderType];
2949
2927
  export declare const CreateTransportServiceDtoSalesOrderType: {
2950
2928
  readonly PICKUP: "PICKUP";
@@ -2966,6 +2944,14 @@ export declare const CreateTransportServiceDtoCustomerTypesItem: {
2966
2944
  readonly business: "business";
2967
2945
  readonly personal: "personal";
2968
2946
  };
2947
+ /**
2948
+ * Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed.
2949
+ */
2950
+ export type CreateTransportServiceDtoVisibility = typeof CreateTransportServiceDtoVisibility[keyof typeof CreateTransportServiceDtoVisibility];
2951
+ export declare const CreateTransportServiceDtoVisibility: {
2952
+ readonly PUBLIC: "PUBLIC";
2953
+ readonly RESTRICTED: "RESTRICTED";
2954
+ };
2969
2955
  export type CreateTransportServiceDtoMetadata = {
2970
2956
  [key: string]: unknown;
2971
2957
  };
@@ -2986,11 +2972,15 @@ export interface CreateTransportServiceDto {
2986
2972
  customerTypes?: CreateTransportServiceDtoCustomerTypesItem[];
2987
2973
  minLeadTimeHours?: number;
2988
2974
  customerSelectable?: boolean;
2975
+ /** Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed. */
2976
+ visibility?: CreateTransportServiceDtoVisibility;
2989
2977
  isActive?: boolean;
2990
2978
  displayOrder?: number;
2991
2979
  metadata?: CreateTransportServiceDtoMetadata;
2992
2980
  zones?: TransportServiceZoneInputDto[];
2993
2981
  prices?: TransportServicePriceInputDto[];
2982
+ /** Organizations that may be offered this service when visibility is RESTRICTED. Reconciled like zones[]/prices[]: omit to leave the set unchanged, [] to revoke every grant, or supply the exact set. */
2983
+ orgGrants?: TransportServiceOrgGrantInputDto[];
2994
2984
  }
2995
2985
  export type UpdateTransportServiceDtoSalesOrderType = typeof UpdateTransportServiceDtoSalesOrderType[keyof typeof UpdateTransportServiceDtoSalesOrderType];
2996
2986
  export declare const UpdateTransportServiceDtoSalesOrderType: {
@@ -3013,6 +3003,14 @@ export declare const UpdateTransportServiceDtoCustomerTypesItem: {
3013
3003
  readonly business: "business";
3014
3004
  readonly personal: "personal";
3015
3005
  };
3006
+ /**
3007
+ * Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed.
3008
+ */
3009
+ export type UpdateTransportServiceDtoVisibility = typeof UpdateTransportServiceDtoVisibility[keyof typeof UpdateTransportServiceDtoVisibility];
3010
+ export declare const UpdateTransportServiceDtoVisibility: {
3011
+ readonly PUBLIC: "PUBLIC";
3012
+ readonly RESTRICTED: "RESTRICTED";
3013
+ };
3016
3014
  export type UpdateTransportServiceDtoMetadata = {
3017
3015
  [key: string]: unknown;
3018
3016
  };
@@ -3035,11 +3033,15 @@ export interface UpdateTransportServiceDto {
3035
3033
  customerTypes?: UpdateTransportServiceDtoCustomerTypesItem[];
3036
3034
  minLeadTimeHours?: number;
3037
3035
  customerSelectable?: boolean;
3036
+ /** Who may be offered this service at checkout. PUBLIC (the default) = every caller, including guest sessions. RESTRICTED = only organizations listed in orgGrants. A RESTRICTED service with no grants is offered to NOBODY — a valid but easily unintended state. Gates booking admission only: revoking access never hides an order already placed. */
3037
+ visibility?: UpdateTransportServiceDtoVisibility;
3038
3038
  isActive?: boolean;
3039
3039
  displayOrder?: number;
3040
3040
  metadata?: UpdateTransportServiceDtoMetadata;
3041
3041
  zones?: TransportServiceZoneInputDto[];
3042
3042
  prices?: TransportServicePriceInputDto[];
3043
+ /** Organizations that may be offered this service when visibility is RESTRICTED. Omit to leave the set unchanged; [] revokes every grant; a supplied array is reconciled to exactly that set. */
3044
+ orgGrants?: TransportServiceOrgGrantInputDto[];
3043
3045
  }
3044
3046
  export interface PaginatedTransportServicePricesDto {
3045
3047
  /** The page of rows. */
@@ -4157,6 +4159,16 @@ export interface FailLegDto {
4157
4159
  /** When the event occurred (client clock). */
4158
4160
  occurredAt?: string;
4159
4161
  }
4162
+ /**
4163
+ * Which kind of elevator the address has (`public.elevator_type`). Distinct from `elevator`, which only says whether there is one.
4164
+ */
4165
+ export type PatchLegSnapshotDtoElevatorType = typeof PatchLegSnapshotDtoElevatorType[keyof typeof PatchLegSnapshotDtoElevatorType];
4166
+ export declare const PatchLegSnapshotDtoElevatorType: {
4167
+ readonly NONE: "NONE";
4168
+ readonly SMALL: "SMALL";
4169
+ readonly LARGE: "LARGE";
4170
+ readonly FREIGHT: "FREIGHT";
4171
+ };
4160
4172
  export interface PatchLegSnapshotDto {
4161
4173
  /**
4162
4174
  * Why the snapshot is being corrected (audited).
@@ -4192,6 +4204,8 @@ export interface PatchLegSnapshotDto {
4192
4204
  doorCode?: string;
4193
4205
  floorLevel?: number;
4194
4206
  elevator?: boolean;
4207
+ /** Which kind of elevator the address has (`public.elevator_type`). Distinct from `elevator`, which only says whether there is one. */
4208
+ elevatorType?: PatchLegSnapshotDtoElevatorType;
4195
4209
  latitude?: number;
4196
4210
  longitude?: number;
4197
4211
  /** @maxLength 2000 */
@@ -4566,7 +4580,7 @@ export interface UpdateItemDto {
4566
4580
  /** Why the unit is quarantined. Staff-only — 403 for organization callers */
4567
4581
  blockReason?: string;
4568
4582
  }
4569
- export interface PodDto {
4583
+ export interface PodDetailDto {
4570
4584
  podId: string;
4571
4585
  organizationId: string;
4572
4586
  itemId: string;
@@ -4595,10 +4609,35 @@ export interface PodDto {
4595
4609
  volumeCm3: number | null;
4596
4610
  createdAt: string;
4597
4611
  updatedAt: string;
4612
+ /**
4613
+ * The catalogue product these goods belong to, via the pod's item
4614
+ * @nullable
4615
+ */
4616
+ productId: string | null;
4617
+ /**
4618
+ * Catalogue name (null on placeholders)
4619
+ * @nullable
4620
+ */
4621
+ productName: string | null;
4622
+ /**
4623
+ * Name captured before identification, when the product has no catalogue name
4624
+ * @nullable
4625
+ */
4626
+ productPlaceholderName: string | null;
4627
+ /**
4628
+ * Primary image storage key
4629
+ * @nullable
4630
+ */
4631
+ productImageStorageKey: string | null;
4632
+ /**
4633
+ * product_status value
4634
+ * @nullable
4635
+ */
4636
+ productStatus: string | null;
4598
4637
  }
4599
4638
  export interface PaginatedPodsDto {
4600
4639
  /** The page of rows. */
4601
- items: PodDto[];
4640
+ items: PodDetailDto[];
4602
4641
  /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
4603
4642
  total: number;
4604
4643
  /** Effective max rows applied (after defaults/clamp). */
@@ -4642,6 +4681,66 @@ export interface UpdatePodDto {
4642
4681
  */
4643
4682
  labelId?: string;
4644
4683
  }
4684
+ export interface PodDto {
4685
+ podId: string;
4686
+ organizationId: string;
4687
+ itemId: string;
4688
+ /** @nullable */
4689
+ containerId: string | null;
4690
+ /** @nullable */
4691
+ warehouseOrderId: string | null;
4692
+ /** @nullable */
4693
+ salesOrderId: string | null;
4694
+ /**
4695
+ * Physical label id (barcode)
4696
+ * @nullable
4697
+ */
4698
+ labelId: string | null;
4699
+ /** pod_status value */
4700
+ status: string;
4701
+ /** Unit width (mm) */
4702
+ unitWidthMm: number;
4703
+ unitHeightMm: number;
4704
+ unitDepthMm: number;
4705
+ quantity: number;
4706
+ /**
4707
+ * Volume in cm³ (generated projection)
4708
+ * @nullable
4709
+ */
4710
+ volumeCm3: number | null;
4711
+ createdAt: string;
4712
+ updatedAt: string;
4713
+ }
4714
+ export interface MarkDamagedDto {
4715
+ /**
4716
+ * Units lost to damage.
4717
+ * @minimum 1
4718
+ */
4719
+ quantity: number;
4720
+ /**
4721
+ * Mandatory reason recorded on the movement.
4722
+ * @minLength 3
4723
+ */
4724
+ reason: string;
4725
+ }
4726
+ export interface AdjustedPodDto {
4727
+ podId: string;
4728
+ /** Units on the pod after the adjustment. */
4729
+ quantity: number;
4730
+ /** Units on the pod before the adjustment. */
4731
+ previousQuantity: number;
4732
+ status: string;
4733
+ }
4734
+ export interface MarkDamagedResultDto {
4735
+ /** The DAMAGE ledger movement. */
4736
+ movementId: string;
4737
+ /** The pod after the write-off. `quantity` is 0 when the whole pod was lost — the pod row is then retired (soft-deleted), because pod.quantity has a CHECK (> 0) and cannot hold zero. */
4738
+ pod: AdjustedPodDto;
4739
+ /** Units written off. */
4740
+ quantityDamaged: number;
4741
+ /** True when this response replays a previous run of the key. */
4742
+ idempotent: boolean;
4743
+ }
4645
4744
  export interface PositionDto {
4646
4745
  positionId: string;
4647
4746
  warehouseId: string;
@@ -4675,6 +4774,10 @@ export interface PositionDto {
4675
4774
  checkNumber: number | null;
4676
4775
  /** True when an active position_blocked row exists */
4677
4776
  isBlocked: boolean;
4777
+ /** Live containers currently sitting on this slot (occupancy) */
4778
+ containerCount: number;
4779
+ /** Live pods inside those containers — distinguishes an occupied-but-empty slot from a full one. RLS-scoped, so a caller who cannot see the goods reads 0. */
4780
+ podCount: number;
4678
4781
  createdAt: string;
4679
4782
  }
4680
4783
  export interface PaginatedPositionsDto {
@@ -5538,14 +5641,6 @@ export interface AdjustCommandDto {
5538
5641
  */
5539
5642
  reason: string;
5540
5643
  }
5541
- export interface AdjustedPodDto {
5542
- podId: string;
5543
- /** Units on the pod after the adjustment. */
5544
- quantity: number;
5545
- /** Units on the pod before the adjustment. */
5546
- previousQuantity: number;
5547
- status: string;
5548
- }
5549
5644
  export interface AdjustResultDto {
5550
5645
  /** The ADJUST ledger movement. */
5551
5646
  movementId: string;
@@ -7719,6 +7814,21 @@ export interface PaymentInstrumentDto {
7719
7814
  isDefault: boolean;
7720
7815
  createdAt: string;
7721
7816
  }
7817
+ export interface PaymentDetailsRequirementDto {
7818
+ /** True when the checkout should collect card details: the resolved payment method charges automatically and the organization has no live payment instrument. */
7819
+ detailsRequired: boolean;
7820
+ /**
7821
+ * Code of the resolved payment method — the account's own, or the tenant default it inherits when it pins none. Null when neither resolves.
7822
+ * @nullable
7823
+ */
7824
+ paymentMethodCode: string | null;
7825
+ /** Whether the resolved payment method charges the customer automatically. */
7826
+ isAutoChargeable: boolean;
7827
+ /** Whether the organization has at least one payment instrument that has not been removed. Card expiry is deliberately not considered — the provider keeps charging a card past its printed expiry once its updater has refreshed it. */
7828
+ hasPaymentInstrument: boolean;
7829
+ /** False means the organization has no billing account, which is an anomaly (one is provisioned on organization sync) rather than a normal state. Reported rather than raised: a 404 here would send the caller to setup-intent, which fails on the same missing row. */
7830
+ hasBillingAccount: boolean;
7831
+ }
7722
7832
  export interface SetupIntentResponseDto {
7723
7833
  /** Stripe SetupIntent client secret — confirm the card with Stripe.js (PaymentElement). */
7724
7834
  clientSecret: string;
@@ -9862,6 +9972,10 @@ export type CheckoutControllerAvailableServicesV1Params = {
9862
9972
  * ISO 3166-1 alpha-2; defaults to the tenant's country
9863
9973
  */
9864
9974
  countryCode?: string;
9975
+ /**
9976
+ * Staff-only: scope the result to this customer's visibility grants instead of the caller's. Ignored when it equals the caller's own organization; 403 for a non-staff caller naming any other organization.
9977
+ */
9978
+ organizationId?: string;
9865
9979
  };
9866
9980
  export type CheckoutControllerAvailableSlotsV1Params = {
9867
9981
  /**
@@ -9880,6 +9994,10 @@ export type CheckoutControllerAvailableSlotsV1Params = {
9880
9994
  * 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.
9881
9995
  */
9882
9996
  serviceZoneId?: string;
9997
+ /**
9998
+ * Staff-only: scope the result to this customer's visibility grants instead of the caller's. Ignored when it equals the caller's own organization; 403 for a non-staff caller naming any other organization.
9999
+ */
10000
+ organizationId?: string;
9883
10001
  };
9884
10002
  export type TransportServicesControllerListV1Params = {
9885
10003
  /**
@@ -10237,9 +10355,9 @@ export type PodsControllerGetPickStateV1Params = {
10237
10355
  };
10238
10356
  export type PositionsControllerListV1Params = {
10239
10357
  /**
10240
- * Max rows to return (1–100).
10358
+ * Max rows to return (1–500).
10241
10359
  * @minimum 1
10242
- * @maximum 100
10360
+ * @maximum 500
10243
10361
  */
10244
10362
  limit?: number;
10245
10363
  /**
@@ -10262,9 +10380,9 @@ export type PositionsControllerListV1Params = {
10262
10380
  };
10263
10381
  export type ContainersControllerListV1Params = {
10264
10382
  /**
10265
- * Max rows to return (1–100).
10383
+ * Max rows to return (1–500).
10266
10384
  * @minimum 1
10267
- * @maximum 100
10385
+ * @maximum 500
10268
10386
  */
10269
10387
  limit?: number;
10270
10388
  /**
@@ -10283,6 +10401,7 @@ export type ContainersControllerListV1Params = {
10283
10401
  /**
10284
10402
  * Exact per-tenant label-number lookup.
10285
10403
  * @minimum 1
10404
+ * @maximum 9007199254740991
10286
10405
  */
10287
10406
  labelNumber?: number;
10288
10407
  };