lingxingapi 1.0.0__py3-none-any.whl

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.

Potentially problematic release.


This version of lingxingapi might be problematic. Click here for more details.

Files changed (65) hide show
  1. lingxingapi/__init__.py +7 -0
  2. lingxingapi/ads/__init__.py +0 -0
  3. lingxingapi/ads/api.py +5946 -0
  4. lingxingapi/ads/param.py +192 -0
  5. lingxingapi/ads/route.py +134 -0
  6. lingxingapi/ads/schema.py +2615 -0
  7. lingxingapi/api.py +443 -0
  8. lingxingapi/base/__init__.py +0 -0
  9. lingxingapi/base/api.py +409 -0
  10. lingxingapi/base/param.py +59 -0
  11. lingxingapi/base/route.py +11 -0
  12. lingxingapi/base/schema.py +198 -0
  13. lingxingapi/basic/__init__.py +0 -0
  14. lingxingapi/basic/api.py +466 -0
  15. lingxingapi/basic/param.py +72 -0
  16. lingxingapi/basic/route.py +20 -0
  17. lingxingapi/basic/schema.py +212 -0
  18. lingxingapi/errors.py +143 -0
  19. lingxingapi/fba/__init__.py +0 -0
  20. lingxingapi/fba/api.py +1691 -0
  21. lingxingapi/fba/param.py +250 -0
  22. lingxingapi/fba/route.py +30 -0
  23. lingxingapi/fba/schema.py +987 -0
  24. lingxingapi/fields.py +50 -0
  25. lingxingapi/finance/__init__.py +0 -0
  26. lingxingapi/finance/api.py +3091 -0
  27. lingxingapi/finance/param.py +616 -0
  28. lingxingapi/finance/route.py +44 -0
  29. lingxingapi/finance/schema.py +1243 -0
  30. lingxingapi/product/__init__.py +0 -0
  31. lingxingapi/product/api.py +2643 -0
  32. lingxingapi/product/param.py +934 -0
  33. lingxingapi/product/route.py +49 -0
  34. lingxingapi/product/schema.py +1004 -0
  35. lingxingapi/purchase/__init__.py +0 -0
  36. lingxingapi/purchase/api.py +496 -0
  37. lingxingapi/purchase/param.py +126 -0
  38. lingxingapi/purchase/route.py +11 -0
  39. lingxingapi/purchase/schema.py +215 -0
  40. lingxingapi/sales/__init__.py +0 -0
  41. lingxingapi/sales/api.py +3200 -0
  42. lingxingapi/sales/param.py +723 -0
  43. lingxingapi/sales/route.py +70 -0
  44. lingxingapi/sales/schema.py +1718 -0
  45. lingxingapi/source/__init__.py +0 -0
  46. lingxingapi/source/api.py +1799 -0
  47. lingxingapi/source/param.py +176 -0
  48. lingxingapi/source/route.py +38 -0
  49. lingxingapi/source/schema.py +1011 -0
  50. lingxingapi/tools/__init__.py +0 -0
  51. lingxingapi/tools/api.py +291 -0
  52. lingxingapi/tools/param.py +73 -0
  53. lingxingapi/tools/route.py +8 -0
  54. lingxingapi/tools/schema.py +169 -0
  55. lingxingapi/utils.py +411 -0
  56. lingxingapi/warehourse/__init__.py +0 -0
  57. lingxingapi/warehourse/api.py +1778 -0
  58. lingxingapi/warehourse/param.py +506 -0
  59. lingxingapi/warehourse/route.py +28 -0
  60. lingxingapi/warehourse/schema.py +926 -0
  61. lingxingapi-1.0.0.dist-info/METADATA +67 -0
  62. lingxingapi-1.0.0.dist-info/RECORD +65 -0
  63. lingxingapi-1.0.0.dist-info/WHEEL +5 -0
  64. lingxingapi-1.0.0.dist-info/licenses/LICENSE +22 -0
  65. lingxingapi-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,926 @@
1
+ # -*- coding: utf-8 -*-
2
+ from typing import Any
3
+ from pydantic import BaseModel, Field, field_validator
4
+ from lingxingapi.base import schema as base_schema
5
+ from lingxingapi.base.schema import ResponseV1, FlattenDataList
6
+ from lingxingapi.fields import IntOrNone2Zero, FloatOrNone2Zero
7
+
8
+
9
+ # 仓库 - 仓库设置 ----------------------------------------------------------------------------------------------------------------
10
+ # . Warehouse
11
+ class Warehouse(BaseModel):
12
+ """仓库信息"""
13
+
14
+ # 仓库ID [原字段 'wid']
15
+ warehouse_id: int = Field(validation_alias="wid")
16
+ # 仓库类型 [原字段 'type']
17
+ # (1: 本地仓, 3: 海外仓, 4: 亚马逊平台仓, 6: AWD仓)
18
+ warehouse_type: int = Field(validation_alias="type")
19
+ # 仓库名称 [原字段 'name']
20
+ warehouse_name: str = Field(validation_alias="name")
21
+ # 仓库国家代码 [原字段 'country_code']
22
+ warehouse_country_code: str = Field(validation_alias="country_code")
23
+ # 仓库服务商ID (仅仓库类型为3时有值) [原字段 'wp_id']
24
+ provider_id: int = Field(validation_alias="wp_id")
25
+ # 仓库服务商名称 (仅仓库类型为3时有值) [原字段 'wp_name']
26
+ provider_name: str = Field(validation_alias="wp_name")
27
+ # 第三方仓库名称 [原字段 't_warehouse_name']
28
+ third_party_warehouse_name: str = Field(validation_alias="t_warehouse_name")
29
+ # 第三方仓库代码 [原字段 't_warehouse_code']
30
+ third_party_warehouse_code: str = Field(validation_alias="t_warehouse_code")
31
+ # 第三方仓库所在地理位置 [原字段 't_country_area_name']
32
+ thrid_party_warehouse_location: str = Field(validation_alias="t_country_area_name")
33
+ # 第三方仓库状态 (1: 启用, 0: 停用) [原字段 't_status']
34
+ thrid_party_warehouse_status: IntOrNone2Zero = Field(validation_alias="t_status")
35
+ # 是否已删除 (0: 否, 1: 是) [原字段 'is_delete']
36
+ deleted: int = Field(validation_alias="is_delete")
37
+
38
+
39
+ class Warehouses(ResponseV1):
40
+ """仓库信息列表"""
41
+
42
+ data: list[Warehouse]
43
+
44
+
45
+ # . Warehouse Bin
46
+ class WarehouseBinItem(BaseModel):
47
+ """仓库货架(仓位)货物信息"""
48
+
49
+ # 领星店铺ID [原字段 'store_id']
50
+ sid: int = Field(validation_alias="store_id")
51
+ # 领星店铺名称
52
+ seller_name: str
53
+ # 领星本地商品SKU [原字段 'sku']
54
+ lsku: str = Field(validation_alias="sku")
55
+ # 商品FNSKU
56
+ fnsku: str
57
+ # 领星商品ID
58
+ product_id: int
59
+ # 领星商品名称
60
+ product_name: str
61
+
62
+
63
+ class WarehouseBin(BaseModel):
64
+ """仓库货架(仓位)信息"""
65
+
66
+ # 仓库ID [原字段 'wid']
67
+ warehouse_id: int = Field(validation_alias="wid")
68
+ # 仓库名称 [原字段 'Ware_house_name']
69
+ warehouse_name: str = Field(validation_alias="Ware_house_name")
70
+ # 仓库货架(仓位)ID [原字段 'id']
71
+ bin_id: int = Field(validation_alias="id")
72
+ # 仓库货架(仓位)名称 [原字段 'storage_bin']
73
+ bin_name: str = Field(validation_alias="storage_bin")
74
+ # 仓库货架(仓位)类型 (5: 可用, 6: 次品) [原字段 'type']
75
+ bin_type: IntOrNone2Zero = Field(validation_alias="type")
76
+ # 仓库货架(仓位)状态 (0: 停用, 1: 启用) [原字段 'status']
77
+ bin_status: IntOrNone2Zero = Field(validation_alias="status")
78
+ # 仓库货架(仓位)货物列表 [原字段 'sku_fnsku']
79
+ skus: list[WarehouseBinItem] = Field(validation_alias="sku_fnsku")
80
+
81
+
82
+ class WarehouseBins(ResponseV1):
83
+ """仓库货架(仓位)货物信息列表"""
84
+
85
+ data: list[WarehouseBin]
86
+
87
+
88
+ # 仓库 - 库存&流水 ---------------------------------------------------------------------------------------------------------------
89
+ # . FBA Inventory
90
+ class FbaInventoryFulfillableLocal(BaseModel):
91
+ """FBA库存多国店铺本地可售库存信息"""
92
+
93
+ # fmt: off
94
+ # 店铺名称 [原字段 'name']
95
+ seller_name: str = Field(validation_alias="name")
96
+ # 店铺本地可售数量 [原字段 'quantity_for_local_fulfillment']
97
+ afn_fulfillable_local: int = Field(validation_alias="quantity_for_local_fulfillment")
98
+ # fmt: on
99
+
100
+
101
+ class FbaInventoryItem(BaseModel):
102
+ """FBA库存产品信息"""
103
+
104
+ # fmt: off
105
+ # 仓库名称 [原字段 'wname']
106
+ warehouse_name: str = Field(validation_alias="wname")
107
+ # 领星店铺ID [sid + msku 唯一键]
108
+ sid: int
109
+ # 商品ASIN
110
+ asin: str
111
+ # 亚马逊SKU
112
+ msku: str
113
+ # 领星本地SKU [原字段 'sku']
114
+ lsku: str = Field(validation_alias="sku")
115
+ # 亚马逊FNSKU
116
+ fnsku: str
117
+ # 领星商品名称
118
+ product_name: str
119
+ # 商品类型ID
120
+ category_id: int
121
+ # 商品类型名称
122
+ category_name: str
123
+ # 商品品牌ID
124
+ brand_id: int
125
+ # 商品品牌名称
126
+ brand_name: str
127
+ # 商品图片链接 [原字段 'product_image']
128
+ image_url: str = Field(validation_alias="product_image")
129
+ # 商品配送方式 (如: "FBA" 或 "FBM") [原字段 'fulfillment_channel_name']
130
+ fulfillment_channel: str = Field(validation_alias="fulfillment_channel_name")
131
+ # 库存共享类型 [原字段 'share_type']
132
+ # (0: 库存不共享, 1: 库存北美共享, 2: 库存欧洲共享)
133
+ stock_share_type: int = Field(validation_alias="share_type")
134
+ # FBA 多国店铺本地可售库存信息列表 [原字段 'afn_fulfillable_quantity_multi']
135
+ afn_fulfillable_local: list[FbaInventoryFulfillableLocal] = Field(validation_alias="afn_fulfillable_quantity_multi")
136
+ # FBA 总可售库存数量 [原字段 'total_fulfillable_quantity']
137
+ # afn_fulfillable + afn_reserved_fc_processing + afn_reserved_fc_transfers
138
+ afn_fulfillable_total: int = Field(validation_alias="total_fulfillable_quantity")
139
+ # FBA 可售库存数量 [原字段 'afn_fulfillable_quantity']
140
+ afn_fulfillable: int = Field(validation_alias="afn_fulfillable_quantity")
141
+ # FBA 在库待调仓的库存数量 [原字段 'reserved_fc_processing']
142
+ afn_reserved_fc_processing: int = Field(validation_alias="reserved_fc_processing")
143
+ # FBA 在库调仓中的库存数量 [原字段 'reserved_fc_transfers']
144
+ afn_reserved_fc_transfers: int = Field(validation_alias="reserved_fc_transfers")
145
+ # FBA 在库待发货的库存数量 [原字段 'reserved_customerorders']
146
+ afn_reserved_customer_order: int = Field(validation_alias="reserved_customerorders")
147
+ # FBA 在库不可售的库存数量 [原字段 'afn_unsellable_quantity']
148
+ afn_unsellable: int = Field(validation_alias="afn_unsellable_quantity")
149
+ # FBA 实际发货在途的数量 [原字段 'afn_erp_real_shipped_quantity']
150
+ afn_actual_shipped: int = Field(validation_alias="afn_erp_real_shipped_quantity")
151
+ # FBA 发货在途的库存数量 [原字段 'afn_inbound_shipped_quantity']
152
+ afn_inbound_shipped: int = Field(validation_alias="afn_inbound_shipped_quantity")
153
+ # FBA 发货计划入库的库存数量 [原字段 'afn_inbound_working_quantity']
154
+ afn_inbound_working: int = Field(validation_alias="afn_inbound_working_quantity")
155
+ # FBA 发货入库接收中的库存数量 [原字段 'afn_inbound_receiving_quantity']
156
+ afn_inbound_receiving: int = Field(validation_alias="afn_inbound_receiving_quantity")
157
+ # FBA 调查中的库存数量 [原字段 'afn_researching_quantity']
158
+ afn_researching: int = Field(validation_alias="afn_researching_quantity")
159
+ # 库龄0-30天的库存数量 [原字段 'inv_age_0_to_30_days']
160
+ age_0_to_30_days: int = Field(validation_alias="inv_age_0_to_30_days")
161
+ # 库龄31-60天的库存数量 [原字段 'inv_age_31_to_60_days']
162
+ age_31_to_60_days: int = Field(validation_alias="inv_age_31_to_60_days")
163
+ # 库龄61-90天的库存数量 [原字段 'inv_age_61_to_90_days']
164
+ age_61_to_90_days: int = Field(validation_alias="inv_age_61_to_90_days")
165
+ # 库龄0-90天的库存数量 [原字段 'inv_age_0_to_90_days']
166
+ age_0_to_90_days: int = Field(validation_alias="inv_age_0_to_90_days")
167
+ # 库龄91-180天的库存数量 [原字段 'inv_age_91_to_180_days']
168
+ age_91_to_180_days: int = Field(validation_alias="inv_age_91_to_180_days")
169
+ # 库龄181-270天的库存数量 [原字段 'inv_age_181_to_270_days']
170
+ age_181_to_270_days: int = Field(validation_alias="inv_age_181_to_270_days")
171
+ # 库龄271-330天的库存数量 [原字段 'inv_age_271_to_330_days']
172
+ age_271_to_330_days: int = Field(validation_alias="inv_age_271_to_330_days")
173
+ # 库龄271-365天的库存数量 [原字段 'inv_age_271_to_365_days']
174
+ age_271_to_365_days: int = Field(validation_alias="inv_age_271_to_365_days")
175
+ # 库龄331-365天的库存数量 [原字段 'inv_age_331_to_365_days']
176
+ age_331_to_365_days: int = Field(validation_alias="inv_age_331_to_365_days")
177
+ # 库龄365天以上的库存数量 [原字段 'inv_age_365_plus_days']
178
+ age_365_plus_days: int = Field(validation_alias="inv_age_365_plus_days")
179
+ # 库存售出率 (过去 90 天销量除以平均可售库存) [原字段 'sell_through']
180
+ sell_through_rate: float = Field(validation_alias="sell_through")
181
+ # 历史供货天数 (取短期&长期更大值)
182
+ historical_days_of_supply: float
183
+ # 历史短期供货天数 [原字段 'short_term_historical_days_of_supply']
184
+ historical_st_days_of_supply: float = Field(validation_alias="short_term_historical_days_of_supply")
185
+ # 历史长期供货天数 [原字段 'long_term_historical_days_of_supply']
186
+ historical_lt_days_of_supply: float = Field(validation_alias="long_term_historical_days_of_supply")
187
+ # 库存成本金额 [原字段 'cost']
188
+ inventory_cost_amt: float = Field(validation_alias="cost")
189
+ # 库存货值金额 [原字段 'stock_cost_total']
190
+ inventory_value_amt: float = Field(validation_alias="stock_cost_total")
191
+ # 亚马逊预测的库存健康状态 [原字段 'fba_inventory_level_health_status']
192
+ inventory_health_status: str = Field(validation_alias="fba_inventory_level_health_status")
193
+ # 亚马逊低库存水平费收费情况 [原字段 'low_inventory_level_fee_applied']
194
+ inventory_low_level_fee_status: str = Field(validation_alias="low_inventory_level_fee_applied")
195
+ # 亚马逊预测的从今天起30天内产生的仓储费 [原字段 'estimated_storage_cost_next_month']
196
+ estimated_30d_storage_fee: float = Field(validation_alias="estimated_storage_cost_next_month")
197
+ # 亚马逊预估的冗余商品数量 [原字段 'estimated_excess_quantity']
198
+ estimated_excess_qty: float = Field(validation_alias="estimated_excess_quantity")
199
+ # 亚马逊建议的最低库存量 [原字段 'fba_minimum_inventory_level']
200
+ recommended_minimum_qty: float = Field(validation_alias="fba_minimum_inventory_level")
201
+ # 亚马逊建议的操作 [原字段 'recommended_action']
202
+ recommended_action: str
203
+ # fmt: on
204
+
205
+
206
+ class FbaInventory(ResponseV1, FlattenDataList):
207
+ """FBA库存信息"""
208
+
209
+ data: list[FbaInventoryItem]
210
+
211
+
212
+ # . FBA Inventory Detail
213
+ class FbaInventoryDetailFulfillableLocal(BaseModel):
214
+ """FBA库存多国店铺本地可售库存信息"""
215
+
216
+ # fmt: off
217
+ # 领星店铺ID
218
+ sid: int
219
+ # 店铺名称 [原字段 'name']
220
+ seller_name: str = Field(validation_alias="name")
221
+ # 店铺本地可售数量 [原字段 'quantity_for_local_fulfillment']
222
+ afn_fulfillable_local: int = Field(validation_alias="quantity_for_local_fulfillment")
223
+ # fmt: on
224
+
225
+
226
+ class FbaInventoryDetailItem(BaseModel):
227
+
228
+ # fmt: off
229
+ # 仓库名称 [原字段 'name']
230
+ warehouse_name: str = Field(validation_alias="name")
231
+ # 领星店铺ID (共享库存时为0)
232
+ sid: int
233
+ # 商品ASIN
234
+ asin: str
235
+ # 亚马逊SKU [原字段 'seller_sku']
236
+ msku: str = Field(validation_alias="seller_sku")
237
+ # 领星本地SKU [原字段 'sku']
238
+ lsku: str = Field(validation_alias="sku")
239
+ # 亚马逊FNSKU
240
+ fnsku: str
241
+ # 领星商品名称
242
+ product_name: str
243
+ # 商品类型ID [原字段 'cid']
244
+ category_id: int = Field(validation_alias="cid")
245
+ # 商品类型名称 [原字段 'category_text']
246
+ category_name: str = Field(validation_alias="category_text")
247
+ # 商品品牌ID [原字段 'bid']
248
+ brand_id: int = Field(validation_alias="bid")
249
+ # 商品品牌名称 [原字段 'product_brand_text']
250
+ brand_name: str = Field(validation_alias="product_brand_text")
251
+ # 商品略缩图链接 [原字段 'small_image_url']
252
+ thumbnail_url: str = Field(validation_alias="small_image_url")
253
+ # 商品配送方式 (如: "AMAZON_NA")
254
+ fulfillment_channel: str
255
+ # 库存共享类型 [原字段 'share_type']
256
+ # (0: 库存不共享, 1: 库存北美共享, 2: 库存欧洲共享)
257
+ stock_share_type: int = Field(validation_alias="share_type")
258
+ # 库存总数量 [原字段 'total']
259
+ stock_total: int = Field(validation_alias="total")
260
+ # 库存总货值金额 [原字段 'total_price']
261
+ stock_total_amt: float = Field(validation_alias="total_price")
262
+ # 库存总可售数量 [原字段 'available_total']
263
+ stock_total_fulfillable: int = Field(validation_alias="available_total")
264
+ # 库存总可售货值金额 [原字段 'available_total_price']
265
+ stock_total_fulfillable_amt: float = Field(validation_alias="available_total_price")
266
+ # FBA 多国店铺本地可售库存信息列表 [原字段 'fba_storage_quantity_list']
267
+ afn_fulfillable_local: list[FbaInventoryDetailFulfillableLocal] = Field(validation_alias="fba_storage_quantity_list")
268
+ # FBA 总可售库存数量 [原字段 'total_fulfillable_quantity']
269
+ # afn_fulfillable + afn_reserved_fc_processing + afn_reserved_fc_transfers
270
+ afn_fulfillable_total: int = Field(validation_alias="total_fulfillable_quantity")
271
+ # FBA 可售库存数量 [原字段 'afn_fulfillable_quantity']
272
+ afn_fulfillable: int = Field(validation_alias="afn_fulfillable_quantity")
273
+ # FBA 可售库存货值金额 [原字段 'afn_fulfillable_quantity_price']
274
+ afn_fulfillable_amt: float = Field(validation_alias="afn_fulfillable_quantity_price")
275
+ # FBA 在库待调仓的库存数量 [原字段 'reserved_fc_processing']
276
+ afn_reserved_fc_processing: int = Field(validation_alias="reserved_fc_processing")
277
+ # FBA 在库待调仓的库存货值金额 [原字段 'reserved_fc_processing_price']
278
+ afn_reserved_fc_processing_amt: float = Field(validation_alias="reserved_fc_processing_price")
279
+ # FBA 在库调仓中的库存数量 [原字段 'reserved_fc_transfers']
280
+ afn_reserved_fc_transfers: int = Field(validation_alias="reserved_fc_transfers")
281
+ # FBA 在库调仓中的库存货值金额 [原字段 'reserved_fc_transfers_price']
282
+ afn_reserved_fc_transfers_amt: float = Field(validation_alias="reserved_fc_transfers_price")
283
+ # FBA 在库待发货的库存数量 [原字段 'reserved_customerorders']
284
+ afn_reserved_customer_order: int = Field(validation_alias="reserved_customerorders")
285
+ # FBA 在库待发货的库存货值金额 [原字段 'reserved_customerorders_price']
286
+ afn_reserved_customer_order_amt: float = Field(validation_alias="reserved_customerorders_price")
287
+ # FBA 在库不可售的库存数量 [原字段 'afn_unsellable_quantity']
288
+ afn_unsellable: int = Field(validation_alias="afn_unsellable_quantity")
289
+ # FBA 在库不可售的库存货值金额 [原字段 'afn_unsellable_quantity_price']
290
+ afn_unsellable_amt: float = Field(validation_alias="afn_unsellable_quantity_price")
291
+ # FBA 实际发货在途的数量 [原字段 'stock_up_num']
292
+ afn_actual_shipped: int = Field(validation_alias="stock_up_num")
293
+ # FBA 实际发货在途的货值金额 [原字段 'stock_up_num_price']
294
+ afn_actual_shipped_amt: float = Field(validation_alias="stock_up_num_price")
295
+ # FBA 发货在途的库存数量 [原字段 'afn_inbound_shipped_quantity']
296
+ afn_inbound_shipped: int = Field(validation_alias="afn_inbound_shipped_quantity")
297
+ # FBA 发货在途的库存货值金额 [原字段 'afn_inbound_shipped_quantity_price']
298
+ afn_inbound_shipped_amt: float = Field(validation_alias="afn_inbound_shipped_quantity_price")
299
+ # FBA 发货计划入库的库存数量 [原字段 'afn_inbound_working_quantity']
300
+ afn_inbound_working: int = Field(validation_alias="afn_inbound_working_quantity")
301
+ # FBA 发货计划入库的库存货值金额 [原字段 'afn_inbound_working_quantity_price']
302
+ afn_inbound_working_amt: float = Field(validation_alias="afn_inbound_working_quantity_price")
303
+ # FBA 发货入库接收中的库存数量 [原字段 'afn_inbound_receiving_quantity']
304
+ afn_inbound_receiving: int = Field(validation_alias="afn_inbound_receiving_quantity")
305
+ # FBA 发货入库接收中的库存货值金额 [原字段 'afn_inbound_receiving_quantity_price']
306
+ afn_inbound_receiving_amt: float = Field(validation_alias="afn_inbound_receiving_quantity_price")
307
+ # FBA 调查中的库存数量 [原字段 'afn_researching_quantity']
308
+ afn_researching: int = Field(validation_alias="afn_researching_quantity")
309
+ # FBA 调查中的库存货值金额 [原字段 'afn_researching_quantity_price']
310
+ afn_researching_amt: float = Field(validation_alias="afn_researching_quantity_price")
311
+ # FBM 可售库存数量 [原字段 'quantity']
312
+ mfn_fulfillable: int = Field(validation_alias="quantity")
313
+ # FBM 可售库存货值金额 [原字段 'quantity_price']
314
+ mfn_fulfillable_amt: float = Field(validation_alias="quantity_price")
315
+ # 库龄0-30天的库存数量 [原字段 'inv_age_0_to_30_days']
316
+ age_0_to_30_days: int = Field(validation_alias="inv_age_0_to_30_days")
317
+ # 库龄0-30天的库存货值金额 [原字段 'inv_age_0_to_30_price']
318
+ age_0_to_30_days_amt: float = Field(validation_alias="inv_age_0_to_30_price")
319
+ # 库龄31-60天的库存数量 [原字段 'inv_age_31_to_60_days']
320
+ age_31_to_60_days: int = Field(validation_alias="inv_age_31_to_60_days")
321
+ # 库龄31-60天的库存货值金额 [原字段 'inv_age_31_to_60_price']
322
+ age_31_to_60_days_amt: float = Field(validation_alias="inv_age_31_to_60_price")
323
+ # 库龄61-90天的库存数量 [原字段 'inv_age_61_to_90_days']
324
+ age_61_to_90_days: int = Field(validation_alias="inv_age_61_to_90_days")
325
+ # 库龄61-90天的库存货值金额 [原字段 'inv_age_61_to_90_price']
326
+ age_61_to_90_days_amt: float = Field(validation_alias="inv_age_61_to_90_price")
327
+ # 库龄0-90天的库存数量 [原字段 'inv_age_0_to_90_days']
328
+ age_0_to_90_days: int = Field(validation_alias="inv_age_0_to_90_days")
329
+ # 库龄0-90天的库存货值金额 [原字段 'inv_age_0_to_90_price']
330
+ age_0_to_90_days_amt: float = Field(validation_alias="inv_age_0_to_90_price")
331
+ # 库龄91-180天的库存数量 [原字段 'inv_age_91_to_180_days']
332
+ age_91_to_180_days: int = Field(validation_alias="inv_age_91_to_180_days")
333
+ # 库龄91-180天的库存货值金额 [原字段 'inv_age_91_to_180_price']
334
+ age_91_to_180_days_amt: float = Field(validation_alias="inv_age_91_to_180_price")
335
+ # 库龄181-270天的库存数量 [原字段 'inv_age_181_to_270_days']
336
+ age_181_to_270_days: int = Field(validation_alias="inv_age_181_to_270_days")
337
+ # 库龄181-270天的库存货值金额 [原字段 'inv_age_181_to_270_price']
338
+ age_181_to_270_days_amt: float = Field(validation_alias="inv_age_181_to_270_price")
339
+ # 库龄271-330天的库存数量 [原字段 'inv_age_271_to_330_days']
340
+ age_271_to_330_days: int = Field(validation_alias="inv_age_271_to_330_days")
341
+ # 库龄271-330天的库存货值金额 [原字段 'inv_age_271_to_330_price']
342
+ age_271_to_330_days_amt: float = Field(validation_alias="inv_age_271_to_330_price")
343
+ # 库龄271-365天的库存数量 [原字段 'inv_age_271_to_365_days']
344
+ age_271_to_365_days: int = Field(validation_alias="inv_age_271_to_365_days")
345
+ # 库龄271-365天的库存货值金额 [原字段 'inv_age_271_to_365_price']
346
+ age_271_to_365_days_amt: float = Field(validation_alias="inv_age_271_to_365_price")
347
+ # 库龄331-365天的库存数量 [原字段 'inv_age_331_to_365_days']
348
+ age_331_to_365_days: int = Field(validation_alias="inv_age_331_to_365_days")
349
+ # 库龄331-365天的库存货值金额 [原字段 'inv_age_331_to_365_price']
350
+ age_331_to_365_days_amt: float = Field(validation_alias="inv_age_331_to_365_price")
351
+ # 库龄365天以上的库存数量 [原字段 'inv_age_365_plus_days']
352
+ age_365_plus_days: int = Field(validation_alias="inv_age_365_plus_days")
353
+ # 库龄365天以上的库存货值金额 [原字段 'inv_age_365_plus_price']
354
+ age_365_plus_days_amt: float = Field(validation_alias="inv_age_365_plus_price")
355
+ # 库存售出率 (过去 90 天销量除以平均可售库存) [原字段 'sell_through']
356
+ sell_through_rate: float = Field(validation_alias="sell_through")
357
+ # 历史供货天数 (取短期&长期更大值)
358
+ historical_days_of_supply: float
359
+ # 历史供货天数货值金额 [原字段 'historical_days_of_supply_price']
360
+ historical_days_of_supply_amt: float = Field(validation_alias="historical_days_of_supply_price")
361
+ # 亚马逊预测的库存健康状态 [原字段 'fba_inventory_level_health_status']
362
+ inventory_health_status: str = Field(validation_alias="fba_inventory_level_health_status")
363
+ # 亚马逊低库存水平费收费情况 [原字段 'low_inventory_level_fee_applied']
364
+ inventory_low_level_fee_status: str = Field(validation_alias="low_inventory_level_fee_applied")
365
+ # 亚马逊预测的从今天起30天内产生的仓储费 [原字段 'estimated_storage_cost_next_month']
366
+ estimated_30d_storage_fee: float = Field(validation_alias="estimated_storage_cost_next_month")
367
+ # 亚马逊预估的冗余商品数量 [原字段 'estimated_excess_quantity']
368
+ estimated_excess_qty: float = Field(validation_alias="estimated_excess_quantity")
369
+ # 亚马逊建议的最低库存量 [原字段 'fba_minimum_inventory_level']
370
+ recommended_minimum_qty: float = Field(validation_alias="fba_minimum_inventory_level")
371
+ # 亚马逊建议的操作 [原字段 'recommended_action']
372
+ recommended_action: str
373
+ # fmt: on
374
+
375
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
376
+ @field_validator("afn_fulfillable_local", mode="before")
377
+ @classmethod
378
+ def _validate_afn_fulfillable_local(cls, v) -> list | Any:
379
+ """验证 FBA 多国店铺本地可售库存信息"""
380
+ return [] if v is None else v
381
+
382
+
383
+ class FbaInventoryDetails(ResponseV1):
384
+ """FBA库存明细信息"""
385
+
386
+ data: list[FbaInventoryDetailItem]
387
+
388
+
389
+ # . AWD Inventory
390
+ class AwdInventoryItem(BaseModel):
391
+ """AWD库存产品信息"""
392
+
393
+ # fmt: off
394
+ # 仓库名称 [原字段 'wname']
395
+ warehouse_name: str = Field(validation_alias="wname")
396
+ # 领星站点ID
397
+ mid: int
398
+ # 国家 [原字段 'nation']
399
+ country: str = Field(validation_alias="nation")
400
+ # 领星店铺ID
401
+ sid: int
402
+ # 领星店铺名称
403
+ seller_name: str
404
+ # 商品父ASIN
405
+ parent_asin: str
406
+ # 商品ASIN
407
+ asin: str
408
+ # 商品ASIN链接
409
+ asin_url: str
410
+ # 亚马逊SKU [原字段 'seller_sku']
411
+ msku: str = Field(validation_alias="seller_sku")
412
+ # 领星本地SKU [原字段 'sku']
413
+ lsku: str = Field(validation_alias="sku")
414
+ # 亚马逊FNSKU
415
+ fnsku: str
416
+ # 多属性SPU产品编码
417
+ spu: str
418
+ # 多属性SPU产品名称
419
+ spu_name: str
420
+ # 领星产品ID
421
+ product_id: int
422
+ # 领星商品名称
423
+ product_name: str
424
+ # 商品类型ID [原字段 'cid']
425
+ category_id: int = Field(validation_alias="cid")
426
+ # 商品类型名称 [原字段 'category_text']
427
+ category_name: str = Field(validation_alias="category_text")
428
+ # 商品类型1级名称
429
+ category_level1: str
430
+ # 商品类型2级名称
431
+ category_level2: str
432
+ # 商品类型3级名称
433
+ category_level3: str
434
+ # 商品类型列表 [原字段 'category_Arr']
435
+ categories: list = Field(validation_alias="category_Arr")
436
+ # 商品品牌ID [原字段 'bid']
437
+ brand_id: int = Field(validation_alias="bid")
438
+ # 商品品牌名称 [原字段 'product_brand_text']
439
+ brand_name: str = Field(validation_alias="product_brand_text")
440
+ # 产品图片链接 [原字段 'pic_url']
441
+ image_url: str = Field(validation_alias="pic_url")
442
+ # 产品略缩图链接 [原字段 'small_image_url']
443
+ thunbnail_url: str = Field(validation_alias="small_image_url")
444
+ # 产品负责人列表 [原字段 'asin_principal_list']
445
+ operators: list = Field(validation_alias="asin_principal_list")
446
+ # 商品属性列表 [原字段 'attribute']
447
+ attributes: list[base_schema.SpuProductAttribute] = Field(validation_alias="attribute")
448
+ # AWD 总库存数量 [原字段 'total_onhand_quantity']
449
+ awd_total: int = Field(validation_alias="total_onhand_quantity")
450
+ # AWD 总库存货值金额 [原字段 'total_onhand_quantity_price']
451
+ awd_total_amt: float = Field(validation_alias="total_onhand_quantity_price")
452
+ # AWD 可分发库存数量 [原字段 'available_distributable_quantity']
453
+ awd_distributable: int = Field(validation_alias="available_distributable_quantity")
454
+ # AWD 可分发库存货值金额 [原字段 'available_distributable_quantity_price']
455
+ awd_distributable_amt: float = Field(validation_alias="available_distributable_quantity_price")
456
+ # AWD 在途分发至FBA数量 [原字段 'awd_to_fba_quantity_shipped']
457
+ awd_distributing: int = Field(validation_alias="awd_to_fba_quantity_shipped")
458
+ # AWD 在途分发至FBA货值金额 [原字段 'awd_to_fba_quantity_shipped_price']
459
+ awd_distributing_amt: float = Field(validation_alias="awd_to_fba_quantity_shipped_price")
460
+ # AWD 在库待分发数量 [原字段 'reserved_distributable_quantity']
461
+ awd_reserved_distributes: int = Field(validation_alias="reserved_distributable_quantity")
462
+ # AWD 在库待分发货值金额 [原字段 'reserved_distributable_quantity_price']
463
+ awd_reserved_distributes_amt: float = Field(validation_alias="reserved_distributable_quantity_price")
464
+ # AWD 实际发货在途的数量 [原字段 'awd_actual_quantity_shipped']
465
+ awd_actual_shipped: int = Field(validation_alias="awd_actual_quantity_shipped")
466
+ # AWD 实际发货在途的货值金额 [原字段 'awd_actual_quantity_shipped_price']
467
+ awd_actual_shipped_amt: float = Field(validation_alias="awd_actual_quantity_shipped_price")
468
+ # AWD 发货在途的库存数量 [原字段 'awd_quantity_shipped']
469
+ awd_inbound_shipped: int = Field(validation_alias="awd_quantity_shipped")
470
+ # AWD 发货在途的库存货值金额 [原字段 'awd_quantity_shipped_price']
471
+ awd_inbound_shipped_amt: float = Field(validation_alias="awd_quantity_shipped_price")
472
+ # fmt: on
473
+
474
+
475
+ class AwdInventory(ResponseV1, FlattenDataList):
476
+ """AWD库存信息"""
477
+
478
+ data: list[AwdInventoryItem]
479
+
480
+
481
+ # . Seller Inventory
482
+ class OverseasInventoryInfo(BaseModel):
483
+ """海外仓第三方库存信息"""
484
+
485
+ # 产品可售库存数量 [原字段 'qty_sellable']
486
+ fulfillable_qty: IntOrNone2Zero = Field(0, validation_alias="qty_sellable")
487
+ # 产品待上架库存数量 [原字段 'qty_pending']
488
+ pending_qty: IntOrNone2Zero = Field(0, validation_alias="qty_pending")
489
+ # 产品预留库存数量 [原字段 'qty_reserved']
490
+ reserved_qty: IntOrNone2Zero = Field(0, validation_alias="qty_reserved")
491
+ # 产品调拨在途数量 [原字段 'qty_onway']
492
+ transit_qty: IntOrNone2Zero = Field(0, validation_alias="qty_onway")
493
+ # 外箱可售数量 [原字段 'box_qty_sellable']
494
+ box_fulfillable_qty: IntOrNone2Zero = Field(0, validation_alias="box_qty_sellable")
495
+ # 外箱待上架数量 [原字段 'box_qty_pending']
496
+ box_pending_qty: IntOrNone2Zero = Field(0, validation_alias="box_qty_pending")
497
+ # 外箱预留数量 [原字段 'box_qty_reserved']
498
+ box_reserved_qty: IntOrNone2Zero = Field(0, validation_alias="box_qty_reserved")
499
+ # 外箱调拨在途数量 [原字段 'box_qty_onway']
500
+ box_transit_qty: IntOrNone2Zero = Field(0, validation_alias="box_qty_onway")
501
+
502
+
503
+ class SellerInventoryItemAge(BaseModel):
504
+ """卖家(本地/海外)仓库库存产品库龄信息"""
505
+
506
+ # 库龄信息 [原字段 'name']
507
+ age: str = Field(validation_alias="name")
508
+ # 库龄数量
509
+ qty: int
510
+
511
+
512
+ class SellerInventoryItem(BaseModel):
513
+ """卖家(本地/海外)仓库库存产品信息"""
514
+
515
+ # fmt: off
516
+ # 仓库ID [原字段 'wid']
517
+ warehouse_id: int = Field(validation_alias="wid")
518
+ # 领星店铺ID [原字段 'seller_id']
519
+ sid: int = Field(validation_alias="seller_id")
520
+ # 领星本地商品SKU [原字段 'sku']
521
+ lsku: str = Field(validation_alias="sku")
522
+ # 亚马逊FNSKU
523
+ fnsku: str
524
+ # 领星商品ID
525
+ product_id: int
526
+ # 产品总库存数量 [原字段 'product_total']
527
+ total_qty: int = Field(validation_alias="product_total")
528
+ # 产品库存可售数量 [原字段 'product_valid_num']
529
+ fulfillable_qty: int = Field(validation_alias="product_valid_num")
530
+ # 产品库存可售预留数量 [原字段 'good_lock_num']
531
+ fulfillable_reserved_qty: int = Field(validation_alias="good_lock_num")
532
+ # 产品库存次品数量 [原字段 'product_bad_num']
533
+ unsellable_qty: int = Field(validation_alias="product_bad_num")
534
+ # 产品库存不可售预留数量 [原字段 'bad_lock_num']
535
+ unsellable_reserved_qty: int = Field(validation_alias="bad_lock_num")
536
+ # 产品库存加工计划单品的预留数量 [原字段 'product_lock_num']
537
+ process_reserved_qty: int = Field(validation_alias="product_lock_num")
538
+ # 产品库存待质检数量 [原字段 'product_qc_num']
539
+ pending_qc_qty: int = Field(validation_alias="product_qc_num")
540
+ # 产品待到货数量 [原字段 'quantity_receive']
541
+ pending_arrival_qty: int = Field(validation_alias="quantity_receive")
542
+ # 产品调拨在途数量 [原字段 'product_onway']
543
+ transit_qty: int = Field(validation_alias="product_onway")
544
+ # 产品调拨在途头程费用 [原字段 'transit_head_cost']
545
+ transit_first_leg_fee: float = Field(validation_alias="transit_head_cost")
546
+ # 外箱可售数量 [原字段 'available_inventory_box_qty']
547
+ box_fulfillable_qty: int = Field(validation_alias="available_inventory_box_qty")
548
+ # 第三方海外仓库存信息 [原字段 'third_inventory']
549
+ overseas_inventory: OverseasInventoryInfo = Field(validation_alias="third_inventory")
550
+ # 库存单价成本 [原字段 'stock_cost']
551
+ stock_item_cost_amt: FloatOrNone2Zero = Field(validation_alias="stock_cost")
552
+ # 库存总成本金额 [原字段 'stock_cost_total']
553
+ stock_total_cost_amt: FloatOrNone2Zero = Field(validation_alias="stock_cost_total")
554
+ # 平均库龄 [原字段 'average_age']
555
+ age_avg_days: int = Field(validation_alias="average_age")
556
+ # 库龄列表 [原字段 'stock_age_list']
557
+ ages: list[SellerInventoryItemAge] = Field(validation_alias="stock_age_list")
558
+ # fmt: on
559
+
560
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
561
+ @field_validator("overseas_inventory", mode="before")
562
+ @classmethod
563
+ def _validate_overseas_inventory(cls, v) -> dict:
564
+ return {} if not v else v
565
+
566
+
567
+ class SellerInventory(ResponseV1):
568
+ """卖家(本地/海外)仓库库存信息"""
569
+
570
+ data: list[SellerInventoryItem]
571
+
572
+
573
+ # . Seller Inventory Bin
574
+ class SellerInventoryBinItem(BaseModel):
575
+ """查询卖家(本地/海外)仓库库存货架(仓位)信息"""
576
+
577
+ # fmt: off
578
+ # 仓库ID [原字段 'wid']
579
+ warehouse_id: int = Field(validation_alias="wid")
580
+ # 仓库名称 [原字段 'wh_name']
581
+ warehouse_name: str = Field(validation_alias="wh_name")
582
+ # 仓库货架ID [原字段 'whb_id']
583
+ bin_id: int = Field(validation_alias="whb_id")
584
+ # 仓库货架名称 [原字段 'whb_name']
585
+ bin_name: str = Field(validation_alias="whb_name")
586
+ # 仓库货架类型 [原字段 'whb_type']
587
+ bin_type: int = Field(validation_alias="whb_type")
588
+ # 仓库货架类型描述 [原字段 'whb_type_name']
589
+ bin_type_desc: str = Field(validation_alias="whb_type_name")
590
+ # 领星店铺ID [原字段 'store_id']
591
+ sid: int = Field(validation_alias="store_id")
592
+ # 亚马逊SKU
593
+ msku: str
594
+ # 领星本地商品SKU [原字段 'sku']
595
+ lsku: str = Field(validation_alias="sku")
596
+ # 亚马逊FNSKU
597
+ fnsku: str
598
+ # 领星商品ID
599
+ product_id: int
600
+ # 领星商品名称
601
+ product_name: str
602
+ # 产品总库存数量 [原字段 'total']
603
+ total_qty: int = Field(validation_alias="total")
604
+ # 产品库存可售数量 [原字段 'validNum']
605
+ fulfillable_qty: int = Field(validation_alias="validNum")
606
+ # 产品库存预留数量 [原字段 'lockNum']
607
+ reserved_qty: int = Field(validation_alias="lockNum")
608
+ # 第三方海外仓库存信息 [原字段 'third_inventory']
609
+ overseas_inventory: OverseasInventoryInfo = Field(validation_alias="third_inventory")
610
+ # fmt: on
611
+
612
+ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
613
+ @field_validator("overseas_inventory", mode="before")
614
+ @classmethod
615
+ def _validate_overseas_inventory(cls, v) -> dict:
616
+ return {} if not v else v
617
+
618
+
619
+ class SellerInventoryBins(ResponseV1):
620
+ """卖家(本地/海外)仓库库存货架(仓位)信息"""
621
+
622
+ data: list[SellerInventoryBinItem]
623
+
624
+
625
+ # . Seller Inventory Batch
626
+ class SellerInventoryBatch(BaseModel):
627
+ """卖家(本地/海外)仓库出入库批次信息"""
628
+
629
+ # 仓库ID [原字段 'wid']
630
+ warehouse_id: int = Field(validation_alias="wid")
631
+ # 仓库名称 [原字段 'wh_name']
632
+ warehouse_name: str = Field(validation_alias="wh_name")
633
+ # 批次号 [原字段 'batch_no']
634
+ batch_number: str = Field(validation_alias="batch_no")
635
+ # 源头批次号 [原字段 'source_batch_no']
636
+ source_batch_numbers: list[str] = Field(validation_alias="source_batch_no")
637
+ # 出入库单号 [原字段 'order_sn']
638
+ transaction_number: str = Field(validation_alias="order_sn")
639
+ # 出入库类型 [原字段 'type']
640
+ transaction_type: int = Field(validation_alias="type")
641
+ # 出入库类型描述 [原字段 'type_name']
642
+ transaction_type_desc: str = Field(validation_alias="type_name")
643
+ # 领星店铺ID [原字段 'store_id']
644
+ sid: int = Field(validation_alias="store_id")
645
+ # 领星店铺名称 [原字段 'store_name']
646
+ seller_name: str = Field(validation_alias="store_name")
647
+ # 亚马逊SKU
648
+ msku: str
649
+ # 领星本地商品SKU [原字段 'sku']
650
+ lsku: str = Field(validation_alias="sku")
651
+ # 亚马逊FNSKU
652
+ fnsku: str
653
+ # 领星商品ID
654
+ product_id: int
655
+ # 领星商品名称
656
+ product_name: str
657
+ # 批次总数 [原字段 'total']
658
+ total_qty: int = Field(validation_alias="total")
659
+ # 批次在库结存 [原字段 'balance_num']
660
+ ending_balance_qty: int = Field(validation_alias="balance_num")
661
+ # 批次在途结存 [原字段 'transit_balance_num']
662
+ transit_balance_qty: int = Field(validation_alias="transit_balance_num")
663
+ # 批次可售在途 [原字段 'good_transit_num']
664
+ transit_fulfillable_qty: int = Field(validation_alias="good_transit_num")
665
+ # 批次不可售在途 [原字段 'bad_transit_num']
666
+ transit_unsellable_qty: int = Field(validation_alias="bad_transit_num")
667
+ # 批次可售数量 [原字段 'good_num']
668
+ fulfillable_qty: int = Field(validation_alias="good_num")
669
+ # 批次不可售数量 [原字段 'bad_num']
670
+ unsellable_qty: int = Field(validation_alias="bad_num")
671
+ # 批次待质检数量 [原字段 'qc_num']
672
+ pending_qc_qty: int = Field(validation_alias="qc_num")
673
+ # 批次货物成本 [原字段 'stock_cost']
674
+ cost_amt: float = Field(validation_alias="stock_cost")
675
+ # 批次头程费用 [原字段 'head_stock_cost']
676
+ first_leg_fee: float = Field(validation_alias="head_stock_cost")
677
+ # 批次出入库费用 [原字段 'fee']
678
+ transaction_fee: float = Field(validation_alias="fee")
679
+ # 批次总货值 [原字段 'amount']
680
+ value_amt: float = Field(validation_alias="amount")
681
+ # 采购计划单号列表 [原字段 'plan_sn']
682
+ purchase_plan_numbers: list[str] = Field(validation_alias="plan_sn")
683
+ # 采购单号列表 [原字段 'purchase_order_sns']
684
+ purchase_numbers: list[str] = Field(validation_alias="purchase_order_sns")
685
+ # 收货单号列表 [原字段 'delivery_order_sns']
686
+ receiving_numbers: list[str] = Field(validation_alias="delivery_order_sns")
687
+ # 供应商ID列表
688
+ supplier_ids: list[int]
689
+ # 供应商名称列表
690
+ supplier_names: list[str]
691
+ # 批次创建时间 (北京时间)
692
+ batch_time: str
693
+ # 采购时间 (北京时间) [原字段 'purchase_in_time']
694
+ purchase_time: str = Field(validation_alias="purchase_in_time")
695
+ # 更新时间 (北京时间)
696
+ update_time: str
697
+
698
+
699
+ class SellerInventoryBatches(ResponseV1):
700
+ """卖家(本地/海外)仓库出入库批次信息"""
701
+
702
+ data: list[SellerInventoryBatch]
703
+
704
+
705
+ # . Seller Inventory Record
706
+ class SellerInventoryRecord(BaseModel):
707
+ """卖家(本地/海外)仓库出入库流水信息"""
708
+
709
+ # 仓库ID [原字段 'wid']
710
+ warehouse_id: int = Field(validation_alias="wid")
711
+ # 仓库名称 [原字段 'wh_name']
712
+ warehouse_name: str = Field(validation_alias="wh_name")
713
+ # 批次流水号 [原字段 'batch_state_id']
714
+ batch_record_number: str = Field(validation_alias="batch_state_id")
715
+ # 批次号 [原字段 'batch_no']
716
+ batch_number: str = Field(validation_alias="batch_no")
717
+ # 源头批次号 [原字段 'source_batch_no']
718
+ source_batch_numbers: list[str] = Field(validation_alias="source_batch_no")
719
+ # 出入库单号 [原字段 'order_sn']
720
+ transaction_number: str = Field(validation_alias="order_sn")
721
+ # 源头出入库单号列表 [原字段 'source_order_sn']
722
+ source_transaction_numbers: list[str] = Field(validation_alias="source_order_sn")
723
+ # 出入库类型 [原字段 'type']
724
+ transaction_type: int = Field(validation_alias="type")
725
+ # 出入库类型描述 [原字段 'type_name']
726
+ transaction_type_desc: str = Field(validation_alias="type_name")
727
+ # 领星店铺ID [原字段 'store_id']
728
+ sid: int = Field(validation_alias="store_id")
729
+ # 领星店铺名称 [原字段 'store_name']
730
+ seller_name: str = Field(validation_alias="store_name")
731
+ # 亚马逊SKU
732
+ msku: str
733
+ # 领星本地商品SKU [原字段 'sku']
734
+ lsku: str = Field(validation_alias="sku")
735
+ # 亚马逊FNSKU
736
+ fnsku: str
737
+ # 领星商品ID
738
+ product_id: int
739
+ # 领星商品名称
740
+ product_name: str
741
+ # 批次流水在库结存 [原字段 'balance_num']
742
+ ending_balance_qty: int = Field(validation_alias="balance_num")
743
+ # 批次流水在途结存 [原字段 'transit_balance_num']
744
+ transit_balance_qty: int = Field(validation_alias="transit_balance_num")
745
+ # 批次流水可售在途 [原字段 'good_transit_num']
746
+ transit_fulfillable_qty: int = Field(validation_alias="good_transit_num")
747
+ # 批次流水不可售在途 [原字段 'bad_transit_num']
748
+ transit_unsellable_qty: int = Field(validation_alias="bad_transit_num")
749
+ # 批次流水可售数量 [原字段 'good_num']
750
+ fulfillable_qty: int = Field(validation_alias="good_num")
751
+ # 批次流水不可售数量 [原字段 'bad_num']
752
+ unsellable_qty: int = Field(validation_alias="bad_num")
753
+ # 批次流水待质检数量 [原字段 'qc_num']
754
+ pending_qc_qty: int = Field(validation_alias="qc_num")
755
+ # 批次流水货物成本 [原字段 'stock_cost']
756
+ cost_amt: float = Field(validation_alias="stock_cost")
757
+ # 批次流水头程费用 [原字段 'head_stock_cost']
758
+ first_leg_fee: float = Field(validation_alias="head_stock_cost")
759
+ # 批次流水出入库费用 [原字段 'fee']
760
+ transaction_fee: float = Field(validation_alias="fee")
761
+ # 批次流水总货值 [原字段 'amount']
762
+ value_amt: float = Field(validation_alias="amount")
763
+ # 采购计划单号列表 [原字段 'plan_sn']
764
+ purchase_plan_numbers: list[str] = Field(validation_alias="plan_sn")
765
+ # 采购单号列表 [原字段 'purchase_order_sns']
766
+ purchase_numbers: list[str] = Field(validation_alias="purchase_order_sns")
767
+ # 收货单号列表 [原字段 'delivery_order_sns']
768
+ receiving_numbers: list[str] = Field(validation_alias="delivery_order_sns")
769
+ # 供应商ID列表
770
+ supplier_ids: list[int]
771
+ # 供应商名称列表
772
+ supplier_names: list[str]
773
+
774
+
775
+ class SellerInventoryRecords(ResponseV1):
776
+ """卖家(本地/海外)仓库出入库流水信息"""
777
+
778
+ data: list[SellerInventoryRecord]
779
+
780
+
781
+ # . Seller Inventory Operation
782
+ class SellerInventoryOperation(BaseModel):
783
+ """卖家(本地/海外)仓库出入库操作流水信息"""
784
+
785
+ # fmt: off
786
+ # 仓库ID [原字段 'wid']
787
+ warehouse_id: int = Field(validation_alias="wid")
788
+ # 仓库名称 [原字段 'wh_name']
789
+ warehouse_name: str = Field(validation_alias="ware_house_name")
790
+ # 出入库单号 [原字段 'order_sn']
791
+ transaction_number: str = Field(validation_alias="order_sn")
792
+ # 关联出入库单号 [原字段 'ref_order_sn']
793
+ ref_transaction_number: str = Field(validation_alias="ref_order_sn")
794
+ # 操作ID [原字段 'statement_id']
795
+ transaction_id: str = Field(validation_alias="statement_id")
796
+ # 操作类型 [原字段 'type']
797
+ transaction_type: int = Field(validation_alias="type")
798
+ # 操作类型描述 [原字段 'type_text']
799
+ transaction_type_desc: str = Field(validation_alias="type_text")
800
+ # 出入库子类型 [原字段 'sub_type']
801
+ transaction_sub_type: str = Field(validation_alias="sub_type")
802
+ # 出入库子类型描述 [原字段 'sub_type_text']
803
+ transaction_sub_type_desc: str = Field(validation_alias="sub_type_text")
804
+ # 操作备注
805
+ transaction_note: str = Field(validation_alias="remark")
806
+ # 操作时间 (北京时间) [原字段 'opt_time']
807
+ transaction_time: str = Field(validation_alias="opt_time")
808
+ # 操作人ID [原字段 'opt_uid']
809
+ operator_id: int = Field(validation_alias="opt_uid")
810
+ # 操作人名称 [原字段 'opt_real_name']
811
+ operator_name: str = Field(validation_alias="opt_real_name")
812
+ # 领星店铺ID [原字段 'seller_id']
813
+ sid: int = Field(validation_alias="seller_id")
814
+ # 领星本地商品SKU [原字段 'sku']
815
+ lsku: str = Field(validation_alias="sku")
816
+ # 亚马逊FNSKU
817
+ fnsku: str
818
+ # 领星商品ID
819
+ product_id: int
820
+ # 领星商品名称
821
+ product_name: str
822
+ # 品牌ID [原字段 'bid']
823
+ brand_id: int = Field(validation_alias="bid")
824
+ # 品牌名称
825
+ brand_name: str
826
+ # 操作流水总数 [原字段 'product_total']
827
+ total_qty: int = Field(validation_alias="product_total")
828
+ # 在途流水可售数量 [原字段 'good_transit_num']
829
+ transit_fulfillable_qty: int = Field(validation_alias="good_transit_num")
830
+ # 在途流水可售结存数量 [原字段 'good_transit_balance_num']
831
+ transit_fulfillable_balance_qty: int = Field(validation_alias="good_transit_balance_num")
832
+ # 在途流水不可售数量 [原字段 'bad_transit_num']
833
+ transit_unsellable_qty: int = Field(validation_alias="bad_transit_num")
834
+ # 在途流水不可售结存数量 [原字段 'bad_transit_balance_num']
835
+ transit_unsellable_balance_qty: int = Field(validation_alias="bad_transit_balance_num")
836
+ # 操作流水可售数量 [原字段 'product_good_num']
837
+ fulfillable_qty: int = Field(validation_alias="product_good_num")
838
+ # 操作流水可售结存数量 [原字段 'good_balance_num']
839
+ fulfillable_balance_qty: int = Field(validation_alias="good_balance_num")
840
+ # 操作流水可售预留数量 [原字段 'product_lock_good_num']
841
+ fulfillable_reserved_qty: int = Field(validation_alias="product_lock_good_num")
842
+ # 操作流水可售预留结存数量 [原字段 'good_lock_balance_num']
843
+ fulfillable_reserved_balance_qty: int = Field(validation_alias="good_lock_balance_num")
844
+ # 操作流水不可售数量 [原字段 'product_bad_num']
845
+ unsellable_qty: int = Field(validation_alias="product_bad_num")
846
+ # 操作流水不可售结存数量 [原字段 'bad_balance_num']
847
+ unsellable_balance_qty: int = Field(validation_alias="bad_balance_num")
848
+ # 操作流水不可售预留数量 [原字段 'product_lock_bad_num']
849
+ unsellable_reserved_qty: int = Field(validation_alias="product_lock_bad_num")
850
+ # 操作流水不可售预留结存数量 [原字段 'bad_lock_balance_num']
851
+ unsellable_reserved_balance_qty: int = Field(validation_alias="bad_lock_balance_num")
852
+ # 操作流水待质检数量 [原字段 'product_qc_num']
853
+ pending_qc_qty: int = Field(validation_alias="product_qc_num")
854
+ # 操作流水质检结存数量 [原字段 'qc_balance_num']
855
+ qc_balance_qty: int = Field(validation_alias="qc_balance_num")
856
+ # 操作流水单位采购价格 [原字段 'single_cg_price']
857
+ item_purchase_price: FloatOrNone2Zero = Field(validation_alias="single_cg_price")
858
+ # 操作流水货物成本 [原字段 'stock_cost']
859
+ cost_amt: FloatOrNone2Zero = Field(validation_alias="stock_cost")
860
+ # 操作流水单位货物成本 [原字段 'single_stock_price']
861
+ item_cost_amt: FloatOrNone2Zero = Field(validation_alias="single_stock_price")
862
+ # 操作流水头程费用 [原字段 'head_stock_cost']
863
+ first_leg_fee: FloatOrNone2Zero = Field(validation_alias="head_stock_cost")
864
+ # 操作流水单位头程费用 [原字段 'head_stock_price']
865
+ item_first_leg_fee: FloatOrNone2Zero = Field(validation_alias="head_stock_price")
866
+ # 操作流水出入库费用 [原字段 'fee_cost']
867
+ transaction_fee: FloatOrNone2Zero = Field(validation_alias="fee_cost")
868
+ # 操作流水单位出入库费用 [原字段 'single_fee_cost']
869
+ item_transaction_fee: FloatOrNone2Zero = Field(validation_alias="single_fee_cost")
870
+ # 操作流水总货值 [原字段 'product_amounts']
871
+ value_amt: FloatOrNone2Zero = Field(validation_alias="product_amounts")
872
+ # fmt: on
873
+
874
+
875
+ class SellerInventoryOperations(ResponseV1):
876
+ """卖家(本地/海外)仓库出入库操作流水信息"""
877
+
878
+ data: list[SellerInventoryOperation]
879
+
880
+
881
+ # . Seller Inventory Bin Record
882
+ class SellerInventoryBinRecord(BaseModel):
883
+ """卖家(本地/海外)仓库货架(仓位)出入库流水信息"""
884
+
885
+ # 仓库ID [原字段 'wid']
886
+ warehouse_id: int = Field(validation_alias="wid")
887
+ # 仓库名称 [原字段 'wh_name']
888
+ warehouse_name: str = Field(validation_alias="ware_house_name")
889
+ # 仓库货架ID [原字段 'whb_id']
890
+ bin_id: int = Field(validation_alias="whb_id")
891
+ # 仓库货架名称 [原字段 'whb_name']
892
+ bin_name: str = Field(validation_alias="whb_name")
893
+ # 仓库货架类型描述 [原字段 'whb_type_name']
894
+ bin_type_desc: str = Field(validation_alias="whb_type_name")
895
+ # 出入库单号 [原字段 'order_sn']
896
+ transaction_number: str = Field(validation_alias="order_sn")
897
+ # 出入库类型 [原字段 'type']
898
+ transaction_type: int = Field(validation_alias="type")
899
+ # 出入库类型描述 [原字段 'type_text']
900
+ transaction_type_desc: str = Field(validation_alias="type_text")
901
+ # 出入库备注
902
+ transaction_note: str = Field(validation_alias="remark")
903
+ # 出入库时间 (北京时间) [原字段 'opt_time']
904
+ transaction_time: str = Field(validation_alias="opt_time")
905
+ # 出入库数量 [原字段 'num']
906
+ transaction_qty: int = Field(validation_alias="num")
907
+ # 操作人ID [原字段 'opt_uid']
908
+ operator_id: int = Field(validation_alias="opt_uid")
909
+ # 操作人名称 [原字段 'opt_realname']
910
+ operator_name: str = Field(validation_alias="opt_realname")
911
+ # 领星店铺ID [原字段 'seller_id']
912
+ sid: int = Field(validation_alias="seller_id")
913
+ # 领星本地商品SKU [原字段 'sku']
914
+ lsku: str = Field(validation_alias="sku")
915
+ # 亚马逊FNSKU
916
+ fnsku: str
917
+ # 领星商品ID
918
+ product_id: int
919
+ # 领星商品名称
920
+ product_name: str
921
+
922
+
923
+ class SellerInventoryBinRecords(ResponseV1):
924
+ """卖家(本地/海外)仓库货架(仓位)出入库流水信息"""
925
+
926
+ data: list[SellerInventoryBinRecord]