@vindentech/api-client 0.3.0-next.41 → 0.3.0-next.43

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 (38) hide show
  1. package/dist/generated/_all.d.ts +3 -0
  2. package/dist/generated/_all.d.ts.map +1 -1
  3. package/dist/generated/_all.js +3 -0
  4. package/dist/generated/_all.js.map +1 -1
  5. package/dist/generated/_permissions.d.ts +37 -1
  6. package/dist/generated/_permissions.d.ts.map +1 -1
  7. package/dist/generated/_permissions.js +9 -0
  8. package/dist/generated/_permissions.js.map +1 -1
  9. package/dist/generated/checkout/checkout.d.ts +5 -5
  10. package/dist/generated/checkout/checkout.d.ts.map +1 -1
  11. package/dist/generated/employee-assignments/employee-assignments.d.ts +26 -1
  12. package/dist/generated/employee-assignments/employee-assignments.d.ts.map +1 -1
  13. package/dist/generated/employee-assignments/employee-assignments.js +9 -0
  14. package/dist/generated/employee-assignments/employee-assignments.js.map +1 -1
  15. package/dist/generated/index.schemas.d.ts +396 -53
  16. package/dist/generated/index.schemas.d.ts.map +1 -1
  17. package/dist/generated/index.schemas.js +43 -0
  18. package/dist/generated/index.schemas.js.map +1 -1
  19. package/dist/generated/organization-contracts/organization-contracts.d.ts +59 -0
  20. package/dist/generated/organization-contracts/organization-contracts.d.ts.map +1 -0
  21. package/dist/generated/organization-contracts/organization-contracts.js +22 -0
  22. package/dist/generated/organization-contracts/organization-contracts.js.map +1 -0
  23. package/dist/generated/price-suggestion/price-suggestion.d.ts +23 -0
  24. package/dist/generated/price-suggestion/price-suggestion.d.ts.map +1 -0
  25. package/dist/generated/price-suggestion/price-suggestion.js +19 -0
  26. package/dist/generated/price-suggestion/price-suggestion.js.map +1 -0
  27. package/dist/generated/products/products.d.ts +6 -2
  28. package/dist/generated/products/products.d.ts.map +1 -1
  29. package/dist/generated/products/products.js.map +1 -1
  30. package/dist/generated/transport-options/transport-options.d.ts +72 -0
  31. package/dist/generated/transport-options/transport-options.d.ts.map +1 -0
  32. package/dist/generated/transport-options/transport-options.js +52 -0
  33. package/dist/generated/transport-options/transport-options.js.map +1 -0
  34. package/dist/generated/warehouse-orders/warehouse-orders.d.ts +15 -1
  35. package/dist/generated/warehouse-orders/warehouse-orders.d.ts.map +1 -1
  36. package/dist/generated/warehouse-orders/warehouse-orders.js +12 -0
  37. package/dist/generated/warehouse-orders/warehouse-orders.js.map +1 -1
  38. package/package.json +1 -1
@@ -503,7 +503,7 @@ export interface RescheduleOrderDto {
503
503
  preferredDate?: string;
504
504
  }
505
505
  export interface EditOrderDto {
506
- /** Which leg (cart_component_key, e.g. move:pickup / move:delivery / material:delivery) the recipient/address edit below targets. Omit to target the primary (lowest-sequence) leg. */
506
+ /** Which leg (cart_component_key, e.g. move:pickup / move:delivery / material:delivery) the recipient/address edit below targets. Omit to target the primary (lowest-sequence) leg. Has no effect unless recipient or address is also present. */
507
507
  componentKey?: string;
508
508
  recipient?: EditOrderRecipientDto;
509
509
  address?: EditOrderAddressDto;
@@ -1278,6 +1278,37 @@ export declare const UpdateMemberDtoRole: {
1278
1278
  export interface UpdateMemberDto {
1279
1279
  role?: UpdateMemberDtoRole;
1280
1280
  }
1281
+ export interface OrganizationContractDto {
1282
+ organizationContractId: string;
1283
+ tenantId: string;
1284
+ organizationId: string;
1285
+ /** @nullable */
1286
+ bindingType: string | null;
1287
+ /** @nullable */
1288
+ bindingPlanId: string | null;
1289
+ /** @nullable */
1290
+ bindingVolumeCm3: number | null;
1291
+ /** @nullable */
1292
+ volumeCm3: number | null;
1293
+ /** @nullable */
1294
+ billableVolumeCm3: number | null;
1295
+ /** @nullable */
1296
+ currentPeriodStart: string | null;
1297
+ /** @nullable */
1298
+ currentPeriodEnd: string | null;
1299
+ /** @nullable */
1300
+ bindingPeriodEnd: string | null;
1301
+ /** @nullable */
1302
+ insurancePlan: string | null;
1303
+ /** @nullable */
1304
+ signedAt: string | null;
1305
+ createdAt: string;
1306
+ updatedAt: string;
1307
+ }
1308
+ export interface UpdateOrganizationContractBindingDto {
1309
+ /** Target billing.binding_plan id. */
1310
+ bindingPlanId: string;
1311
+ }
1281
1312
  export type OrganizationSettingDtoServiceType = typeof OrganizationSettingDtoServiceType[keyof typeof OrganizationSettingDtoServiceType];
1282
1313
  export declare const OrganizationSettingDtoServiceType: {
1283
1314
  readonly STORAGE: "STORAGE";
@@ -2852,38 +2883,109 @@ export interface PlaceOrderResultDto {
2852
2883
  orderNumber: number;
2853
2884
  salesOrders: PlacedSalesOrderDto[];
2854
2885
  }
2855
- export interface CheckoutTransportServiceDto {
2886
+ export interface MoneyDto {
2887
+ amount: string;
2888
+ currencyCode: string;
2889
+ }
2890
+ /**
2891
+ * The sales_order.type this service fulfils — how a client picks a service for a booking type
2892
+ */
2893
+ export type AvailableServiceDtoSalesOrderType = typeof AvailableServiceDtoSalesOrderType[keyof typeof AvailableServiceDtoSalesOrderType];
2894
+ export declare const AvailableServiceDtoSalesOrderType: {
2895
+ readonly PICKUP: "PICKUP";
2896
+ readonly DELIVERY: "DELIVERY";
2897
+ readonly MOVE: "MOVE";
2898
+ readonly DROP_OFF: "DROP_OFF";
2899
+ readonly TRANSFER: "TRANSFER";
2900
+ readonly PICKING: "PICKING";
2901
+ readonly MERCHANDISE_SALE: "MERCHANDISE_SALE";
2902
+ };
2903
+ /**
2904
+ * Lowest applicable price; null when none published
2905
+ * @nullable
2906
+ */
2907
+ export type AvailableServiceDtoFromPrice = MoneyDto | null;
2908
+ export interface AvailableServiceDto {
2856
2909
  transportServiceId: string;
2910
+ code: string;
2857
2911
  name: string;
2858
- /** PICKUP | DELIVERY | MOVE | DROP_OFF | TRANSFER | PICKING | MERCHANDISE_SALE */
2859
- salesOrderType: string;
2912
+ /** The sales_order.type this service fulfils — how a client picks a service for a booking type */
2913
+ salesOrderType: AvailableServiceDtoSalesOrderType;
2860
2914
  /** DELIVERY_TIMESLOT | DISPATCH_SLOT | BOOKED */
2861
2915
  fulfilmentMode: string;
2862
- /** The zone that matched the queried zip code */
2863
- serviceZoneId: string;
2916
+ /** The zone that matched the address */
2917
+ resolvedServiceZoneId: string;
2918
+ minLeadTimeHours: number;
2919
+ /**
2920
+ * Lowest applicable price; null when none published
2921
+ * @nullable
2922
+ */
2923
+ fromPrice: AvailableServiceDtoFromPrice;
2924
+ /** Whether any future capacity day/slot exists for the service+zone */
2925
+ hasSlots: boolean;
2864
2926
  }
2865
- export interface TransportSlotDto {
2866
- slotId: string;
2867
- slotDate: string;
2868
- windowStart: string;
2869
- windowEnd: string;
2927
+ export interface SlotPriceDto {
2870
2928
  /** @nullable */
2871
- orderCutoffAt: string | null;
2929
+ perM3ExVat?: string | null;
2872
2930
  /** @nullable */
2873
- priceExVat: string | null;
2931
+ perM3IncVat?: string | null;
2874
2932
  /** @nullable */
2875
- priceIncRut: string | null;
2933
+ perM3IncRut?: string | null;
2934
+ /** @nullable */
2935
+ perHourExVat?: string | null;
2936
+ /** @nullable */
2937
+ baseFeeExVat?: string | null;
2876
2938
  /** @nullable */
2877
2939
  vatRate: string | null;
2878
2940
  /** @nullable */
2879
- expressSurchargeExVat: string | null;
2941
+ currencyCode: string | null;
2942
+ }
2943
+ export interface AvailableSlotDto {
2944
+ transportSlotId: string;
2945
+ transportCapacityDayId: string;
2946
+ slotStartTime: string;
2947
+ slotEndTime: string;
2948
+ /** @nullable */
2949
+ orderCutoffAt: string | null;
2880
2950
  /**
2881
- * Orders still bookable in this slot; null = unlimited. Computed live from confirmed and unexpired held reservations, so it's a point-in-time figure, not a hold — a booking or reschedule re-checks capacity when it runs, not against a previously-read value.
2951
+ * Orders still bookable; null = unlimited
2882
2952
  * @nullable
2883
2953
  */
2884
- remainingOrders: number | null;
2885
- /** ACTIVE | CLOSED */
2886
- status: string;
2954
+ availableOrders: number | null;
2955
+ /**
2956
+ * null = unlimited
2957
+ * @nullable
2958
+ */
2959
+ availableVolumeCm3?: number | null;
2960
+ /**
2961
+ * null = unlimited
2962
+ * @nullable
2963
+ */
2964
+ availableWeightG?: number | null;
2965
+ price: SlotPriceDto;
2966
+ }
2967
+ /**
2968
+ * { amount, currencyCode }
2969
+ * @nullable
2970
+ */
2971
+ export type AvailableDayDtoLowestPrice = MoneyDto | null;
2972
+ export interface AvailableDayDto {
2973
+ slotDate: string;
2974
+ /** 0=Mon..6=Sun */
2975
+ weekday: number;
2976
+ isHoliday: boolean;
2977
+ /**
2978
+ * { amount, currencyCode }
2979
+ * @nullable
2980
+ */
2981
+ lowestPrice?: AvailableDayDtoLowestPrice;
2982
+ /** Count of qualifying slots for the day */
2983
+ availableSlots: number;
2984
+ /** Empty for daily-cap-only services */
2985
+ slots: AvailableSlotDto[];
2986
+ }
2987
+ export interface AvailableSlotsResponseDto {
2988
+ days: AvailableDayDto[];
2887
2989
  }
2888
2990
  export type TransportServiceDtoSalesOrderType = typeof TransportServiceDtoSalesOrderType[keyof typeof TransportServiceDtoSalesOrderType];
2889
2991
  export declare const TransportServiceDtoSalesOrderType: {
@@ -3259,7 +3361,7 @@ export interface PaginatedTransportServicePricesDto {
3259
3361
  offset: number;
3260
3362
  }
3261
3363
  /**
3262
- * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates — but no current customer-facing endpoint does (GET /v1/checkout/available-services only accepts postalCode). In practice today, only postal-code-mapped zones are ever matched at checkout; render this boundary as reference/visualization only, not as a live serviceability check (BE-1797).
3364
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates. GET /v1/checkout/available-services accepts latitude+longitude (XOR with postalCode) and passes them through, so this is live at checkout, not merely reference/visualization — a zone with no mapped postal codes and only a boundary is reachable via coordinates.
3263
3365
  * @nullable
3264
3366
  */
3265
3367
  export type ServiceZoneDtoBoundary = {
@@ -3278,7 +3380,7 @@ export interface ServiceZoneDto {
3278
3380
  /** ISO-3166-1 alpha-2 country code */
3279
3381
  countryCode: string;
3280
3382
  /**
3281
- * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates — but no current customer-facing endpoint does (GET /v1/checkout/available-services only accepts postalCode). In practice today, only postal-code-mapped zones are ever matched at checkout; render this boundary as reference/visualization only, not as a live serviceability check (BE-1797).
3383
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates. GET /v1/checkout/available-services accepts latitude+longitude (XOR with postalCode) and passes them through, so this is live at checkout, not merely reference/visualization — a zone with no mapped postal codes and only a boundary is reachable via coordinates.
3282
3384
  * @nullable
3283
3385
  */
3284
3386
  boundary: ServiceZoneDtoBoundary;
@@ -3310,7 +3412,7 @@ export interface ServiceZonePostalCodeDto {
3310
3412
  postalCode: string;
3311
3413
  }
3312
3414
  /**
3313
- * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates — but no current customer-facing endpoint does (GET /v1/checkout/available-services only accepts postalCode). In practice today, only postal-code-mapped zones are ever matched at checkout; render this boundary as reference/visualization only, not as a live serviceability check (BE-1797).
3415
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates. GET /v1/checkout/available-services accepts latitude+longitude (XOR with postalCode) and passes them through, so this is live at checkout, not merely reference/visualization — a zone with no mapped postal codes and only a boundary is reachable via coordinates.
3314
3416
  * @nullable
3315
3417
  */
3316
3418
  export type ServiceZoneDetailDtoBoundary = {
@@ -3329,7 +3431,7 @@ export interface ServiceZoneDetailDto {
3329
3431
  /** ISO-3166-1 alpha-2 country code */
3330
3432
  countryCode: string;
3331
3433
  /**
3332
- * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates — but no current customer-facing endpoint does (GET /v1/checkout/available-services only accepts postalCode). In practice today, only postal-code-mapped zones are ever matched at checkout; render this boundary as reference/visualization only, not as a live serviceability check (BE-1797).
3434
+ * GeoJSON Polygon/MultiPolygon, re-serialised from geography. NULL = zip-only zone. Stored and validated, and used by resolve_service_zone() as a polygon-containment match (after exact postal-code match, before matchPriority tie-break) whenever a caller supplies coordinates. GET /v1/checkout/available-services accepts latitude+longitude (XOR with postalCode) and passes them through, so this is live at checkout, not merely reference/visualization — a zone with no mapped postal codes and only a boundary is reachable via coordinates.
3333
3435
  * @nullable
3334
3436
  */
3335
3437
  boundary: ServiceZoneDetailDtoBoundary;
@@ -3353,7 +3455,7 @@ export interface ServiceZonePostalCodeInputDto {
3353
3455
  countryCode?: string;
3354
3456
  }
3355
3457
  /**
3356
- * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Not currently reachable as a live matching input from any checkout endpoint — see ServiceZoneDto.boundary (BE-1797).
3458
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Live matching input: GET /v1/checkout/available-services resolves the zone from caller-supplied latitude+longitude via resolve_service_zone()'s polygon-containment branch — see ServiceZoneDto.boundary.
3357
3459
  * @nullable
3358
3460
  */
3359
3461
  export type CreateServiceZoneDtoBoundary = {
@@ -3368,7 +3470,7 @@ export interface CreateServiceZoneDto {
3368
3470
  /** ISO-3166-1 alpha-2 country code */
3369
3471
  countryCode: string;
3370
3472
  /**
3371
- * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Not currently reachable as a live matching input from any checkout endpoint — see ServiceZoneDto.boundary (BE-1797).
3473
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Live matching input: GET /v1/checkout/available-services resolves the zone from caller-supplied latitude+longitude via resolve_service_zone()'s polygon-containment branch — see ServiceZoneDto.boundary.
3372
3474
  * @nullable
3373
3475
  */
3374
3476
  boundary?: CreateServiceZoneDtoBoundary;
@@ -3380,7 +3482,7 @@ export interface CreateServiceZoneDto {
3380
3482
  postalCodes?: ServiceZonePostalCodeInputDto[];
3381
3483
  }
3382
3484
  /**
3383
- * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Not currently reachable as a live matching input from any checkout endpoint — see ServiceZoneDto.boundary (BE-1797).
3485
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Live matching input: GET /v1/checkout/available-services resolves the zone from caller-supplied latitude+longitude via resolve_service_zone()'s polygon-containment branch — see ServiceZoneDto.boundary.
3384
3486
  * @nullable
3385
3487
  */
3386
3488
  export type UpdateServiceZoneDtoBoundary = {
@@ -3394,7 +3496,7 @@ export interface UpdateServiceZoneDto {
3394
3496
  /** ISO-3166-1 alpha-2 country code */
3395
3497
  countryCode?: string;
3396
3498
  /**
3397
- * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Not currently reachable as a live matching input from any checkout endpoint — see ServiceZoneDto.boundary (BE-1797).
3499
+ * GeoJSON Polygon/MultiPolygon (RFC-7946). NULL = zip-only zone. Live matching input: GET /v1/checkout/available-services resolves the zone from caller-supplied latitude+longitude via resolve_service_zone()'s polygon-containment branch — see ServiceZoneDto.boundary.
3398
3500
  * @nullable
3399
3501
  */
3400
3502
  boundary?: UpdateServiceZoneDtoBoundary;
@@ -3908,6 +4010,39 @@ export interface UpdateCapacityOverrideDto {
3908
4010
  effectiveUntil?: string;
3909
4011
  isActive?: boolean;
3910
4012
  }
4013
+ /**
4014
+ * @nullable
4015
+ */
4016
+ export type PriceSuggestionDtoTransportSlotId = {
4017
+ [key: string]: unknown;
4018
+ } | null;
4019
+ /**
4020
+ * @nullable
4021
+ */
4022
+ export type PriceSuggestionDtoTransportCapacityDayId = {
4023
+ [key: string]: unknown;
4024
+ } | null;
4025
+ export type PriceSuggestionDtoRationale = typeof PriceSuggestionDtoRationale[keyof typeof PriceSuggestionDtoRationale];
4026
+ export declare const PriceSuggestionDtoRationale: {
4027
+ readonly LOW_REMAINING_CAPACITY: "LOW_REMAINING_CAPACITY";
4028
+ readonly OFF_PEAK: "OFF_PEAK";
4029
+ readonly BASELINE: "BASELINE";
4030
+ };
4031
+ export interface PriceSuggestionDto {
4032
+ transportServiceId: string;
4033
+ serviceZoneId: string;
4034
+ /** @nullable */
4035
+ transportSlotId?: PriceSuggestionDtoTransportSlotId;
4036
+ /** @nullable */
4037
+ transportCapacityDayId?: PriceSuggestionDtoTransportCapacityDayId;
4038
+ /** The target's current base price */
4039
+ basePrice: MoneyDto;
4040
+ /** Non-binding recommended price */
4041
+ suggestedPrice: MoneyDto;
4042
+ /** 0..1 used/cap; 0 when uncapped */
4043
+ utilisation: number;
4044
+ rationale: PriceSuggestionDtoRationale;
4045
+ }
3911
4046
  export interface RouteDto {
3912
4047
  routeId: string;
3913
4048
  warehouseId: string;
@@ -4120,8 +4255,18 @@ export interface ArriveStopDto {
4120
4255
  export interface CompleteStopDto {
4121
4256
  /** A file_asset (kind SIGNATURE/POD) linked to the leg as proof_of_delivery. */
4122
4257
  signatureFileId?: string;
4258
+ /**
4259
+ * S3 storageKey of a pre-uploaded signature image (files upload-url flow, kind 'signature'), not yet registered as a file_asset. The command registers it (kind SIGNATURE) and links it — an alternative to signatureFileId. Mutually exclusive with signatureFileId.
4260
+ * @maxLength 1024
4261
+ */
4262
+ signatureStorageKey?: string;
4123
4263
  /** Additional PoD photo file_asset ids. */
4124
4264
  photoFileIds?: string[];
4265
+ /**
4266
+ * S3 storageKeys of pre-uploaded PoD photos (files upload-url flow, kind 'proof_of_delivery'), not yet registered as file_assets. The command registers each (kind POD) and links it — combinable with photoFileIds (not mutually exclusive).
4267
+ * @maxItems 50
4268
+ */
4269
+ photoStorageKeys?: string[];
4125
4270
  /** @maxLength 255 */
4126
4271
  recipientName?: string;
4127
4272
  /** @maxLength 1000 */
@@ -4285,6 +4430,8 @@ export interface TransportLegDto {
4285
4430
  salesOrderType: string;
4286
4431
  /** Per-job operational number (tenant sequence), denormalised from the parent sales_order (BE-1846). */
4287
4432
  jobNumber: number;
4433
+ /** The checkout/dependency bundle this leg's sales_order belongs to, denormalised from sales_order.order_group_id (BE-1804). Shared across sales_orders when a MERCHANDISE_SALE job split off the booking's own — group legs by this field, not salesOrderId, to see every leg in a booking. */
4434
+ orderGroupId: string;
4288
4435
  /** transport_leg_type: PICKUP|DELIVERY|DISPATCH|RETURN|SERVICE */
4289
4436
  legType: string;
4290
4437
  legSequence: number;
@@ -4415,8 +4562,10 @@ export interface CompleteLegDto {
4415
4562
  reason?: string;
4416
4563
  /** When the event occurred (client clock). */
4417
4564
  occurredAt?: string;
4418
- /** A file_asset id linked via entity_file. */
4565
+ /** An existing file_asset id linked to the leg as proof_of_delivery via entity_file. */
4419
4566
  proofOfDeliveryFileId?: string;
4567
+ /** An existing file_asset id linked to the leg as signature via entity_file. */
4568
+ signatureFileId?: string;
4420
4569
  }
4421
4570
  /**
4422
4571
  * Structured failure-reason code. Drives customer-fault billing attribution — omit or use an operational code to never bill.
@@ -5678,6 +5827,15 @@ export interface UpdateWarehouseOrderStatusDto {
5678
5827
  /** @maxLength 500 */
5679
5828
  comment?: string;
5680
5829
  }
5830
+ export interface CompleteReceiveDto {
5831
+ /**
5832
+ * Labor time for this receive → warehouse_order.handle_time_minutes.
5833
+ * @minimum 1
5834
+ */
5835
+ minutes: number;
5836
+ /** Complete even though some product lines are not yet HANDLED. */
5837
+ allowMissingLines?: boolean;
5838
+ }
5681
5839
  export interface AddWarehouseOrderProductDto {
5682
5840
  productId: string;
5683
5841
  /** @minimum 1 */
@@ -8909,12 +9067,12 @@ export interface EmployeeAssignmentDto {
8909
9067
  /** @nullable */
8910
9068
  endedAt: string | null;
8911
9069
  /**
8912
- * Display name of the assigned staff member, from their `user_profile`. Null when the user has no profile row yet (it is created by their first `/v1/me` call) or has not set a name.
9070
+ * Display name of the assigned staff member, from their `user_profile`. Null until they activate their account (their first `/v1/me` call sets it from their token) or if they have not set a name.
8913
9071
  * @nullable
8914
9072
  */
8915
9073
  displayName: string | null;
8916
9074
  /**
8917
- * Email of the assigned staff member, from their `user_profile`. Null when the user has no profile row yet (it is created by their first `/v1/me` call).
9075
+ * Email of the assigned staff member, from their `user_profile`. Populated at hire time — from an existing profile, or set immediately for a new email-invited hire. Null only for a row created outside this endpoint (seeded or imported) whose subject has never called `/v1/me`.
8918
9076
  * @nullable
8919
9077
  */
8920
9078
  email: string | null;
@@ -8935,8 +9093,10 @@ export declare const CreateEmployeeAssignmentDtoRole: {
8935
9093
  readonly 'carrier-driver': "carrier-driver";
8936
9094
  };
8937
9095
  export interface CreateEmployeeAssignmentDto {
8938
- /** Keycloak subject of the staff member to hire. They must already exist as a user (their `user_profile` row is created by their first `/v1/me` call). */
8939
- userSub: string;
9096
+ /** Keycloak subject of an EXISTING user to hire. Mutually exclusive with `email`. */
9097
+ userSub?: string;
9098
+ /** Email address to hire by. An existing realm user with this address is bound; otherwise a disabled-until-activated user is created and emailed an invite link. Mutually exclusive with `userSub`. */
9099
+ email?: string;
8940
9100
  kind: CreateEmployeeAssignmentDtoKind;
8941
9101
  role: CreateEmployeeAssignmentDtoRole;
8942
9102
  /** Required for `kind=warehouse`, rejected for any other kind. */
@@ -8985,12 +9145,12 @@ export interface EmployeeAssignmentSyncResultDto {
8985
9145
  /** @nullable */
8986
9146
  endedAt: string | null;
8987
9147
  /**
8988
- * Display name of the assigned staff member, from their `user_profile`. Null when the user has no profile row yet (it is created by their first `/v1/me` call) or has not set a name.
9148
+ * Display name of the assigned staff member, from their `user_profile`. Null until they activate their account (their first `/v1/me` call sets it from their token) or if they have not set a name.
8989
9149
  * @nullable
8990
9150
  */
8991
9151
  displayName: string | null;
8992
9152
  /**
8993
- * Email of the assigned staff member, from their `user_profile`. Null when the user has no profile row yet (it is created by their first `/v1/me` call).
9153
+ * Email of the assigned staff member, from their `user_profile`. Populated at hire time — from an existing profile, or set immediately for a new email-invited hire. Null only for a row created outside this endpoint (seeded or imported) whose subject has never called `/v1/me`.
8994
9154
  * @nullable
8995
9155
  */
8996
9156
  email: string | null;
@@ -9191,12 +9351,6 @@ export declare const CreateNotificationRuleDtoCategory: {
9191
9351
  readonly security: "security";
9192
9352
  readonly system: "system";
9193
9353
  };
9194
- /**
9195
- * NULL falls back to the platform system template for (event, channel, locale).
9196
- */
9197
- export type CreateNotificationRuleDtoNotificationTemplateId = {
9198
- [key: string]: unknown;
9199
- };
9200
9354
  export interface CreateNotificationRuleDto {
9201
9355
  /** Must exist in the event catalog and not be retired. */
9202
9356
  eventKey: string;
@@ -9205,8 +9359,11 @@ export interface CreateNotificationRuleDto {
9205
9359
  channel: CreateNotificationRuleDtoChannel;
9206
9360
  /** Defaults to the event's category. Only operational ↔ transactional relabelling is permitted (02 §3). */
9207
9361
  category?: CreateNotificationRuleDtoCategory;
9208
- /** NULL falls back to the platform system template for (event, channel, locale). */
9209
- notificationTemplateId?: CreateNotificationRuleDtoNotificationTemplateId;
9362
+ /**
9363
+ * NULL falls back to the platform system template for (event, channel, locale).
9364
+ * @nullable
9365
+ */
9366
+ notificationTemplateId?: string | null;
9210
9367
  /** Validated against the pinned version's contractPaths at save (02 §5). */
9211
9368
  recipients: RecipientSpecDto[];
9212
9369
  }
@@ -9230,7 +9387,7 @@ export interface UpdateNotificationRuleDto {
9230
9387
  export interface EnableRuleDto {
9231
9388
  /** The estimate shown in the confirmation panel (from `GET …/recipient-estimate`). */
9232
9389
  confirmedRecipientEstimate: number;
9233
- /** Required above the typed-confirmation threshold: the tenant slug, typed by the admin. */
9390
+ /** Required above the typed-confirmation threshold: the tenant slug, typed by the admin. Validated server-side against this tenant's slug — the same string `GET /v1/config` returns as `tenantSlug` — so the client can pre-validate before submitting. */
9234
9391
  typedConfirmation?: string;
9235
9392
  }
9236
9393
  export type RecipientSpecEstimateDtoKind = typeof RecipientSpecEstimateDtoKind[keyof typeof RecipientSpecEstimateDtoKind];
@@ -10893,6 +11050,92 @@ export interface SetTenantMaintenanceModeDto {
10893
11050
  /** Why this client is moving into or out of maintenance. Recorded in the admin action. */
10894
11051
  reason: string;
10895
11052
  }
11053
+ export type TransportOptionDtoMethodSupportedRecipientTypesItem = typeof TransportOptionDtoMethodSupportedRecipientTypesItem[keyof typeof TransportOptionDtoMethodSupportedRecipientTypesItem];
11054
+ export declare const TransportOptionDtoMethodSupportedRecipientTypesItem: {
11055
+ readonly business: "business";
11056
+ readonly personal: "personal";
11057
+ };
11058
+ export type TransportOptionDtoMethodSupportedShipmentUnitTypesItem = typeof TransportOptionDtoMethodSupportedShipmentUnitTypesItem[keyof typeof TransportOptionDtoMethodSupportedShipmentUnitTypesItem];
11059
+ export declare const TransportOptionDtoMethodSupportedShipmentUnitTypesItem: {
11060
+ readonly EPAL: "EPAL";
11061
+ readonly HALF_PALLET: "HALF_PALLET";
11062
+ readonly QUARTER_PALLET: "QUARTER_PALLET";
11063
+ readonly PARCEL: "PARCEL";
11064
+ readonly SACK: "SACK";
11065
+ readonly LOOSE_ITEM: "LOOSE_ITEM";
11066
+ readonly OTHER: "OTHER";
11067
+ };
11068
+ export interface TransportOptionDto {
11069
+ organizationTransportOptionId: string;
11070
+ organizationId: string;
11071
+ /** @nullable */
11072
+ tenantCarrierMethodId: string | null;
11073
+ active: boolean;
11074
+ /**
11075
+ * Carrier account/agreement reference
11076
+ * @nullable
11077
+ */
11078
+ agreementId: string | null;
11079
+ /** @nullable */
11080
+ bookingSoftware: string | null;
11081
+ createdAt: string;
11082
+ updatedAt: string;
11083
+ /** @nullable */
11084
+ methodName: string | null;
11085
+ /**
11086
+ * tenant_carrier_method.code
11087
+ * @nullable
11088
+ */
11089
+ methodCode: string | null;
11090
+ /**
11091
+ * The carrier-API product code
11092
+ * @nullable
11093
+ */
11094
+ methodProductCode: string | null;
11095
+ /** @nullable */
11096
+ methodMaxWeightG: number | null;
11097
+ /** @nullable */
11098
+ methodMaxLengthMm: number | null;
11099
+ /**
11100
+ * bigint
11101
+ * @nullable
11102
+ */
11103
+ methodMaxVolumeCm3: number | null;
11104
+ /** @nullable */
11105
+ methodSupportedRecipientTypes: TransportOptionDtoMethodSupportedRecipientTypesItem[] | null;
11106
+ /** @nullable */
11107
+ methodSupportedShipmentUnitTypes: TransportOptionDtoMethodSupportedShipmentUnitTypesItem[] | null;
11108
+ /** @nullable */
11109
+ methodIsActive: boolean | null;
11110
+ /**
11111
+ * tenant_carrier.name
11112
+ * @nullable
11113
+ */
11114
+ carrierName: string | null;
11115
+ }
11116
+ export interface PaginatedTransportOptionsDto {
11117
+ /** The page of rows. */
11118
+ items: TransportOptionDto[];
11119
+ /** Exact count of all rows matching the filter, pre-pagination (RLS-scoped). */
11120
+ total: number;
11121
+ /** Effective max rows applied (after defaults/clamp). */
11122
+ limit: number;
11123
+ /** Effective rows skipped applied. */
11124
+ offset: number;
11125
+ }
11126
+ export interface CreateTransportOptionDto {
11127
+ /** The organization the grant is for */
11128
+ organizationId: string;
11129
+ tenantCarrierMethodId: string;
11130
+ agreementId?: string;
11131
+ bookingSoftware?: string;
11132
+ active?: boolean;
11133
+ }
11134
+ export interface UpdateTransportOptionDto {
11135
+ agreementId?: string;
11136
+ bookingSoftware?: string;
11137
+ active?: boolean;
11138
+ }
10896
11139
  export type OrdersControllerListV1Params = {
10897
11140
  /**
10898
11141
  * Max rows to return (1–100).
@@ -11152,35 +11395,76 @@ export declare const ServicePointsControllerListV1Type: {
11152
11395
  };
11153
11396
  export type CheckoutControllerAvailableServicesV1Params = {
11154
11397
  /**
11155
- * Recipient zip code — resolves the service zone
11398
+ * ISO 3166-1 alpha-2 country code
11156
11399
  */
11157
- zipCode: string;
11400
+ countryCode: string;
11158
11401
  /**
11159
- * ISO 3166-1 alpha-2; defaults to the tenant's country
11402
+ * Recipient postal code — resolves the service zone
11160
11403
  */
11161
- countryCode?: string;
11404
+ postalCode?: string;
11405
+ /**
11406
+ * Latitude (with longitude) — resolves the zone
11407
+ */
11408
+ latitude?: number;
11409
+ /**
11410
+ * Longitude (with latitude) — resolves the zone
11411
+ */
11412
+ longitude?: number;
11413
+ /**
11414
+ * Filter to services offered to this customer type
11415
+ */
11416
+ customerType?: CheckoutControllerAvailableServicesV1CustomerType;
11417
+ /**
11418
+ * bigint — cart volume (reserved for capacity filtering)
11419
+ */
11420
+ volumeCm3?: string;
11421
+ /**
11422
+ * bigint — cart weight (reserved for capacity filtering)
11423
+ */
11424
+ weightG?: string;
11425
+ /**
11426
+ * Origin warehouse (cross-region lane)
11427
+ */
11428
+ originWarehouseId?: string;
11162
11429
  /**
11163
11430
  * 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.
11164
11431
  */
11165
11432
  organizationId?: string;
11166
11433
  };
11434
+ export type CheckoutControllerAvailableServicesV1CustomerType = typeof CheckoutControllerAvailableServicesV1CustomerType[keyof typeof CheckoutControllerAvailableServicesV1CustomerType];
11435
+ export declare const CheckoutControllerAvailableServicesV1CustomerType: {
11436
+ readonly business: "business";
11437
+ readonly personal: "personal";
11438
+ };
11167
11439
  export type CheckoutControllerAvailableSlotsV1Params = {
11168
11440
  /**
11169
11441
  * The chosen transport service
11170
11442
  */
11171
11443
  transportServiceId: string;
11172
11444
  /**
11173
- * Inclusive start of the slot-date range
11445
+ * The resolved service zone (from the services call)
11174
11446
  */
11175
- from: string;
11447
+ serviceZoneId: string;
11176
11448
  /**
11177
- * Inclusive end of the slot-date range
11449
+ * Inclusive start of the date range (YYYY-MM-DD)
11178
11450
  */
11179
- to: string;
11451
+ fromDate?: string;
11180
11452
  /**
11181
- * 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.
11453
+ * Inclusive end of the date range (YYYY-MM-DD)
11182
11454
  */
11183
- serviceZoneId?: string;
11455
+ toDate?: string;
11456
+ /**
11457
+ * Orders being booked; a slot must have >= this available
11458
+ */
11459
+ quantityOrders?: number;
11460
+ /**
11461
+ * bigint — required volume; slot must have >= this available
11462
+ */
11463
+ volumeCm3?: string;
11464
+ /**
11465
+ * bigint — required weight; slot must have >= this available
11466
+ */
11467
+ weightG?: string;
11184
11468
  /**
11185
11469
  * 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.
11186
11470
  */
@@ -11347,6 +11631,38 @@ export type CapacityControllerListOverridesV1Params = {
11347
11631
  */
11348
11632
  isActive?: boolean;
11349
11633
  };
11634
+ export type PriceSuggestionControllerPriceSuggestionV1Params = {
11635
+ /**
11636
+ * The service zone the target belongs to
11637
+ */
11638
+ serviceZoneId: string;
11639
+ /**
11640
+ * Price this slot (XOR day / targetDate)
11641
+ */
11642
+ transportSlotId?: string;
11643
+ /**
11644
+ * Price this capacity day (XOR slot / targetDate)
11645
+ */
11646
+ transportCapacityDayId?: string;
11647
+ /**
11648
+ * Resolve + price the day for this date (XOR slot / day)
11649
+ */
11650
+ targetDate?: string;
11651
+ customerType?: PriceSuggestionControllerPriceSuggestionV1CustomerType;
11652
+ /**
11653
+ * bigint
11654
+ */
11655
+ volumeCm3?: string;
11656
+ /**
11657
+ * bigint
11658
+ */
11659
+ weightG?: string;
11660
+ };
11661
+ export type PriceSuggestionControllerPriceSuggestionV1CustomerType = typeof PriceSuggestionControllerPriceSuggestionV1CustomerType[keyof typeof PriceSuggestionControllerPriceSuggestionV1CustomerType];
11662
+ export declare const PriceSuggestionControllerPriceSuggestionV1CustomerType: {
11663
+ readonly business: "business";
11664
+ readonly personal: "personal";
11665
+ };
11350
11666
  export type RoutesControllerListV1Params = {
11351
11667
  /**
11352
11668
  * Max rows to return (1–100).
@@ -11393,6 +11709,10 @@ export type TransportLegsControllerListV1Params = {
11393
11709
  * Filter by the parent sales order.
11394
11710
  */
11395
11711
  salesOrderId?: string;
11712
+ /**
11713
+ * Filter by order group — the checkout/dependency bundle a sales_order belongs to (BE-1804). Groups more than one sales_order when a MERCHANDISE_SALE job split off the booking's own (e.g. a material:delivery leg re-parented onto its own job, BE-1724); lets a planning UI find every leg in a booking without an N+1 read back to sales_order.
11714
+ */
11715
+ orderGroupId?: string;
11396
11716
  status?: TransportLegsControllerListV1Status;
11397
11717
  /**
11398
11718
  * Filter by planned-window date (YYYY-MM-DD).
@@ -11720,6 +12040,7 @@ export declare const LookupsControllerListV1Kind: {
11720
12040
  readonly 'route-stop-status': "route-stop-status";
11721
12041
  readonly 'transport-leg-status': "transport-leg-status";
11722
12042
  readonly 'order-relationship-type': "order-relationship-type";
12043
+ readonly country: "country";
11723
12044
  readonly 'sales-order-type': "sales-order-type";
11724
12045
  readonly 'warehouse-order-type': "warehouse-order-type";
11725
12046
  readonly 'carrier-kind': "carrier-kind";
@@ -11728,6 +12049,7 @@ export declare const LookupsControllerListV1Kind: {
11728
12049
  readonly 'transport-leg-type': "transport-leg-type";
11729
12050
  readonly 'transport-slot-kind': "transport-slot-kind";
11730
12051
  readonly 'organization-type': "organization-type";
12052
+ readonly 'org-contact-role': "org-contact-role";
11731
12053
  };
11732
12054
  export type IntegrationsControllerGetByIdV1200 = StripeAccountDto | FortnoxAccountDto;
11733
12055
  export type BillingAccountsControllerListAccountsV1Params = {
@@ -12367,4 +12689,25 @@ export declare const ClientConfigControllerGetV1Client: {
12367
12689
  readonly customer_app: "customer_app";
12368
12690
  readonly admin_web: "admin_web";
12369
12691
  };
12692
+ export type TransportOptionsControllerListV1Params = {
12693
+ /**
12694
+ * Max rows to return (1–100).
12695
+ * @minimum 1
12696
+ * @maximum 100
12697
+ */
12698
+ limit?: number;
12699
+ /**
12700
+ * Rows to skip.
12701
+ * @minimum 0
12702
+ */
12703
+ offset?: number;
12704
+ /**
12705
+ * Staff only: view another organization's grants. Ignored for org self-service callers.
12706
+ */
12707
+ organizationId?: string;
12708
+ /**
12709
+ * Filter by active state.
12710
+ */
12711
+ active?: boolean;
12712
+ };
12370
12713
  //# sourceMappingURL=index.schemas.d.ts.map