airbyte-agent-shopify 0.1.26__py3-none-any.whl → 0.1.28__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.
- airbyte_agent_shopify/__init__.py +6 -6
- airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py +15 -10
- airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py +22 -2
- airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py +3 -2
- airbyte_agent_shopify/_vendored/connector_sdk/types.py +1 -1
- airbyte_agent_shopify/_vendored/connector_sdk/validation.py +1 -1
- airbyte_agent_shopify/connector.py +3 -3
- airbyte_agent_shopify/connector_model.py +3 -6
- airbyte_agent_shopify/models.py +65 -67
- {airbyte_agent_shopify-0.1.26.dist-info → airbyte_agent_shopify-0.1.28.dist-info}/METADATA +5 -6
- {airbyte_agent_shopify-0.1.26.dist-info → airbyte_agent_shopify-0.1.28.dist-info}/RECORD +12 -12
- {airbyte_agent_shopify-0.1.26.dist-info → airbyte_agent_shopify-0.1.28.dist-info}/WHEEL +0 -0
|
@@ -13,14 +13,14 @@ from .models import (
|
|
|
13
13
|
CustomerAddressList,
|
|
14
14
|
MarketingConsent,
|
|
15
15
|
OrderAddress,
|
|
16
|
-
LineItem,
|
|
17
|
-
Fulfillment,
|
|
18
16
|
Transaction,
|
|
19
17
|
Refund,
|
|
18
|
+
LineItem,
|
|
19
|
+
Fulfillment,
|
|
20
20
|
Order,
|
|
21
21
|
OrderList,
|
|
22
|
-
ProductImage,
|
|
23
22
|
ProductVariant,
|
|
23
|
+
ProductImage,
|
|
24
24
|
Product,
|
|
25
25
|
ProductList,
|
|
26
26
|
ProductVariantList,
|
|
@@ -187,14 +187,14 @@ __all__ = [
|
|
|
187
187
|
"CustomerAddressList",
|
|
188
188
|
"MarketingConsent",
|
|
189
189
|
"OrderAddress",
|
|
190
|
-
"LineItem",
|
|
191
|
-
"Fulfillment",
|
|
192
190
|
"Transaction",
|
|
193
191
|
"Refund",
|
|
192
|
+
"LineItem",
|
|
193
|
+
"Fulfillment",
|
|
194
194
|
"Order",
|
|
195
195
|
"OrderList",
|
|
196
|
-
"ProductImage",
|
|
197
196
|
"ProductVariant",
|
|
197
|
+
"ProductImage",
|
|
198
198
|
"Product",
|
|
199
199
|
"ProductList",
|
|
200
200
|
"ProductVariantList",
|
|
@@ -546,23 +546,25 @@ class LocalExecutor:
|
|
|
546
546
|
return ExecutionResult(success=False, data={}, error=str(e))
|
|
547
547
|
|
|
548
548
|
async def check(self) -> ExecutionResult:
|
|
549
|
-
"""Perform a health check by running a lightweight
|
|
549
|
+
"""Perform a health check by running a lightweight operation.
|
|
550
550
|
|
|
551
551
|
Finds the operation marked with preferred_for_check=True, or falls back
|
|
552
|
-
to the first list operation. Executes it
|
|
553
|
-
|
|
552
|
+
to the first list operation. Executes it to verify connectivity and credentials.
|
|
553
|
+
For list operations, uses limit=1 to minimize data transfer.
|
|
554
554
|
|
|
555
555
|
Returns:
|
|
556
556
|
ExecutionResult with data containing status, error, and checked operation details.
|
|
557
557
|
"""
|
|
558
558
|
check_entity = None
|
|
559
559
|
check_endpoint = None
|
|
560
|
+
check_action = None
|
|
560
561
|
|
|
561
|
-
# Look for preferred check operation
|
|
562
|
+
# Look for preferred check operation (can be any action type)
|
|
562
563
|
for (ent_name, op_action), endpoint in self._operation_index.items():
|
|
563
564
|
if getattr(endpoint, "preferred_for_check", False):
|
|
564
565
|
check_entity = ent_name
|
|
565
566
|
check_endpoint = endpoint
|
|
567
|
+
check_action = op_action
|
|
566
568
|
break
|
|
567
569
|
|
|
568
570
|
# Fallback to first list operation
|
|
@@ -571,18 +573,19 @@ class LocalExecutor:
|
|
|
571
573
|
if op_action == Action.LIST:
|
|
572
574
|
check_entity = ent_name
|
|
573
575
|
check_endpoint = endpoint
|
|
576
|
+
check_action = op_action
|
|
574
577
|
break
|
|
575
578
|
|
|
576
|
-
if check_endpoint is None or check_entity is None:
|
|
579
|
+
if check_endpoint is None or check_entity is None or check_action is None:
|
|
577
580
|
return ExecutionResult(
|
|
578
581
|
success=True,
|
|
579
582
|
data={
|
|
580
583
|
"status": "skipped",
|
|
581
|
-
"error": "No
|
|
584
|
+
"error": "No operation available for health check",
|
|
582
585
|
},
|
|
583
586
|
)
|
|
584
587
|
|
|
585
|
-
# Find the standard handler to execute the
|
|
588
|
+
# Find the standard handler to execute the operation
|
|
586
589
|
standard_handler = next(
|
|
587
590
|
(h for h in self._operation_handlers if isinstance(h, _StandardOperationHandler)),
|
|
588
591
|
None,
|
|
@@ -598,13 +601,15 @@ class LocalExecutor:
|
|
|
598
601
|
)
|
|
599
602
|
|
|
600
603
|
try:
|
|
601
|
-
|
|
604
|
+
# Use limit=1 for list operations to minimize data transfer
|
|
605
|
+
params = {"limit": 1} if check_action == Action.LIST else {}
|
|
606
|
+
await standard_handler.execute_operation(check_entity, check_action, params)
|
|
602
607
|
return ExecutionResult(
|
|
603
608
|
success=True,
|
|
604
609
|
data={
|
|
605
610
|
"status": "healthy",
|
|
606
611
|
"checked_entity": check_entity,
|
|
607
|
-
"checked_action":
|
|
612
|
+
"checked_action": check_action.value,
|
|
608
613
|
},
|
|
609
614
|
)
|
|
610
615
|
except Exception as e:
|
|
@@ -614,7 +619,7 @@ class LocalExecutor:
|
|
|
614
619
|
"status": "unhealthy",
|
|
615
620
|
"error": str(e),
|
|
616
621
|
"checked_entity": check_entity,
|
|
617
|
-
"checked_action":
|
|
622
|
+
"checked_action": check_action.value,
|
|
618
623
|
},
|
|
619
624
|
error=str(e),
|
|
620
625
|
)
|
|
@@ -182,12 +182,25 @@ class CacheEntityConfig(BaseModel):
|
|
|
182
182
|
return self.x_airbyte_name or self.entity
|
|
183
183
|
|
|
184
184
|
|
|
185
|
+
class ReplicationConfigPropertyItems(BaseModel):
|
|
186
|
+
"""
|
|
187
|
+
Items definition for array-type replication configuration fields.
|
|
188
|
+
|
|
189
|
+
Defines the schema for items in an array-type replication config property.
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
193
|
+
|
|
194
|
+
type: str
|
|
195
|
+
|
|
196
|
+
|
|
185
197
|
class ReplicationConfigProperty(BaseModel):
|
|
186
198
|
"""
|
|
187
199
|
Property definition for replication configuration fields.
|
|
188
200
|
|
|
189
201
|
Defines a single field in the replication configuration with its type,
|
|
190
|
-
description, and optional default value.
|
|
202
|
+
description, and optional default value. Supports both simple types
|
|
203
|
+
(string, integer, boolean) and array types.
|
|
191
204
|
|
|
192
205
|
Example YAML usage:
|
|
193
206
|
x-airbyte-replication-config:
|
|
@@ -197,6 +210,12 @@ class ReplicationConfigProperty(BaseModel):
|
|
|
197
210
|
title: Start Date
|
|
198
211
|
description: UTC date and time from which to replicate data
|
|
199
212
|
format: date-time
|
|
213
|
+
account_ids:
|
|
214
|
+
type: array
|
|
215
|
+
title: Account IDs
|
|
216
|
+
description: List of account IDs to replicate
|
|
217
|
+
items:
|
|
218
|
+
type: string
|
|
200
219
|
"""
|
|
201
220
|
|
|
202
221
|
model_config = ConfigDict(populate_by_name=True, extra="forbid")
|
|
@@ -205,8 +224,9 @@ class ReplicationConfigProperty(BaseModel):
|
|
|
205
224
|
title: str | None = None
|
|
206
225
|
description: str | None = None
|
|
207
226
|
format: str | None = None
|
|
208
|
-
default: str | int | float | bool | None = None
|
|
227
|
+
default: str | int | float | bool | list | None = None
|
|
209
228
|
enum: list[str] | None = None
|
|
229
|
+
items: ReplicationConfigPropertyItems | None = None
|
|
210
230
|
|
|
211
231
|
|
|
212
232
|
class ReplicationConfig(BaseModel):
|
|
@@ -90,9 +90,10 @@ class Operation(BaseModel):
|
|
|
90
90
|
None,
|
|
91
91
|
alias="x-airbyte-preferred-for-check",
|
|
92
92
|
description=(
|
|
93
|
-
"Mark this
|
|
93
|
+
"Mark this operation as the preferred operation for health checks. "
|
|
94
94
|
"When the CHECK action is executed, this operation will be used instead of "
|
|
95
|
-
"falling back to the first available list operation.
|
|
95
|
+
"falling back to the first available list operation. The operation's actual "
|
|
96
|
+
"action type (get, list, etc.) will be respected. Choose a lightweight, "
|
|
96
97
|
"always-available endpoint (e.g., users, accounts)."
|
|
97
98
|
),
|
|
98
99
|
)
|
|
@@ -239,7 +239,7 @@ class EndpointDefinition(BaseModel):
|
|
|
239
239
|
# Health check support (Airbyte extension)
|
|
240
240
|
preferred_for_check: bool = Field(
|
|
241
241
|
False,
|
|
242
|
-
description="Mark this
|
|
242
|
+
description="Mark this operation as preferred for health checks (from x-airbyte-preferred-for-check extension)",
|
|
243
243
|
)
|
|
244
244
|
|
|
245
245
|
|
|
@@ -959,7 +959,7 @@ def validate_connector_readiness(connector_dir: str | Path) -> Dict[str, Any]:
|
|
|
959
959
|
if not has_preferred_check:
|
|
960
960
|
readiness_warnings.append(
|
|
961
961
|
"No operation has x-airbyte-preferred-for-check: true. "
|
|
962
|
-
"Add this extension to a lightweight
|
|
962
|
+
"Add this extension to a lightweight operation (e.g., users.list or accounts.get) "
|
|
963
963
|
"to enable reliable health checks."
|
|
964
964
|
)
|
|
965
965
|
|
|
@@ -180,7 +180,7 @@ class ShopifyConnector:
|
|
|
180
180
|
"""
|
|
181
181
|
|
|
182
182
|
connector_name = "shopify"
|
|
183
|
-
connector_version = "0.1.
|
|
183
|
+
connector_version = "0.1.5"
|
|
184
184
|
vendored_sdk_version = "0.1.0" # Version of vendored connector-sdk
|
|
185
185
|
|
|
186
186
|
# Map of (entity, action) -> needs_envelope for envelope wrapping decision
|
|
@@ -321,7 +321,7 @@ class ShopifyConnector:
|
|
|
321
321
|
Example: lambda tokens: save_to_database(tokens) shop: Your Shopify store name (e.g., 'my-store' from my-store.myshopify.com)
|
|
322
322
|
Examples:
|
|
323
323
|
# Local mode (direct API calls)
|
|
324
|
-
connector = ShopifyConnector(auth_config=ShopifyAuthConfig(api_key="..."
|
|
324
|
+
connector = ShopifyConnector(auth_config=ShopifyAuthConfig(api_key="..."))
|
|
325
325
|
# Hosted mode with explicit connector_id (no lookup needed)
|
|
326
326
|
connector = ShopifyConnector(
|
|
327
327
|
airbyte_client_id="client_abc123",
|
|
@@ -1117,7 +1117,7 @@ class ShopifyConnector:
|
|
|
1117
1117
|
external_user_id="my-workspace",
|
|
1118
1118
|
airbyte_client_id="client_abc",
|
|
1119
1119
|
airbyte_client_secret="secret_xyz",
|
|
1120
|
-
auth_config=ShopifyAuthConfig(api_key="..."
|
|
1120
|
+
auth_config=ShopifyAuthConfig(api_key="..."),
|
|
1121
1121
|
)
|
|
1122
1122
|
|
|
1123
1123
|
# Use the connector
|
|
@@ -26,7 +26,7 @@ from uuid import (
|
|
|
26
26
|
ShopifyConnectorModel: ConnectorModel = ConnectorModel(
|
|
27
27
|
id=UUID('9da77001-af33-4bcd-be46-6252bf9342b9'),
|
|
28
28
|
name='shopify',
|
|
29
|
-
version='0.1.
|
|
29
|
+
version='0.1.5',
|
|
30
30
|
base_url='https://{shop}.myshopify.com/admin/api/2025-01',
|
|
31
31
|
auth=AuthConfig(
|
|
32
32
|
type=AuthType.API_KEY,
|
|
@@ -34,18 +34,15 @@ ShopifyConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
34
34
|
user_config_spec=AirbyteAuthConfig(
|
|
35
35
|
title='Access Token Authentication',
|
|
36
36
|
type='object',
|
|
37
|
-
required=['api_key'
|
|
37
|
+
required=['api_key'],
|
|
38
38
|
properties={
|
|
39
39
|
'api_key': AuthConfigFieldSpec(
|
|
40
40
|
title='Access Token',
|
|
41
41
|
description='Your Shopify Admin API access token',
|
|
42
42
|
),
|
|
43
|
-
'shop': AuthConfigFieldSpec(
|
|
44
|
-
title='Shop Name',
|
|
45
|
-
description="Your Shopify store name (e.g., 'my-store' from my-store.myshopify.com)",
|
|
46
|
-
),
|
|
47
43
|
},
|
|
48
44
|
auth_mapping={'api_key': '${api_key}'},
|
|
45
|
+
replication_auth_key_mapping={'credentials.access_token': 'api_key'},
|
|
49
46
|
),
|
|
50
47
|
),
|
|
51
48
|
entities=[
|
airbyte_agent_shopify/models.py
CHANGED
|
@@ -19,8 +19,6 @@ class ShopifyAuthConfig(BaseModel):
|
|
|
19
19
|
|
|
20
20
|
api_key: str
|
|
21
21
|
"""Your Shopify Admin API access token"""
|
|
22
|
-
shop: str
|
|
23
|
-
"""Your Shopify store name (e.g., 'my-store' from my-store.myshopify.com)"""
|
|
24
22
|
|
|
25
23
|
# ===== RESPONSE TYPE DEFINITIONS (PYDANTIC) =====
|
|
26
24
|
|
|
@@ -119,6 +117,55 @@ class OrderAddress(BaseModel):
|
|
|
119
117
|
latitude: Union[float | None, Any] = Field(default=None)
|
|
120
118
|
longitude: Union[float | None, Any] = Field(default=None)
|
|
121
119
|
|
|
120
|
+
class Transaction(BaseModel):
|
|
121
|
+
"""An order transaction"""
|
|
122
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
123
|
+
|
|
124
|
+
id: Union[int, Any] = Field(default=None)
|
|
125
|
+
order_id: Union[int | None, Any] = Field(default=None)
|
|
126
|
+
kind: Union[str | None, Any] = Field(default=None)
|
|
127
|
+
gateway: Union[str | None, Any] = Field(default=None)
|
|
128
|
+
status: Union[str | None, Any] = Field(default=None)
|
|
129
|
+
message: Union[str | None, Any] = Field(default=None)
|
|
130
|
+
created_at: Union[str | None, Any] = Field(default=None)
|
|
131
|
+
test: Union[bool | None, Any] = Field(default=None)
|
|
132
|
+
authorization: Union[str | None, Any] = Field(default=None)
|
|
133
|
+
location_id: Union[int | None, Any] = Field(default=None)
|
|
134
|
+
user_id: Union[int | None, Any] = Field(default=None)
|
|
135
|
+
parent_id: Union[int | None, Any] = Field(default=None)
|
|
136
|
+
processed_at: Union[str | None, Any] = Field(default=None)
|
|
137
|
+
device_id: Union[int | None, Any] = Field(default=None)
|
|
138
|
+
error_code: Union[str | None, Any] = Field(default=None)
|
|
139
|
+
source_name: Union[str | None, Any] = Field(default=None)
|
|
140
|
+
receipt: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
141
|
+
currency_exchange_adjustment: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
142
|
+
amount: Union[str | None, Any] = Field(default=None)
|
|
143
|
+
currency: Union[str | None, Any] = Field(default=None)
|
|
144
|
+
payment_id: Union[str | None, Any] = Field(default=None)
|
|
145
|
+
total_unsettled_set: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
146
|
+
manual_payment_gateway: Union[bool | None, Any] = Field(default=None)
|
|
147
|
+
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
148
|
+
|
|
149
|
+
class Refund(BaseModel):
|
|
150
|
+
"""An order refund"""
|
|
151
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
152
|
+
|
|
153
|
+
id: Union[int, Any] = Field(default=None)
|
|
154
|
+
order_id: Union[int | None, Any] = Field(default=None)
|
|
155
|
+
created_at: Union[str | None, Any] = Field(default=None)
|
|
156
|
+
note: Union[str | None, Any] = Field(default=None)
|
|
157
|
+
user_id: Union[int | None, Any] = Field(default=None)
|
|
158
|
+
processed_at: Union[str | None, Any] = Field(default=None)
|
|
159
|
+
restock: Union[bool | None, Any] = Field(default=None)
|
|
160
|
+
duties: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
161
|
+
total_duties_set: Union[dict[str, Any] | None, Any] = Field(default=None)
|
|
162
|
+
return_: Union[dict[str, Any] | None, Any] = Field(default=None, alias="return")
|
|
163
|
+
refund_line_items: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
164
|
+
transactions: Union[list[Transaction] | None, Any] = Field(default=None)
|
|
165
|
+
order_adjustments: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
166
|
+
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
167
|
+
refund_shipping_lines: Union[list[dict[str, Any]] | None, Any] = Field(default=None)
|
|
168
|
+
|
|
122
169
|
class LineItem(BaseModel):
|
|
123
170
|
"""LineItem type definition"""
|
|
124
171
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -176,55 +223,6 @@ class Fulfillment(BaseModel):
|
|
|
176
223
|
name: Union[str | None, Any] = Field(default=None)
|
|
177
224
|
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
178
225
|
|
|
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
226
|
class Order(BaseModel):
|
|
229
227
|
"""A Shopify order"""
|
|
230
228
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -329,22 +327,6 @@ class OrderList(BaseModel):
|
|
|
329
327
|
|
|
330
328
|
orders: Union[list[Order], Any] = Field(default=None)
|
|
331
329
|
|
|
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
330
|
class ProductVariant(BaseModel):
|
|
349
331
|
"""A product variant"""
|
|
350
332
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -376,6 +358,22 @@ class ProductVariant(BaseModel):
|
|
|
376
358
|
requires_shipping: Union[bool | None, Any] = Field(default=None)
|
|
377
359
|
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
378
360
|
|
|
361
|
+
class ProductImage(BaseModel):
|
|
362
|
+
"""A product image"""
|
|
363
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
364
|
+
|
|
365
|
+
id: Union[int, Any] = Field(default=None)
|
|
366
|
+
product_id: Union[int | None, Any] = Field(default=None)
|
|
367
|
+
position: Union[int | None, Any] = Field(default=None)
|
|
368
|
+
created_at: Union[str | None, Any] = Field(default=None)
|
|
369
|
+
updated_at: Union[str | None, Any] = Field(default=None)
|
|
370
|
+
alt: Union[str | None, Any] = Field(default=None)
|
|
371
|
+
width: Union[int | None, Any] = Field(default=None)
|
|
372
|
+
height: Union[int | None, Any] = Field(default=None)
|
|
373
|
+
src: Union[str | None, Any] = Field(default=None)
|
|
374
|
+
variant_ids: Union[list[int] | None, Any] = Field(default=None)
|
|
375
|
+
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
376
|
+
|
|
379
377
|
class Product(BaseModel):
|
|
380
378
|
"""A Shopify product"""
|
|
381
379
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: airbyte-agent-shopify
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.28
|
|
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/
|
|
@@ -87,8 +87,7 @@ from airbyte_agent_shopify.models import ShopifyAuthConfig
|
|
|
87
87
|
|
|
88
88
|
connector = ShopifyConnector(
|
|
89
89
|
auth_config=ShopifyAuthConfig(
|
|
90
|
-
api_key="<Your Shopify Admin API access token>"
|
|
91
|
-
shop="<Your Shopify store name (e.g., 'my-store' from my-store.myshopify.com)>"
|
|
90
|
+
api_key="<Your Shopify Admin API access token>"
|
|
92
91
|
)
|
|
93
92
|
)
|
|
94
93
|
|
|
@@ -171,7 +170,7 @@ See the official [Shopify API reference](https://shopify.dev/docs/api/admin-rest
|
|
|
171
170
|
|
|
172
171
|
## Version information
|
|
173
172
|
|
|
174
|
-
- **Package version:** 0.1.
|
|
175
|
-
- **Connector version:** 0.1.
|
|
176
|
-
- **Generated with Connector SDK commit SHA:**
|
|
173
|
+
- **Package version:** 0.1.28
|
|
174
|
+
- **Connector version:** 0.1.5
|
|
175
|
+
- **Generated with Connector SDK commit SHA:** 1fc2ac286cff08133bc2a07f7181779928a3461b
|
|
177
176
|
- **Changelog:** [View changelog](https://github.com/airbytehq/airbyte-agent-connectors/blob/main/connectors/shopify/CHANGELOG.md)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
airbyte_agent_shopify/__init__.py,sha256=
|
|
2
|
-
airbyte_agent_shopify/connector.py,sha256=
|
|
3
|
-
airbyte_agent_shopify/connector_model.py,sha256=
|
|
4
|
-
airbyte_agent_shopify/models.py,sha256=
|
|
1
|
+
airbyte_agent_shopify/__init__.py,sha256=AnxJ1bCmtvzFScth8xadz9lJKQO5Ea641JfeSlUxGk0,9711
|
|
2
|
+
airbyte_agent_shopify/connector.py,sha256=zEX9PqqPR834wL_P5J4NEnXvR9RWcVxy75Q2eaF4W-E,99603
|
|
3
|
+
airbyte_agent_shopify/connector_model.py,sha256=CQvcRPjO9QeUS5Ud77eTEWHZLe5BWFndhkYsNswUD1Y,690921
|
|
4
|
+
airbyte_agent_shopify/models.py,sha256=ZyG9DkPSbKm3O8K1j69LR1e4EXt9l24gVwFf1uBTvfk,61419
|
|
5
5
|
airbyte_agent_shopify/types.py,sha256=AwQ4PR2wZmHNuryriCFdRxf9q48J1mnPwspUB1b-L_o,10221
|
|
6
6
|
airbyte_agent_shopify/_vendored/__init__.py,sha256=ILl7AHXMui__swyrjxrh9yRa4dLiwBvV6axPWFWty80,38
|
|
7
7
|
airbyte_agent_shopify/_vendored/connector_sdk/__init__.py,sha256=T5o7roU6NSpH-lCAGZ338sE5dlh4ZU6i6IkeG1zpems,1949
|
|
@@ -14,15 +14,15 @@ airbyte_agent_shopify/_vendored/connector_sdk/extensions.py,sha256=XWRRoJOOrwUHS
|
|
|
14
14
|
airbyte_agent_shopify/_vendored/connector_sdk/http_client.py,sha256=09Fclbq4wrg38EM2Yh2kHiykQVXqdAGby024elcEz8E,28027
|
|
15
15
|
airbyte_agent_shopify/_vendored/connector_sdk/introspection.py,sha256=e9uWn2ofpeehoBbzNgts_bjlKLn8ayA1Y3OpDC3b7ZA,19517
|
|
16
16
|
airbyte_agent_shopify/_vendored/connector_sdk/secrets.py,sha256=J9ezMu4xNnLW11xY5RCre6DHP7YMKZCqwGJfk7ufHAM,6855
|
|
17
|
-
airbyte_agent_shopify/_vendored/connector_sdk/types.py,sha256=
|
|
17
|
+
airbyte_agent_shopify/_vendored/connector_sdk/types.py,sha256=aXiZxXzHvqPSOS7Dz_moyITT3EMybgjgPYgGuO7a_F4,9407
|
|
18
18
|
airbyte_agent_shopify/_vendored/connector_sdk/utils.py,sha256=UYwYuSLhsDD-4C0dBs7Qy0E0gIcFZXb6VWadJORhQQU,4080
|
|
19
|
-
airbyte_agent_shopify/_vendored/connector_sdk/validation.py,sha256=
|
|
19
|
+
airbyte_agent_shopify/_vendored/connector_sdk/validation.py,sha256=LcbmBfGkWx0Xv4pWZYpFf4JlhFjvwqGcwvliRSalN8Y,39677
|
|
20
20
|
airbyte_agent_shopify/_vendored/connector_sdk/validation_replication.py,sha256=v7F5YWd5m4diIF7_4m4nOkC9crg97vqRUUkt9ka9HZ4,36043
|
|
21
21
|
airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/__init__.py,sha256=4799Hv9f2zxDVj1aLyQ8JpTEuFTp_oOZMRz-NZCdBJg,134
|
|
22
22
|
airbyte_agent_shopify/_vendored/connector_sdk/cloud_utils/client.py,sha256=e0VLNCmesGGfo2uD0GiICgXsXTeTkh0GYiVgx_e4VEc,12296
|
|
23
23
|
airbyte_agent_shopify/_vendored/connector_sdk/executor/__init__.py,sha256=EmG9YQNAjSuYCVB4D5VoLm4qpD1KfeiiOf7bpALj8p8,702
|
|
24
24
|
airbyte_agent_shopify/_vendored/connector_sdk/executor/hosted_executor.py,sha256=tv0njAdy-gdHBg4izgcxhEWYbrNiBifEYEca9AWzaL0,8693
|
|
25
|
-
airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py,sha256=
|
|
25
|
+
airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py,sha256=4RK29lb5LzK9MCsg44oLgIaVcMCgy8jVFwgNJ_-qEFw,76941
|
|
26
26
|
airbyte_agent_shopify/_vendored/connector_sdk/executor/models.py,sha256=mUUBnuShKXxVIfsTOhMiI2rn2a-50jJG7SFGKT_P6Jk,6281
|
|
27
27
|
airbyte_agent_shopify/_vendored/connector_sdk/http/__init__.py,sha256=y8fbzZn-3yV9OxtYz8Dy6FFGI5v6TOqADd1G3xHH3Hw,911
|
|
28
28
|
airbyte_agent_shopify/_vendored/connector_sdk/http/config.py,sha256=6J7YIIwHC6sRu9i-yKa5XvArwK2KU60rlnmxzDZq3lw,3283
|
|
@@ -46,13 +46,13 @@ airbyte_agent_shopify/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-Quz
|
|
|
46
46
|
airbyte_agent_shopify/_vendored/connector_sdk/schema/base.py,sha256=0R0aR4HjcJpu3vN0jZ4nPBEwVZ_7J9_XLQgWaQGT3Fs,8476
|
|
47
47
|
airbyte_agent_shopify/_vendored/connector_sdk/schema/components.py,sha256=nJIPieavwX3o3ODvdtLHPk84d_V229xmg6LDfwEHjzc,8119
|
|
48
48
|
airbyte_agent_shopify/_vendored/connector_sdk/schema/connector.py,sha256=mSZk1wr2YSdRj9tTRsPAuIlCzd_xZLw-Bzl1sMwE0rE,3731
|
|
49
|
-
airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py,sha256=
|
|
50
|
-
airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py,sha256=
|
|
49
|
+
airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py,sha256=OPqaaS8S9P_D_VGWqdEixhtgWxNtq8EXU_N5UktnXBA,11192
|
|
50
|
+
airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py,sha256=vU1gW5AJ41ZXE_VK4TLe3qqR4e0I0_uWTjUkskWcVdk,6296
|
|
51
51
|
airbyte_agent_shopify/_vendored/connector_sdk/schema/security.py,sha256=5UeaN63InuInS_XHNZSm5yDXrMLm5lhz298l-3GSc_4,11435
|
|
52
52
|
airbyte_agent_shopify/_vendored/connector_sdk/telemetry/__init__.py,sha256=RaLgkBU4dfxn1LC5Y0Q9rr2PJbrwjxvPgBLmq8_WafE,211
|
|
53
53
|
airbyte_agent_shopify/_vendored/connector_sdk/telemetry/config.py,sha256=tLmQwAFD0kP1WyBGWBS3ysaudN9H3e-3EopKZi6cGKg,885
|
|
54
54
|
airbyte_agent_shopify/_vendored/connector_sdk/telemetry/events.py,sha256=8Y1NbXiwISX-V_wRofY7PqcwEXD0dLMnntKkY6XFU2s,1328
|
|
55
55
|
airbyte_agent_shopify/_vendored/connector_sdk/telemetry/tracker.py,sha256=SginFQbHqVUVYG82NnNzG34O-tAQ_wZYjGDcuo0q4Kk,5584
|
|
56
|
-
airbyte_agent_shopify-0.1.
|
|
57
|
-
airbyte_agent_shopify-0.1.
|
|
58
|
-
airbyte_agent_shopify-0.1.
|
|
56
|
+
airbyte_agent_shopify-0.1.28.dist-info/METADATA,sha256=rqv0xSTKokEPAawWSn26z9YnjqSGFYIDWnafoQYos0Q,7910
|
|
57
|
+
airbyte_agent_shopify-0.1.28.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
58
|
+
airbyte_agent_shopify-0.1.28.dist-info/RECORD,,
|
|
File without changes
|