airbyte-agent-shopify 0.1.0__tar.gz → 0.1.2__tar.gz

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 (61) hide show
  1. airbyte_agent_shopify-0.1.2/CHANGELOG.md +16 -0
  2. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/PKG-INFO +3 -3
  3. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/README.md +2 -2
  4. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/__init__.py +6 -6
  5. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py +3 -1
  6. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/pyproject.toml +1 -1
  7. airbyte_agent_shopify-0.1.0/CHANGELOG.md +0 -6
  8. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/.gitignore +0 -0
  9. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/REFERENCE.md +0 -0
  10. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/__init__.py +0 -0
  11. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/__init__.py +0 -0
  12. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/auth_strategies.py +0 -0
  13. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/auth_template.py +0 -0
  14. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/__init__.py +0 -0
  15. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/client.py +0 -0
  16. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/connector_model_loader.py +0 -0
  17. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/constants.py +0 -0
  18. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/exceptions.py +0 -0
  19. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/executor/__init__.py +0 -0
  20. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/executor/hosted_executor.py +0 -0
  21. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/executor/models.py +0 -0
  22. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/extensions.py +0 -0
  23. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http/__init__.py +0 -0
  24. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http/adapters/__init__.py +0 -0
  25. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http/adapters/httpx_adapter.py +0 -0
  26. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http/config.py +0 -0
  27. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http/exceptions.py +0 -0
  28. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http/protocols.py +0 -0
  29. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http/response.py +0 -0
  30. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/http_client.py +0 -0
  31. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/introspection.py +0 -0
  32. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/logging/__init__.py +0 -0
  33. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/logging/logger.py +0 -0
  34. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/logging/types.py +0 -0
  35. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/observability/__init__.py +0 -0
  36. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/observability/config.py +0 -0
  37. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/observability/models.py +0 -0
  38. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/observability/redactor.py +0 -0
  39. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/observability/session.py +0 -0
  40. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/performance/__init__.py +0 -0
  41. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/performance/instrumentation.py +0 -0
  42. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/performance/metrics.py +0 -0
  43. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/schema/__init__.py +0 -0
  44. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/schema/base.py +0 -0
  45. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/schema/components.py +0 -0
  46. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/schema/connector.py +0 -0
  47. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py +0 -0
  48. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py +0 -0
  49. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/schema/security.py +0 -0
  50. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/secrets.py +0 -0
  51. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/__init__.py +0 -0
  52. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/config.py +0 -0
  53. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/events.py +0 -0
  54. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/telemetry/tracker.py +0 -0
  55. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/types.py +0 -0
  56. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/utils.py +0 -0
  57. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/_vendored/connector_sdk/validation.py +0 -0
  58. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/connector.py +0 -0
  59. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/connector_model.py +0 -0
  60. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/models.py +65 -65
  61. {airbyte_agent_shopify-0.1.0 → airbyte_agent_shopify-0.1.2}/airbyte_agent_shopify/types.py +0 -0
@@ -0,0 +1,16 @@
1
+ # Shopify changelog
2
+
3
+ ## [0.1.2] - 2026-01-21
4
+ - Updated connector definition (YAML version 0.1.1)
5
+ - Source commit: c7dab975
6
+ - SDK version: 0.1.0
7
+
8
+ ## [0.1.1] - 2026-01-19
9
+ - Updated connector definition (YAML version 0.1.1)
10
+ - Source commit: 529cebb7
11
+ - SDK version: 0.1.0
12
+
13
+ ## [0.1.0] - 2026-01-17
14
+ - Updated connector definition (YAML version 0.1.1)
15
+ - Source commit: 7c6c8361
16
+ - SDK version: 0.1.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: airbyte-agent-shopify
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Airbyte Shopify Connector for AI platforms
5
5
  Project-URL: Homepage, https://github.com/airbytehq/airbyte-agent-connectors
6
6
  Project-URL: Documentation, https://docs.airbyte.com/ai-agents/
@@ -134,6 +134,6 @@ For the service's official API docs, see the [Shopify API reference](https://sho
134
134
 
135
135
  ## Version information
136
136
 
137
- - **Package version:** 0.1.0
137
+ - **Package version:** 0.1.2
138
138
  - **Connector version:** 0.1.1
139
- - **Generated with Connector SDK commit SHA:** 7c6c8361cca5a3b15328f803424a8e312281884c
139
+ - **Generated with Connector SDK commit SHA:** c7dab97573a377c99c730f5f0f2c02733d2b3161
@@ -101,6 +101,6 @@ For the service's official API docs, see the [Shopify API reference](https://sho
101
101
 
102
102
  ## Version information
103
103
 
104
- - **Package version:** 0.1.0
104
+ - **Package version:** 0.1.2
105
105
  - **Connector version:** 0.1.1
106
- - **Generated with Connector SDK commit SHA:** 7c6c8361cca5a3b15328f803424a8e312281884c
106
+ - **Generated with Connector SDK commit SHA:** c7dab97573a377c99c730f5f0f2c02733d2b3161
@@ -13,14 +13,14 @@ from .models import (
13
13
  CustomerAddressList,
14
14
  MarketingConsent,
15
15
  OrderAddress,
16
- Transaction,
17
- Refund,
18
16
  LineItem,
19
17
  Fulfillment,
18
+ Transaction,
19
+ Refund,
20
20
  Order,
21
21
  OrderList,
22
- ProductImage,
23
22
  ProductVariant,
23
+ ProductImage,
24
24
  Product,
25
25
  ProductList,
26
26
  ProductVariantList,
@@ -186,14 +186,14 @@ __all__ = [
186
186
  "CustomerAddressList",
187
187
  "MarketingConsent",
188
188
  "OrderAddress",
189
- "Transaction",
190
- "Refund",
191
189
  "LineItem",
192
190
  "Fulfillment",
191
+ "Transaction",
192
+ "Refund",
193
193
  "Order",
194
194
  "OrderList",
195
- "ProductImage",
196
195
  "ProductVariant",
196
+ "ProductImage",
197
197
  "Product",
198
198
  "ProductList",
199
199
  "ProductVariantList",
@@ -987,7 +987,9 @@ class LocalExecutor:
987
987
 
988
988
  # Substitute variables from params
989
989
  if "variables" in graphql_config and graphql_config["variables"]:
990
- body["variables"] = self._interpolate_variables(graphql_config["variables"], params, param_defaults)
990
+ variables = self._interpolate_variables(graphql_config["variables"], params, param_defaults)
991
+ # Filter out None values (optional fields not provided) - matches REST _extract_body() behavior
992
+ body["variables"] = {k: v for k, v in variables.items() if v is not None}
991
993
 
992
994
  # Add operation name if specified
993
995
  if "operationName" in graphql_config:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "airbyte-agent-shopify"
3
- version = "0.1.0"
3
+ version = "0.1.2"
4
4
  description = "Airbyte Shopify Connector for AI platforms"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -1,6 +0,0 @@
1
- # Shopify changelog
2
-
3
- ## [0.1.0] - 2026-01-17
4
- - Updated connector definition (YAML version 0.1.1)
5
- - Source commit: 7c6c8361
6
- - SDK version: 0.1.0
@@ -119,55 +119,6 @@ class OrderAddress(BaseModel):
119
119
  latitude: Union[float | None, Any] = Field(default=None)
120
120
  longitude: Union[float | None, Any] = Field(default=None)
121
121
 
122
- class Transaction(BaseModel):
123
- """An order transaction"""
124
- model_config = ConfigDict(extra="allow", populate_by_name=True)
125
-
126
- id: Union[int, Any] = Field(default=None)
127
- order_id: Union[int | None, Any] = Field(default=None)
128
- kind: Union[str | None, Any] = Field(default=None)
129
- gateway: Union[str | None, Any] = Field(default=None)
130
- status: Union[str | None, Any] = Field(default=None)
131
- message: Union[str | None, Any] = Field(default=None)
132
- created_at: Union[str | None, Any] = Field(default=None)
133
- test: Union[bool | None, Any] = Field(default=None)
134
- authorization: Union[str | None, Any] = Field(default=None)
135
- location_id: Union[int | None, Any] = Field(default=None)
136
- user_id: Union[int | None, Any] = Field(default=None)
137
- parent_id: Union[int | None, Any] = Field(default=None)
138
- processed_at: Union[str | None, Any] = Field(default=None)
139
- device_id: Union[int | None, Any] = Field(default=None)
140
- error_code: Union[str | None, Any] = Field(default=None)
141
- source_name: Union[str | None, Any] = Field(default=None)
142
- receipt: Union[dict[str, Any] | None, Any] = Field(default=None)
143
- currency_exchange_adjustment: Union[dict[str, Any] | None, Any] = Field(default=None)
144
- amount: Union[str | None, Any] = Field(default=None)
145
- currency: Union[str | None, Any] = Field(default=None)
146
- payment_id: Union[str | None, Any] = Field(default=None)
147
- total_unsettled_set: Union[dict[str, Any] | None, Any] = Field(default=None)
148
- manual_payment_gateway: Union[bool | None, Any] = Field(default=None)
149
- admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
150
-
151
- class Refund(BaseModel):
152
- """An order refund"""
153
- model_config = ConfigDict(extra="allow", populate_by_name=True)
154
-
155
- id: Union[int, Any] = Field(default=None)
156
- order_id: Union[int | None, Any] = Field(default=None)
157
- created_at: Union[str | None, Any] = Field(default=None)
158
- note: Union[str | None, Any] = Field(default=None)
159
- user_id: Union[int | None, Any] = Field(default=None)
160
- processed_at: Union[str | None, Any] = Field(default=None)
161
- restock: Union[bool | None, Any] = Field(default=None)
162
- duties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
163
- total_duties_set: Union[dict[str, Any] | None, Any] = Field(default=None)
164
- return_: Union[dict[str, Any] | None, Any] = Field(default=None, alias="return")
165
- refund_line_items: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
166
- transactions: Union[list[Transaction] | None, Any] = Field(default=None)
167
- order_adjustments: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
168
- admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
169
- refund_shipping_lines: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
170
-
171
122
  class LineItem(BaseModel):
172
123
  """LineItem type definition"""
173
124
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -225,6 +176,55 @@ class Fulfillment(BaseModel):
225
176
  name: Union[str | None, Any] = Field(default=None)
226
177
  admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
227
178
 
179
+ class Transaction(BaseModel):
180
+ """An order transaction"""
181
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
182
+
183
+ id: Union[int, Any] = Field(default=None)
184
+ order_id: Union[int | None, Any] = Field(default=None)
185
+ kind: Union[str | None, Any] = Field(default=None)
186
+ gateway: Union[str | None, Any] = Field(default=None)
187
+ status: Union[str | None, Any] = Field(default=None)
188
+ message: Union[str | None, Any] = Field(default=None)
189
+ created_at: Union[str | None, Any] = Field(default=None)
190
+ test: Union[bool | None, Any] = Field(default=None)
191
+ authorization: Union[str | None, Any] = Field(default=None)
192
+ location_id: Union[int | None, Any] = Field(default=None)
193
+ user_id: Union[int | None, Any] = Field(default=None)
194
+ parent_id: Union[int | None, Any] = Field(default=None)
195
+ processed_at: Union[str | None, Any] = Field(default=None)
196
+ device_id: Union[int | None, Any] = Field(default=None)
197
+ error_code: Union[str | None, Any] = Field(default=None)
198
+ source_name: Union[str | None, Any] = Field(default=None)
199
+ receipt: Union[dict[str, Any] | None, Any] = Field(default=None)
200
+ currency_exchange_adjustment: Union[dict[str, Any] | None, Any] = Field(default=None)
201
+ amount: Union[str | None, Any] = Field(default=None)
202
+ currency: Union[str | None, Any] = Field(default=None)
203
+ payment_id: Union[str | None, Any] = Field(default=None)
204
+ total_unsettled_set: Union[dict[str, Any] | None, Any] = Field(default=None)
205
+ manual_payment_gateway: Union[bool | None, Any] = Field(default=None)
206
+ admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
207
+
208
+ class Refund(BaseModel):
209
+ """An order refund"""
210
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
211
+
212
+ id: Union[int, Any] = Field(default=None)
213
+ order_id: Union[int | None, Any] = Field(default=None)
214
+ created_at: Union[str | None, Any] = Field(default=None)
215
+ note: Union[str | None, Any] = Field(default=None)
216
+ user_id: Union[int | None, Any] = Field(default=None)
217
+ processed_at: Union[str | None, Any] = Field(default=None)
218
+ restock: Union[bool | None, Any] = Field(default=None)
219
+ duties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
220
+ total_duties_set: Union[dict[str, Any] | None, Any] = Field(default=None)
221
+ return_: Union[dict[str, Any] | None, Any] = Field(default=None, alias="return")
222
+ refund_line_items: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
223
+ transactions: Union[list[Transaction] | None, Any] = Field(default=None)
224
+ order_adjustments: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
225
+ admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
226
+ refund_shipping_lines: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
227
+
228
228
  class Order(BaseModel):
229
229
  """A Shopify order"""
230
230
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -329,22 +329,6 @@ class OrderList(BaseModel):
329
329
 
330
330
  orders: Union[list[Order], Any] = Field(default=None)
331
331
 
332
- class ProductImage(BaseModel):
333
- """A product image"""
334
- model_config = ConfigDict(extra="allow", populate_by_name=True)
335
-
336
- id: Union[int, Any] = Field(default=None)
337
- product_id: Union[int | None, Any] = Field(default=None)
338
- position: Union[int | None, Any] = Field(default=None)
339
- created_at: Union[str | None, Any] = Field(default=None)
340
- updated_at: Union[str | None, Any] = Field(default=None)
341
- alt: Union[str | None, Any] = Field(default=None)
342
- width: Union[int | None, Any] = Field(default=None)
343
- height: Union[int | None, Any] = Field(default=None)
344
- src: Union[str | None, Any] = Field(default=None)
345
- variant_ids: Union[list[int] | None, Any] = Field(default=None)
346
- admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
347
-
348
332
  class ProductVariant(BaseModel):
349
333
  """A product variant"""
350
334
  model_config = ConfigDict(extra="allow", populate_by_name=True)
@@ -376,6 +360,22 @@ class ProductVariant(BaseModel):
376
360
  requires_shipping: Union[bool | None, Any] = Field(default=None)
377
361
  admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
378
362
 
363
+ class ProductImage(BaseModel):
364
+ """A product image"""
365
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
366
+
367
+ id: Union[int, Any] = Field(default=None)
368
+ product_id: Union[int | None, Any] = Field(default=None)
369
+ position: Union[int | None, Any] = Field(default=None)
370
+ created_at: Union[str | None, Any] = Field(default=None)
371
+ updated_at: Union[str | None, Any] = Field(default=None)
372
+ alt: Union[str | None, Any] = Field(default=None)
373
+ width: Union[int | None, Any] = Field(default=None)
374
+ height: Union[int | None, Any] = Field(default=None)
375
+ src: Union[str | None, Any] = Field(default=None)
376
+ variant_ids: Union[list[int] | None, Any] = Field(default=None)
377
+ admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
378
+
379
379
  class Product(BaseModel):
380
380
  """A Shopify product"""
381
381
  model_config = ConfigDict(extra="allow", populate_by_name=True)