airbyte-agent-shopify 0.1.25__py3-none-any.whl → 0.1.27__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 +4 -4
- airbyte_agent_shopify/_vendored/connector_sdk/executor/local_executor.py +15 -10
- airbyte_agent_shopify/_vendored/connector_sdk/schema/base.py +32 -1
- airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py +19 -1
- airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py +3 -2
- airbyte_agent_shopify/_vendored/connector_sdk/schema/security.py +37 -0
- 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 +1 -1
- airbyte_agent_shopify/connector_model.py +2 -1
- airbyte_agent_shopify/models.py +49 -49
- {airbyte_agent_shopify-0.1.25.dist-info → airbyte_agent_shopify-0.1.27.dist-info}/METADATA +4 -4
- {airbyte_agent_shopify-0.1.25.dist-info → airbyte_agent_shopify-0.1.27.dist-info}/RECORD +14 -14
- {airbyte_agent_shopify-0.1.25.dist-info → airbyte_agent_shopify-0.1.27.dist-info}/WHEEL +0 -0
|
@@ -13,10 +13,10 @@ 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
22
|
ProductVariant,
|
|
@@ -187,10 +187,10 @@ __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
196
|
"ProductVariant",
|
|
@@ -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
|
)
|
|
@@ -10,7 +10,7 @@ from enum import StrEnum
|
|
|
10
10
|
from typing import Any, Dict
|
|
11
11
|
from uuid import UUID
|
|
12
12
|
|
|
13
|
-
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
13
|
+
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
|
14
14
|
from pydantic_core import Url
|
|
15
15
|
|
|
16
16
|
from .extensions import CacheConfig, ReplicationConfig, RetryConfig
|
|
@@ -210,3 +210,34 @@ class Server(BaseModel):
|
|
|
210
210
|
raise ValueError("Server URL cannot be empty")
|
|
211
211
|
# Allow both absolute URLs and relative paths
|
|
212
212
|
return v
|
|
213
|
+
|
|
214
|
+
@model_validator(mode="after")
|
|
215
|
+
def validate_replication_environment_mapping(self) -> "Server":
|
|
216
|
+
"""Validate that x-airbyte-replication-environment-mapping sources exist in variables.
|
|
217
|
+
|
|
218
|
+
For simple mappings like {"subdomain": "subdomain"}, the key is the source variable.
|
|
219
|
+
For transform mappings like {"domain": {"source": "subdomain", "format": "..."}},
|
|
220
|
+
the "source" field is the source variable.
|
|
221
|
+
"""
|
|
222
|
+
env_mapping = self.x_airbyte_replication_environment_mapping
|
|
223
|
+
if not env_mapping or not self.variables:
|
|
224
|
+
return self
|
|
225
|
+
|
|
226
|
+
variable_names = set(self.variables.keys())
|
|
227
|
+
|
|
228
|
+
for env_key, mapping_value in env_mapping.items():
|
|
229
|
+
if isinstance(mapping_value, str):
|
|
230
|
+
source_var = env_key
|
|
231
|
+
elif isinstance(mapping_value, EnvironmentMappingTransform):
|
|
232
|
+
source_var = mapping_value.source
|
|
233
|
+
else:
|
|
234
|
+
continue
|
|
235
|
+
|
|
236
|
+
if source_var not in variable_names:
|
|
237
|
+
available = ", ".join(sorted(variable_names)) if variable_names else "(none)"
|
|
238
|
+
raise ValueError(
|
|
239
|
+
f"x-airbyte-replication-environment-mapping: source variable '{source_var}' "
|
|
240
|
+
f"not found in server variables. Available: {available}"
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
return self
|
|
@@ -14,7 +14,7 @@ are implemented.
|
|
|
14
14
|
|
|
15
15
|
from typing import Literal
|
|
16
16
|
|
|
17
|
-
from pydantic import BaseModel, ConfigDict, Field
|
|
17
|
+
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class PaginationConfig(BaseModel):
|
|
@@ -252,6 +252,24 @@ class ReplicationConfig(BaseModel):
|
|
|
252
252
|
description="Mapping from replication_config field names to source_config field names",
|
|
253
253
|
)
|
|
254
254
|
|
|
255
|
+
@model_validator(mode="after")
|
|
256
|
+
def validate_replication_config_key_mapping(self) -> "ReplicationConfig":
|
|
257
|
+
"""Validate that replication_config_key_mapping keys exist in properties.
|
|
258
|
+
|
|
259
|
+
The mapping is: {local_key: airbyte_path}
|
|
260
|
+
We validate that local_key exists in our properties.
|
|
261
|
+
"""
|
|
262
|
+
if self.replication_config_key_mapping and self.properties:
|
|
263
|
+
property_names = set(self.properties.keys())
|
|
264
|
+
for local_key, airbyte_path in self.replication_config_key_mapping.items():
|
|
265
|
+
if local_key not in property_names:
|
|
266
|
+
available = ", ".join(sorted(property_names)) if property_names else "(none)"
|
|
267
|
+
raise ValueError(
|
|
268
|
+
f"replication_config_key_mapping: local key '{local_key}' "
|
|
269
|
+
f"(mapped to '{airbyte_path}') not found in properties. Available: {available}"
|
|
270
|
+
)
|
|
271
|
+
return self
|
|
272
|
+
|
|
255
273
|
|
|
256
274
|
class CacheConfig(BaseModel):
|
|
257
275
|
"""
|
|
@@ -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
|
)
|
|
@@ -81,6 +81,21 @@ class AuthConfigOption(BaseModel):
|
|
|
81
81
|
description="Mapping from source config paths (e.g., 'credentials.api_key') to auth config keys for direct connectors",
|
|
82
82
|
)
|
|
83
83
|
|
|
84
|
+
@model_validator(mode="after")
|
|
85
|
+
def validate_replication_auth_key_mapping(self) -> "AuthConfigOption":
|
|
86
|
+
"""Validate that replication_auth_key_mapping target keys exist in properties."""
|
|
87
|
+
if self.replication_auth_key_mapping and self.properties:
|
|
88
|
+
property_names = set(self.properties.keys())
|
|
89
|
+
for airbyte_path, our_key in self.replication_auth_key_mapping.items():
|
|
90
|
+
if our_key not in property_names:
|
|
91
|
+
option_context = f"oneOf option '{self.title}'" if self.title else "oneOf option"
|
|
92
|
+
available = ", ".join(sorted(property_names)) if property_names else "(none)"
|
|
93
|
+
raise ValueError(
|
|
94
|
+
f"replication_auth_key_mapping in {option_context}: target key '{our_key}' "
|
|
95
|
+
f"(mapped from '{airbyte_path}') not found in properties. Available: {available}"
|
|
96
|
+
)
|
|
97
|
+
return self
|
|
98
|
+
|
|
84
99
|
|
|
85
100
|
class AirbyteAuthConfig(BaseModel):
|
|
86
101
|
"""
|
|
@@ -146,8 +161,30 @@ class AirbyteAuthConfig(BaseModel):
|
|
|
146
161
|
if not self.auth_mapping:
|
|
147
162
|
raise ValueError("Single auth option must have auth_mapping")
|
|
148
163
|
|
|
164
|
+
# Validate replication_auth_key_mapping targets exist in properties
|
|
165
|
+
if self.replication_auth_key_mapping and self.properties:
|
|
166
|
+
self._validate_replication_auth_key_mapping(self.replication_auth_key_mapping, self.properties, context="x-airbyte-auth-config")
|
|
167
|
+
|
|
149
168
|
return self
|
|
150
169
|
|
|
170
|
+
@staticmethod
|
|
171
|
+
def _validate_replication_auth_key_mapping(mapping: Dict[str, str], properties: Dict[str, AuthConfigFieldSpec], context: str) -> None:
|
|
172
|
+
"""Validate that replication_auth_key_mapping target keys exist in properties.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
mapping: The replication_auth_key_mapping dict (airbyte_path -> our_key)
|
|
176
|
+
properties: The properties dict from x-airbyte-auth-config
|
|
177
|
+
context: Context string for error messages
|
|
178
|
+
"""
|
|
179
|
+
property_names = set(properties.keys())
|
|
180
|
+
for airbyte_path, our_key in mapping.items():
|
|
181
|
+
if our_key not in property_names:
|
|
182
|
+
available = ", ".join(sorted(property_names)) if property_names else "(none)"
|
|
183
|
+
raise ValueError(
|
|
184
|
+
f"replication_auth_key_mapping in {context}: target key '{our_key}' "
|
|
185
|
+
f"(mapped from '{airbyte_path}') not found in properties. Available: {available}"
|
|
186
|
+
)
|
|
187
|
+
|
|
151
188
|
|
|
152
189
|
class SecurityScheme(BaseModel):
|
|
153
190
|
"""
|
|
@@ -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.4"
|
|
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
|
|
@@ -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.4',
|
|
30
30
|
base_url='https://{shop}.myshopify.com/admin/api/2025-01',
|
|
31
31
|
auth=AuthConfig(
|
|
32
32
|
type=AuthType.API_KEY,
|
|
@@ -46,6 +46,7 @@ ShopifyConnectorModel: ConnectorModel = ConnectorModel(
|
|
|
46
46
|
),
|
|
47
47
|
},
|
|
48
48
|
auth_mapping={'api_key': '${api_key}'},
|
|
49
|
+
replication_auth_key_mapping={'credentials.access_token': 'api_key', 'shop': 'shop'},
|
|
49
50
|
),
|
|
50
51
|
),
|
|
51
52
|
entities=[
|
airbyte_agent_shopify/models.py
CHANGED
|
@@ -119,6 +119,55 @@ 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
|
+
|
|
122
171
|
class LineItem(BaseModel):
|
|
123
172
|
"""LineItem type definition"""
|
|
124
173
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
@@ -176,55 +225,6 @@ class Fulfillment(BaseModel):
|
|
|
176
225
|
name: Union[str | None, Any] = Field(default=None)
|
|
177
226
|
admin_graphql_api_id: Union[str | None, Any] = Field(default=None)
|
|
178
227
|
|
|
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)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: airbyte-agent-shopify
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.27
|
|
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/
|
|
@@ -171,7 +171,7 @@ See the official [Shopify API reference](https://shopify.dev/docs/api/admin-rest
|
|
|
171
171
|
|
|
172
172
|
## Version information
|
|
173
173
|
|
|
174
|
-
- **Package version:** 0.1.
|
|
175
|
-
- **Connector version:** 0.1.
|
|
176
|
-
- **Generated with Connector SDK commit SHA:**
|
|
174
|
+
- **Package version:** 0.1.27
|
|
175
|
+
- **Connector version:** 0.1.4
|
|
176
|
+
- **Generated with Connector SDK commit SHA:** f2dbc00ef14939fde16b708d6fe5eff97f67c7a3
|
|
177
177
|
- **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=odIbw5aeV6yOcGUkSH600MF4BS5U0GAd_5lBGEbe90E,99627
|
|
3
|
+
airbyte_agent_shopify/connector_model.py,sha256=piE9ZoyqrkoO2dTOq9F-Y13xRQgMgKuxR_kGT54ulYA,691154
|
|
4
|
+
airbyte_agent_shopify/models.py,sha256=VIFC3GDlnnK4Z15YT7MwaJH9ZWTjiU_wXDCtuZyD0TM,61514
|
|
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
|
|
@@ -43,16 +43,16 @@ airbyte_agent_shopify/_vendored/connector_sdk/performance/__init__.py,sha256=Sp5
|
|
|
43
43
|
airbyte_agent_shopify/_vendored/connector_sdk/performance/instrumentation.py,sha256=_dXvNiqdndIBwDjeDKNViWzn_M5FkSUsMmJtFldrmsM,1504
|
|
44
44
|
airbyte_agent_shopify/_vendored/connector_sdk/performance/metrics.py,sha256=FRff7dKt4iwt_A7pxV5n9kAGBR756PC7q8-weWygPSM,2817
|
|
45
45
|
airbyte_agent_shopify/_vendored/connector_sdk/schema/__init__.py,sha256=Uymu-QuzGJuMxexBagIvUxpVAigIuIhz3KeBl_Vu4Ko,1638
|
|
46
|
-
airbyte_agent_shopify/_vendored/connector_sdk/schema/base.py,sha256=
|
|
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=
|
|
51
|
-
airbyte_agent_shopify/_vendored/connector_sdk/schema/security.py,sha256=
|
|
49
|
+
airbyte_agent_shopify/_vendored/connector_sdk/schema/extensions.py,sha256=DqWCvyWKLnPxAbJirq6uITf-MBeJRVCcsEjySF4fuhQ,10558
|
|
50
|
+
airbyte_agent_shopify/_vendored/connector_sdk/schema/operations.py,sha256=vU1gW5AJ41ZXE_VK4TLe3qqR4e0I0_uWTjUkskWcVdk,6296
|
|
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.27.dist-info/METADATA,sha256=3_pdmn4Ode2yumg0VXiqbk5xyStFXKc3VKgw3-kHITY,7999
|
|
57
|
+
airbyte_agent_shopify-0.1.27.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
58
|
+
airbyte_agent_shopify-0.1.27.dist-info/RECORD,,
|
|
File without changes
|