convexity-api-client 0.21.0.dev332__py3-none-any.whl → 0.21.0.dev336__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.
Files changed (140) hide show
  1. convexity_api_client/api/v1/crm_create_sales_rep.py +186 -0
  2. convexity_api_client/api/v1/crm_delete_sales_rep.py +182 -0
  3. convexity_api_client/api/v1/crm_get_sales_rep.py +182 -0
  4. convexity_api_client/api/v1/crm_list_sales_reps.py +236 -0
  5. convexity_api_client/api/v1/crm_update_sales_rep.py +202 -0
  6. convexity_api_client/api/v1/inventory_assign_item_warehouse_location.py +206 -0
  7. convexity_api_client/api/v1/inventory_create_cost_list_vendor_assignment.py +202 -0
  8. convexity_api_client/api/v1/inventory_create_price_list_channel_assignment.py +202 -0
  9. convexity_api_client/api/v1/inventory_create_price_list_customer_assignment.py +202 -0
  10. convexity_api_client/api/v1/inventory_delete_cost_list_vendor_assignment.py +196 -0
  11. convexity_api_client/api/v1/inventory_delete_price_list_channel_assignment.py +196 -0
  12. convexity_api_client/api/v1/inventory_delete_price_list_customer_assignment.py +196 -0
  13. convexity_api_client/api/v1/inventory_list_cost_list_vendor_assignments.py +202 -0
  14. convexity_api_client/api/v1/inventory_list_item_cost_list_entries.py +182 -0
  15. convexity_api_client/api/v1/inventory_list_item_price_list_entries.py +182 -0
  16. convexity_api_client/api/v1/inventory_list_item_warehouse_locations.py +212 -0
  17. convexity_api_client/api/v1/inventory_list_price_list_channel_assignments.py +202 -0
  18. convexity_api_client/api/v1/inventory_list_price_list_customer_assignments.py +202 -0
  19. convexity_api_client/api/v1/inventory_list_warehouse_location_items.py +226 -0
  20. convexity_api_client/api/v1/inventory_update_cost_list_vendor_assignment.py +216 -0
  21. convexity_api_client/api/v1/inventory_update_price_list_channel_assignment.py +216 -0
  22. convexity_api_client/api/v1/inventory_update_price_list_customer_assignment.py +216 -0
  23. convexity_api_client/api/v1/purchasing_create_item_sourcing.py +190 -0
  24. convexity_api_client/api/v1/purchasing_deactivate_item_sourcing.py +182 -0
  25. convexity_api_client/api/v1/purchasing_get_item_sourcing_options.py +166 -0
  26. convexity_api_client/api/v1/purchasing_list_item_sourcing.py +382 -0
  27. convexity_api_client/api/v1/purchasing_update_item_sourcing.py +202 -0
  28. convexity_api_client/api/v1/purchasing_upsert_item_sourcing_cost.py +206 -0
  29. convexity_api_client/api/v1/sales_list_orders.py +20 -0
  30. convexity_api_client/api/v1/warehouse_workflow_cancel_pick_pack_ship.py +182 -0
  31. convexity_api_client/api/v1/warehouse_workflow_complete_pick_pack_ship_pack.py +202 -0
  32. convexity_api_client/api/v1/warehouse_workflow_complete_pick_pack_ship_pick.py +202 -0
  33. convexity_api_client/api/v1/warehouse_workflow_create_pick_pack_ship.py +186 -0
  34. convexity_api_client/api/v1/warehouse_workflow_generate_pick_pack_ship_pdf.py +188 -0
  35. convexity_api_client/api/v1/warehouse_workflow_get_pick_pack_ship.py +182 -0
  36. convexity_api_client/api/v1/warehouse_workflow_mark_pick_pack_ship_shipped.py +202 -0
  37. convexity_api_client/api/v1/warehouse_workflow_save_pick_pack_ship_shipment.py +202 -0
  38. convexity_api_client/models/__init__.py +134 -0
  39. convexity_api_client/models/adjust_stock_request.py +20 -8
  40. convexity_api_client/models/assign_inventory_item_location_request.py +108 -0
  41. convexity_api_client/models/assign_inventory_item_location_request_ext_data_type_0.py +47 -0
  42. convexity_api_client/models/bulk_upsert_customer_payload.py +20 -0
  43. convexity_api_client/models/bulk_upsert_sales_order_payload.py +40 -0
  44. convexity_api_client/models/complete_pick_pack_ship_pack_request.py +75 -0
  45. convexity_api_client/models/complete_pick_pack_ship_request.py +97 -0
  46. convexity_api_client/models/cost_list_entry_response.py +77 -0
  47. convexity_api_client/models/cost_list_vendor_assignment_response.py +149 -0
  48. convexity_api_client/models/cost_list_vendor_assignment_response_ext_data_type_0.py +47 -0
  49. convexity_api_client/models/cost_rule.py +53 -0
  50. convexity_api_client/models/cost_rule_response.py +22 -0
  51. convexity_api_client/models/cost_source_type.py +9 -0
  52. convexity_api_client/models/create_cost_list_request.py +4 -5
  53. convexity_api_client/models/create_cost_list_vendor_assignment_request.py +116 -0
  54. convexity_api_client/models/create_cost_list_vendor_assignment_request_ext_data_type_0.py +47 -0
  55. convexity_api_client/models/create_customer_request.py +20 -0
  56. convexity_api_client/models/create_item_sourcing_request.py +256 -0
  57. convexity_api_client/models/create_item_sourcing_request_ext_data_type_0.py +47 -0
  58. convexity_api_client/models/create_pick_pack_ship_request.py +153 -0
  59. convexity_api_client/models/create_price_list_channel_assignment_request.py +116 -0
  60. convexity_api_client/models/create_price_list_channel_assignment_request_ext_data_type_0.py +47 -0
  61. convexity_api_client/models/create_price_list_customer_assignment_request.py +116 -0
  62. convexity_api_client/models/create_price_list_customer_assignment_request_ext_data_type_0.py +47 -0
  63. convexity_api_client/models/create_price_list_request.py +4 -5
  64. convexity_api_client/models/create_sales_order_line_request.py +40 -8
  65. convexity_api_client/models/create_sales_order_request.py +40 -0
  66. convexity_api_client/models/create_sales_rep_request.py +181 -0
  67. convexity_api_client/models/create_sales_rep_request_ext_data_type_0.py +47 -0
  68. convexity_api_client/models/customer.py +53 -0
  69. convexity_api_client/models/customer_response.py +14 -0
  70. convexity_api_client/models/inventory_config.py +53 -0
  71. convexity_api_client/models/inventory_config_response.py +28 -0
  72. convexity_api_client/models/inventory_item.py +43 -0
  73. convexity_api_client/models/inventory_item_location.py +237 -0
  74. convexity_api_client/models/inventory_item_location_assignment_response.py +150 -0
  75. convexity_api_client/models/inventory_item_location_assignment_response_ext_data_type_0.py +47 -0
  76. convexity_api_client/models/inventory_item_type.py +0 -1
  77. convexity_api_client/models/item_sourcing.py +41 -0
  78. convexity_api_client/models/item_sourcing_item_option.py +107 -0
  79. convexity_api_client/models/item_sourcing_options_response.py +120 -0
  80. convexity_api_client/models/item_sourcing_response.py +360 -0
  81. convexity_api_client/models/item_sourcing_response_ext_data_type_0.py +47 -0
  82. convexity_api_client/models/item_sourcing_uom_option.py +77 -0
  83. convexity_api_client/models/item_sourcing_vendor_option.py +77 -0
  84. convexity_api_client/models/item_warehouse_location_response.py +248 -0
  85. convexity_api_client/models/list_cost_list_entries_response.py +83 -0
  86. convexity_api_client/models/list_cost_list_vendor_assignments_response.py +83 -0
  87. convexity_api_client/models/list_item_sourcing_response.py +83 -0
  88. convexity_api_client/models/list_item_warehouse_locations_response.py +83 -0
  89. convexity_api_client/models/list_price_list_channel_assignments_response.py +83 -0
  90. convexity_api_client/models/list_price_list_customer_assignments_response.py +83 -0
  91. convexity_api_client/models/list_price_list_entries_response.py +83 -0
  92. convexity_api_client/models/list_sales_reps_response.py +83 -0
  93. convexity_api_client/models/list_warehouse_location_items_response.py +83 -0
  94. convexity_api_client/models/mark_pick_pack_ship_shipped_request.py +84 -0
  95. convexity_api_client/models/pick_pack_ship_line_request.py +100 -0
  96. convexity_api_client/models/pick_pack_ship_packed_line_request.py +111 -0
  97. convexity_api_client/models/pick_pack_ship_picked_line_request.py +91 -0
  98. convexity_api_client/models/pick_pack_ship_response.py +111 -0
  99. convexity_api_client/models/price_list.py +41 -0
  100. convexity_api_client/models/price_list_channel_assignment_response.py +149 -0
  101. convexity_api_client/models/price_list_channel_assignment_response_ext_data_type_0.py +47 -0
  102. convexity_api_client/models/price_list_customer_assignment_response.py +149 -0
  103. convexity_api_client/models/price_list_customer_assignment_response_ext_data_type_0.py +47 -0
  104. convexity_api_client/models/price_list_entry_response.py +77 -0
  105. convexity_api_client/models/price_source_type.py +9 -0
  106. convexity_api_client/models/project.py +43 -0
  107. convexity_api_client/models/purchase_order_line.py +101 -0
  108. convexity_api_client/models/purchase_order_line_request.py +20 -8
  109. convexity_api_client/models/purchase_order_line_response.py +103 -0
  110. convexity_api_client/models/purchasing_list_item_sourcing_filter_operator_type_0.py +19 -0
  111. convexity_api_client/models/purchasing_list_item_sourcing_sort_direction_type_0.py +9 -0
  112. convexity_api_client/models/resolve_cost_response.py +22 -0
  113. convexity_api_client/models/resolve_price_response.py +20 -0
  114. convexity_api_client/models/sales_invoice_line.py +121 -0
  115. convexity_api_client/models/sales_invoice_line_request.py +40 -8
  116. convexity_api_client/models/sales_invoice_line_response.py +121 -0
  117. convexity_api_client/models/sales_order.py +73 -0
  118. convexity_api_client/models/sales_order_line.py +121 -0
  119. convexity_api_client/models/sales_order_line_response.py +123 -0
  120. convexity_api_client/models/sales_order_response.py +28 -0
  121. convexity_api_client/models/sales_rep.py +279 -0
  122. convexity_api_client/models/sales_rep_response.py +185 -0
  123. convexity_api_client/models/sales_rep_response_ext_data_type_0.py +47 -0
  124. convexity_api_client/models/save_pick_pack_ship_shipment_request.py +163 -0
  125. convexity_api_client/models/stock_balance.py +20 -8
  126. convexity_api_client/models/update_customer_request.py +20 -0
  127. convexity_api_client/models/update_item_sourcing_request.py +312 -0
  128. convexity_api_client/models/update_item_sourcing_request_ext_data_type_0.py +47 -0
  129. convexity_api_client/models/update_list_assignment_request.py +111 -0
  130. convexity_api_client/models/update_list_assignment_request_ext_data_type_0.py +47 -0
  131. convexity_api_client/models/update_sales_order_request.py +40 -0
  132. convexity_api_client/models/update_sales_rep_request.py +211 -0
  133. convexity_api_client/models/update_sales_rep_request_ext_data_type_0.py +47 -0
  134. convexity_api_client/models/upsert_inventory_config_request.py +40 -0
  135. convexity_api_client/models/upsert_item_sourcing_cost_request.py +62 -0
  136. convexity_api_client/models/warehouse_location.py +43 -0
  137. convexity_api_client/models/warehouse_location_item_response.py +160 -0
  138. {convexity_api_client-0.21.0.dev332.dist-info → convexity_api_client-0.21.0.dev336.dist-info}/METADATA +1 -1
  139. {convexity_api_client-0.21.0.dev332.dist-info → convexity_api_client-0.21.0.dev336.dist-info}/RECORD +140 -41
  140. {convexity_api_client-0.21.0.dev332.dist-info → convexity_api_client-0.21.0.dev336.dist-info}/WHEEL +1 -1
@@ -0,0 +1,185 @@
1
+ from __future__ import annotations
2
+
3
+ import datetime
4
+ from collections.abc import Mapping
5
+ from typing import TYPE_CHECKING, Any, TypeVar, cast
6
+
7
+ from attrs import define as _attrs_define
8
+ from attrs import field as _attrs_field
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.sales_rep_response_ext_data_type_0 import SalesRepResponseExtDataType0
12
+
13
+
14
+ T = TypeVar("T", bound="SalesRepResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class SalesRepResponse:
19
+ """
20
+ Attributes:
21
+ id (str):
22
+ project_id (str):
23
+ user_id (None | str):
24
+ code (str):
25
+ name (str):
26
+ email (None | str):
27
+ default_commission_rate (float | None | str):
28
+ is_active (bool):
29
+ ext_data (None | SalesRepResponseExtDataType0):
30
+ created_at (datetime.datetime):
31
+ updated_at (datetime.datetime):
32
+ """
33
+
34
+ id: str
35
+ project_id: str
36
+ user_id: None | str
37
+ code: str
38
+ name: str
39
+ email: None | str
40
+ default_commission_rate: float | None | str
41
+ is_active: bool
42
+ ext_data: None | SalesRepResponseExtDataType0
43
+ created_at: datetime.datetime
44
+ updated_at: datetime.datetime
45
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
46
+
47
+ def to_dict(self) -> dict[str, Any]:
48
+ from ..models.sales_rep_response_ext_data_type_0 import SalesRepResponseExtDataType0
49
+
50
+ id = self.id
51
+
52
+ project_id = self.project_id
53
+
54
+ user_id: None | str
55
+ user_id = self.user_id
56
+
57
+ code = self.code
58
+
59
+ name = self.name
60
+
61
+ email: None | str
62
+ email = self.email
63
+
64
+ default_commission_rate: float | None | str
65
+ default_commission_rate = self.default_commission_rate
66
+
67
+ is_active = self.is_active
68
+
69
+ ext_data: dict[str, Any] | None
70
+ if isinstance(self.ext_data, SalesRepResponseExtDataType0):
71
+ ext_data = self.ext_data.to_dict()
72
+ else:
73
+ ext_data = self.ext_data
74
+
75
+ created_at = self.created_at.isoformat()
76
+
77
+ updated_at = self.updated_at.isoformat()
78
+
79
+ field_dict: dict[str, Any] = {}
80
+ field_dict.update(self.additional_properties)
81
+ field_dict.update(
82
+ {
83
+ "id": id,
84
+ "project_id": project_id,
85
+ "user_id": user_id,
86
+ "code": code,
87
+ "name": name,
88
+ "email": email,
89
+ "default_commission_rate": default_commission_rate,
90
+ "is_active": is_active,
91
+ "ext_data": ext_data,
92
+ "created_at": created_at,
93
+ "updated_at": updated_at,
94
+ }
95
+ )
96
+
97
+ return field_dict
98
+
99
+ @classmethod
100
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
101
+ from ..models.sales_rep_response_ext_data_type_0 import SalesRepResponseExtDataType0
102
+
103
+ d = dict(src_dict)
104
+ id = d.pop("id")
105
+
106
+ project_id = d.pop("project_id")
107
+
108
+ def _parse_user_id(data: object) -> None | str:
109
+ if data is None:
110
+ return data
111
+ return cast(None | str, data)
112
+
113
+ user_id = _parse_user_id(d.pop("user_id"))
114
+
115
+ code = d.pop("code")
116
+
117
+ name = d.pop("name")
118
+
119
+ def _parse_email(data: object) -> None | str:
120
+ if data is None:
121
+ return data
122
+ return cast(None | str, data)
123
+
124
+ email = _parse_email(d.pop("email"))
125
+
126
+ def _parse_default_commission_rate(data: object) -> float | None | str:
127
+ if data is None:
128
+ return data
129
+ return cast(float | None | str, data)
130
+
131
+ default_commission_rate = _parse_default_commission_rate(d.pop("default_commission_rate"))
132
+
133
+ is_active = d.pop("is_active")
134
+
135
+ def _parse_ext_data(data: object) -> None | SalesRepResponseExtDataType0:
136
+ if data is None:
137
+ return data
138
+ try:
139
+ if not isinstance(data, dict):
140
+ raise TypeError()
141
+ ext_data_type_0 = SalesRepResponseExtDataType0.from_dict(data)
142
+
143
+ return ext_data_type_0
144
+ except (TypeError, ValueError, AttributeError, KeyError):
145
+ pass
146
+ return cast(None | SalesRepResponseExtDataType0, data)
147
+
148
+ ext_data = _parse_ext_data(d.pop("ext_data"))
149
+
150
+ created_at = datetime.datetime.fromisoformat(d.pop("created_at"))
151
+
152
+ updated_at = datetime.datetime.fromisoformat(d.pop("updated_at"))
153
+
154
+ sales_rep_response = cls(
155
+ id=id,
156
+ project_id=project_id,
157
+ user_id=user_id,
158
+ code=code,
159
+ name=name,
160
+ email=email,
161
+ default_commission_rate=default_commission_rate,
162
+ is_active=is_active,
163
+ ext_data=ext_data,
164
+ created_at=created_at,
165
+ updated_at=updated_at,
166
+ )
167
+
168
+ sales_rep_response.additional_properties = d
169
+ return sales_rep_response
170
+
171
+ @property
172
+ def additional_keys(self) -> list[str]:
173
+ return list(self.additional_properties.keys())
174
+
175
+ def __getitem__(self, key: str) -> Any:
176
+ return self.additional_properties[key]
177
+
178
+ def __setitem__(self, key: str, value: Any) -> None:
179
+ self.additional_properties[key] = value
180
+
181
+ def __delitem__(self, key: str) -> None:
182
+ del self.additional_properties[key]
183
+
184
+ def __contains__(self, key: str) -> bool:
185
+ return key in self.additional_properties
@@ -0,0 +1,47 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ T = TypeVar("T", bound="SalesRepResponseExtDataType0")
10
+
11
+
12
+ @_attrs_define
13
+ class SalesRepResponseExtDataType0:
14
+ """ """
15
+
16
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
17
+
18
+ def to_dict(self) -> dict[str, Any]:
19
+
20
+ field_dict: dict[str, Any] = {}
21
+ field_dict.update(self.additional_properties)
22
+
23
+ return field_dict
24
+
25
+ @classmethod
26
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
27
+ d = dict(src_dict)
28
+ sales_rep_response_ext_data_type_0 = cls()
29
+
30
+ sales_rep_response_ext_data_type_0.additional_properties = d
31
+ return sales_rep_response_ext_data_type_0
32
+
33
+ @property
34
+ def additional_keys(self) -> list[str]:
35
+ return list(self.additional_properties.keys())
36
+
37
+ def __getitem__(self, key: str) -> Any:
38
+ return self.additional_properties[key]
39
+
40
+ def __setitem__(self, key: str, value: Any) -> None:
41
+ self.additional_properties[key] = value
42
+
43
+ def __delitem__(self, key: str) -> None:
44
+ del self.additional_properties[key]
45
+
46
+ def __contains__(self, key: str) -> bool:
47
+ return key in self.additional_properties
@@ -0,0 +1,163 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="SavePickPackShipShipmentRequest")
12
+
13
+
14
+ @_attrs_define
15
+ class SavePickPackShipShipmentRequest:
16
+ """
17
+ Attributes:
18
+ from_location_id (str):
19
+ shipment_number (None | str | Unset):
20
+ carrier (None | str | Unset):
21
+ service_level (None | str | Unset):
22
+ tracking_ref (None | str | Unset):
23
+ notes (None | str | Unset):
24
+ """
25
+
26
+ from_location_id: str
27
+ shipment_number: None | str | Unset = UNSET
28
+ carrier: None | str | Unset = UNSET
29
+ service_level: None | str | Unset = UNSET
30
+ tracking_ref: None | str | Unset = UNSET
31
+ notes: None | str | Unset = UNSET
32
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
33
+
34
+ def to_dict(self) -> dict[str, Any]:
35
+ from_location_id = self.from_location_id
36
+
37
+ shipment_number: None | str | Unset
38
+ if isinstance(self.shipment_number, Unset):
39
+ shipment_number = UNSET
40
+ else:
41
+ shipment_number = self.shipment_number
42
+
43
+ carrier: None | str | Unset
44
+ if isinstance(self.carrier, Unset):
45
+ carrier = UNSET
46
+ else:
47
+ carrier = self.carrier
48
+
49
+ service_level: None | str | Unset
50
+ if isinstance(self.service_level, Unset):
51
+ service_level = UNSET
52
+ else:
53
+ service_level = self.service_level
54
+
55
+ tracking_ref: None | str | Unset
56
+ if isinstance(self.tracking_ref, Unset):
57
+ tracking_ref = UNSET
58
+ else:
59
+ tracking_ref = self.tracking_ref
60
+
61
+ notes: None | str | Unset
62
+ if isinstance(self.notes, Unset):
63
+ notes = UNSET
64
+ else:
65
+ notes = self.notes
66
+
67
+ field_dict: dict[str, Any] = {}
68
+ field_dict.update(self.additional_properties)
69
+ field_dict.update(
70
+ {
71
+ "from_location_id": from_location_id,
72
+ }
73
+ )
74
+ if shipment_number is not UNSET:
75
+ field_dict["shipment_number"] = shipment_number
76
+ if carrier is not UNSET:
77
+ field_dict["carrier"] = carrier
78
+ if service_level is not UNSET:
79
+ field_dict["service_level"] = service_level
80
+ if tracking_ref is not UNSET:
81
+ field_dict["tracking_ref"] = tracking_ref
82
+ if notes is not UNSET:
83
+ field_dict["notes"] = notes
84
+
85
+ return field_dict
86
+
87
+ @classmethod
88
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
89
+ d = dict(src_dict)
90
+ from_location_id = d.pop("from_location_id")
91
+
92
+ def _parse_shipment_number(data: object) -> None | str | Unset:
93
+ if data is None:
94
+ return data
95
+ if isinstance(data, Unset):
96
+ return data
97
+ return cast(None | str | Unset, data)
98
+
99
+ shipment_number = _parse_shipment_number(d.pop("shipment_number", UNSET))
100
+
101
+ def _parse_carrier(data: object) -> None | str | Unset:
102
+ if data is None:
103
+ return data
104
+ if isinstance(data, Unset):
105
+ return data
106
+ return cast(None | str | Unset, data)
107
+
108
+ carrier = _parse_carrier(d.pop("carrier", UNSET))
109
+
110
+ def _parse_service_level(data: object) -> None | str | Unset:
111
+ if data is None:
112
+ return data
113
+ if isinstance(data, Unset):
114
+ return data
115
+ return cast(None | str | Unset, data)
116
+
117
+ service_level = _parse_service_level(d.pop("service_level", UNSET))
118
+
119
+ def _parse_tracking_ref(data: object) -> None | str | Unset:
120
+ if data is None:
121
+ return data
122
+ if isinstance(data, Unset):
123
+ return data
124
+ return cast(None | str | Unset, data)
125
+
126
+ tracking_ref = _parse_tracking_ref(d.pop("tracking_ref", UNSET))
127
+
128
+ def _parse_notes(data: object) -> None | str | Unset:
129
+ if data is None:
130
+ return data
131
+ if isinstance(data, Unset):
132
+ return data
133
+ return cast(None | str | Unset, data)
134
+
135
+ notes = _parse_notes(d.pop("notes", UNSET))
136
+
137
+ save_pick_pack_ship_shipment_request = cls(
138
+ from_location_id=from_location_id,
139
+ shipment_number=shipment_number,
140
+ carrier=carrier,
141
+ service_level=service_level,
142
+ tracking_ref=tracking_ref,
143
+ notes=notes,
144
+ )
145
+
146
+ save_pick_pack_ship_shipment_request.additional_properties = d
147
+ return save_pick_pack_ship_shipment_request
148
+
149
+ @property
150
+ def additional_keys(self) -> list[str]:
151
+ return list(self.additional_properties.keys())
152
+
153
+ def __getitem__(self, key: str) -> Any:
154
+ return self.additional_properties[key]
155
+
156
+ def __setitem__(self, key: str, value: Any) -> None:
157
+ self.additional_properties[key] = value
158
+
159
+ def __delitem__(self, key: str) -> None:
160
+ del self.additional_properties[key]
161
+
162
+ def __contains__(self, key: str) -> bool:
163
+ return key in self.additional_properties
@@ -26,7 +26,6 @@ class StockBalance:
26
26
  id (str):
27
27
  project_id (str):
28
28
  inventory_item_id (str):
29
- location_id (str):
30
29
  on_hand_qty (float):
31
30
  on_order_qty (float):
32
31
  reserved_qty (float):
@@ -34,6 +33,7 @@ class StockBalance:
34
33
  in_transit_qty (float):
35
34
  created_at (datetime.datetime):
36
35
  updated_at (datetime.datetime):
36
+ location_id (None | str | Unset):
37
37
  last_transaction_at (datetime.datetime | None | Unset):
38
38
  ext_data (None | str | Unset):
39
39
  project (None | Project | Unset):
@@ -44,7 +44,6 @@ class StockBalance:
44
44
  id: str
45
45
  project_id: str
46
46
  inventory_item_id: str
47
- location_id: str
48
47
  on_hand_qty: float
49
48
  on_order_qty: float
50
49
  reserved_qty: float
@@ -52,6 +51,7 @@ class StockBalance:
52
51
  in_transit_qty: float
53
52
  created_at: datetime.datetime
54
53
  updated_at: datetime.datetime
54
+ location_id: None | str | Unset = UNSET
55
55
  last_transaction_at: datetime.datetime | None | Unset = UNSET
56
56
  ext_data: None | str | Unset = UNSET
57
57
  project: None | Project | Unset = UNSET
@@ -70,8 +70,6 @@ class StockBalance:
70
70
 
71
71
  inventory_item_id = self.inventory_item_id
72
72
 
73
- location_id = self.location_id
74
-
75
73
  on_hand_qty = self.on_hand_qty
76
74
 
77
75
  on_order_qty = self.on_order_qty
@@ -86,6 +84,12 @@ class StockBalance:
86
84
 
87
85
  updated_at = self.updated_at.isoformat()
88
86
 
87
+ location_id: None | str | Unset
88
+ if isinstance(self.location_id, Unset):
89
+ location_id = UNSET
90
+ else:
91
+ location_id = self.location_id
92
+
89
93
  last_transaction_at: None | str | Unset
90
94
  if isinstance(self.last_transaction_at, Unset):
91
95
  last_transaction_at = UNSET
@@ -131,7 +135,6 @@ class StockBalance:
131
135
  "id": id,
132
136
  "project_id": project_id,
133
137
  "inventory_item_id": inventory_item_id,
134
- "location_id": location_id,
135
138
  "on_hand_qty": on_hand_qty,
136
139
  "on_order_qty": on_order_qty,
137
140
  "reserved_qty": reserved_qty,
@@ -141,6 +144,8 @@ class StockBalance:
141
144
  "updated_at": updated_at,
142
145
  }
143
146
  )
147
+ if location_id is not UNSET:
148
+ field_dict["location_id"] = location_id
144
149
  if last_transaction_at is not UNSET:
145
150
  field_dict["last_transaction_at"] = last_transaction_at
146
151
  if ext_data is not UNSET:
@@ -167,8 +172,6 @@ class StockBalance:
167
172
 
168
173
  inventory_item_id = d.pop("inventory_item_id")
169
174
 
170
- location_id = d.pop("location_id")
171
-
172
175
  on_hand_qty = d.pop("on_hand_qty")
173
176
 
174
177
  on_order_qty = d.pop("on_order_qty")
@@ -183,6 +186,15 @@ class StockBalance:
183
186
 
184
187
  updated_at = datetime.datetime.fromisoformat(d.pop("updated_at"))
185
188
 
189
+ def _parse_location_id(data: object) -> None | str | Unset:
190
+ if data is None:
191
+ return data
192
+ if isinstance(data, Unset):
193
+ return data
194
+ return cast(None | str | Unset, data)
195
+
196
+ location_id = _parse_location_id(d.pop("location_id", UNSET))
197
+
186
198
  def _parse_last_transaction_at(data: object) -> datetime.datetime | None | Unset:
187
199
  if data is None:
188
200
  return data
@@ -264,7 +276,6 @@ class StockBalance:
264
276
  id=id,
265
277
  project_id=project_id,
266
278
  inventory_item_id=inventory_item_id,
267
- location_id=location_id,
268
279
  on_hand_qty=on_hand_qty,
269
280
  on_order_qty=on_order_qty,
270
281
  reserved_qty=reserved_qty,
@@ -272,6 +283,7 @@ class StockBalance:
272
283
  in_transit_qty=in_transit_qty,
273
284
  created_at=created_at,
274
285
  updated_at=updated_at,
286
+ location_id=location_id,
275
287
  last_transaction_at=last_transaction_at,
276
288
  ext_data=ext_data,
277
289
  project=project,
@@ -24,6 +24,7 @@ class UpdateCustomerRequest:
24
24
  phone (None | str | Unset):
25
25
  currency (None | str | Unset):
26
26
  payment_term_id (None | str | Unset):
27
+ sales_rep_id (None | str | Unset):
27
28
  default_billing_address_entry_id (None | str | Unset):
28
29
  default_shipping_address_entry_id (None | str | Unset):
29
30
  credit_limit (float | None | Unset):
@@ -36,6 +37,7 @@ class UpdateCustomerRequest:
36
37
  phone: None | str | Unset = UNSET
37
38
  currency: None | str | Unset = UNSET
38
39
  payment_term_id: None | str | Unset = UNSET
40
+ sales_rep_id: None | str | Unset = UNSET
39
41
  default_billing_address_entry_id: None | str | Unset = UNSET
40
42
  default_shipping_address_entry_id: None | str | Unset = UNSET
41
43
  credit_limit: float | None | Unset = UNSET
@@ -76,6 +78,12 @@ class UpdateCustomerRequest:
76
78
  else:
77
79
  payment_term_id = self.payment_term_id
78
80
 
81
+ sales_rep_id: None | str | Unset
82
+ if isinstance(self.sales_rep_id, Unset):
83
+ sales_rep_id = UNSET
84
+ else:
85
+ sales_rep_id = self.sales_rep_id
86
+
79
87
  default_billing_address_entry_id: None | str | Unset
80
88
  if isinstance(self.default_billing_address_entry_id, Unset):
81
89
  default_billing_address_entry_id = UNSET
@@ -121,6 +129,8 @@ class UpdateCustomerRequest:
121
129
  field_dict["currency"] = currency
122
130
  if payment_term_id is not UNSET:
123
131
  field_dict["payment_term_id"] = payment_term_id
132
+ if sales_rep_id is not UNSET:
133
+ field_dict["sales_rep_id"] = sales_rep_id
124
134
  if default_billing_address_entry_id is not UNSET:
125
135
  field_dict["default_billing_address_entry_id"] = default_billing_address_entry_id
126
136
  if default_shipping_address_entry_id is not UNSET:
@@ -185,6 +195,15 @@ class UpdateCustomerRequest:
185
195
 
186
196
  payment_term_id = _parse_payment_term_id(d.pop("payment_term_id", UNSET))
187
197
 
198
+ def _parse_sales_rep_id(data: object) -> None | str | Unset:
199
+ if data is None:
200
+ return data
201
+ if isinstance(data, Unset):
202
+ return data
203
+ return cast(None | str | Unset, data)
204
+
205
+ sales_rep_id = _parse_sales_rep_id(d.pop("sales_rep_id", UNSET))
206
+
188
207
  def _parse_default_billing_address_entry_id(data: object) -> None | str | Unset:
189
208
  if data is None:
190
209
  return data
@@ -248,6 +267,7 @@ class UpdateCustomerRequest:
248
267
  phone=phone,
249
268
  currency=currency,
250
269
  payment_term_id=payment_term_id,
270
+ sales_rep_id=sales_rep_id,
251
271
  default_billing_address_entry_id=default_billing_address_entry_id,
252
272
  default_shipping_address_entry_id=default_shipping_address_entry_id,
253
273
  credit_limit=credit_limit,