@thorprovider/types 5.3.2 → 5.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -3689,14 +3689,11 @@ interface DropshipperCostTier {
3689
3689
  minQuantity: number | null;
3690
3690
  maxQuantity: number | null;
3691
3691
  }
3692
- /** A quantity-based sale tier (Y→V) configured by the dropshipper (read response) */
3692
+ /** A quantity-based sale tier (Y→V) derived by the backend (read response) */
3693
3693
  interface DropshipperSaleTier {
3694
- /** Markup % over cost applied to this tier (X→Y baseline). */
3695
- margin_percent: number;
3696
- /** Derived sale price: round(cost × (1 + margin_percent/100)). */
3697
- sale_amount: number;
3698
- minQuantity: number;
3699
- maxQuantity?: number | null;
3694
+ amount: number;
3695
+ minQuantity: number | null;
3696
+ maxQuantity: number | null;
3700
3697
  }
3701
3698
  /** A quantity-based sale tier in a price update payload (Y→V) */
3702
3699
  interface DropshipperPriceTier {
@@ -3740,6 +3737,7 @@ interface OnboardDropshipperResponse {
3740
3737
  interface DropshipperProductImage {
3741
3738
  id: string;
3742
3739
  url: string;
3740
+ rank: number;
3743
3741
  }
3744
3742
  /** A product attachment (file/doc) linked via the product_attachment module */
3745
3743
  interface DropshipperProductAttachment {
@@ -3766,34 +3764,67 @@ interface DropshipperProductPrivateMedia {
3766
3764
  size: number;
3767
3765
  metadata: Record<string, unknown> | null;
3768
3766
  }
3767
+ /** A selected option value on a variant */
3768
+ interface DropshipperVariantOption {
3769
+ option_id: string;
3770
+ option_title: string;
3771
+ value_id: string;
3772
+ value: string;
3773
+ }
3774
+ /** Inventory aggregates for a variant */
3775
+ interface DropshipperVariantInventory {
3776
+ stockedQuantity: number | null;
3777
+ reservedQuantity: number | null;
3778
+ availableQuantity: number | null;
3779
+ incomingQuantity: number | null;
3780
+ }
3781
+ /** Stock level at a single location */
3782
+ interface DropshipperVariantLocation {
3783
+ id: string;
3784
+ name: string;
3785
+ stockedQuantity: number;
3786
+ reservedQuantity: number;
3787
+ availableQuantity: number;
3788
+ incomingQuantity: number;
3789
+ }
3790
+ /** Cost price and tiers (X→Y) */
3791
+ interface DropshipperVariantCostPricing {
3792
+ amount: number;
3793
+ currency: string;
3794
+ source: 'custom' | 'base_price';
3795
+ tiers: DropshipperCostTier[];
3796
+ }
3797
+ /** Sale price and tiers (Y→V) */
3798
+ interface DropshipperVariantSalePricing {
3799
+ amount: number;
3800
+ currency: string;
3801
+ tiers: DropshipperSaleTier[];
3802
+ }
3803
+ /** Margin (Y) */
3804
+ interface DropshipperVariantMarginPricing {
3805
+ amount: number;
3806
+ percent: number;
3807
+ }
3808
+ /** Pricing bundle for a variant */
3809
+ interface DropshipperVariantPricing {
3810
+ cost: DropshipperVariantCostPricing;
3811
+ sale: DropshipperVariantSalePricing;
3812
+ margin: DropshipperVariantMarginPricing;
3813
+ markup_percent: number;
3814
+ }
3769
3815
  /** A product variant as seen by the dropshipper */
3770
3816
  interface DropshipperVariant {
3771
3817
  id: string;
3772
3818
  title: string;
3773
3819
  sku: string | null;
3774
- availableQuantity: number;
3820
+ options: DropshipperVariantOption[];
3775
3821
  /** Whether inventory is tracked for this variant */
3776
3822
  manageInventory: boolean;
3777
3823
  /** Whether backorders are allowed when out of stock */
3778
3824
  allowBackorder: boolean;
3779
- /** Price Y pays to X. Read-only for Y. */
3780
- cost_price: number;
3781
- cost_price_currency: string;
3782
- /** "custom" if a custom cost was set, "base_price" if fallback */
3783
- cost_price_source: 'custom' | 'base_price';
3784
- /** Quantity-based cost tiers (X→Y) from the Price List */
3785
- cost_tiers: DropshipperCostTier[];
3786
- /** Price Y charges to V. From the channel's price list. */
3787
- sale_price: number;
3788
- sale_price_currency: string;
3789
- /** Markup % over cost applied to the base sale price (0–1000). */
3790
- sale_margin_percent: number;
3791
- /** Quantity-based sale tiers (Y→V) configured by the dropshipper */
3792
- sale_tiers: DropshipperSaleTier[];
3793
- /** sale_price - cost_price (calculated by backend) */
3794
- margin: number;
3795
- /** (margin / sale_price) × 100 (calculated by backend) */
3796
- margin_percent: number;
3825
+ inventory: DropshipperVariantInventory;
3826
+ locations: DropshipperVariantLocation[];
3827
+ pricing: DropshipperVariantPricing;
3797
3828
  }
3798
3829
  /** A native Medusa product option value */
3799
3830
  interface DropshipperProductOptionValue {
@@ -3806,49 +3837,63 @@ interface DropshipperProductOption {
3806
3837
  title: string | null;
3807
3838
  values: DropshipperProductOptionValue[];
3808
3839
  }
3840
+ /** Standard (provider) physical attributes of a product */
3841
+ interface DropshipperProductStandardAttributes {
3842
+ width: number | null;
3843
+ height: number | null;
3844
+ length: number | null;
3845
+ weight: number | null;
3846
+ material: string | null;
3847
+ origin_country: string | null;
3848
+ hs_code: string | null;
3849
+ mid_code: string | null;
3850
+ }
3851
+ /** A custom attribute assigned to a product */
3852
+ interface DropshipperProductCustomAttribute {
3853
+ id: string;
3854
+ code: string;
3855
+ name: string;
3856
+ type: string;
3857
+ value: string | null;
3858
+ }
3859
+ /** Product attributes bundle */
3860
+ interface DropshipperProductAttributes {
3861
+ standard: DropshipperProductStandardAttributes;
3862
+ custom: DropshipperProductCustomAttribute[];
3863
+ }
3864
+ /** Product media bundle */
3865
+ interface DropshipperProductMedia {
3866
+ thumbnail: string | null;
3867
+ images: DropshipperProductImage[];
3868
+ private_images: DropshipperProductPrivateMedia[];
3869
+ }
3870
+ /** A channel-scoped category the product belongs to */
3871
+ interface DropshipperProductCategory {
3872
+ id: string;
3873
+ name: string;
3874
+ handle: string;
3875
+ }
3809
3876
  /** A product as seen by the dropshipper */
3810
3877
  interface DropshipperProduct {
3811
3878
  id: string;
3812
3879
  title: string;
3813
- thumbnail: string | null;
3814
- status: 'published' | 'draft' | string;
3815
- global_status?: string | null;
3816
- can_publish?: boolean;
3817
- cannot_publish_reason?: 'missing_price' | 'product_not_published' | null;
3818
- /** Default margin applied to variants that do not have an override. */
3819
- margin_percent?: number;
3820
- variants: DropshipperVariant[];
3821
- subtitle?: string | null;
3822
- description?: string | null;
3823
- handle?: string | null;
3824
- /** Physical dimensions and shipping metadata */
3825
- width?: number | null;
3826
- height?: number | null;
3827
- length?: number | null;
3828
- weight?: number | null;
3829
- material?: string | null;
3830
- origin_country?: string | null;
3831
- hs_code?: string | null;
3832
- mid_code?: string | null;
3833
- collection?: {
3880
+ subtitle: string | null;
3881
+ description: string | null;
3882
+ handle: string | null;
3883
+ status: 'published' | 'draft' | 'archived' | string;
3884
+ can_publish: boolean;
3885
+ attributes: DropshipperProductAttributes;
3886
+ media: DropshipperProductMedia;
3887
+ categories: DropshipperProductCategory[];
3888
+ collection: {
3834
3889
  id: string;
3835
3890
  title: string;
3836
- handle?: string;
3891
+ handle: string;
3837
3892
  } | null;
3838
- medusa_categories?: Array<{
3839
- id: string;
3840
- name: string;
3841
- handle?: string;
3842
- parent_category_id?: string | null;
3843
- }>;
3844
- /** Native Medusa product options (Size, Color, etc.) */
3845
- medusa_options?: DropshipperProductOption[];
3846
- /** Public gallery images from Medusa — only set when the endpoint fetches them */
3847
- images?: DropshipperProductImage[];
3893
+ options: DropshipperProductOption[];
3894
+ variants: DropshipperVariant[];
3848
3895
  /** Product attachments (PDFs, CSVs, etc.) from the product_attachment module */
3849
3896
  attachments?: DropshipperProductAttachment[];
3850
- /** Private media (images/videos for dropshipper internal use) */
3851
- private_media?: DropshipperProductPrivateMedia[];
3852
3897
  }
3853
3898
  /** Options for `GET /admin/thor/dropshipper/products` */
3854
3899
  interface GetDropshipperProductsOptions {
@@ -3933,12 +3978,17 @@ interface DropshipperOrderCustomer {
3933
3978
  interface DropshipperOrder {
3934
3979
  id: string;
3935
3980
  display_id: number;
3981
+ custom_display_id?: string | null;
3982
+ version: number;
3936
3983
  status: string;
3984
+ payment_status: string;
3937
3985
  fulfillment_status: string | null;
3938
3986
  created_at: string;
3939
3987
  customer: DropshipperOrderCustomer;
3940
3988
  currency_code: string;
3941
3989
  total: number;
3990
+ tax_total: number;
3991
+ net_revenue: number;
3942
3992
  profit: number;
3943
3993
  margin_percent: number;
3944
3994
  items_count: number;
@@ -4042,28 +4092,85 @@ interface DropshipperOrderShippingAddress {
4042
4092
  phone?: string | null;
4043
4093
  }
4044
4094
  /** A line item with cost and profit breakdown */
4095
+ interface DropshipperItemCost {
4096
+ unit_amount: number;
4097
+ total: number;
4098
+ }
4099
+ interface DropshipperItemProfit {
4100
+ amount: number;
4101
+ margin_percent: number;
4102
+ }
4103
+ interface DropshipperItemDetail {
4104
+ quantity: number;
4105
+ fulfilled_quantity: number;
4106
+ delivered_quantity: number;
4107
+ shipped_quantity: number;
4108
+ return_requested_quantity: number;
4109
+ return_received_quantity: number;
4110
+ return_dismissed_quantity: number;
4111
+ written_off_quantity: number;
4112
+ }
4113
+ interface DropshipperItemAdjustment {
4114
+ id: string;
4115
+ promotion_id: string | null;
4116
+ code: string | null;
4117
+ amount: number;
4118
+ description: string | null;
4119
+ }
4120
+ interface DropshipperItemTaxLine {
4121
+ id: string;
4122
+ code: string | null;
4123
+ rate: number;
4124
+ total: number;
4125
+ subtotal: number;
4126
+ }
4045
4127
  interface DropshipperOrderItem {
4046
4128
  id: string;
4047
4129
  title: string;
4048
- variant_title: string;
4049
- sku: string | null;
4130
+ variant_title: string | null;
4131
+ thumbnail: string | null;
4050
4132
  quantity: number;
4051
4133
  unit_price: number;
4052
- cost_price: number;
4134
+ applied_tier_min_qty: number | null;
4135
+ subtitle: string | null;
4136
+ product_id: string | null;
4137
+ product_title: string;
4138
+ variant_id: string | null;
4139
+ variant_sku: string | null;
4140
+ variant_barcode: string | null;
4141
+ variant_option_values: Record<string, string> | null;
4142
+ compare_at_unit_price: number | null;
4143
+ requires_shipping: boolean;
4144
+ is_discountable: boolean;
4145
+ is_tax_inclusive: boolean;
4146
+ detail: DropshipperItemDetail;
4147
+ adjustments: DropshipperItemAdjustment[];
4148
+ tax_lines: DropshipperItemTaxLine[];
4149
+ original_total: number;
4150
+ original_subtotal: number;
4151
+ original_tax_total: number;
4152
+ item_total: number;
4153
+ item_subtotal: number;
4154
+ item_tax_total: number;
4155
+ total: number;
4053
4156
  subtotal: number;
4054
- cost_subtotal: number;
4055
- profit: number;
4056
- thumbnail: string | null;
4057
- /** Minimum quantity of the cost tier that matched this item at order.placed.
4058
- * null when no tier matching occurred (base price was used). */
4059
- applied_tier_min_qty?: number | null;
4157
+ tax_total: number;
4158
+ discount_total: number;
4159
+ discount_tax_total: number;
4160
+ refundable_total: number;
4161
+ refundable_total_per_unit: number;
4162
+ cost: DropshipperItemCost;
4163
+ profit: DropshipperItemProfit;
4164
+ metadata: null;
4060
4165
  }
4061
4166
  /** Order totals with profit breakdown */
4062
4167
  interface DropshipperOrderTotals {
4063
4168
  subtotal: number;
4169
+ tax_total: number;
4064
4170
  shipping_total: number;
4065
4171
  discount_total: number;
4066
4172
  total: number;
4173
+ net_revenue: number;
4067
4174
  cost_total: number;
4068
4175
  profit: number;
4069
4176
  margin_percent: number;
@@ -4071,15 +4178,132 @@ interface DropshipperOrderTotals {
4071
4178
  /** Timeline event on an order */
4072
4179
  interface DropshipperOrderTimelineEvent {
4073
4180
  id: string;
4074
- event: string;
4075
- description?: string;
4076
- type?: "info" | "success" | "warning" | "error";
4181
+ code: string;
4182
+ title: string;
4183
+ description: string;
4184
+ type: "info" | "success" | "warning" | "error";
4077
4185
  timestamp: string;
4078
4186
  }
4187
+ /** Payment collection on an order */
4188
+ interface DropshipperPaymentSession {
4189
+ id: string;
4190
+ provider: string;
4191
+ status: string;
4192
+ amount: number;
4193
+ currency_code: string;
4194
+ authorized_at: string | null;
4195
+ provider_reference: string | null;
4196
+ }
4197
+ interface DropshipperPaymentCapture {
4198
+ id: string;
4199
+ amount: number;
4200
+ created_at: string;
4201
+ created_by: string | null;
4202
+ }
4203
+ interface DropshipperPaymentRefund {
4204
+ id: string;
4205
+ amount: number;
4206
+ created_at: string;
4207
+ created_by: string | null;
4208
+ }
4209
+ interface DropshipperPayment {
4210
+ id: string;
4211
+ provider: string;
4212
+ amount: number;
4213
+ currency_code: string;
4214
+ authorized_amount: number;
4215
+ captured_amount: number;
4216
+ refunded_amount: number;
4217
+ created_at: string;
4218
+ updated_at: string;
4219
+ captured_at: string | null;
4220
+ canceled_at: string | null;
4221
+ captures: DropshipperPaymentCapture[];
4222
+ refunds: DropshipperPaymentRefund[];
4223
+ }
4224
+ interface DropshipperPaymentCollection {
4225
+ id: string;
4226
+ currency_code: string;
4227
+ amount: number;
4228
+ status: string;
4229
+ payment_sessions: DropshipperPaymentSession[];
4230
+ payments: DropshipperPayment[];
4231
+ }
4232
+ /** Return on an order */
4233
+ interface DropshipperReturnItem {
4234
+ id: string;
4235
+ item_id: string;
4236
+ quantity: number;
4237
+ received_quantity: number;
4238
+ damaged_quantity: number;
4239
+ reason_id: string | null;
4240
+ note: string | null;
4241
+ metadata: unknown | null;
4242
+ }
4243
+ interface DropshipperReturn {
4244
+ id: string;
4245
+ display_id: number;
4246
+ status: string;
4247
+ order_version: number;
4248
+ refund_amount: number;
4249
+ no_notification: boolean;
4250
+ requested_at: string | null;
4251
+ received_at: string | null;
4252
+ canceled_at: string | null;
4253
+ created_by: string | null;
4254
+ items: DropshipperReturnItem[];
4255
+ }
4256
+ /** Transaction on an order */
4257
+ interface DropshipperTransaction {
4258
+ id: string;
4259
+ amount: number;
4260
+ currency_code: string;
4261
+ reference: string | null;
4262
+ reference_id: string | null;
4263
+ created_at: string;
4264
+ }
4265
+ /** Financial summary of an order */
4266
+ interface DropshipperFinancialSummary {
4267
+ paid_total: number;
4268
+ refunded_total: number;
4269
+ pending_difference: number;
4270
+ current_order_total: number;
4271
+ original_order_total: number;
4272
+ transaction_total: number;
4273
+ accounting_total: number;
4274
+ }
4275
+ /** Pickup location */
4276
+ interface DropshipperPickupLocation {
4277
+ id: string;
4278
+ name: string;
4279
+ address: {
4280
+ address_1: string;
4281
+ city: string | null;
4282
+ province: string | null;
4283
+ postal_code: string | null;
4284
+ country_code: string;
4285
+ } | null;
4286
+ }
4287
+ /** A shipping method on an order */
4288
+ interface DropshipperShippingMethod {
4289
+ id: string;
4290
+ name: string;
4291
+ amount: number;
4292
+ is_tax_inclusive: boolean;
4293
+ original_total: number;
4294
+ total: number;
4295
+ tax_total: number;
4296
+ discount_total: number;
4297
+ shipping_option_id: string | null;
4298
+ fulfillment_set_type: string | null;
4299
+ pickup_location: DropshipperPickupLocation | null;
4300
+ }
4079
4301
  /** Full order detail as returned by GET /admin/thor/dropshipper/orders/:id */
4080
4302
  interface DropshipperOrderDetail {
4081
4303
  id: string;
4082
4304
  display_id: number;
4305
+ custom_display_id?: string | null;
4306
+ version: number;
4083
4307
  status: string;
4084
4308
  payment_status?: string;
4085
4309
  fulfillment_status: string | null;
@@ -4088,28 +4312,16 @@ interface DropshipperOrderDetail {
4088
4312
  customer: DropshipperOrderCustomer & {
4089
4313
  phone?: string;
4090
4314
  };
4091
- shipping_address: DropshipperOrderShippingAddress;
4315
+ shipping_address: DropshipperOrderShippingAddress | null;
4316
+ billing_address: DropshipperOrderShippingAddress | null;
4092
4317
  items: DropshipperOrderItem[];
4093
4318
  totals: DropshipperOrderTotals;
4094
- shipping_method?: {
4095
- id: string;
4096
- name: string;
4097
- amount: number;
4098
- shipping_option_id: string | null;
4099
- /** Fulfillment intent of the underlying shipping option: 'delivery' | 'pickup' | 'shipping' | null */
4100
- fulfillment_set_type?: string | null;
4101
- pickup_location?: {
4102
- id: string;
4103
- name: string;
4104
- address: {
4105
- address_1: string;
4106
- city: string | null;
4107
- province: string | null;
4108
- postal_code: string | null;
4109
- country_code: string;
4110
- } | null;
4111
- } | null;
4112
- } | null;
4319
+ shipping_methods: DropshipperShippingMethod[];
4320
+ payment_collections: DropshipperPaymentCollection[];
4321
+ returns: DropshipperReturn[];
4322
+ transactions: DropshipperTransaction[];
4323
+ financial_summary: DropshipperFinancialSummary;
4324
+ timeline: DropshipperOrderTimelineEvent[];
4113
4325
  payment_collected_by: 'dropshipper' | 'provider' | null;
4114
4326
  payment_method?: {
4115
4327
  id: string;
@@ -4118,7 +4330,16 @@ interface DropshipperOrderDetail {
4118
4330
  paid_amount?: number;
4119
4331
  due_date?: string | null;
4120
4332
  settlement_status: 'settled' | 'unsettled';
4121
- timeline: DropshipperOrderTimelineEvent[];
4333
+ pickup_location: DropshipperPickupLocation | null;
4334
+ /** Legacy singular shipping_method kept for backward compatibility */
4335
+ shipping_method?: {
4336
+ id: string;
4337
+ name: string;
4338
+ amount: number;
4339
+ shipping_option_id: string | null;
4340
+ fulfillment_set_type?: string | null;
4341
+ pickup_location?: DropshipperPickupLocation | null;
4342
+ } | null;
4122
4343
  }
4123
4344
  /** Response for `GET /admin/thor/dropshipper/orders/:id` */
4124
4345
  interface GetDropshipperOrderDetailResponse {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thorprovider/types",
3
- "version": "5.3.2",
3
+ "version": "5.3.3",
4
4
  "description": "Shared TypeScript types for Thor Commerce ecosystem - Framework-agnostic type definitions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",